#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...