標題: 關于單片機數碼管不滅的原因 [打印本頁]

作者: 紅了腳丫    時間: 2020-2-12 17:00
標題: 關于單片機數碼管不滅的原因
我的數碼管是直接和單片機連接的,沒有用鎖存器之類的。在按住按鍵時本來數碼管是全部滅的,因為按鍵有松手檢測,一直在那里死循環(huán)。可是我的秒鐘十位那個數碼管卻亮著,而程序和分鐘的十位一樣,分鐘十位的數碼管卻是滅的,真是搞不懂啊,我已經換了一個IO樓還是不行的。
作者: banalsheep    時間: 2020-2-12 21:59
檢查一下是不是消隱問題
作者: qq603599910    時間: 2020-2-12 22:32
你看下按下按鍵循環(huán)前單片機做的最后一個動作是啥,一般這個就是在按鍵循環(huán)前IO最后的狀態(tài)沒有清零.
作者: csmyldl    時間: 2020-2-12 23:34
換IO口當然不能解決問題,只能修改程序去控制IO口的電平狀態(tài)符合你想要的結果才能做到
作者: csmyldl    時間: 2020-2-13 02:26
至少有4位數碼管,分鐘2位 ,秒鐘2位,按鍵前數碼管全滅,但按鍵后程序有相應的顯示控制(數碼管要點亮),你的問題是按鍵未松開時,秒鐘的十位亮了,而分鐘也控制了且與秒鐘程序完全一樣,我想你這4個數碼管一定是采用動態(tài)顯示方式,動態(tài)顯示就要去控制某一位點亮(某一時間),通過分析剛才是這時你控制了秒鐘的十位亮了,最關鍵的是按鍵未松開怎么會有控制(你提到一直在那里死循環(huán)),最有可能的是你的按鍵在按下去抖動了,即你以為是一次按鍵,殊不知程序認為按下了幾次,這樣分析不知道是不是能解決你的困惑
作者: man1234567    時間: 2020-2-13 09:19
如果沒有電平的轉換指令,沒有鎖存也一樣的效果。
作者: wannenggong    時間: 2020-2-13 10:22
不知道樓主的程序也搞不清現象,只能籠統(tǒng)的說了,一般都是設置一個數組做顯示緩存,比如4位顯示的數碼時鐘,設dat[4];調整小時的時候,顯示數據為:
dat[0]=hour/10;
dat[1]=hour%10;
dat[2]=10;
dat[3]=10;
顯示輸出的時候就是;
for(i=0;i<4;i++)
{
Display_out(SEG7[dat[i]]);
****
}
其中:10的含義為------SEG7[10]=熄屏碼,就是關閉不需要顯示的數位。

作者: hantu    時間: 2020-2-13 12:56
程序有問題唄
作者: 紅了腳丫    時間: 2020-2-13 14:49
banalsheep 發(fā)表于 2020-2-12 21:59
檢查一下是不是消隱問題

謝謝,找到問題了,秒鐘十位是放在數碼管顯示函數的最后一個,沒有消隱,所以會顯示。我現在也找到一個按住按鍵不放時會數碼管會顯示的方法,就是把顯示函數放在松手檢測死循環(huán)里了,具體見后面的程序截圖。
作者: 紅了腳丫    時間: 2020-2-13 14:51
不在一一回復謝謝各位了。
找到問題了,秒鐘十位是放在數碼管顯示函數的最后一個,沒有消隱,所以會顯示。我現在也找到一個按住按鍵不放時會數碼管會顯示的方法,就是把顯示函數放在松手檢測死循環(huán)里了,具體見后面的程序截圖。
作者: 紅了腳丫    時間: 2020-2-13 14:56
程序部分截圖

02.jpg (91.13 KB, 下載次數: 91)

02.jpg

01.jpg (288.49 KB, 下載次數: 138)

01.jpg

作者: lovexulu    時間: 2020-2-14 23:37
應該是掃描法驅動數碼管的,一般掃描都會有最后一位顯示過后不帶消隱。如果想按鍵不妨礙顯示,可以用分時序執(zhí)行來解決。
作者: 1105730718    時間: 2020-2-15 14:48
進去循環(huán)前把斷碼清零,
作者: zjzj_007    時間: 2020-2-15 18:22
沒有消隱,所以會顯示




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