數碼管遞加遞減帶消隱

2021-07-28 12:20:12 字數 1493 閱讀 2059

#include

<

reg52.h

>

//包含標頭檔案,一般情況不需要改動,標頭檔案包含特殊功能暫存器的定義  

#define dataport p0 //定義資料埠 程式中遇到dataport 則用p0 替換  

sbit latch1=p2

^2;//定義鎖存使能埠 段鎖存  

sbit latch2=p2

^3;//                 位鎖存  

unsigned char code dofly_duanma[10]=;// 顯示段碼值0~9  

unsigned char code dofly_weima=;//分別對應相應的數碼管點亮,即位碼  

unsigned char tempdata[8]; //儲存顯示值的全域性變數  

void delay(unsigned int t); //函式宣告  

void display(unsigned char firstbit,unsigned char num);  

main()  

//遞減的三位數碼管,帶消隱  

if(numa<

100)  

tempdata[0]=0;  

else  

tempdata[0]=dofly_duanma[numa/100];//分解顯示資訊,  

//如要顯示68,則68/10=6

68%10=8

if(numa<

10)  

tempdata[1]=0;  

else  

tempdata[1]=dofly_duanma[(numa%100)/10];  

tempdata[2]=dofly_duanma[(numa%100)%10];  

//中間2位數碼管不顯示,賦值0  

tempdata[3]=0;   

tempdata[4]=0;   

//遞增的三位數碼管,帶消隱  

if(numb<

100)  

tempdata[5]=0;  

else  

tempdata[5]=dofly_duanma[numb/100];//分解顯示資訊,  

//如要顯示68,則68/10=6

68%10=8

if(numb<

10)  

tempdata[6]=0;  

else  

tempdata[6]=dofly_duanma[(numb%100)/10];  

tempdata[7]=dofly_duanma[(numb%100)%10];  

display(0,8);//從第一位顯示,共顯示8位  

}  }  

void delay(unsigned int t)  

void display(unsigned char firstbit,unsigned char num)  

}  

數碼管消隱

按照我的開發板,共陰極數碼管共8個,也就是說,只能顯示8位數字,0 99999999,當顯示的數字不足8位時,需要將不顯示的數碼管熄滅即消隱,原理就是將儲存顯示值的陣列變數中,不顯示的位在p1口輸出0 熄滅 以下顯示0 9999四位有效數字為例,從第2位數碼管開始,顯示最多4位有效數字 includ...

微控制器數碼管消隱及中斷

在數碼管動態顯示過程中,主要是在數碼管位選和段選產生的瞬態造成的。數碼管的不應該亮的地方有點微微發亮,這種現象就是 鬼隱 利用延時函式,使得數碼管該亮的地方亮的時間久一點,那麼不該亮的地方就不會再亮了。關閉段 在改變值之前,使數碼管全部熄滅。關閉位 關閉數碼管的位,等到賦值過程都做好了後,再重新開啟...

數碼管高位消0

部分程式 while 1 將剩餘的有效數字位如實轉換 for j 0 j for 起始未對j操作,j即保持上個迴圈結束時的值 舉例 當sec 001025 時,buff 5 0,for裡面的if判斷為真,ledbuff 5 0xff 高位第乙個0不顯示,buff 4 0,if再次判斷為真,ledbu...