找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机LCD1602自建温度标记图形程序实验 Proteus仿真加源程序

[复制链接]
跳转到指定楼层
楼主
单片机的仿真原理图(proteus工程文件可到本帖附件下载):



单片机源程序:
  1. //-----------------------------------------------------------------------------------
  2. //程序名:  LCD08-4.c
  3. //程序功能:LCD自建温度标记图形程序
  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. TEMP_BJ();
  12. STORE_DATA();
  13. //字符串表
  14. unsigned char code str[]={" C "};      
  15. //代码表
  16. unsigned char code TAB[]={ 0x0c,0x12,0x12,0x0c,
  17.                            0x00,0x00,0x00,0x00,
  18.                          };

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

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

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

  33. WR_COMM()                                       //写命令
  34. {
  35.   RS=0;                                         // RS=0,选择指令寄存器
  36.   RW=0;                                         // RW=0,选择写模式
  37.   EN=0;                                         // 执行显示命令
  38.   CHECK_BF();                                   // 等待
  39.   EN=1;                                         // E=1,允许读/写LCD
  40. }

  41. //-------------------------------------- 写数据函数 -------------------------------------

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

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

  51. INIT_LCD()                                       //初始化
  52. {
  53.    unsigned char i=200;
  54.     {
  55.       while(--i);
  56.       LCD=0x01;                                 //清屏并光标复位
  57.       WR_COMM();                                //写入命令
  58.       LCD=0x38;                                 //设置显示模式:8位2行5x7点阵
  59.       WR_COMM();
  60.       LCD=0x0c;                                 //开显示屏
  61.           WR_COMM();
  62.       LCD=0x06;                                 //文字不动,光标自动右移
  63.       WR_COMM();                                //写入命令
  64.     }
  65. }

  66. //--------------------------------  显示温度标记字符C函数 -------------------------

  67. TEMP_BJ()                                       //显示字符C
  68.      {      
  69.            LCD=0xcc;                                  //写入显示起始地址                 
  70.        WR_COMM();                                 //写入命令                                 
  71.        LCD=( 'C' );                               //写字符
  72.            WR_DATA();                              
  73.                          
  74.         }
  75. //----------------------------------- 自定义字符函数 --------------------------------
  76.   STORE_DATA()
  77.     {
  78.        unsigned char i;
  79.            LCD=0x40;                                      // 指定CG RAM起始地址                 
  80.        WR_COMM();                                     //写入命令                  
  81.        for(i=0;i<9;i++)                                
  82.         {
  83.           LCD=TAB[i];                                //提取字符
  84.           WR_DATA();                                 //送出
  85.         }
  86.   //------------------------------------         
  87.            LCD=0xcb;                                      //写入显示起始地址
  88.            WR_COMM();                                     //写入命令
  89.        LCD=0x00;                                      //CGRAM内第0号图形
  90.        WR_DATA();                                           //写入数据                          
  91.         }

  92. //------------------------------------- 主函数 -----------------------------------

  93. main()
  94. {
  95.    INIT_LCD();                                   //调用初始化函数
  96.    TEMP_BJ();                                    //调用显示温度标记字符C函数
  97.    STORE_DATA();                                 //调用自定义字符函数

复制代码



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

本例程下载(含proteus仿真工程文件与源码):
单片机LCD1602自建温度标记图形程序实验.rar (28.35 KB, 下载次数: 11)

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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