1樓:做而論道
void seg_display(unsigned char dis_i,
unsigned char dis_1,
unsigned char dis_2,
unsigned char dis_3,
unsigned char dis_4)
}試試看。
2樓:小狂
消隱之前多延時一點,亮度就高了
使用微控制器驅動4位數碼管,亮度不一樣,第一位很亮,其他很暗,為什麼?
3樓:匿名使用者
程式裡沒有做鬼影處理。你每次顯示一位數碼管之後,在delay之後都將p1和p3口清空,當然是按照你的電路來寫,目的就是讓數碼管什麼也不顯示。然後再次賦值顯示下一位的值。
建議使用定時器來顯示,這樣能保證每一位的亮度完全相同。
4樓:匿名使用者
數碼管的片選是低電平選中,還是高電平選中,你確認一下.
微控制器控制數碼管為什麼顯示很暗
5樓:煙火夜空
長期點亮就是 數碼管最亮 的時候。
但動態顯示中做不到長期點亮,那麼就要換種說法:最大可能讓它長期亮,就是 數碼管最亮的時候。也就是說,數碼管亮的時間越長,它就越亮。
又但是,動態顯示中,數碼管亮的時間越長,幾個數碼管就會變得一閃一閃的,甚至是,一個亮完另一個亮,跟流水燈似的。這就是所謂的:刷屏!
因此,又得換一種說法:在保證不閃的情況下,最大可能讓它長期亮。
這就是主題了——重新整理率。這個名詞不陌生,以前的顯示器,特別是臺式顯示器上就要調這個引數。調高了(75hz),顯示器支援不了,調低了(50hz),螢幕忽閃忽閃的。
但用在數碼管上,估計比較難入座。
從以前的顯示器上,可以得到經驗,50hz對人而言,會閃爍。75hz已經完全看不出來了。降低一點要求,60hz絕大多數人已經感覺不到閃爍了。這個重新整理率怎麼用在數碼管上?
為了方便計算,以50hz為例,則週期t=1/f=20ms,也就是20ms重複一週。假設你有4個數碼管,則每個數碼管有 5ms 的時間。也就是說,這就是「最大可能的時間」了。
每隔這「最大時間」切換一位數碼管,就能讓數碼管到達 最大輝度(亮度)了。
當然,最大亮度也不可能超出硬體設計範圍,如果硬體設計驅動電流不夠,那麼軟體怎麼弄都是白扯!
6樓:匿名使用者
驅動電流不夠,或者你的動態掃描程式有問題
7樓:匿名使用者
太暗了就增加輸入電壓,太亮了就加一個電阻
為什麼微控制器的數碼管亮度很低?
8樓:匿名使用者
你用的是stc或者是at吧,p0埠是要接上拉電阻的。上拉電阻選10k的就可以
9樓:匿名使用者
p0是集電極開路輸出,你用共陽的數碼管就行了,或者接1k的上拉。
10樓:匿名使用者
電壓不夠唄,你需要看看數碼管需要多大的電壓,再看看你輸出了多少電壓。
如何利用微控制器讓4位數碼管顯示
程式如下 用的是stc89c52晶片 include 52系列微控制器標頭檔案 define uchar unsigned char define uint unsigned int uint x,y uchar code table 共陰極數碼管編碼 void display uchar,ucha...
c語言51微控制器求解8位數碼管上動態顯示
void main 延時的位置放錯了,導致當前位選擇為下內一次服容務了。把case 7 改為 ducase 0 case 1 改為zhicase 2 case 2 改為case 3 case 3 改為case 4 case 4 改為case 5 case 5 改為case 6 case 6 改為ca...
普中微控制器數碼管為什麼總是最後一位亮
延時或者位選訊號沒有控制好 沒有圖,又沒有程式。誰知道你是什麼問題,難道大家都能掐會算 上個程式吧,順便把數碼管接法簡單說一下。程式沒處理好 採用延時函式的顯示,多數會出現同一個情況,那是因為 重新整理率不一致導致的結果。為什麼程式燒進微控制器後數碼管只亮中間 你能確定數碼bai管是共陰du的嗎?如...