找回密码
 立即注册

QQ登录

只需一步,快速开始

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

液晶LCD1602显示字符

[复制链接]
跳转到指定楼层
楼主
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. sbit RS=P3^0;
  4. sbit RW=P3^1;
  5. sbit E =P3^2;
  6. void lcd_w_cmd(unsigned char com);
  7. void lcd_w_dat(unsigned char dat);
  8. unsigned char lcd_r_start();
  9. void lcd_init();
  10. void delay100us(unsigned char t);
  11. void delay5us(unsigned char n);
  12. unsigned char code Disp1[] ="hello";
  13. unsigned char code Disp2[] ="work";
  14. void main()
  15. {
  16.         unsigned char i;
  17.         P1=0xff;
  18.         lcd_init();
  19.         delay100us(255);
  20.         lcd_w_cmd(0x91);
  21.         for (i=0;i<14;i++)
  22.         {
  23.                 lcd_w_dat(Disp1[i]);
  24.                 delay100us(5);
  25.         }
  26.         delay100us(255);
  27.         lcd_w_cmd(0xd1);
  28.         for(i=0;i<14;i++)
  29.         {
  30.                 lcd_w_dat(Disp2[i]);
  31.                 delay100us(5);
  32.         }
  33.         delay100us(255);
  34.         for(i=0;i<24;i++)
  35.         {
  36.                 lcd_w_cmd(0x18);
  37.                 delay100us(200);
  38.         }
  39.         while(1);
  40. }
  41. void delay100us(unsigned char t)
  42. {
  43.         unsigned char j,i;
  44.         for(i=0;i<t;i++)
  45.                 for(j=0;j<10;j++);
  46. }
  47. void delay5us(unsigned char n)
  48. {do
  49.         {
  50.                 _nop_();
  51.                 _nop_();
  52.                 _nop_();
  53.                 n--;
  54.         }
  55.         while(n);
  56. }
  57. void lcd_init()
  58. {
  59.         lcd_w_cmd(0x3c);
  60.         lcd_w_cmd(0x0e);
  61.         lcd_w_cmd(0x01);
  62.         lcd_w_cmd(0x06);
  63.         lcd_w_cmd(0x80);
  64. }
  65. unsigned char lcd_r_start()
  66. {
  67.         unsigned char s;
  68.         RW=1;
  69.         delay5us(1);
  70.         RS=0;
  71.         delay5us(1);
  72.         E=1;
  73.         delay5us(1);
  74.         s=P1;
  75.         delay5us(1);
  76.         E=0;
  77.         delay5us(1);
  78.         RW=0;
  79.         delay5us(1);
  80.         return(s);
  81. }
  82. void lcd_w_cmd(unsigned char com)
  83. {
  84.         unsigned char i;
  85.         do{
  86.                 i=lcd_r_start();
  87.                 i=i&0x80;
  88.                 delay100us(2);
  89.           }
  90.         while(i!=0);
  91.         RW=0;
  92.         delay5us(1);
  93.         RS=0;
  94.         delay5us(1);
  95.         E=1;
  96.         delay5us(1);
  97.         P1=com;
  98.         delay5us(1);
  99.         E=0;
  100.         delay5us(1);
  101.         RW=1;
  102.         delay100us(255);
  103. }
  104. void lcd_w_dat(unsigned char dat)
  105. {
  106.         unsigned char i;
  107.         do{
  108.                 i=lcd_r_start();
  109.                 i=i&0x80;
  110.                 delay100us(2);
  111.           }while(i!=0);
  112.         RW=0;
  113.         delay5us(1);
  114.         RS=1;
  115.         delay5us(1);
  116.         E=1;
  117.   delay5us(1);
  118.         P1=dat;
  119.         delay5us(1);
  120.         E=0;
  121.         delay5us(1);
  122.         RW=1;
  123.         delay100us(255);
  124. }
复制代码


捕获.PNG (55.1 KB, 下载次数: 44)

捕获.PNG

1.rar

61.51 KB, 下载次数: 34, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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