找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LCD1602静态显示

[复制链接]
跳转到指定楼层
楼主

这是楼主自己做的一个基于51单片机的LCD静态液晶显示程序,硬件原理图和C语言文件楼主都放到了附件里,需要的同学可以下载看看。

单片机源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit rs=P2^0;
  6. sbit rw=P2^1;
  7. sbit ep=P2^2;
  8. uchar code  dis1[]={"51hei.com"};                 //这里输入的字符在液晶第一行显示
  9. uchar code  dis2[]={"2017/11/28"};                 //这里输入的字符在液晶第二行显示
  10. void delay(uint ms)
  11. {
  12.     uint i;
  13.         while(ms--)
  14.         {
  15.         for(i=0;i<120;i++);
  16.         }
  17. }

  18. uchar Busy_Check(void)
  19. {
  20.   uchar LCD_Status;
  21.   rs=0;
  22.   rw=1;
  23.   ep=1;
  24.   _nop_();
  25.   _nop_();
  26.   _nop_();
  27.   _nop_();
  28.   LCD_Status=P0&0x80;
  29.   ep=0;
  30.   return LCD_Status;
  31. }
  32. void lcd_wcmd(uchar cmd)
  33. {  
  34.    while(Busy_Check());
  35.    rs=0;
  36.    rw=0;
  37.    ep=0;                  //读状态
  38.    _nop_();
  39.    _nop_();
  40.    P0=cmd;
  41.    _nop_();
  42.    _nop_();
  43.    _nop_();
  44.    _nop_();
  45.    ep=1;
  46.   _nop_();
  47.    _nop_();
  48.    _nop_();
  49.    _nop_();
  50.    ep=0;
  51. }
  52. void lcd_pos(uchar pos)
  53. {  
  54.   lcd_wcmd(pos|0x80);
  55. }
  56. void lcd_wdat(uchar dat)
  57. {
  58.    while(Busy_Check());
  59.    rs=1;
  60.    rw=0;
  61.    ep=0;
  62.    P0=dat;
  63.    _nop_();
  64.    _nop_();
  65.    _nop_();
  66.    _nop_();
  67.    ep=1;
  68.   _nop_();
  69.    _nop_();
  70.    _nop_();
  71.    _nop_();
  72.    ep=0;
  73. }
  74. void LCD_disp(void)  
  75. {
  76.    uchar i;
  77.    lcd_pos(1);
  78.    i=0;
  79.    while(dis1[i]!='\0')
  80.    {
  81.      lcd_wdat(dis1[i]);
  82.          i++;
  83.    }
  84.   lcd_pos(0x41);
  85.   i=0;
  86.    while(dis2[i]!='\0')          //连续写入字符串数据,直到检测到结束符
  87.    {
  88.      lcd_wdat(dis2[i]);          //先取dis指向的数据,然后dis自加1
  89.          i++;
  90.    }
  91. }
  92. void lcd_init(void)
  93. {
  94.    lcd_wcmd(0x38);         //16*2显示,5*7点阵,8位数据接口
  95.    delay(1);
  96.    lcd_wcmd(0x0c);         //显示器开,光标关闭
  97.    delay(1);
  98.    lcd_wcmd(0x06);         //文字不动,地址自动+1
  99.    delay(1);
  100.    lcd_wcmd(0x1c);
  101.    delay(1);
  102. ……………………

  103. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
lcd显示.zip (49.66 KB, 下载次数: 18)


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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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