熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2024-4-12 15:49
正文摘要:用了5個(gè)74hc595芯片級(jí)聯(lián),控制27位數(shù)碼管,數(shù)碼管閃爍,懷疑是寫入74HC595數(shù)據(jù)的時(shí)間太長(zhǎng)導(dǎo)致的,現(xiàn)在很怕是本來(lái)硬件設(shè)計(jì)的缺陷。 我的程序大概是這樣的,先用定時(shí)器0來(lái)計(jì)時(shí),再用定時(shí)器1來(lái)刷新數(shù)碼管 ... |
27位8段是216段,開方是14.9,不用開方也知道接近256,就是16*16,所以用4片就可以了; 如果不想用4片,也要用少的行列值分頻吧,,用8C * 32S 可以降低要求了,其實(shí)總數(shù)據(jù)量是差不多的,只是降低了中斷次數(shù) |
595的額定電流為35ma,大部分應(yīng)用都是不加限流電阻的,所以595位電流是大于35ma的,短時(shí)間不斷刷595是沒有問(wèn)題的,如果因?yàn)槌绦蚩ㄗ?95刷新不及時(shí)造成某一位長(zhǎng)時(shí)間超電流導(dǎo)通就會(huì)燒595,樓主發(fā)現(xiàn)數(shù)碼管閃爍就是刷新不及時(shí)的表現(xiàn),樓主的程序效率太低,無(wú)法及時(shí)刷新595造成的,要改程序提高效率。如果樓主在8個(gè)595段碼腳加上300歐姆以上的限流電阻保證大部分595都好用了。595數(shù)據(jù)可以同步刷新所以不需要消隱。 |
cy009 發(fā)表于 2024-7-27 12:55 可能還是我水平太菜,嘗試各種方法,不好使的就是不好使。只用一片都沒有問(wèn)題。級(jí)聯(lián)就各種奇怪現(xiàn)象。用價(jià)格較高的就沒問(wèn)題。實(shí)際上在嘉立創(chuàng)買過(guò)一種,那個(gè)LOGO我以前沒用過(guò),也就那樣吧。級(jí)聯(lián)偶爾也會(huì)出現(xiàn)不該有的輸出跳動(dòng)一下。 |
xiaobendan001 發(fā)表于 2024-4-13 07:12 一、消隱與否,是數(shù)碼管決定,而不是芯片決定。凡是使用動(dòng)態(tài)掃描的多位數(shù)碼管顯示,都必須消隱。HC164因芯片內(nèi)部無(wú)鎖存功能,在聯(lián)級(jí)驅(qū)動(dòng)數(shù)碼管時(shí)只能通過(guò)復(fù)位端清零來(lái)實(shí)現(xiàn)消隱,屬于硬件消隱。HC595內(nèi)部有鎖存功能,可以采用軟件消隱,即通過(guò)程序關(guān)段電平或位電平的方法,也可以采用硬件消隱,即通過(guò)復(fù)位端清零來(lái)實(shí)現(xiàn)消隱,但得多用一個(gè)IO口。 二、“市場(chǎng)上大部分595都不能用”,這樣的結(jié)論過(guò)于草率,在做案例時(shí)遇到問(wèn)題,應(yīng)該先考慮程序的問(wèn)題。我個(gè)人做了很多學(xué)生競(jìng)賽的題目,多次購(gòu)買并使用了很多的595芯片,驅(qū)動(dòng)流水燈、數(shù)碼管、LED點(diǎn)陣等,未遇到595損壞不能用的情況。 |
zhuls 發(fā)表于 2024-4-13 09:23 哈哈,我也是這樣覺得的,第一眼都看麻了 ![]() |
神奇,把long拆分成4個(gè)unchar ,12MHZ現(xiàn)在又可以了,之前要用到33MHZ才可以的 |
yqs138168 發(fā)表于 2024-4-15 15:21 真是奇怪了,我將你的8位一組數(shù)碼管換成兩個(gè)四位一組的數(shù)碼管就顯示不出來(lái)了 |
很簡(jiǎn)單的,取消延時(shí)語(yǔ)句,測(cè)量時(shí)間是多少,若時(shí)間剛好則可取消延時(shí),若還是時(shí)間過(guò)多則要考慮修改電路。 |
27個(gè)數(shù)碼管每個(gè)8段共有216段,使用16行16列掃描只需要4個(gè)74HC595 最多驅(qū)動(dòng)256個(gè)點(diǎn)陣(16*16或32*8)或32位8段數(shù)碼管。 如果單片機(jī)有16個(gè)IO口空閑,那么只需要2片74HC595就能驅(qū)動(dòng),32個(gè)IO口空閑一片都不需要(需要IO口支持強(qiáng)推挽模式)。 仿真的動(dòng)態(tài)掃描閃爍可以調(diào)整 Minimum Trigger Time 的毫秒?yún)?shù),具體是否閃爍需要實(shí)物驗(yàn)證。 |
給你一個(gè)仿真示例,如果實(shí)物效果不好就按10樓建議處理,以留給主函數(shù)足夠時(shí)間運(yùn)行其它代碼。![]()
|
數(shù)碼管仿真模型參數(shù)修改 |
數(shù)碼管仿真模型參數(shù)修改.jpg (142.7 KB, 下載次數(shù): 238)
yqs138168 發(fā)表于 2024-4-15 15:26 還有一種方案,使用專用顯示驅(qū)動(dòng)芯片,例如MAX7219 |
看代碼,你是對(duì)595的使用有誤解吧 |
asdadqw2 發(fā)表于 2024-4-15 15:22 51單片機(jī)處理大的數(shù)值(特別是32位)或浮點(diǎn)數(shù),效率都很低,盡可能使用char數(shù)據(jù)或位數(shù)據(jù),提高效率,,, |
asdadqw2 發(fā)表于 2024-4-15 15:22 看看我的程序,新思路,與你的寫法不一樣,效率高很多 |
yqs138168 發(fā)表于 2024-4-15 15:16 大佬能不能指點(diǎn)一下想法嗎,我覺得我的switch雖然累贅,但是應(yīng)該不影響程序執(zhí)行效率,然后就到消隱和寫入595的程序了,寫入595的程序,我在網(wǎng)上找資料也只找到我這種寫法,實(shí)在沒什么頭緒了 |
24個(gè)共陰數(shù)碼管+5個(gè)74HC595,仿真軟件為Proteus8.11版本,,,可以正常顯示。 |
93.32 KB, 下載次數(shù): 10
可以嘗試提高程序的效率,我用仿真24個(gè)數(shù)碼管,沒問(wèn)題。 |
asdadqw2 發(fā)表于 2024-4-15 13:37 就是在keil里面進(jìn)入調(diào)試狀態(tài),設(shè)好斷點(diǎn),記錄時(shí)間。 |
xiaobendan001 發(fā)表于 2024-4-15 09:27 怎么用軟件模擬,我也去試下,能說(shuō)一下怎么模擬的嗎 |
lkc8210 發(fā)表于 2024-4-15 13:20
|
asdadqw2 發(fā)表于 2024-4-15 11:40 應(yīng)該是可以的,我這用22.1184的晶振 |
asdadqw2 發(fā)表于 2024-4-15 11:27 貼上來(lái)看看 |
zhuls 發(fā)表于 2024-4-13 09:23 我的想法 是switch的執(zhí)行效率應(yīng)該不低吧,只是占用的代碼位置多而已,執(zhí)行起來(lái)應(yīng)該直接到相應(yīng)的case里,效率來(lái)說(shuō)應(yīng)該還行吧。(純新手,剛接觸,希望大佬能解答一下) |
xiaobendan001 發(fā)表于 2024-4-15 09:32 這個(gè)的寫法,跟我的差不多一樣把,我沒看出什么區(qū)別,原諒我新手不太懂 |
xiaobendan001 發(fā)表于 2024-4-15 09:27 難道是仿真軟件的問(wèn)題?我在仿真軟件運(yùn)行這個(gè)就有閃爍 |
xiaoyao166ny 發(fā)表于 2024-4-12 22:00 我也是小白,剛剛試過(guò)改了一下long的數(shù)據(jù)分成四個(gè),再把頻率改為33.1776 就顯示正常了 |
asdadqw2 發(fā)表于 2024-4-12 21:07 能說(shuō)一下怎么補(bǔ)償?shù)乃悸穯幔以诰W(wǎng)上找不到相關(guān)資料 |
這是另外一個(gè)用了3片,一片顯示數(shù)據(jù),2片輸出驅(qū)動(dòng)。但是這個(gè)顯示的位選是用IO的。為了配合,還是加了消隱的,先關(guān)了COM,更新數(shù)據(jù)后再打開。
|
剛軟件模擬了一下,連續(xù)輸出5片的數(shù)據(jù)時(shí)間小于250us,完全可以用的。 |
cy009 發(fā)表于 2024-4-15 08:47 1,兩片顯示8位和5片顯示32位難道不一樣嗎?為啥2片不用消隱,5片就要? 2,你說(shuō)的是那個(gè)二極管嗎?當(dāng)然有啊 |
asdadqw2 發(fā)表于 2024-4-15 08:38 都說(shuō)了,好的芯片是沒問(wèn)題的,板子不是很多,10多年前一次性買了一整盤,用了10多年,一直正常的。好不容易用完了,再買就出問(wèn)題了,后級(jí)某個(gè)輸出會(huì)偶爾跳動(dòng)。并且?guī)讉(gè)月后會(huì)完全損壞。于是重新購(gòu)買,包括在立創(chuàng)商城也買過(guò),結(jié)果都不行,有的甚至直接錯(cuò)位輸出,最后買到一種,上面的LOGO類似><的。就沒問(wèn)題了。我也是納悶,這樣古老的一個(gè)東西,而且大量被使用在LED點(diǎn)陣上面,居然還有問(wèn)題。 |
xiaobendan001 發(fā)表于 2024-4-15 07:30 1.595兩片聯(lián)級(jí),一片傳段碼,一片傳位碼,可以不用消隱。樓主的案例是5個(gè)595,段碼共用,不消隱不行呵。 2.你用595擴(kuò)展輸出驅(qū)動(dòng)三極管+繼電器,繼電器電路有反峰保護(hù)嗎? |
xiaobendan001 發(fā)表于 2024-4-13 07:12 我在仿真上面的結(jié)果595級(jí)聯(lián)是可以正常輸出,有異常的話,你可以用keil單步調(diào)試,查看各個(gè)變量的值是怎么變化的,來(lái)查出原因 |
cy009 發(fā)表于 2024-4-14 22:27 大哥,我不是用來(lái)顯示的,我是用來(lái)擴(kuò)展輸出的,2片級(jí)聯(lián)16個(gè)輸出推動(dòng)三極管+繼電器。這個(gè)有使能端,還有RCK,就算顯示也沒必要消隱吧,把數(shù)據(jù)更新到芯片,然后RCK給個(gè)上升沿,把每個(gè)芯片的數(shù)據(jù)更新到輸出腳上去,這樣不行嗎?消隱我覺得是比如164沒有RCK這種功能,在更新數(shù)據(jù)過(guò)程中每個(gè)腳都被實(shí)時(shí)更新,狀態(tài)不是想要的,此時(shí)先關(guān)閉顯示,等更新完成再打開,這樣顯示比較干凈。 |
xiaobendan001 發(fā)表于 2024-4-13 07:12 不能怪595不好,是你沒消隱造成 |
27個(gè)數(shù)碼管采用動(dòng)態(tài)掃描,理論上是可以實(shí)現(xiàn)無(wú)閃顯示。動(dòng)態(tài)掃描刷新頻率理論上不低于50Hz,能達(dá)到100Hz為最佳,掃描周期即為20-10ms。若取中間值15ms,每個(gè)數(shù)碼管刷新時(shí)間為0.56ms,經(jīng)仿真可以成功穩(wěn)定顯示,因多位數(shù)碼管共用段端口,程序必須加上消隱。 |
Hephaestus 發(fā)表于 2024-4-14 10:25 截圖里面藍(lán)色就是鋪地啊,實(shí)際上之前的板子是沒有的,就是因?yàn)樾酒瑔?wèn)題才鋪了,結(jié)果沒什么卵用 |
perseverance51 發(fā)表于 2024-4-14 10:17 百度了一下,只是封裝不一樣而已。而且?guī)讉(gè)品牌如果只用一片都好使,其中最差的一個(gè)大概在幾個(gè)月后會(huì)壞掉。較好的則針對(duì)自己同品牌可以用級(jí)聯(lián),但是也不穩(wěn)定,偶爾出現(xiàn)意外的跳動(dòng),時(shí)間短的只能在LED上看到,但是繼電器沒有動(dòng)作,長(zhǎng)的就能聽到繼電器有聲音,雖然強(qiáng)電輸出也看不到,但是我認(rèn)為這會(huì)影響繼電器的壽命。只有一個(gè)牌子的可以,級(jí)聯(lián)信號(hào)送個(gè)其他品牌都能正常穩(wěn)定的輸出。用示波器看了,實(shí)在看不出來(lái)問(wèn)題。但是就是不好使,軟件上面調(diào)整了各種順序和延時(shí),會(huì)略有改善,無(wú)法根除。 |
xiaobendan001 發(fā)表于 2024-4-14 07:08 大面積敷地可以改善問(wèn)題。 |
Powered by 單片機(jī)教程網(wǎng)