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

51单片机 1602液晶显示静态字符

发布时间:2020-06-19 发布时间:
|
  1. #include   

  2. #define LCD1602_DB P0  

  3.   

  4. typedef unsigned char uchar;  

  5. typedef unsigned int uint;  

  6. typedef unsigned long ulong;  

  7.   

  8. sbit LCD1602_RS = P1^0;  

  9. sbit LCD1602_RW = P1^1;  

  10. sbit LCD1602_E = P1^5;  

  11.   

  12. void initLCD1602();  

  13. void LCDShowStr(uchar i, uchar j, uchar * pCh);  

  14. void LCDWaitRdy();  

  15. void LCDWrCmd(uchar cmd);  

  16. void LCDWrData(uchar dat);  

  17. void LCDSetCursor(uchar i, uchar j);  

  18.   

  19. void main() {  

  20.     initLCD1602();  

  21.     LCDShowStr(0, 1, "Hello world !");  

  22.     LCDShowStr(1, 1, "Chasing Waves");  

  23.     while (1) ;  

  24. }  

  25.   

  26. void LCDWaitRdy() {  

  27.     uchar state;  

  28.   

  29.     LCD1602_DB = 0xFF;      //使数据总线处于高电平  

  30.     LCD1602_RS = 0;         //选择命令模式  

  31.     LCD1602_RW = 1;         //选择读  

  32.     do {  

  33.         LCD1602_E = 1;      //开启液晶读写使能  

  34.         state = LCD1602_DB; //从数据总线上读取状态字  

  35.         LCD1602_E = 0;      //关闭液晶读写使能  

  36.     } while (state & 0x80); //重复直到bit7 == 0为止(不忙了)  

  37. }  

  38.   

  39. void LCDWrCmd(uchar cmd) {  

  40.     LCDWaitRdy();  

  41.     LCD1602_RS = 0;  

  42.     LCD1602_RW = 0;  

  43.     LCD1602_DB = cmd;  

  44.     LCD1602_E = 1;  

  45.     LCD1602_E = 0;  

  46. }  

  47.   

  48. void LCDWrData(uchar dat) {  

  49.     LCDWaitRdy();  

  50.     LCD1602_RS = 1;  

  51.     LCD1602_RW = 0;  

  52.     LCD1602_DB = dat;  

  53.     LCD1602_E = 1;  

  54.     LCD1602_E = 0;  

  55. }  

  56.   

  57. void LCDSetCursor(uchar i, uchar j) {  

  58.     uchar addr = (i == 0 ? j : 0x40 + j);  

  59.     LCDWrCmd(addr | 0x80);  

  60. }  

  61.   

  62. void LCDShowStr(uchar i, uchar j, uchar * pch) {  

  63.     LCDSetCursor(i, j);  

  64.     while (*pch != '\0') {  

  65.         LCDWrData(*pch++);  

  66.     }  

  67. }  

  68.   

  69. void initLCD1602() {  

  70.     LCDWrCmd(0x38);     //16 * 2显示,5 * 7点阵,8位数据接口  

  71.     LCDWrCmd(0x0C);     //显示器开,光标关闭  

  72.     LCDWrCmd(0x06);     //文字不动,地址自动加1  

  73.     LCDWrCmd(0x01);     //清屏  

  74. }  



关键字:51单片机  1602液晶  静态字符 

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

热门文章 更多
PIC单片机基础知识之二