标题: 1602液晶第一排显示黑色方块乱码是怎么回事?然后已经加了初始化程序,求教 [打印本页]

作者: hbiken_    时间: 2018-11-3 14:41
标题: 1602液晶第一排显示黑色方块乱码是怎么回事?然后已经加了初始化程序,求教
如图:

有背光显示,第一排显示黑色方块

单片机源程序如下:
  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. }

复制代码



作者: admin    时间: 2018-11-3 15:28
这是51黑论坛里面别人相似问题的解决过程:http://www.51hei.com/bbs/dpj-39388-1.html
作者: hbiken_    时间: 2018-11-3 15:42
admin 发表于 2018-11-3 15:28
这是51黑论坛里面别人相似问题的解决过程:http://www.51hei.com/bbs/dpj-39388-1.html

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

作者: 475345347    时间: 2018-11-3 21:38
写命令函数,lcd1602写数据函数 延时太久,如是c51延时一个机器周期就好





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1