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