标题: 单片机+LCD1602显示重码,请大神们帮忙分析程序 [打印本页]

作者: 老二不怕黑    时间: 2022-9-5 11:45
标题: 单片机+LCD1602显示重码,请大神们帮忙分析程序
某一个宝买的1602显示屏,没有PDF,好不容易找个程序给显示了,但是却没有按程序显示,求大神们帮忙看看呢
/*********************************************************************************
* 【外部晶振】: 11.0592mhz        
* 【主控芯片】: STC12C5612AD
* 【程序功能】: 1602基本显示                                                                                          
* 【疑难杂症】: 现在能显示,但是如照片一样,程序里写的是ABCDEFGHIJKLMN,但是显示的时候
每隔以一位还是显示上一个数据,还是时序没对吗?
**********************************************************************************/

//#include<reg52.h>
#include<612AD.H>

#define uchar unsigned char
#define uint unsigned int

sbit rs=P3^5;
sbit rw=P3^4;        
sbit en=P3^3;
uchar table1[]={"ABCDEFGHIJKLMN"}; //实物上显示aBBDDFFHHJJLLN,请问第一个字符怎么会是小写呢,还有按程序来第三个字符应该是C的啊,实物显示却是B,请大神们帮忙研究研究呢,还有好多字母都显示不全呢,我想显示Q却显示P,想显示O却显示D
uchar table2[]="0123456789ABCDEFG";//实物上显示0022446688aBBD,
void delay(uint x)
{
        uint a,b;
        for(a=x;a>0;a--)
                for(b=10;b>0;b--);
}



void write_com(uchar com)
{
        P1=com;
        rs=0;
        en=0;
        delay(20);
        en=1;
        delay(20);
        en=0;
        
}

void write_date(uchar date)
{
        P1=date;
        rs=1;
        en=0;
        delay(20);
        en=1;
        delay(20);
        en=0;
        
}

void init()
{
        rw=0;
        write_com(0x38);   //显示模式设置:16×2显示,5×7点阵,8位数据接口
        delay(25);
        write_com(0x0f);   //显示模式设置
        delay(25);
        write_com(0x06);   //显示模式设置:光标右移,字符不移
        delay(25);
        write_com(0x01);   //清屏幕指令,将以前的显示内容清除
        delay(25);        
}

void main()
{
        uchar a;
        init();

{
        write_com(0x80);         //将第一个字符写在向右偏移17个字符处,为后面的由右向左划入做准备。
        delay(25);
        for(a=0;a<14;a++)
        {
        write_date(table1[a]);
        delay(50);               
        }

        write_com(0xc0);
        delay(50);
        for(a=0;a<14;a++)
        {
        write_date(table2[a]);
        delay(50);               
        }
}
        while(1);
}




作者: wwh2382    时间: 2022-9-5 13:00
确定你买的是1602?
作者: xuyaqi    时间: 2022-9-5 14:20
焊接问题,虚焊,连脚。
作者: xuyaqi    时间: 2022-9-5 14:21
杜邦线连接不良。
作者: mengsiu    时间: 2022-9-5 15:05
略略看了一下代码,似乎没什么异常。
楼上的说杜邦线连接不良,也不排除这个原因。应该是D0脚数据没有正常传输。
作者: angmall    时间: 2022-9-5 16:44
检查接脚,D0 和 D1 短路了。

  1. ABCDEFGHIJKLMN
  2. @BBDDFFHHJJLLN


  3. 40 41 A
  4. 42 42 B
  5. 42 43 C
  6. 44 44 D
  7. 44 45 E
  8. 46 46
  9. 46 47
  10. 48 48
  11. 48 49
  12. 4A 4A
  13. 4A 4B
  14. 4C 4C
  15. 4C 4D
  16. 4E 4E
复制代码

作者: wulin    时间: 2022-9-5 16:48
根据错码规律,可以肯定是P1到1602的8根连接线中的P1.0有问题。




作者: 370008208    时间: 2022-9-5 17:01
把0xc0改成0x80+0x40试下。
作者: 老二不怕黑    时间: 2022-9-5 18:45
xuyaqi 发表于 2022-9-5 14:20
焊接问题,虚焊,连脚。

我是用烙铁焊接的,型号是HM1602H,
作者: 老二不怕黑    时间: 2022-9-5 18:46
xuyaqi 发表于 2022-9-5 14:21
杜邦线连接不良。

我是用烙铁焊接的,型号是HM1602H,
作者: wulin    时间: 2022-9-5 21:12
老二不怕黑 发表于 2022-9-5 18:46
我是用烙铁焊接的,型号是HM1602H,



作者: 老二不怕黑    时间: 2022-9-6 11:03
370008208 发表于 2022-9-5 17:01
把0xc0改成0x80+0x40试下。

谢谢了,刚刚试了下不对的,没效果
作者: 老二不怕黑    时间: 2022-9-6 11:49
angmall 发表于 2022-9-5 16:44
检查接脚,D0 和 D1 短路了。

更换了液晶和mcu,还是一样的效果,,谢谢了
作者: 老二不怕黑    时间: 2022-9-6 11:50
wulin 发表于 2022-9-5 16:48
根据错码规律,可以肯定是P1到1602的8根连接线中的P1.0有问题。

测量硬件连接没得问题,更换了液晶和单片机都是一样的结果,如果把错的那个字符换成另一个字符又是对的
作者: lkc8210    时间: 2022-9-7 09:47























作者: dyx811    时间: 2022-9-7 10:17
楼主可不可以把整个板子都看一下。我也想学学
作者: 老二不怕黑    时间: 2022-9-7 12:55
lkc8210 发表于 2022-9-7 09:47

我懂起这个意思了,试了一下还是不对的,因为我那有输入Q显示却是P,感觉像是字库不对一样,请帮忙分析下会不会有那个可能呢,
作者: lkc8210    时间: 2022-9-7 13:31
老二不怕黑 发表于 2022-9-7 12:55
我懂起这个意思了,试了一下还是不对的,因为我那有输入Q显示却是P,感觉像是字库不对一样,请帮忙分析下 ...

输入Q显示P不就是D0开路了
你用什么开发板?
作者: wulin    时间: 2022-9-7 13:41
老二不怕黑 发表于 2022-9-7 12:55
我懂起这个意思了,试了一下还是不对的,因为我那有输入Q显示却是P,感觉像是字库不对一样,请帮忙分析下 ...

楼主不要固执己见,胡乱怀疑,其实就是简单的人为操作不当的故障。无外乎是虚焊、漏焊、断线、搭地、接触不良。Q的ASCII码是0x51,P的ASCII码是0x50。只要用万用表测一下P1.0到1602的D0的电压就能查出故障所在。
作者: 老二不怕黑    时间: 2022-9-7 15:32
wulin 发表于 2022-9-7 13:41
楼主不要固执己见,胡乱怀疑,其实就是简单的人为操作不当的故障。无外乎是虚焊、漏焊、断线、搭地、接触 ...

没有胡乱怀疑,单片机那边是焊接的,然后LCD那边是插接的,自己做的座子,很牢的,扯都扯不掉的,然后万用表打都是通的,
作者: 老二不怕黑    时间: 2022-9-7 15:35
dyx811 发表于 2022-9-7 10:17
楼主可不可以把整个板子都看一下。我也想学学

之前自己画的PCB,还是有很多不到位的地方

51hei图片_20220907153155.jpg (5.32 MB, 下载次数: 229)

51hei图片_20220907153155.jpg

51hei图片_20220907153200.jpg (5.42 MB, 下载次数: 211)

51hei图片_20220907153200.jpg

作者: 老二不怕黑    时间: 2022-9-7 15:36
lkc8210 发表于 2022-9-7 09:47

谢谢朋友认真帮忙仿真,但是我实测了各个线路都是通的呢
作者: 188610329    时间: 2022-9-7 16:16
老二不怕黑 发表于 2022-9-7 15:36
谢谢朋友认真帮忙仿真,但是我实测了各个线路都是通的呢

万用表你测通不通得多长时间?实际数据传输多长时间?对于数据线来讲,万用表测出的“通”都是有待考证的,只有“不通”才是可信的。看了你的焊点,我觉得d0不通的可能性太大了。我以前焊功滥的时候,也有过这情况也是不信邪,最后呢,试了所有的方法后,最后只能怀疑自己的焊接技术,抛弃所有的线,直接用电阻,LED,剪下来的引脚,焊好后,正常了,认识到自己的问题了,再耐心用24的线一个个替换,当然事后是努力提高自己焊接熟练度,避免这种情况发生,纯粹讲一下自身经历,是否有参考价值,楼主自行判断。
作者: 老二不怕黑    时间: 2022-9-7 16:29
188610329 发表于 2022-9-7 16:16
万用表你测通不通得多长时间?实际数据传输多长时间?对于数据线来讲,万用表测出的“通”都是有待考证的, ...

好的,谢谢指教,我等下再把排针取了焊孔里面看
作者: wulin    时间: 2022-9-7 16:41
老二不怕黑 发表于 2022-9-7 15:36
谢谢朋友认真帮忙仿真,但是我实测了各个线路都是通的呢

看了你的PCB及焊接技术,还有极大提升空间。不是各个线路都是通的就不会有问题,还要确保每个焊接点都不会与其他不同网络窜连。你用表测一下P1.0网络对地阻值是多少,怀疑对地或相邻电路短路。如不是人为错误造成也有可能是PCB加工有瑕疵。这在实践中会遇到。
作者: 老二不怕黑    时间: 2022-9-7 19:01
wulin 发表于 2022-9-7 16:41
看了你的PCB及焊接技术,还有极大提升空间。不是各个线路都是通的就不会有问题,还要确保每个焊接点都不 ...

          对头了,找到原因了,是之前这个PCB版做其他测试时P1.0端口在别的地方加了一个下拉电阻,然后现在去掉就OK了,谢谢师傅悉心解答!

同时谢谢楼上各位师傅的细心帮忙!非常感谢,

作者: 老二不怕黑    时间: 2022-9-7 19:09
谢谢各位师傅的帮助,成功显示了,后续有更新再上图了!!


作者: zilihangjian    时间: 2022-9-9 12:10
这基本上可以判断硬件出了问题,仔细检查一下线路。
作者: 老二不怕黑    时间: 2022-9-12 12:10
ADC_I_SENSCE.zip (1.83 MB, 下载次数: 6)
时钟和温度,还有电压电流检测,算是搞完了,请大神帮忙看看有问题没得呢 ,顺便弱弱的问下,有没有能免费薅羊毛的地方呢,加力创和华秋试了不得行啊






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