找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1230|回復(fù): 13
收起左側(cè)

51單片機(jī)顯示問題

[復(fù)制鏈接]
ID:1085509 發(fā)表于 2025-1-11 20:22 | 顯示全部樓層 |閱讀模式
請教各位大佬,我使用51單片機(jī)做測距抽水的系統(tǒng),當(dāng)距離沒達(dá)到預(yù)設(shè)值時,顯示如圖1,當(dāng)距離達(dá)到預(yù)設(shè)值水泵啟動,顯示屏變?yōu)閳D2,距離正常時不會自動回到顯示距離的界面(像圖1),一直保持圖2狀態(tài),請各位大佬指導(dǎo)一下。

圖1

圖1
IMG_20250111_201208.jpg
回復(fù)

使用道具 舉報

ID:1133081 發(fā)表于 2025-1-12 07:19 | 顯示全部樓層
圖1證明LCD驅(qū)動代碼基本沒有什么問題,刷新后成圖2,這是LCD初始化失敗的典型現(xiàn)象。這就要看你刷新LCD時是怎么調(diào)用的驅(qū)動代碼的。也有可能是受中斷干擾導(dǎo)致(雖然LCD對時序不是太敏感)。
回復(fù)

使用道具 舉報

ID:403593 發(fā)表于 2025-1-12 09:27 | 顯示全部樓層
我認(rèn)同樓上,如果初始正常,某一個動作以后不正常,首先應(yīng)該判斷的就是這個動作是不是導(dǎo)致了一些問題。在此可以使用排除法:首先把底下的負(fù)載切除,只剩下單片機(jī)最小系統(tǒng),然后連線短接使系統(tǒng)達(dá)到進(jìn)入這個動作所需要的外部條件,查看系統(tǒng)反應(yīng),如果正常,那就大概率是外部干擾,如果不正常,那就繼續(xù)檢查程序。
回復(fù)

使用道具 舉報

ID:1085509 發(fā)表于 2025-1-12 21:47 | 顯示全部樓層
WL0123 發(fā)表于 2025-1-12 07:19
圖1證明LCD驅(qū)動代碼基本沒有什么問題,刷新后成圖2,這是LCD初始化失敗的典型現(xiàn)象。這就要看你刷新LCD時是 ...

可不可以麻煩前輩您幫我看一下程序
回復(fù)

使用道具 舉報

ID:1133081 發(fā)表于 2025-1-13 11:39 | 顯示全部樓層
eeworker 發(fā)表于 2025-1-12 21:47
可不可以麻煩前輩您幫我看一下程序

程序發(fā)上來
回復(fù)

使用道具 舉報

ID:1085509 發(fā)表于 2025-1-17 09:47 | 顯示全部樓層
void LcdWriteCmd(uchar cmd)
{
        LcdRs_P = 0;
        LcdRw_P = 0;
        LcdEn_P = 0;
        P0=cmd;
        DelayMs(2);
        LcdEn_P = 1;   
        DelayMs(2);
        LcdEn_P = 0;       
}

void LcdWriteData(uchar dat)
{
        LcdRs_P = 1;
        LcdRw_P = 0;
        LcdEn_P = 0;
        P0=dat;
        DelayMs(2);
        LcdEn_P = 1;   
        DelayMs(2);
        LcdEn_P = 0;
}

void LcdGotoXY(uchar line,uchar column)
{
        // 第一行
        if(line==0)        
                LcdWriteCmd(0x80+column);
        // 第二行
        if(line==1)        
                LcdWriteCmd(0x80+0x40+column);
}

void LcdPrintStr(uchar *str)
{
        while(*str!='\0')
                        LcdWriteData(*str++);
}

void LcdPrintNum(uint num)
{
        LcdWriteData(num/100+0x30);                                // 百位
        LcdWriteData(num%100/10+0x30);                // 十位
        LcdWriteData(num%10+0x30);                                // 個位
}

void LcdInit()
{
        LcdWriteCmd(0x38);        // 16*2顯示,5*7點陣,8位數(shù)據(jù)口
        LcdWriteCmd(0x0C);        // 開顯示,不顯示光標(biāo)
        LcdWriteCmd(0x06);        // 地址加1,當(dāng)寫入數(shù)據(jù)后光標(biāo)右移
        LcdWriteCmd(0x01);        // 清屏
}

void LcdShowInit()
{
        LcdGotoXY(0,0);                                                                    // 定位到第0行第0列
        LcdPrintStr("L:     R:       ");        // 第0行顯示“      U         ”
        LcdGotoXY(1,0);                                                                    // 定位到第1行第0列
        LcdPrintStr("D:         ");        // 第1行顯示“ L    D    R    ”
}


回復(fù)

使用道具 舉報

ID:1085509 發(fā)表于 2025-1-17 09:49 | 顯示全部樓層
因為前幾天有點忙沒注意登錄,前輩幫我看一下驅(qū)動程序,我已經(jīng)發(fā)上來了
回復(fù)

使用道具 舉報

ID:1133081 發(fā)表于 2025-1-17 13:45 | 顯示全部樓層
eeworker 發(fā)表于 2025-1-17 09:49
因為前幾天有點忙沒注意登錄,前輩幫我看一下驅(qū)動程序,我已經(jīng)發(fā)上來了

前面已經(jīng)說了問題不在LCD驅(qū)動代碼本身,而在于你主函數(shù)刷新LCD時是怎么調(diào)用驅(qū)動代碼的。給你一個示例,有詳細(xì)注釋,讀懂就不會解決不了目前的問題。 萬年歷漢字1602 1302 18B20 仿真程序.rar (140.98 KB, 下載次數(shù): 0)

無標(biāo)題.jpg

回復(fù)

使用道具 舉報

ID:1143113 發(fā)表于 2025-1-17 20:02 | 顯示全部樓層
可以在重新返回圖1界面時,再次調(diào)用初始化,或者調(diào)用清屏,然后再調(diào)用顯示距離就不會有問題了。
回復(fù)

使用道具 舉報

ID:1085509 發(fā)表于 2025-1-17 22:20 | 顯示全部樓層
WL0123 發(fā)表于 2025-1-17 13:45
前面已經(jīng)說了問題不在LCD驅(qū)動代碼本身,而在于你主函數(shù)刷新LCD時是怎么調(diào)用驅(qū)動代碼的。給你一個示例,有 ...

好的好的,謝謝前輩,我學(xué)習(xí)一下
回復(fù)

使用道具 舉報

ID:1085509 發(fā)表于 2025-1-18 23:44 | 顯示全部樓層
llzfry 發(fā)表于 2025-1-17 20:02
可以在重新返回圖1界面時,再次調(diào)用初始化,或者調(diào)用清屏,然后再調(diào)用顯示距離就不會有問題了。

你好,可以和您交流一下嗎
回復(fù)

使用道具 舉報

ID:1143113 發(fā)表于 2025-1-19 11:00 | 顯示全部樓層
eeworker 發(fā)表于 2025-1-18 23:44
你好,可以和您交流一下嗎

可以。請你確定你的單片機(jī)用的是STC還是AT的。還有一種可能就是寫完指令后的延時時間不夠,或者是你的程序在反復(fù)調(diào)用顯示,這樣是不合適的。
回復(fù)

使用道具 舉報

ID:1085509 發(fā)表于 2025-1-19 15:06 | 顯示全部樓層
llzfry 發(fā)表于 2025-1-19 11:00
可以。請你確定你的單片機(jī)用的是STC還是AT的。還有一種可能就是寫完指令后的延時時間不夠,或者是你的程 ...

您好,我用的是STC的,如果可以的話能不能%,我把出現(xiàn)的情況詳細(xì)說一下。
回復(fù)

使用道具 舉報

ID:1143113 發(fā)表于 2025-1-22 12:54 | 顯示全部樓層
eeworker 發(fā)表于 2025-1-19 15:06
您好,我用的是STC的,如果可以的話能不能%,我把出現(xiàn)的情況詳細(xì)說一下。

你可以把完整的程序貼出來,我給你看看
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表