使用定時(shí)器中斷動(dòng)態(tài)顯示8位數(shù)碼管。基于定時(shí)器的八位數(shù)字顯示器實(shí)驗(yàn)電路如圖所示。
分析: 要?jiǎng)討B(tài)顯示8位數(shù)碼管,其數(shù)據(jù)的刷新頻率應(yīng)不低于50Hz(0.02S),也就是說(shuō)每位數(shù)據(jù)的刷新時(shí)間應(yīng)小于2.5ms(0.02S/8)。使用定時(shí)器T1以定時(shí)1ms,當(dāng)定時(shí)器溢出中斷時(shí),刷新數(shù)據(jù)位。其程序在結(jié)構(gòu)上可分為三大部分:主函數(shù)等、定時(shí)器中斷服務(wù)函數(shù)、初始化函數(shù)。下面依次介紹各個(gè)部分。
1.主函數(shù)等
主函數(shù)前面這部分程序主要包括基本的IO口定義、全局變量定義、頭文件包含、函數(shù)聲明等。主函數(shù)首先調(diào)用初始化函數(shù),對(duì)各個(gè)資源進(jìn)行初始化操作,然后等待中斷發(fā)生。
#define user_test//測(cè)試用
typedef unsigned char uint8;
typedef unsigned short int uint16;
uint8 LED_Code_buf[8];
uint8 Disply_temp;
sfr LED_Date=0xa0;//user P2
void main(void)
{
Int_Initialize();
Other_Initialize();
while(1)
{
}
}
2.定時(shí)器T1中斷服務(wù)函數(shù)
定時(shí)器T1中斷服務(wù)函數(shù)主要是刷新顯示數(shù)據(jù)位,根據(jù)條件每次刷新一位數(shù)碼管。
//8位數(shù)碼管動(dòng)態(tài)顯示
void Timer1 (void) interrupt 3 using 1
{
//1ms 刷新1次
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
switch(Disply_temp++)
{
case 0:
LED_Date=LED_Code_buf[0];//顯示高位
break;
case 1:
LED_Date=LED_Code_buf[1];
break;
case 2:
LED_Date=LED_Code_buf[2];
break;
case 3:
LED_Date=LED_Code_buf[3];
break;
case 4:
LED_Date=LED_Code_buf[4];
break;
case 5:LED_Date=LED_Code_buf[5];
break;
case 6:
LED_Date=LED_Code_buf[6];
break;
case 7:
LED_Date=LED_Code_buf[7];//顯示低位
break;
default:
Disply_temp=0;
break;
}
}
3.初始化函數(shù)
初始化函數(shù)包括中斷初始化函數(shù)和其它資源的初始化函數(shù)。中斷初始化函數(shù)配置了中斷的觸發(fā)方式,是否允許中斷等操作。其它資源初始化函數(shù)主要配置開機(jī)顯示的字符。
void Int_Initialize(void)
{
TMOD|=0x10;//T1計(jì)數(shù)模式,方式1
//1ms 刷新1次 12MHz晶振
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
EA=1;
ET1=1;
TR1=1;
}
//其它初始化函數(shù)
void Other_Initialize(void)
{
//顯示87654321
LED_Code_buf[0]=0x08;//最高位處理
LED_Code_buf[1]=0x17;
LED_Code_buf[2]=0x26;
LED_Code_buf[3]=0x35;
LED_Code_buf[4]=0x44;
LED_Code_buf[5]=0x53;
LED_Code_buf[6]=0x62;
LED_Code_buf[7]=0x71;
}
-
顯示器
+關(guān)注
關(guān)注
21文章
5053瀏覽量
141167 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1888瀏覽量
92083 -
中斷
+關(guān)注
關(guān)注
5文章
902瀏覽量
42377 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3272瀏覽量
116753 -
IO口
+關(guān)注
關(guān)注
3文章
170瀏覽量
24661
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
八位數(shù)碼管動(dòng)態(tài)顯示學(xué)號(hào)
八位數(shù)碼管的相關(guān)資料推薦
八位數(shù)碼管動(dòng)態(tài)掃描八位數(shù)碼管+流水燈的相關(guān)資料分享
如何去實(shí)現(xiàn)八位數(shù)碼管的靜態(tài)與動(dòng)態(tài)顯示代碼呢
如何去實(shí)現(xiàn)八位數(shù)碼管的動(dòng)態(tài)掃描呢
如何利用單片機(jī)去實(shí)現(xiàn)C51計(jì)數(shù)和八位數(shù)碼管顯示設(shè)計(jì)呢
CH583八位數(shù)據(jù)收發(fā)沒(méi)問(wèn)題的,超過(guò)八位就丟了怎么解決?
DS1302八位數(shù)碼管C語(yǔ)言可調(diào)時(shí)鐘日歷
使用AT89C51制作八位數(shù)字頻率計(jì)的程序及注釋免費(fèi)下載
單片機(jī)之基礎(chǔ)編程 八位數(shù)碼管(三)

評(píng)論