找回密碼
 立即注冊
搜索

單片機讀取溫度數(shù)碼管顯示程序,最后一位明顯更亮,求解釋

查看數(shù): 5149 | 評論數(shù): 9 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2018-11-26 01:29

正文摘要:

今天通過DS18B20讀取溫度并通過LED數(shù)碼管顯示,最后一位明顯更亮,為啥呢? 下面是我的函數(shù)分3個文件:頭文件,DS18B20系列子函數(shù)文件,主函數(shù)部分(既數(shù)據(jù)處理和顯示部分) 頭文件:#ifndef __TEMP_H_ ...

回復(fù)

ID:939710 發(fā)表于 2021-12-21 10:03
你要想一樣亮可以把數(shù)碼管動態(tài)掃描放中斷里
ID:853568 發(fā)表于 2021-12-20 09:34
我下載下來怎么數(shù)碼管全亮
ID:433516 發(fā)表于 2018-11-26 16:45
你把延時設(shè)對了,就可以了!不過也有其他問題(包括你的上拉電阻,自己測一下硬件電路,測完就剩軟件了)
ID:426640 發(fā)表于 2018-11-26 16:23

引用:

Colin_zhai 發(fā)表于 2018-11-26 15:01
1.最后一位和第一位數(shù)碼管之間的延時較大造成的,這么理解,在處理完一次顯示之后,單片機讀取18B20的時間太 ...

非常感謝您的建議,在一樓點明我的問題后我就做了這樣的嘗試,效果并不明顯。主要是原因是讀取溫度的函數(shù)所需時間太長了,達到了肉眼可見的閃爍的地步。我對主函數(shù)的顯示做了如下修改,使得數(shù)碼管顯示亮度均勻,但是還是有點小瑕疵
void main()
{       
        u8 temp;
        u16 i;
        while(1)
        {
                while(1)
                {
                        display(temp);
                        temp=datapros(Ds18b20ReadTemp());
                        for(i=500;i>0;i--)
                        {
                                display(temp);
                        }
                }
        }               
}
那就是讀取溫度函數(shù)運行的時候數(shù)碼管會閃爍一下
ID:113187 發(fā)表于 2018-11-26 16:11
應(yīng)該是占空比不一樣導(dǎo)致的
ID:413475 發(fā)表于 2018-11-26 15:01
1.最后一位和第一位數(shù)碼管之間的延時較大造成的,這么理解,在處理完一次顯示之后,單片機讀取18B20的時間太久
2.建議把void display(u8 num) { …… }內(nèi)最后一個delay(50); 減小或取消,數(shù)碼管的亮度應(yīng)該會比較均勻
ID:426640 發(fā)表于 2018-11-26 13:37

引用:

wulin 發(fā)表于 2018-11-26 07:36
是因為這個動態(tài)顯示程序有嚴重缺陷,個位數(shù)碼管顯示的時間比其他位占用時間過長。表面上看各位的延時都一樣 ...

理解了,我改了一下程序,確實是這個原因,謝謝大佬
ID:202748 發(fā)表于 2018-11-26 09:01
用三極管驅(qū)動,會避免這問題。當(dāng)然,用別的IC驅(qū)動會更好。
ID:213173 發(fā)表于 2018-11-26 07:36
是因為這個動態(tài)顯示程序有嚴重缺陷,個位數(shù)碼管顯示的時間比其他位占用時間過長。表面上看各位的延時都一樣,實際在主循環(huán)運行其他程序的時間里個位一直在顯示。顯示程序中的數(shù)據(jù)分解語句也很占用時間,這個時段個位也一直在顯示。

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

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

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