找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2348|回复: 0
收起左侧

lcd1602滚动显示

[复制链接]
ID:251483 发表于 2017-11-20 17:09 | 显示全部楼层 |阅读模式
  1. #include<reg52.h>
  2. typedef unsigned char uint8;
  3. typedef unsigned int uint16;
  4. sbit rs=P2^6;
  5. sbit rw=P2^5;
  6. sbit e=P2^7;
  7. uint8 a[16]="zheeeg ti wwi    ";
  8. uint8 b[27]="ze asfeng xe xi 1w284g50hb6 ";
  9. void delay(uint16 i)  //1us
  10. {
  11.         while(i--);
  12. }
  13. void wrc(uint8 c)  /*写命令*/
  14. {
  15.         delay(1000);
  16.         rs=0;  //选择发送命令
  17.         rw=0;  //选择写入
  18.         e=0;   //使能清零
  19.         P0=c;        //放入命令
  20.         e=1;   //写入时序
  21.         delay(10); //保持时间
  22.         e=0;
  23.         /*
  24.         P0=c<<4;
  25.         e=1;
  26.         e=0;*/       //四位的LCD要加上
  27. }
  28. void wrd(uint8 dat)           /*读命令将数据写在LCD上*/
  29. {
  30.         delay(1000);
  31.         rs=1;         //选择输入数据
  32.         rw=0;        //选择写入
  33.         e=0;          //使能清零
  34.         P0=dat;         //写入数据
  35.         e=1;         //写入时序
  36.         delay(10);//保持时间
  37.         e=0;
  38.         /*
  39.         P0=dat<<4;
  40.         e=1;
  41.         e=0;           //四位的LCD要加上
  42.         rs=0;*/        
  43. }
  44. void init()          /*初始化设置*/
  45. {
  46.         delay(1000);
  47.         /*wrc(0x32);         
  48.         wrc(0x28);
  49.         wrc(0x28);        */        //四位的LCD要加上
  50.         wrc(0x38);         //8位数据总线,显示两行,5*10点阵        
  51.         wrc(0x0c);        
  52.         wrc(0x01);        
  53. }
  54. void display()
  55. {
  56.         uint8 i;
  57.         wrc(0x00+0x80);
  58.         for(i=0;i<16;i++)
  59.         {
  60.                 wrd(a[i]);
  61.                 delay(30000);        
  62.         }
  63.         wrc(0x40+0x80);
  64.         for(i=0;i<27;i++)
  65.         {
  66.                 wrd(b[i]);
  67.                 delay(30000);
  68.         }
  69.         wrc(0x07);         //每写一个数据屏幕就要右移一位,就相对于数据来说就是左移了;
  70. /*        while(1)
  71.         {        
  72.                 wrc(0x00+0x80);
  73.                 for(i=0;i<16;i++)
  74.                 {
  75.                         wrd(a[i]);
  76.                         delay(30000);        //如果不加这条延时语句的话滚动会非常快。
  77.                 }
  78.         }  */
  79. }
  80. void main()
  81. {
  82.         init();
  83.         while(1)
  84.         {
  85.                 display();

  86.         }        
  87. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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