×
单片机 > 单片机程序设计 > 详情

51单片机lcd代码

发布时间:2020-06-18 发布时间:
|
  1. #include "../delay/delay.h"  

  2. #include "lcd.h"  

  3.   

  4. /*====================================================  

  5.                  判断写入命令/数据函数  

  6. =====================================================*/  

  7. void lcd_write(unsigned char byte, unsigned char flag)  

  8. {  

  9.     if(flag)  

  10.     {  

  11.         RS = 1;        //选择数据寄存器  

  12.     }  

  13.     else  

  14.     {  

  15.         RS = 0;        //选择指令寄存器  

  16.     }  

  17.       

  18.     RW = 0;            //写  

  19.     E = 1;             //选中LCD  

  20.     LCDPORT = byte;  

  21.     delay_us(5);       //稳定  

  22.     E = 0;             //失能LCD  

  23. }  

  24.   

  25. /*====================================================  

  26.                     LCD初始化函数  

  27. =====================================================*/  

  28. void lcd_init()  

  29. {  

  30.     delay_ms(15);  

  31.     lcd_write(0x38,LCD_WRITE_COM);    //显示8位数据接口,两行显示,5*7点阵字符  

  32.     delay_ms(5);  

  33.     lcd_write(0x38,LCD_WRITE_COM);  

  34.     delay_ms(5);  

  35.     lcd_write(0x38,LCD_WRITE_COM);  

  36.     delay_ms(5);  

  37.     lcd_write(0x38,LCD_WRITE_COM);  

  38.     delay_ms(5);  

  39.     lcd_write(0x08,LCD_WRITE_COM);    //关闭显示,关闭光标的闪烁  

  40.     delay_ms(5);  

  41.     lcd_write(0x01,LCD_WRITE_COM);    //清屏  

  42.     delay_ms(5);  

  43.     lcd_write(0x06,LCD_WRITE_COM);    //设置指针方式,画面不平移  

  44.     delay_ms(5);  

  45.     lcd_write(0x0c,LCD_WRITE_COM);    //打开显示  

  46.     delay_ms(5);  

  47. }  

  48.   

  49. /*====================================================================================  

  50.                                  写入字符函数  

  51. 函数原型:void lcd_dis_byte(unsigned char x, unsigned char y, unsigned char byte);  

  52. 说明:x为行(1——2),y为列(1——8)。  

  53. =====================================================================================*/  

  54. void lcd_dis_byte(unsigned char x, unsigned char y, unsigned char byte)  

  55. {  

  56.     unsigned char add;  

  57.       

  58.     if(((0 == x) || (x > 2)) || ((0 == y) || (y > 16)))  

  59.     {  

  60.         return ;  

  61.     }  

  62.       

  63.     add = 0x80 + (x - 1) * 0x40 + (y - 1);  

  64.       

  65.     lcd_write(add,LCD_WRITE_COM);          

  66.     lcd_write(byte,LCD_WRITE_DATA);  

  67. }  

  68.   

  69. /*====================================================================================  

  70.                                   写入字符串函数  

  71. 函数原型:void lcd_dis_str(unsigned char x, unsigned char y, unsigned char *disdata);  

  72. 说明:x为行(1——2),y为列(1——8)。  

  73. =====================================================================================*/  

  74. void lcd_dis_str(unsigned char x, unsigned char y, unsigned char *disdata)  

  75. {  

  76.     unsigned char add;  

  77.       

  78.     if(((0 == x) || (x > 2)) || ((0 == y) || (y > 16)))  

  79.     {  

  80.         return ;  

  81.     }  

  82.       

  83.     add = 0x80 + (x - 1) * 0x40 + (y - 1);  

  84.     lcd_write(add,LCD_WRITE_COM);  

  85.       

  86.     while(*disdata != '\0')  

  87.     {         

  88.         lcd_write(*disdata,LCD_WRITE_DATA);  

  89.         disdata++;  

  90.     }  

  91. }  

  92.   

  93. #if 0  

  94. /*===========================================================================  

  95.                                 时间显示函数  

  96. ============================================================================*/  

  97. void lcd_dis_time()  

  98. {  

  99.     lcd_write(0x80 + 4,LCD_WRITE_COM);  

  100.     lcd_write((hour / 10) + 0x30,LCD_WRITE_DATA);  

  101.     lcd_write((hour % 10) + 0x30,LCD_WRITE_DATA);  

  102.     lcd_write((min / 10) + 0x30,LCD_WRITE_DATA);  

  103.     lcd_write((min % 10) + 0x30,LCD_WRITE_DATA);  

  104.     lcd_write((sec / 10) + 0x30,LCD_WRITE_DATA);  

  105.     lcd_write((sec % 10) + 0x30,LCD_WRITE_DATA);  

  106. }  

  107. #endif  


关键字:51单片机  lcd代码 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址