標(biāo)題: 關(guān)于單片機(jī)驅(qū)動(dòng)4位數(shù)碼管最省的方案 [打印本頁(yè)]

作者: hhh402    時(shí)間: 2022-10-6 23:28
標(biāo)題: 關(guān)于單片機(jī)驅(qū)動(dòng)4位數(shù)碼管最省的方案
單片機(jī)驅(qū)動(dòng)4位數(shù)碼管很常見,常用驅(qū)動(dòng)方案是:用74HC138,595,TM1650等芯片驅(qū)動(dòng),可不可以用單片機(jī)IO直接驅(qū)動(dòng)呢?下面給出一種方案。
具有推挽輸出的單片機(jī)IO直接驅(qū)動(dòng)4位數(shù)碼管,不加限流電阻。需要12個(gè)IO口。89C52單片機(jī)沒有推挽輸出不可以直接驅(qū)動(dòng)4位數(shù)碼管。注意這種方案對(duì)驅(qū)動(dòng)程序要求很高,必須嚴(yán)格這行,隨意操作有可能燒毀IO口。
一、首先是驅(qū)動(dòng)電流問題
單片機(jī)IO最大電流是20ma,這里的電流指的是連續(xù)電流,MOS管最大瞬間電流至少是額定電流5倍,也就是100ma,瞬間指小于1ms。也就是說(shuō)IO口瞬間1ms以內(nèi)輸出100ma電流是安全的。IO不加限流電阻直接驅(qū)動(dòng)數(shù)碼管電流在20--60ma,只要每次點(diǎn)亮?xí)r間小于1ms是安全的。
二、IO口驅(qū)動(dòng)時(shí)序問題
IO直接驅(qū)動(dòng)數(shù)碼管當(dāng)然不可以一次驅(qū)動(dòng)8段,這樣電流太大會(huì)燒毀IO,為了減少電流一次只驅(qū)動(dòng)1個(gè)LED,4位數(shù)碼管一共8*4=32個(gè)LED,要使數(shù)碼管不閃爍每秒至少刷新30次,32個(gè)LED*30=960,也就是說(shuō)1ms點(diǎn)亮一個(gè)LED就可以保證數(shù)碼管不閃爍。為了使每個(gè)IO有充分的休息時(shí)間IO口驅(qū)動(dòng)時(shí)序?yàn)椋?br /> 1位1段→2位2段→3位3段→4位4段→
1位5段→2位6段→3位7段→4位8段→
1位2段→2位3段→3位4段→4位5段→
1位6段→4位7段→4位8段→4位1段→
1位3段→2位4段→3位5段→4位6段→
1位7段→2位8段→3位1段→4位2段→
1位4段→2位5段→3位6段→4位7段→
1位8段→2位1段→3位2段→4位3段→
這樣在數(shù)碼管全亮?xí)r也可以保證每個(gè)IO口驅(qū)動(dòng)1ms,至少休息3ms。IO口驅(qū)動(dòng)時(shí)序是有一定要求的,不可以驅(qū)動(dòng)完第一位8段再驅(qū)動(dòng)第二位8段,這樣有可能IO會(huì)連續(xù)驅(qū)動(dòng)8ms有燒毀的風(fēng)險(xiǎn)。
三、數(shù)碼管刷新程序執(zhí)行問題
必須把數(shù)碼管刷新程序放在1ms定時(shí)器中斷中執(zhí)行(這個(gè)中斷要有最高優(yōu)先級(jí))。數(shù)碼管刷新程序不可以放在主程序中執(zhí)行。放在主程序中有風(fēng)險(xiǎn),如果主程序中有長(zhǎng)時(shí)間的延時(shí)程序或者長(zhǎng)時(shí)間的中斷程序,比如按鍵消抖,等待按鍵釋放程序等等有可能造成驅(qū)動(dòng)數(shù)碼管IO長(zhǎng)時(shí)間過(guò)流燒毀。!因?yàn)橐淮沃或?qū)動(dòng)1個(gè)LED,數(shù)碼管刷新程會(huì)復(fù)雜一些,但是對(duì)于1TSTC單片機(jī)來(lái)說(shuō)CPU占用率小于5%,不會(huì)影響其他程序執(zhí)行。
驅(qū)動(dòng)數(shù)碼管的IO口還可以復(fù)用掃描按鍵,獨(dú)立按鍵或者矩陣按鍵都可以。多加一個(gè)IO還可以再驅(qū)動(dòng)8個(gè)獨(dú)立LED燈。

作者: 藍(lán)魄    時(shí)間: 2022-10-7 08:28
正反掃數(shù)碼管,4位數(shù)碼管共8只腳;前提是掃描IO口需要支持 高阻態(tài)-高電平-低電平
作者: gpdt3209    時(shí)間: 2022-10-7 10:52
樓主給個(gè)例程看看
作者: 188610329    時(shí)間: 2022-10-7 11:52
撇開“瞬間電流100mA是安全的” 這個(gè)關(guān)點(diǎn)對(duì)錯(cuò),我們不談。

就這個(gè)點(diǎn)亮方式來(lái)講,風(fēng)險(xiǎn)大,操作復(fù)雜,還沒太大意義。

既然已經(jīng)對(duì)單片機(jī)有了要求“需要強(qiáng)推挽輸出”,不如多點(diǎn)限制,比如,直接用STC8 系列(當(dāng)然其他品牌單片機(jī)也都可以)。 IO用 上拉 + 開漏方式,來(lái)驅(qū)動(dòng)共陰數(shù)碼管。 就能直接用標(biāo)準(zhǔn)的 動(dòng)態(tài)掃描方式來(lái)驅(qū)動(dòng), 也不需要 限流電阻,還安全可靠。
作者: gpdt3209    時(shí)間: 2022-10-7 14:12
給個(gè)網(wǎng)址看看,數(shù)碼管不要限流電阻

【新提醒】開源基于STC單片機(jī)內(nèi)部基準(zhǔn)mini電壓表—極簡(jiǎn)設(shè)計(jì)創(chuàng)新制作 - 單片機(jī)DIY制作  http://www.torrancerestoration.com/bbs/dpj-56990-1.html
作者: yanjian    時(shí)間: 2022-10-7 22:38
連限流電阻都舍不得加?步至于省到這程度吧
作者: hhh402    時(shí)間: 2022-10-8 07:50
藍(lán)魄 發(fā)表于 2022-10-7 08:28
正反掃數(shù)碼管,4位數(shù)碼管共8只腳;前提是掃描IO口需要支持 高阻態(tài)-高電平-低電平

只有6腳3位數(shù)碼管,8腳4位數(shù)碼管找不到,7腳4位數(shù)碼管有少量。STC單片機(jī)IO有三態(tài)直接驅(qū)動(dòng)數(shù)碼管沒有問題,驅(qū)動(dòng)時(shí)注意讓各個(gè)IO輪流導(dǎo)通,每次導(dǎo)通小于1ms就可以。

1.jpg (247.55 KB, 下載次數(shù): 44)

1.jpg

2.png (44.78 KB, 下載次數(shù): 43)

2.png

作者: hhh402    時(shí)間: 2022-10-8 08:24
加限流電阻更安全,但是1個(gè)電阻要至少2分錢,再加2個(gè)焊點(diǎn)2分錢,最少需要4個(gè)限流電阻0.16元。對(duì)于大批量產(chǎn)品來(lái)說(shuō)是需要考慮的,不用限流電阻的確有風(fēng)險(xiǎn)但程序調(diào)試好后就沒有問題,這對(duì)于大批量產(chǎn)品來(lái)說(shuō)不是問題,省錢更重要,當(dāng)然對(duì)于DIY來(lái)說(shuō)的確沒必要。地板說(shuō):IO用 上拉 + 開漏方式,來(lái)驅(qū)動(dòng)共陰數(shù)碼管,也可以,但是上拉電阻大約有4K太大,數(shù)碼管不夠亮,如果不在意亮度可以用。用推挽驅(qū)動(dòng)數(shù)碼管是超亮的。如果是3位數(shù)碼管有單邊腳6腳3位數(shù)碼管更省IO,也有7腳4位數(shù)碼管,太貴不建議。
作者: coody_sz    時(shí)間: 2022-10-8 10:46
玩玩可以,做產(chǎn)品就要謹(jǐn)慎了。
另外樓主說(shuō)一次只點(diǎn)亮1個(gè)LED,分32次掃描,要知道,亮度跟平均電流有關(guān),1/32的平均電流就很小了,亮度會(huì)嚴(yán)重不夠的。4個(gè)數(shù)碼管,要比較大的電流,位控可以用一個(gè)三極管即可,段碼串聯(lián)電阻限流,8段總電流不超過(guò)60mA比較安全。
MCU擅長(zhǎng)處理事務(wù),不擅長(zhǎng)大電流驅(qū)動(dòng)(MCU帶LED驅(qū)動(dòng)的例外,比如STC部分MCU)。
作者: 188610329    時(shí)間: 2022-10-8 11:12
hhh402 發(fā)表于 2022-10-8 08:24
加限流電阻更安全,但是1個(gè)電阻要至少2分錢,再加2個(gè)焊點(diǎn)2分錢,最少需要4個(gè)限流電阻0.16元。對(duì)于大批量產(chǎn) ...

你做過(guò)測(cè)試么?4位數(shù)碼管,段碼4k上拉,動(dòng)態(tài)掃描5ms點(diǎn)亮一位,20ms一循環(huán),亮度是足夠亮的。而你那種短時(shí)過(guò)壓過(guò)流點(diǎn)亮法,是在消耗LED壽命,你點(diǎn)1個(gè)月看看,要么有的段不亮了,要么就開始光衰了。
作者: Y_G_G    時(shí)間: 2022-10-8 11:33
怎么會(huì)有這問題呢?

"可不可以用單片機(jī)IO直接驅(qū)動(dòng)呢?"
這個(gè)肯定可以的呀,難道網(wǎng)上那么多電路,就沒有一個(gè)是直接用IO驅(qū)動(dòng)數(shù)碼管的嗎?答案是有的
"89C52單片機(jī)沒有推挽輸出不可以直接驅(qū)動(dòng)4位數(shù)碼管。"
不知道你這是什么意思,編程是個(gè)嚴(yán)謹(jǐn)?shù)臇|西
有沒有推挽輸出跟直接驅(qū)動(dòng)數(shù)碼管,是沒有絕對(duì)關(guān)系的
89C52一定是可以不用驅(qū)動(dòng)IC就可以驅(qū)動(dòng)數(shù)碼管的,數(shù)據(jù)端口加上拉電阻就可以了

"一、首先是驅(qū)動(dòng)電流問題"
你分析得一點(diǎn)都沒道理,"也就是說(shuō)IO口瞬間1ms以內(nèi)輸出100ma電流是安全的",這誰(shuí)告訴你的呀,如果我通電時(shí)間1.1mS是不是就不安全了,那1.09mS呢?
"MOS管最大瞬間電流至少是額定電流5倍",這是誰(shuí)告訴你的呀,這是個(gè)經(jīng)驗(yàn)值,并不是STC單片機(jī)的數(shù)據(jù)手冊(cè),數(shù)據(jù)手冊(cè)上寫了多少,就是多少,沒有寫的,都是你"估計(jì)的","認(rèn)為的",都不能作為參數(shù)使用
對(duì)于STC89C52,它沒有推挽輸出模式,壓根就不存在輸出電流過(guò)大的問題
對(duì)于現(xiàn)在新出高亮度的數(shù)碼管,STC89C52的10uA電流直接就可以驅(qū)動(dòng)了,不用上拉,也不用推挽輸出,實(shí)際使用過(guò)的,絕對(duì)OK,小個(gè)數(shù)碼管,我還覺得它太刺眼了呢,LED驅(qū)動(dòng)要10mA電流,這都不知道是多少年前的教材了........

對(duì)于新的STC8G,STC8A,STC8H,它們內(nèi)部都是有內(nèi)置上拉電阻的,不需要另外加上拉電阻,直接就是12個(gè)IO控制一個(gè)4位數(shù)碼管了,什么都不要,只要把輸出模式設(shè)置為傳統(tǒng)8051模式和啟用內(nèi)部上拉電阻就可以了

作者: hhh402    時(shí)間: 2022-10-8 13:20
回復(fù)10#,
一、1ms安全就是1ms以內(nèi)安全,至于超過(guò)1ms是否安全我沒說(shuō)你自己判斷,就如一個(gè)產(chǎn)品保質(zhì)期1年,1年多1天或者多1個(gè)月產(chǎn)品就一定會(huì)壞嗎?我的理解是1年內(nèi)保證產(chǎn)品沒有問題,超過(guò)1年不管,不論好壞都無(wú)所謂。按你的說(shuō)法單片機(jī)IO最大電流20ma,那21ma或者25ma一定會(huì)燒管腳嗎?
二、MOS管最大瞬間電流至少是額定電流5倍,這的確是經(jīng)驗(yàn),我不覺得STC單片機(jī)的數(shù)據(jù)手冊(cè)能夠把所有數(shù)據(jù)寫進(jìn)去。沒有寫的就是錯(cuò)的?
三、數(shù)碼管的亮度夠不夠每個(gè)人看法不一樣,應(yīng)該有部分人也覺得數(shù)碼管要亮一點(diǎn)吧,不然為什么開發(fā)出高亮數(shù)碼管呢?開發(fā)板LED限流電阻1K我就覺得不夠亮,你覺得10uA是你的事情,我還是覺得10ma比較好,為什么沒有人生產(chǎn)最大電流1ma的數(shù)碼管而是都生產(chǎn)20ma的?
四、“對(duì)于新的STC8G,STC8A,STC8H,它們內(nèi)部都是有內(nèi)置上拉電阻的,不需要另外加上拉電阻,直接就是12個(gè)IO控制一個(gè)4位數(shù)碼管了,什么都不要,只要把輸出模式設(shè)置為傳統(tǒng)8051模式和啟用內(nèi)部上拉電阻就可以了”-----你還是復(fù)習(xí)一下數(shù)碼管動(dòng)態(tài)掃描知識(shí)吧,上拉電阻是需要根據(jù)顯示內(nèi)容不斷打開和關(guān)閉的,89C52加上拉電阻是不可以直接驅(qū)動(dòng)4位數(shù)碼管的,1位是可以。
作者: Y_G_G    時(shí)間: 2022-10-8 14:54
hhh402 發(fā)表于 2022-10-8 13:20
回復(fù)10#,
一、1ms安全就是1ms以內(nèi)安全,至于超過(guò)1ms是否安全我沒說(shuō)你自己判斷,就如一個(gè)產(chǎn)品保質(zhì)期1年,1 ...

"你還是復(fù)習(xí)一下數(shù)碼管動(dòng)態(tài)掃描知識(shí)吧,上拉電阻是需要根據(jù)顯示內(nèi)容不斷打開和關(guān)閉的,89C52加上拉電阻是不可以直接驅(qū)動(dòng)4位數(shù)碼管的"
嗯........好吧!你這個(gè)關(guān)于上拉電阻的使用方法說(shuō)得非常好,而且,你這個(gè)數(shù)碼管使用方法也非常好,簡(jiǎn)潔明了,妙不可言
收回我上面所有的話,我給你道歉:我錯(cuò)了,你說(shuō)的都是對(duì)的,我說(shuō)的全是錯(cuò)的,我以前做過(guò)的關(guān)于數(shù)碼管的的項(xiàng)目都是錯(cuò)誤的.
作者: robinsonlin    時(shí)間: 2022-10-8 18:43
hhh402 發(fā)表于 2022-10-8 08:24
加限流電阻更安全,但是1個(gè)電阻要至少2分錢,再加2個(gè)焊點(diǎn)2分錢,最少需要4個(gè)限流電阻0.16元。對(duì)于大批量產(chǎn) ...

100r的排阻,大概2分錢一個(gè),用兩個(gè)就夠8個(gè)段口限流了。
作者: wulin    時(shí)間: 2022-10-8 20:56
就樓主“單片機(jī)驅(qū)動(dòng)4位數(shù)碼管最省的方案”而言是可行的。關(guān)鍵詞是“最省”。不論是電路最省還是銀子最省,只要硬件條件合適就能成功,不必質(zhì)疑其可行性。超高亮數(shù)碼管單筆段1mA電流就亮得刺眼。曾經(jīng)用100K限流電阻+超高亮Φ3LED用于5V電源指示燈,亮度足夠。有一些玩具,如熒光棒之類的產(chǎn)品,其本身就幾乎是一次性的。玩過(guò)就扔。無(wú)需考慮耐久性,降低成本才是王道。




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