標題: LCD1602的單片機庫文件 [打印本頁]

作者: i66580    時間: 2020-2-13 12:38
標題: LCD1602的單片機庫文件
寫了一個1602 庫希望可以方便大家開發(fā)
有不足之處請指出,謝謝!
測試機型STC8A8K64S4A12

單片機源程序如下:
  1. #include "delay.h"
  2. #include "stc8.h"


  3. sbit rs=P3^5;
  4. sbit rw=P3^6;    //1602 IO口定義  這里用的數(shù)據(jù)口是P0口
  5. sbit ep=P3^7;

  6. unsigned char lcd_busy()               //查忙 這部很重要 否則有的顯示容易出現(xiàn)亂碼                                             
  7. {                                                                          
  8.     unsigned char result;                                                            
  9.     rs = 0;
  10.         delay(100);                                                         
  11.     rw = 1;   
  12.         delay(100);                                                         
  13.     ep = 1;   
  14.         delay(100);                                                                                                                 
  15.     result = (P0&0x80);
  16.         delay(100);                                             
  17.     ep = 0;   
  18.         delay(100);                                                   
  19.     return result;             //返回值                                            
  20. }

  21. void lcd_com(unsigned char com)//  地址
  22. {
  23. while(lcd_busy());
  24. rs=0;
  25. delay(100);
  26. ep=0;  
  27. delay(100);
  28. rw=0;
  29. delay(100);                 
  30. P0=com;
  31. delay(100);
  32. ep=1;
  33. delay(100);
  34. ep=0;
  35. delay(100);
  36. }

  37. void lcd_date(unsigned char date)//采集輸出數(shù)據(jù)
  38. {
  39. while(lcd_busy());
  40. rs=1;   //1是些數(shù)據(jù) 0是寫指令
  41. delay(100);
  42. rw=0;    // 1是讀  0是寫
  43. delay(100);
  44. ep=0;    //E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令
  45. delay(100);      
  46. P0=date;
  47. delay(100);
  48. ep=1;
  49. delay(100);
  50. ep=0;
  51. delay(100);
  52. }

  53. void lcd_pos(unsigned char pos)                                                   
  54. {                                                                          
  55.    lcd_com(pos+0x80);      //數(shù)據(jù)指針=80+地址變量                     
  56. }   



  57. void lcddisplay(int posision,char e[]){
  58. int i=0;
  59. delay(300);
  60. lcd_pos(posision);
  61. while(e[i]!='\0')         //顯示字母
  62. {
  63. lcd_date(e[i]);
  64. i++;
  65. }
  66. }

  67. void lcddisplayl2(int posision,char e[]){
  68. lcddisplay(0x40+posision,e);

  69. }
  70. void lcddisplaycodel2(int posision,char e){
  71. delay(300);
  72. lcd_pos(0x40+posision);
  73. delay(300);
  74. lcd_date(e);
  75. }
  76. void lcddisplaycode(int posision,char e){
  77. delay(300);
  78. lcd_pos(posision);
  79. delay(300);
  80. lcd_date(e);
  81. }

  82. void init()//1602初始化
  83. {
  84. unsigned char code v[]={""};                                                               
  85. lcd_com(0x38);
  86. delay(50);                                                              
  87. lcd_com(0x38);
  88. delay(50);

  89. lcd_com(0x38);
  90. delay(50);
  91. lcd_com(0x0c);
  92. delay(50);
  93. lcd_com(0x06);
  94. delay(50);
  95. lcd_com(0x01);

  96. delay(600);
  97. lcddisplay(0,v);
  98. }
復(fù)制代碼

所有資料51hei提供下載:
LCD - 副本.rar (59.97 KB, 下載次數(shù): 6)



作者: i66580    時間: 2020-2-15 18:38
代碼更新
lcd lib v2添加屏幕清除
u 上
d下
其他 全清

添加延時函數(shù)



LCD lib v2.rar

188.79 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5

LCD lib v2.rar


作者: 桃源客    時間: 2020-2-15 21:12
代碼有特色,下來學下。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1