① 51單片機數碼管顯示不停閃爍
動態顯示,顯示程序的調用,不能有條件。
必須不停的調用。
你的顯示程序,是滿足了什麼什麼條件,才調用一次?
這就耽誤事了。
你顯示的時候,先顯示分,僅僅顯示幾個毫秒,之後,就顯示秒。
秒,顯示幾個毫秒,之後,沒有消隱,一直顯示到下次調用顯示程序。
所以,秒,顯示穩定,分,一閃就沒了。
② 單片機數碼管小數點閃爍
可以用定時器或者延時程序來設置。
其實數碼管的小數點就是一個LED燈。
因為數碼管是共陽極的,所以只要在數碼管H引腳(即對應小數點的那個引腳)用單片機給它一個低電平,就能讓小數點亮了。
首先讓小數點亮起來,然後可以用延時1秒的程序或者定時器定時1秒後,讓小數點滅,之後再延時1秒,或者定時1秒,讓小數點亮,這樣循環起來,就OK了
③ 51單片機如何讓一個數碼管閃爍而其他數碼管一直保持亮的狀態不受影響
假如有6 個數碼管,每個亮5ms,30ms是一輪,用一個變數a計數,40輪為一周期,如果a小於20,需閃爍的哪一位數碼管不亮,a大於20,該位正常顯示。就形成了亮0.6s滅0.6S的效果。
下面是4位數碼管閃爍程序:
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};//七段碼表
modtable={ {0,0,0,0},{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1} ,{1,1,1,1} }
//5種模式4個數碼管,所以表格為5*4
//4個0表示4個數碼管都可以正常亮
void display(uint m,uchar mode )//4位顯示子程序 帶某位閃爍功能
//mode=0,都不閃爍 mode=1 千位閃爍 mode=2 百位閃爍 mode=3 十位閃爍 mode=4 個位閃爍
//mode=5 全部閃爍
{
uchar a1,a2,a3,a4;
staic ia;
uchar modeaa;
a1=m/1000;
a2=m/100%10;
a3=m/10%10;
a4=m%10;
if(ia<20)
{
modeaa=mode;//前20次與閃爍模式有關
}
else
{
modeaa=0;//後20次只管正常掃描
}
dataport=~(table[a1]);
sm1=modtable[modeaa][0]; Delay1ms(2);sm1=1;//sm1=0,一號數碼管亮
//但它是否為0,由modeaa決定,modeaa又受ia控制,可以等於mode,也可以為0
dataport=~(table[a2]);
sm2=modtable[modeaa][1]; Delay1ms(2);sm2=1;
dataport=~(table[a3]);
sm3=modtable[modeaa][2]; Delay1ms(2);sm3=1;
dataport=~(table[a4]);
sm4=modtable[modeaa][3]; Delay1ms(2);sm4=1;
ia++;
if(ia==40) ia=0;
}
④ 51單片機按鍵時,數碼管會閃爍一下.原因是什麼
原因很簡單,這是代碼和數碼管驅動的問題
按鍵會影響數碼管顯示,這是單片機直接驅動數碼管會出現的問題,而數碼管則是工作在動態掃描方式的,若是採用帶有鎖存器件的數碼管驅動,則不會出現此類現象,因為單片機是周期性的掃描工作方式,單片機直接驅動數碼管的電路,當單片機掃描到按鍵的時候,數碼管部分就停止了(一般的代碼都這樣,除非數碼管是工作在靜態掃描方式)
直接驅動數碼管,按鍵的代碼一般都會寫一些延時,用來軟體消除按鍵的抖動,若延時的時間太長,就會影響數碼管的顯示效果,另外有些還會增加等待按鍵松開的語句,這種語句一般都是一個死循環,除非按鍵被松開
解決辦法是,減少按鍵消抖動延時的時間,在等待按鍵松開的死循環語句中調用數碼管顯示函數,這樣基本上就可以解決此類問題
⑤ 單片機數碼管小數點閃爍
假設4個數碼管,每個亮2ms,一輪掃描共亮8ms,我們可以讓其以120次為周期(0.96s),掃描前60次小數點亮,後60次小數點不亮,這樣小數點就 以大約1HZ的速度閃爍。
例如,小數點在第二位,數碼管七段碼table[]中不含小數點
顯示部分如下
if(a<60)
{dataport=(table[a1]);
sm1=0; Delay1ms(2);sm1=1;
dataport=(table[a2])|0x80;//第二位多個小數點
sm2=0; Delay1ms(2);sm2=1;
dataport=(table[a3]);
sm3=0; Delay1ms(2);sm3=1;
dataport=(table[a4]);
sm4=0; Delay1ms(2);sm4=1;
ia++;
}
else {dataport=(table[a1]);
sm1=0; Delay1ms(2);sm1=1;
dataport=(table[a2]); //第二位無小數點
sm2=0; Delay1ms(2);sm2=1;
dataport=(table[a3]);
sm3=0; Delay1ms(2);sm3=1;
dataport=(table[a4]);
sm4=0; Delay1ms(2);sm4=1;
ia++;
}
if(a==120) a=0;//120次後重新歸零
⑥ 51單片機 關於按鍵控制數碼管閃爍
因為按了K1隻是選擇調時分秒,如果寫了時分秒位閃爍程序,才有反應,對應的時分秒閃爍了。
可是,你沒有寫閃爍程序,當然就沒有什麼反應了,只有再按K2,K3,才能調時分秒,才有改變。只按K1後,不按K2,K3就看不出反應了。
⑦ stm3274hc245數碼管閃爍
按鍵引腳被設置成了輸出。
被按鍵控制的數碼管,8個led無規律高頻閃爍,手靠近會閃。其狀況為按鍵按下為電平上拉,引腳初始化為下拉電平。原因是按鍵引腳被設置成了輸出,解決方案為修改按鍵引腳為輸入。
數碼管閃爍在單片機執行一個任務時,顯示正常。如果再加上一個發送串口數據的功能,則發送數據的時候會出現閃爍的情況。
⑧ 單片機:如何讓數碼管閃爍
其它照常
一段時間輸出與0xff做與運算
一段時間輸出與0x00做與運算
⑨ 51單片機按鍵時,數碼管會閃爍一下.原因是什麼
原因很簡單,這是代碼和數碼管驅動的問題
按鍵會影響數碼管顯示,這是單片機直接驅動數碼管會出現的問題,而數碼管則是工作在動態掃描方式的,若是採用帶有鎖存器件的數碼管驅動,則不會出現此類現象,因為單片機是周期性的掃描工作方式,單片機直接驅動數碼管的電路,當單片機掃描到按鍵的時候,數碼管部分就停止了(一般的代碼都這樣,除非數碼管是工作在靜態掃描方式)
直接驅動數碼管,按鍵的代碼一般都會寫一些延時,用來軟體消除按鍵的抖動,若延時的時間太長,就會影響數碼管的顯示效果,另外有些還會增加等待按鍵松開的語句,這種語句一般都是一個死循環,除非按鍵被松開
解決辦法是,減少按鍵消抖動延時的時間,在等待按鍵松開的死循環語句中調用數碼管顯示函數,這樣基本上就可以解決此類問題