找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机1602液晶测试小程序 从左侧飞入显示

[复制链接]
ID:241550 发表于 2020-2-28 23:28 | 显示全部楼层 |阅读模式
这几天在学液晶模块的用法,写了一个简单的显示程序。
P1口走数据,其他接口见程序注释(晶振11.0592)

单片机源程序如下:
  1. #include <reg52.h>   //此程序用于1602液晶从左侧飞入显示
  2. #define ui unsigned int
  3. #define uc unsigned char
  4. /*数据口是P1*/
  5. sbit rs=P2^3;                           //定义管脚
  6. sbit rw=P2^4;
  7. sbit e =P2^5;
  8. uc num;

  9. uc code t[]="Hello,";
  10. uc code t1[]="World!";

  11. void delay(ui x)                         //毫秒延时
  12. {
  13.         ui i,j;
  14.         for(i=x;i>0;i--)
  15.                 for(j=110;j>0;j--);
  16.                 }

  17. void w_com(ui com)                         //写命令
  18. {
  19.         rs=0;
  20.         rw=0;
  21.         P0=com;
  22.         delay(5);
  23.         e=1;
  24.         delay(5);
  25.         e=0;
  26.         }

  27. void w_data(ui dat)                        //写数据
  28. {
  29.         rs=1;
  30.         rw=0;
  31.         P0=dat;
  32.         delay(5);
  33.         e=1;
  34.         delay(5);
  35.         e=0;
  36.         }

  37. void init()                                 //初始化
  38. {
  39.         w_com(0x38);
  40.         w_com(0x0c);
  41.         w_com(0x06);
  42.         w_com(0x01);
  43.         }

  44. void shan()                                 //二极管闪烁
  45. {
  46.         P1=0x00;
  47.         delay(200);
  48.         P1=0xff;
  49.         delay(200);
  50.         P1=0x00;
  51.         delay(200);
  52.         P1=0xff;
  53. }

  54. void main()
  55. {
  56.         init();
  57.         delay(5);
  58.        
  59.         w_com(0x80+0x10);      //调数据指针

  60.         num=0;                                   //写第一行
  61.         while(num<6)
  62.         {
  63.                 w_data(t[num]);
  64.                 delay(5);
  65.                 num++;
  66.                 }
  67.         delay(5);

  68.         w_com(0x80+0x50);      //调数据指针
  69.         num=0;                                   //写第二行
  70.         while(num<6)
  71.         {
  72.                 w_data(t1[num]);
  73.                 delay(5);
  74.                 num++;
  75.                 }
  76.         delay(5);

  77.                               
  78.         for(num=16;num>0;num--)                //左移
  79.                 {
  80.                         w_com(0x18);
  81.                         delay(300);
  82.                         }
  83.         shan();
  84.         while(1);
  85.         }
复制代码

所有资料51hei提供下载:
cs1602.rar (16.49 KB, 下载次数: 5)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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