找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机LCD1602在两行显示字符A和OK实验 Proteus仿真加源程序

[复制链接]
跳转到指定楼层
楼主
51单片机驱动LCD1602液晶屏在两行显示字符A和OK实验的仿真原理图(proteus工程文件可到本帖附件下载):



单片机源程序:
  1. //-----------------------------------------------------------------------------------
  2. //程序名:  LCD8-2.c
  3. //程序功能:LCD在两行显示字符A和OK
  4. //-------------------------------------------------------------------------------------
  5. #include <reg51.h>   
  6. sbit RS=P2^5;                                   // 引脚定义  
  7. sbit RW=P2^6;                                                           
  8. sbit EN=P2^7;      
  9. sbit busy=P0^7;                                 // "忙"标志位      
  10. #define LCD P0                                  //命令或数据线
  11. //字符串表
  12. unsigned char code str2[]={" OK "};  

  13. //---------------------------------- 判断液晶显示器是否忙函数 ----------------------------

  14. CHECK_BF()                                      //判断是否忙碌
  15. {
  16.   do
  17.    {
  18.     LCD=0xff;   
  19.     RS=0;                                       // RS=0,选择指令寄存器
  20.     RW=1;                                       // RW=1,选择读模式
  21.     EN=0;                                       // 执行显示命令
  22.     EN=1;                                       // 允许读/写
  23.    }  
  24.   while(busy);                                  //busy为高电平表示忙,循环等待
  25. }

  26. //--------------------------------------  写命令函数  -----------------------------------

  27. WR_COMM()                                       //写命令
  28. {
  29.   RS=0;                                         // RS=0,选择指令寄存器
  30.   RW=0;                                         // RW=0,选择写模式
  31.   EN=0;                                         // 执行显示命令
  32.   CHECK_BF();                                   // 等待
  33.   EN=1;                                         // E=1,允许读/写LCD
  34. }

  35. //-------------------------------------- 写数据函数 -------------------------------------

  36. WR_DATA()                                       //写数据
  37. {
  38.   RS=1;                                         // RS=1,选择数据寄存器
  39.   RW=0;                                         //准备写入数据
  40.   EN=0;                                         //执行显示命令
  41.   CHECK_BF();                                   //判断液晶模块是否忙
  42.   EN=1;                                         // E=1,允许读/写LCD
  43. }

  44. //------------------------------------- 初始化函数 ---------------------------------

  45. INIT_LCD()                                       //初始化
  46. {
  47.    unsigned char i=200;
  48.     {
  49.       while(--i);
  50.       LCD=0x01;                               //清屏并光标复位
  51.       WR_COMM();                              //写入命令
  52.       LCD=0x38;                               //设置显示模式:8位2行5x7点阵
  53.       WR_COMM();
  54.       LCD=0x0f;                               //显示器开、光标关、光标禁止闪烁
  55.       WR_COMM();
  56.       LCD=0x06;                               //文字不动,光标自动右移
  57.       WR_COMM();                              //写入命令
  58.     }
  59. }

  60. //---------------------------------------- 主函数 -----------------------------------

  61. main()
  62. {
  63.   unsigned char i;

  64.   INIT_LCD();                                   //调用初始化函数
  65. //-----------------------------
  66. //写入第1行字符
  67.    LCD=0x84;                                      //写入显示起始地址(第1行第5个位置)                 
  68.    WR_COMM();                                     //写入命令                          
  69.    LCD=('A');                                     //写字符
  70.    WR_DATA();                              
  71.   //  }
  72. //------------------------------
  73. //写入第2行字符
  74. LCD=0xc7;                                      //写入显示起始地址(第2行第6个位置)                  
  75.   WR_COMM();                                   //写入命令                  
  76.   for(i=0;i<3;i++)                                
  77.     {
  78.       LCD=str2[i];                              //提取字符
  79.       WR_DATA();                                //送出
  80.     }
  81.   while(1);                                     //停止到这里  
  82. }

  83. //---------------------------------------------------------------------------------------
复制代码




该系列源码包含有很多非常经典,代码风格十分规范,而且注释详细的单片机例程,还带仿真,对于MCU学习特别是初学者是很有帮助的,全部源码下载(共25个项目):http://www.51hei.com/bbs/dpj-79328-1.html

本例程下载(含proteus仿真工程文件与源码):
单片机LCD1602在两行显示字符A和OK实验.rar (27.16 KB, 下载次数: 40)



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

使用道具 举报

沙发
ID:337513 发表于 2018-6-5 00:42 | 只看该作者
谢谢答主!很有帮助!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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