找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1509|回复: 0
打印 上一主题 下一主题
收起左侧

单片机+lcd1602显示 NANJINGKEJI DQYKZXY

[复制链接]
跳转到指定楼层
楼主
这是我之前写的程序,显示 NANJINGKEJI  DQYKZXY
  1.   unsigned char i;
  2. #include <reg51.h> //包含头文件reg51.h,定义了51单片机的专用寄存器
  3. #include <intrins.h> //包含头文件intrins.h,代码中引用了_nop_()函数
  4. sbit RS=P3^0; //P3.0
  5. sbit RW=P3^1; //93.1
  6. sbit E=P3^2; //E3.2
  7. void lcd_w_cmd (unsigned char com); //写命令字函数
  8. void lcd_w_dat (unsigned char dat); //写数据函数
  9. unsigned char lcd_r_start(); //读状态函数
  10. void lcd_int(); //LCD初始化函数
  11. void delay (unsigned int i); //可控延时函数
  12. void delayl(); //软件延时函数,大约几个机器周期
  13. void main() //主函数
  14. {
  15.   unsigned char lcd[]="NANJINGKEJI";
  16.   unsigned char lcdl[]="DQYKZXY";
  17.   unsigned char i;
  18.   P2=0xff; //送全1到P2口
  19.   lcd_int(); //初始化LCD
  20.   delay(255);
  21.   lcd_w_cmd(0x83); //设置显示位置
  22.   delay(255);
  23.   for (i=0;lcd[i]!='\0';i++) //显示字符串,字符串结束符为‘\0'
  24.   {lcd_w_dat(lcd[i]);
  25.   delay(200);
  26.   }
  27.   lcd_w_cmd(0xc3); //设置显示位置
  28.   delay (255);
  29.    for (i=0;lcd[i]!='\0';i++)
  30.    {
  31.      lcd_w_dat (lcdl[i]);
  32.      delay(200);
  33.    }
  34.   while (1) ;            //原地踏步,待机命令
  35. }
  36. void delayl()
  37. {
  38.   _nop_();
  39.   _nop_();
  40.   _nop_();
  41. }
  42. void lcd_int() //初始化的函数
  43. {
  44.   lcd_w_cmd(0x3c); //设置工作方式
  45.   lcd_w_cmd(0x0e); //设置光标
  46.   lcd_w_cmd(0x01); //清屏
  47.   lcd_w_cmd(0x06); //设置输入方式
  48.   lcd_w_cmd(0x80);
  49. }                  //设置初始显示位置
  50. unsigned char lcd_r_start()
  51. {
  52.   unsigned char s;
  53.   RW=1;                       //RN=1,RS=0 读LCD状态
  54.   delayl ();
  55.   RS=0;
  56.   delayl();
  57.   E=1; //E端时序
  58.   delayl ();
  59.   s=P2; //从LCD的数据口读状态
  60.   delayl();
  61.   E=0;
  62.   delayl ();
  63.   RW=0;
  64.   delayl();
  65.   return(s); //返回读取的LCD状态字
  66. }
  67. void lcd_w_cmd (unsigned char com)
  68. {
  69. unsigned char i;
  70. do
  71. {             //查LCD忙操作
  72.   i=lcd_r_start(); //调用读状态字函数
  73.   i=i&0x80; //“与“操作屏蔽掉低7位
  74.   delay(2);
  75. }     while(i!=0); //LCD忙,继续查询,否则退出循环
  76.   RW=0;
  77.   delayl();
  78.   RS=0; //RW=Q,RS=0,写LCD命令字
  79.   delayl();
  80.   E=1; //E端时序
  81.   delayl();
  82.   P2=com; //将com中的命令字写入LCD数据口
  83.   delayl();
  84.   E=0;                        
  85. delayl();
  86. RW=1;
  87. delay(255);
  88. }
  89. void lcd_w_dat (unsigned char dat)
  90. {
  91.   unsigned char i;
  92. do {                   //查忙操作
  93. i=lcd_r_start(); //调用读状态字函数
  94. i=i&0x80;           //"与"操作屏蔽掉低7位
  95. delay(2);
  96. } while(i!=0); //LCD忙,继续查询,否则退出循环
  97. RW=0;
  98. delayl();
  99. RS=1;            //RW=0,
  100. delayl();
  101. E=1; //E端时序
  102. delayl();
  103. P2=dat; //将dat中的显示数据写入LCD数据口
  104. delayl();
  105. E=0;
  106. delayl();
  107. RW=1;
  108. delay(255);
  109. }
  110. void delay(unsigned int i)
  111. {
  112. unsigned int k;
  113. for(k=0;k<i;k++);
  114. }
复制代码

51hei图片20200630093933.png (30.26 KB, 下载次数: 43)

51hei图片20200630093933.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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