找回密码
 立即注册

QQ登录

只需一步,快速开始

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

1602液晶单片机显示程序

[复制链接]
跳转到指定楼层
楼主
ID:259345 发表于 2017-12-9 11:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. * 【编写时间】: 3月5日
  2. * 【作    者】: 清翔电子:03
  3. * 【版    本】: 1.0
  4. * 【实验平台】: QX-MCS51 单片机开发板
  5. * 【外部晶振】: 11.0592mhz        
  6. * 【主控芯片】: STC89C52RC
  7. * 【编译环境】: Keil μVisio4        
  8. * 【程序功能】: 1602液晶显示                                                                                          
  9. * 【使用说明】: 1.使用1602液晶前先拔掉数码管J6跳帽,数码管与液晶不能共用
  10.                  2.将1602液晶接到L2排母上,液晶面向开发板外部
  11.                                  3.若程序烧写完成后,1602液晶无显示,请调节开发板右下方的电位器RV1                                 
  12. **********************************************************************************/

  13. # include <reg51.h>
  14. # include <intrins.h>
  15. typedef unsigned char BYTE;
  16. typedef unsigned int WORD;
  17. typedef bit BOOL;

  18. sbit rs=P0^7;
  19. sbit rw=P0^6;
  20. sbit ep=P0^5;

  21. BYTE code dis1 []={"     QXMCU     "};
  22. BYTE code dis2 []={"HTTP://QXMCU#COM"};

  23. void delay (int m)
  24. {
  25. unsigned char i,j;
  26. for (i=0;i<m;i++)
  27. for (j=0;j<253;j++);
  28. }

  29. BOOL lcd_bz()
  30. {
  31.   BOOL result;
  32.   rs=0;           // 读忙信号
  33.   rw=1;
  34.   ep=1;
  35.   _nop_();
  36.   _nop_();
  37.   _nop_();
  38.   _nop_();
  39.   result = (BOOL)(P2&0x80);
  40.   ep=0;
  41.   return result;
  42. }

  43. void lcd_wcmd (BYTE cmd)
  44. {
  45.   while (lcd_bz());
  46.   rs=0;
  47.   rw=0;
  48.   ep=0;
  49.   _nop_();
  50.   _nop_();
  51.   P2=cmd ;
  52.   _nop_();
  53.   _nop_();
  54.   _nop_();
  55.   _nop_();
  56.   ep=1;
  57.   _nop_();
  58.   _nop_();
  59.   _nop_();
  60.   _nop_();
  61.   ep=0;
  62. }

  63. void lcd_pos (BYTE pos)
  64. {
  65.   lcd_wcmd (pos|0x80);
  66. }

  67. void lcd_wdat (BYTE dat)
  68. {
  69.    while (lcd_bz());
  70.   rs=1;
  71.   rw=0;
  72.   ep=0;
  73.   _nop_();
  74.   _nop_();
  75.   P2=dat ;
  76.   _nop_();
  77.   _nop_();
  78.   _nop_();
  79.   _nop_();
  80.   ep=1;
  81.   _nop_();
  82.   _nop_();
  83.   _nop_();
  84.   _nop_();
  85.   ep=0;
  86. }

  87. void lcd_init ()
  88. {
  89.   lcd_wcmd (0x38);
  90.   delay (1);
  91.   lcd_wcmd (0x0c);
  92.   delay (1);
  93.   lcd_wcmd (0x06);
  94.   delay (1);
  95.   lcd_wcmd (0x01);
  96.   delay (1);
  97. }

  98. main ()
  99. {
  100.   BYTE i;
  101.   lcd_init ();
  102.   delay (10);

  103.   lcd_pos (0);
  104.   i=0;
  105.   while (dis1 [i]!='\0')
  106.    {
  107.      lcd_wdat (dis1 [i]);
  108.      i++;        
  109.    }

  110.    lcd_pos (0x40);
  111.   i=0;
  112.   while (dis2 [i]!='\0')
  113.    {
  114.      lcd_wdat (dis2 [i]);
  115.      i++;        
  116.    }
  117.    while (1);
  118. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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