找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机驱动lcd1602只显示方格不显示文字

[复制链接]
跳转到指定楼层
楼主
1602只显示方格不显示文字。昨天我弄得时候还可以显示今天就不行了,首先我确定接线什么的无误,因为这是开发板直接插上就行,其次我也调过变阻器了只有方格明暗变化,文字依旧不显示。我把厂家给的代码也附上



  1. #include <reg51.h>
  2. #include <intrins.h>

  3. typedef unsigned char BYTE;
  4. typedef unsigned int WORD;
  5. typedef bit BOOL ;

  6. sbit rs        = P2^0;               
  7. sbit rw = P2^1;
  8. sbit ep = P2^2;

  9. BYTE code dis1[] = {"WELCOME! Zhi Jie"};
  10. BYTE code dis2[] = {"ELECTRONICS TECH"};

  11. delay(BYTE ms)
  12. {                                                        // 延时子程序
  13.         BYTE i;
  14.         while(ms--)
  15.         {
  16.                 for(i = 0; i< 250; i++)
  17.                 {
  18.                         _nop_();
  19.                         _nop_();
  20.                         _nop_();
  21.                         _nop_();
  22.                 }
  23.         }
  24. }

  25. BOOL lcd_bz()
  26. {                                                        // 测试LCD忙碌状态
  27.         BOOL result;
  28.         rs = 0;
  29.         rw = 1;
  30.         ep = 1;
  31.         _nop_();
  32.         _nop_();
  33.         _nop_();
  34.         _nop_();
  35.         result = (BOOL)(P0 & 0x80);
  36.         ep = 0;
  37.         return result;        
  38. }

  39. lcd_wcmd(BYTE cmd)
  40. {                                                        // 写入指令数据到LCD
  41.         while(lcd_bz());
  42.         rs = 0;
  43.         rw = 0;
  44.         ep = 0;
  45.         _nop_();
  46.         _nop_();        
  47.         P0 = cmd;
  48.         _nop_();
  49.         _nop_();
  50.         _nop_();
  51.         _nop_();
  52.         ep = 1;
  53.         _nop_();
  54.         _nop_();
  55.         _nop_();
  56.         _nop_();
  57.         ep = 0;               
  58. }

  59. lcd_pos(BYTE pos)
  60. {                                                        //设定显示位置
  61.         lcd_wcmd(pos | 0x80);
  62. }

  63. lcd_wdat(BYTE dat)        
  64. {                                                        //写入字符显示数据到LCD
  65.         while(lcd_bz());
  66.         rs = 1;
  67.         rw = 0;
  68.         ep = 0;
  69.         P0 = dat;
  70.         _nop_();
  71.         _nop_();
  72.         _nop_();
  73.         _nop_();
  74.         ep = 1;
  75.         _nop_();
  76.         _nop_();
  77.         _nop_();
  78.         _nop_();
  79.         ep = 0;        
  80. }

  81. lcd_init()
  82. {                                                        //LCD初始化设定
  83.         lcd_wcmd(0x38);                        
  84.         delay(1);
  85.         lcd_wcmd(0x0c);                        
  86.         delay(1);
  87.         lcd_wcmd(0x06);                        
  88.         delay(1);
  89.         lcd_wcmd(0x01);                                        //清除LCD的显示内容
  90.         delay(1);
  91. }

  92. main()
  93. {
  94.         BYTE i;
  95.         lcd_init();                                // 初始化LCD                        
  96.         delay(10);
  97.         lcd_pos(0);                                // 设置显示位置为第一行的第1个字符
  98.         i = 0;
  99.         while(dis1[i] != '\0')
  100.         {                                                // 显示字符"WELCOME! Zhi Jie"
  101.                 lcd_wdat(dis1[i]);
  102.                 i++;
  103.         }
  104.         lcd_pos(0x40);                        // 设置显示位置为第二行第1个字符
  105.         i = 0;
  106.         while(dis2[i] != '\0')
  107.         {
  108.                 lcd_wdat(dis2[i]);        // 显示字符"ELECTRONICS TECH"
  109.                 i++;
  110.         }
  111.         while(1);                                
  112. }

复制代码



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

使用道具 举报

沙发
ID:149451 发表于 2017-4-5 10:34 | 只看该作者
继续检查实物吧,程序是OK的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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