SHARE
TWEET

Untitled

a guest Apr 24th, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // in de header file staan alle function-prototypes en alle defines
  2.  
  3. // de andere commando's zorgen ervoor dat dezelfde header-file
  4. // geen 2keer wordt geïnclude in dezelfde compilatie
  5.  
  6. #ifndef LCD_H_
  7. #define LCD_H_
  8.  
  9.  
  10. #include <system.h>
  11.  
  12. #define     E           portb.5     // enable
  13. #define     RS          portb.4     // registery select
  14.  
  15. #define     CLR_DISP        0x01    // clear display   
  16. #define     DISP_ON         0x0C    // display on
  17. #define     DISP_OFF        0x08    // display off
  18. #define     CUR_HOME        0x02    // cursor naar eerste positie, set DDRAM naar adress 0
  19. #define     CUR_OFF         0x0C    // cursor uit
  20. #define     CUR_ON          0x0E    // cursor aan
  21. #define     CUR_ON_BLINK    0x0F    // cursor blinken
  22. #define     CUR_LEFT        0x10    // cursor naar links
  23. #define     CUR_RIGHT       0x14    // cursor naar rechts
  24. #define     CUR_UP          0x80    // set DDRAM adress (lijn 1)
  25. #define     CUR_DOWN        0xC0    // set DDRAM adress 2 (lijn 2)
  26. #define     ENTER           0xC0    // set DDRAM adress 2 (lijn 2)
  27. #define     DD_RAM_ADDR     0x80    // set DDRAM adress (lijn 1)
  28. #define     DD_RAM_ADDR2    0xC0    // set DDRAM adress 2 (lijn 2)
  29. //UITBREIDINGEN
  30. #define     DISP_SHIFT_LEFT 0x18    // display shift links
  31. #define     DISP_SHIFT_RIGHT 0x1C   // display shift rechts
  32. #define     LINE1           0x80    // lijn 1 schrijven
  33. #define     LINE2           0xC0    // lijn 1 schrijven
  34.  
  35.  
  36. void E_Pulse(void) {
  37.     E=1;
  38.     delay_us(100);
  39.     E=0;
  40. }
  41.  
  42. //********************************************************************
  43.  
  44. // Send char to LCD
  45. void LCDSendChar(unsigned char c) {
  46.    
  47.     unsigned char data;
  48.    
  49.     delay_ms(20);
  50.    
  51.     //get upper nibble
  52.     data = c & 0b11110000;
  53.            
  54.     //set b3-b0
  55.     data = data >> 4;
  56.                
  57.     //send data to LCD
  58.     portb = data;  
  59.                
  60.     //set LCD to write
  61.     //RW=0;        
  62.                
  63.     //set LCD to data mode
  64.     RS=1;
  65.                            
  66.     //toggle Enable for LCD
  67.     E_Pulse();
  68.    
  69.     // get lower nibble
  70.     data = c & 0b00001111;
  71.    
  72.     //send data to LCD
  73.     portb = data;
  74.    
  75.     //set LCD to write
  76.     //RW=0;        
  77.    
  78.     //set LCD to data mode         
  79.     RS=1;          
  80.                
  81.     //toggle Enable for LCD
  82.     E_Pulse();
  83. }
  84.  
  85. //********************************************************************
  86.  
  87. // Send command to LCD
  88. void LCDSendCmd(unsigned char c) {
  89.  
  90.     unsigned char data;
  91.    
  92.     delay_ms(20);
  93.    
  94.     //get upper nibble
  95.     data = c & 0b11110000;
  96.            
  97.     //set b3-b0
  98.     data = data >> 4;
  99.                
  100.     //send data to LCD
  101.     portb = data;
  102.                    
  103.     //set LCD to write
  104.     //RW=0;    
  105.                    
  106.     //set LCD to data mode
  107.     RS=0;  
  108.                        
  109.     //toggle E for LCD
  110.     E_Pulse();
  111.    
  112.     // get lower nibble
  113.     data = c & 0b00001111;
  114.     portb = data;
  115.    
  116.     //set LCD to write
  117.     //RW=0;
  118.                        
  119.     //set LCD to data mode
  120.     RS=0;  
  121.                        
  122.     //toggle Enable for LCD
  123.     E_Pulse();
  124.    
  125. }
  126.  
  127. //********************************************************************
  128.  
  129. void LCDSendStr(unsigned char* str) {
  130. // string doorsturen: karakter per karakter doorsturen
  131.     unsigned int i=0;
  132.     while(str[i]) {
  133.         LCDSendChar(str[i]);
  134.         i++;
  135.     }
  136. }
  137.  
  138. //********************************************************************
  139.  
  140. // Init LCD  after reset
  141. void InitLCD(void) {
  142.  
  143.     intcon      = 0x0;          // Disable interupt                
  144.     trisb.5     = 0;            // E pin as output
  145.     trisb       = 0x00;         // b0-b3 as output
  146.                        
  147.  
  148.     RS=0;               // instructie
  149.     delay_ms(110);      // wacht 110ms
  150.    
  151.     //onderstaande waarden geinspireerd op ASSEMBLER oefeningen vorig jaar
  152.     LCDSendCmd(0b00100000); // LCD-init
  153.     delay_ms(20);           // wacht 10ms
  154.    
  155.     LCDSendCmd(0b00100000); // LCD-init
  156.     delay_ms(20);           // wacht 10ms
  157.  
  158.     LCDSendCmd(0b00100000); // LCD-init
  159.     delay_ms(20);           // wacht 10ms
  160.    
  161.     LCDSendCmd(0b00101000); // function set
  162.                             // b4=0=dl > 4 bit interface
  163.                             // b3=0=N > display 1 line
  164.                             // b2=0=F > 5*8dots
  165.     delay_ms(20);           // wacht 10ms
  166.    
  167.     LCDSendCmd(0b00101000); // display control
  168.                             // b2=1 > display on
  169.                             // b1=0 > cursor on
  170.                             // b0=0 > cursor doesn't blink
  171.     delay_ms(20);           // wacht 10ms
  172.  
  173.     LCDSendCmd(0b00000001); // clear display
  174.     delay_ms(20);           // wacht 10ms
  175. }
  176.  
  177.  
  178.  
  179. #endif
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top