標題: 單片機+LCD1602顯示重碼,請大神們幫忙分析程序 [打印本頁]

作者: 老二不怕黑    時間: 2022-9-5 11:45
標題: 單片機+LCD1602顯示重碼,請大神們幫忙分析程序
某一個寶買的1602顯示屏,沒有PDF,好不容易找個程序給顯示了,但是卻沒有按程序顯示,求大神們幫忙看看呢
/*********************************************************************************
* 【外部晶振】: 11.0592mhz        
* 【主控芯片】: STC12C5612AD
* 【程序功能】: 1602基本顯示                                                                                          
* 【疑難雜癥】: 現(xiàn)在能顯示,但是如照片一樣,程序里寫的是ABCDEFGHIJKLMN,但是顯示的時候
每隔以一位還是顯示上一個數(shù)據(jù),還是時序沒對嗎?
**********************************************************************************/

//#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位數(shù)據(jù)接口
        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腳數(shù)據(jù)沒有正常傳輸。
作者: 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
根據(jù)錯碼規(guī)律,可以肯定是P1到1602的8根連接線中的P1.0有問題。




作者: 370008208    時間: 2022-9-5 17:01
把0xc0改成0x80+0x40試下。
作者: 老二不怕黑    時間: 2022-9-5 18:45
xuyaqi 發(fā)表于 2022-9-5 14:20
焊接問題,虛焊,連腳。

我是用烙鐵焊接的,型號是HM1602H,
作者: 老二不怕黑    時間: 2022-9-5 18:46
xuyaqi 發(fā)表于 2022-9-5 14:21
杜邦線連接不良。

我是用烙鐵焊接的,型號是HM1602H,
作者: wulin    時間: 2022-9-5 21:12
老二不怕黑 發(fā)表于 2022-9-5 18:46
我是用烙鐵焊接的,型號是HM1602H,



作者: 老二不怕黑    時間: 2022-9-6 11:03
370008208 發(fā)表于 2022-9-5 17:01
把0xc0改成0x80+0x40試下。

謝謝了,剛剛試了下不對的,沒效果
作者: 老二不怕黑    時間: 2022-9-6 11:49
angmall 發(fā)表于 2022-9-5 16:44
檢查接腳,D0 和 D1 短路了。

更換了液晶和mcu,還是一樣的效果,,謝謝了
作者: 老二不怕黑    時間: 2022-9-6 11:50
wulin 發(fā)表于 2022-9-5 16:48
根據(jù)錯碼規(guī)律,可以肯定是P1到1602的8根連接線中的P1.0有問題。

測量硬件連接沒得問題,更換了液晶和單片機都是一樣的結果,如果把錯的那個字符換成另一個字符又是對的
作者: lkc8210    時間: 2022-9-7 09:47























作者: dyx811    時間: 2022-9-7 10:17
樓主可不可以把整個板子都看一下。我也想學學
作者: 老二不怕黑    時間: 2022-9-7 12:55
lkc8210 發(fā)表于 2022-9-7 09:47

我懂起這個意思了,試了一下還是不對的,因為我那有輸入Q顯示卻是P,感覺像是字庫不對一樣,請幫忙分析下會不會有那個可能呢,
作者: lkc8210    時間: 2022-9-7 13:31
老二不怕黑 發(fā)表于 2022-9-7 12:55
我懂起這個意思了,試了一下還是不對的,因為我那有輸入Q顯示卻是P,感覺像是字庫不對一樣,請幫忙分析下 ...

輸入Q顯示P不就是D0開路了
你用什么開發(fā)板?
作者: wulin    時間: 2022-9-7 13:41
老二不怕黑 發(fā)表于 2022-9-7 12:55
我懂起這個意思了,試了一下還是不對的,因為我那有輸入Q顯示卻是P,感覺像是字庫不對一樣,請幫忙分析下 ...

樓主不要固執(zhí)己見,胡亂懷疑,其實就是簡單的人為操作不當?shù)墓收。無外乎是虛焊、漏焊、斷線、搭地、接觸不良。Q的ASCII碼是0x51,P的ASCII碼是0x50。只要用萬用表測一下P1.0到1602的D0的電壓就能查出故障所在。
作者: 老二不怕黑    時間: 2022-9-7 15:32
wulin 發(fā)表于 2022-9-7 13:41
樓主不要固執(zhí)己見,胡亂懷疑,其實就是簡單的人為操作不當?shù)墓收。無外乎是虛焊、漏焊、斷線、搭地、接觸 ...

沒有胡亂懷疑,單片機那邊是焊接的,然后LCD那邊是插接的,自己做的座子,很牢的,扯都扯不掉的,然后萬用表打都是通的,
作者: 老二不怕黑    時間: 2022-9-7 15:35
dyx811 發(fā)表于 2022-9-7 10:17
樓主可不可以把整個板子都看一下。我也想學學

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

51hei圖片_20220907153155.jpg (5.32 MB, 下載次數(shù): 229)

51hei圖片_20220907153155.jpg

51hei圖片_20220907153200.jpg (5.42 MB, 下載次數(shù): 211)

51hei圖片_20220907153200.jpg

作者: 老二不怕黑    時間: 2022-9-7 15:36
lkc8210 發(fā)表于 2022-9-7 09:47

謝謝朋友認真幫忙仿真,但是我實測了各個線路都是通的呢
作者: 188610329    時間: 2022-9-7 16:16
老二不怕黑 發(fā)表于 2022-9-7 15:36
謝謝朋友認真幫忙仿真,但是我實測了各個線路都是通的呢

萬用表你測通不通得多長時間?實際數(shù)據(jù)傳輸多長時間?對于數(shù)據(jù)線來講,萬用表測出的“通”都是有待考證的,只有“不通”才是可信的。看了你的焊點,我覺得d0不通的可能性太大了。我以前焊功濫的時候,也有過這情況也是不信邪,最后呢,試了所有的方法后,最后只能懷疑自己的焊接技術,拋棄所有的線,直接用電阻,LED,剪下來的引腳,焊好后,正常了,認識到自己的問題了,再耐心用24的線一個個替換,當然事后是努力提高自己焊接熟練度,避免這種情況發(fā)生,純粹講一下自身經(jīng)歷,是否有參考價值,樓主自行判斷。
作者: 老二不怕黑    時間: 2022-9-7 16:29
188610329 發(fā)表于 2022-9-7 16:16
萬用表你測通不通得多長時間?實際數(shù)據(jù)傳輸多長時間?對于數(shù)據(jù)線來講,萬用表測出的“通”都是有待考證的, ...

好的,謝謝指教,我等下再把排針取了焊孔里面看
作者: wulin    時間: 2022-9-7 16:41
老二不怕黑 發(fā)表于 2022-9-7 15:36
謝謝朋友認真幫忙仿真,但是我實測了各個線路都是通的呢

看了你的PCB及焊接技術,還有極大提升空間。不是各個線路都是通的就不會有問題,還要確保每個焊接點都不會與其他不同網(wǎng)絡竄連。你用表測一下P1.0網(wǎng)絡對地阻值是多少,懷疑對地或相鄰電路短路。如不是人為錯誤造成也有可能是PCB加工有瑕疵。這在實踐中會遇到。
作者: 老二不怕黑    時間: 2022-9-7 19:01
wulin 發(fā)表于 2022-9-7 16:41
看了你的PCB及焊接技術,還有極大提升空間。不是各個線路都是通的就不會有問題,還要確保每個焊接點都不 ...

          對頭了,找到原因了,是之前這個PCB版做其他測試時P1.0端口在別的地方加了一個下拉電阻,然后現(xiàn)在去掉就OK了,謝謝師傅悉心解答!

同時謝謝樓上各位師傅的細心幫忙!非常感謝,

作者: 老二不怕黑    時間: 2022-9-7 19:09
謝謝各位師傅的幫助,成功顯示了,后續(xù)有更新再上圖了!


作者: zilihangjian    時間: 2022-9-9 12:10
這基本上可以判斷硬件出了問題,仔細檢查一下線路。
作者: 老二不怕黑    時間: 2022-9-12 12:10
ADC_I_SENSCE.zip (1.83 MB, 下載次數(shù): 6)
時鐘和溫度,還有電壓電流檢測,算是搞完了,請大神幫忙看看有問題沒得呢 ,順便弱弱的問下,有沒有能免費薅羊毛的地方呢,加力創(chuàng)和華秋試了不得行啊






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1