找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机驱动lcd1602横屏移动显示仿真及源码

[复制链接]
ID:137190 发表于 2016-9-27 19:50 | 显示全部楼层 |阅读模式
51单片机驱动lcd1602液晶屏实现横屏移动显示的仿真图:
0.png

源程序:
  1. /***************************************************************
  2. 功能:实现输入密码对时提示灯亮         打开密码锁和修改密码
  3. /**************************************************************/

  4. /****************头文件*******定义变量型 **********************/
  5. #include <reg52.h>
  6. #include <intrins.h>

  7. /***************************************************************

  8. ***************************************************************/
  9. #define uchar unsigned char                                                  // 无符号字符整形 0~ 256
  10. #define uint unsigned int                                                  //定义无符号整形        0~65536

  11. //*************1602*************************
  12. sbit rs=P2^7;                        //命令数据
  13. sbit rw=P2^6;                        //读写
  14. sbit e=P2^5;                        //使能端

  15. /******LCD1602显示内容************************************/
  16. uchar code table0[]=" Welcome to use ";           //第一行地址80H显示 滚动显示
  17. uchar code table1[]="The Keypad Lock!";           //第一行地址80H+0x10屏幕外显示 滚动进入
  18. uchar code table2[]="Maker:majiangtao";           //第一行地址80H显示 宣传显示用

  19. /*********************************************************/

  20. /***************延时函数******************************/
  21. void delay_ms(uint ms)
  22. {
  23.         uint x,y;
  24.         for(x=ms;x>0;x--)
  25.                 for(y=110;y>0;y--);
  26. }

  27. void delay_us(uint us)
  28. {
  29.         uint x;
  30.         for(x=us;x>0;x--)
  31.         {
  32.                 _nop_();
  33.         }

  34. }


  35. /******************LCD1602**********************************/

  36. void write_com(uchar com)        /*写指令*/
  37. {
  38.         e=0;           rs=0;          rw=0;
  39.         P3=com;
  40.         delay_ms(10);  
  41.         e=1;
  42.         delay_ms(10);
  43.         e=0;
  44. }
  45. void write_data(uchar dat)          /*写数据*/
  46. {
  47.         e=0;          rs=1;         rw=0;
  48.         P3=dat;
  49.         delay_ms(10);  //500us
  50.         e=1;
  51.         delay_ms(10);
  52.         e=0;
  53.        
  54. }



  55. /******************界面初始化*******************************/
  56. void init()
  57. {

  58.                 write_com(0x38);
  59.                 write_com(0x0e);
  60.                 write_com(0x06);
  61.                 write_com(0x01);               

  62.        
  63. }
  64. /******************登陆画面**********************************/
  65. void jiemian()
  66. {
  67.         uchar j;

  68.                 write_com(0x80 + 0x50);
  69.                 for(j=0;j<16;j++)
  70.                 {
  71.                         write_data(table0[j]);
  72.                         delay_us(10);       
  73.                 }
  74.                
  75.                 for(j=0;j<16;j++)
  76.                 {
  77.                         write_com(0x18);
  78.                     delay_ms(150);         
  79.                 }
  80.                 delay_ms(2000);
  81.                 write_com(0x01);

  82.         write_com(0x80);
  83.         for(j=0;j<16;j++)
  84.         {
  85.                 write_data(table0[j]);
  86.                 delay_us(10);       
  87.         }
  88.                 write_com(0x80 + 0x40);
  89.         for(j=0;j<16;j++)
  90.         {
  91.                 write_data(table2[j]);
  92.                 delay_us(10);       
  93.         }

  94. }


  95. /****************************总函数*************************/


  96. void main()
  97. {
  98.         init();                                            //1602初始化
  99.         jiemian();                                  //1602显示界面
  100. }
复制代码



1602横屏移动显示.rar

49.8 KB, 下载次数: 7, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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