找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1851|回复: 2
收起左侧

LCD1602的单片机库文件

[复制链接]
ID:370473 发表于 2020-2-13 12:38 | 显示全部楼层 |阅读模式
写了一个1602 库希望可以方便大家开发
有不足之处请指出,谢谢!
测试机型STC8A8K64S4A12

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


  3. sbit rs=P3^5;
  4. sbit rw=P3^6;    //1602 IO口定义  这里用的数据口是P0口
  5. sbit ep=P3^7;

  6. unsigned char lcd_busy()               //查忙 这部很重要 否则有的显示容易出现乱码                                             
  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)//采集输出数据
  38. {
  39. while(lcd_busy());
  40. rs=1;   //1是些数据 0是写指令
  41. delay(100);
  42. rw=0;    // 1是读  0是写
  43. delay(100);
  44. ep=0;    //E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令
  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);      //数据指针=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. }
复制代码

所有资料51hei提供下载:
LCD - 副本.rar (59.97 KB, 下载次数: 6)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:370473 发表于 2020-2-15 18:38 | 显示全部楼层
代码更新
lcd lib v2添加屏幕清除
u 上
d下
其他 全清

添加延时函数



LCD lib v2.rar

188.79 KB, 下载次数: 10, 下载积分: 黑币 -5

LCD lib v2.rar

回复

使用道具 举报

ID:24810 发表于 2020-2-15 21:12 | 显示全部楼层
代码有特色,下来学下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表