Advertisement
Guest User

8051 OLED Procs

a guest
Nov 19th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.91 KB | None | 0 0
  1. void OLED_wrnibble(unsigned char hbyte, bit reg)
  2. {
  3.     rs_lcd = reg; lcd_rd = 0;
  4.     delay_timer_us(50);
  5.  
  6.  
  7.     P0&=0xf0;
  8.     P0|=hbyte;
  9.     e_lcd = 1;
  10.  
  11.    
  12.  
  13.     delay_timer_us(50);
  14.     e_lcd = 0;
  15.  
  16.     return;
  17.  
  18. }
  19.  
  20. void OLED_busy_wait(void)
  21. {
  22.     unsigned char temp;
  23.     bit bFlag = 0;
  24.  
  25.     do{
  26.         rs_lcd = 0; lcd_rd = 1;
  27.         e_lcd = 0;
  28.         P0|=0x0f;
  29.  
  30.         e_lcd = 1;
  31.         delay_timer_us(11);
  32.         temp = (P0&0x0f)<<4;
  33.         e_lcd = 0;
  34.  
  35.  
  36.         e_lcd = 1;
  37.         delay_timer_us(50);
  38.         temp|= (P0&0x0f);
  39.         e_lcd = 0;
  40.     }while (temp&0x80);
  41.  
  42.     return;
  43. }
  44.  
  45. void OLED_wrbyte(unsigned char byte, bit reg)
  46. {
  47.     volatile unsigned char temp;
  48.  
  49.     rs_lcd = reg; lcd_rd = 0;
  50.     temp = (byte >> 4)&0x0f;
  51.    
  52.     delay_timer_us(50);
  53.  
  54.  
  55.     P0&=0xf0;
  56.     P0|=temp;
  57.     e_lcd = 1;
  58.     delay_timer_us(50);
  59.     e_lcd = 0;
  60.  
  61.     temp = byte&0x0f;
  62.  
  63.     delay_timer_us(50);
  64.  
  65.  
  66.     P0&=0xf0;
  67.     P0|=temp;
  68.     e_lcd = 1; 
  69.     delay_timer_us(50);
  70.     e_lcd = 0;
  71.  
  72.     OLED_busy_wait();
  73.  
  74.     return;
  75.  
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement