找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3184|回复: 3
收起左侧

1602液晶第一排显示黑色方块乱码是怎么回事?然后已经加了初始化程序,求教

[复制链接]
ID:416660 发表于 2018-11-3 14:41 来自手机 | 显示全部楼层 |阅读模式
如图:
IMG_20181103_132852.jpg
有背光显示,第一排显示黑色方块

单片机源程序如下:
  1. /***********************lcd1602写命令函数************************/
  2. void write_com(uchar com)
  3. {
  4.         e=0;
  5.         rs=0;
  6.         rw=0;
  7.         P0=com;
  8.         delay_uint(3);
  9.         e=1;
  10.         delay_uint(25);
  11.         e=0;
  12. }

  13. /***********************lcd1602写数据函数************************/
  14. void write_data(uchar dat)
  15. {
  16.         e=0;
  17.         rs=1;
  18.         rw=0;
  19.         P0=dat;
  20.         delay_uint(3);
  21.         e=1;
  22.         delay_uint(25);
  23.         e=0;      
  24. }

  25. /*********************光标控制***********************/
  26. void lcd1602_guanbiao(uchar open_off,uchar add)
  27. {
  28.         if(open_off == 1)   //开光标
  29.         {
  30.                 write_com(0x80+add);              //将光标移动到秒个位
  31.                 write_com(0x0f);                //显示光标并且闪烁
  32.         }
  33.         else
  34.         {
  35.                 write_com(0x0c);   //关光标
  36.         }               
  37. }

  38. /***********************lcd1602上显示两位十进制数************************/
  39. void write_sfm2(uchar hang,uchar add,uchar date)
  40. {
  41.         uchar shi,ge;
  42.         if(hang==1)   
  43.                 write_com(0x80+add);
  44.         else
  45.                 write_com(0x80+0x40+add);
  46.         shi=date%100/10;
  47.         ge=date%10;                  
  48.         write_data(0x30+shi);
  49.         write_data(0x30+ge);      
  50. }

  51. /***********************lcd1602上显示这字符函数************************/
  52. void write_string(uchar hang,uchar add,uchar *p)
  53. {
  54.         if(hang==1)   
  55.                 write_com(0x80+add);
  56.         else
  57.                 write_com(0x80+0x40+add);
  58.                 while(1)                                                                                                                 
  59.                 {
  60.                         if(*p == '\0')  break;
  61.                         write_data(*p);
  62.                         p++;
  63.                         delay_uint(50);
  64.                 }      
  65. }


  66. /***********************lcd1602初始化设置************************/
  67. void init_1602()
  68. {
  69.         write_com(0x38);        //
  70.         write_com(0x0c);
  71.         write_com(0x06);
  72.         delay_uint(1000);
  73.         write_string(1,0," Password Lock  ");      
  74.         write_string(2,0," Input:         ");
  75.         lcd1602_guanbiao(1,7+0x40);  //开光标
  76. }

复制代码


回复

使用道具 举报

ID:1 发表于 2018-11-3 15:28 | 显示全部楼层
这是51黑论坛里面别人相似问题的解决过程:http://www.51hei.com/bbs/dpj-39388-1.html
回复

使用道具 举报

ID:416660 发表于 2018-11-3 15:42 | 显示全部楼层
admin 发表于 2018-11-3 15:28
这是51黑论坛里面别人相似问题的解决过程:http://www.51hei.com/bbs/dpj-39388-1.html

谢谢。1602的电气该怎么设置呢?
回复

使用道具 举报

ID:55211 发表于 2018-11-3 21:38 | 显示全部楼层
写命令函数,lcd1602写数据函数 延时太久,如是c51延时一个机器周期就好
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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