使用定時器中斷動態(tài)顯示8位數(shù)碼管?;诙〞r器的八位數(shù)字顯示器實驗電路如圖所示。
分析: 要動態(tài)顯示8位數(shù)碼管,其數(shù)據(jù)的刷新頻率應不低于50Hz(0.02S),也就是說每位數(shù)據(jù)的刷新時間應小于2.5ms(0.02S/8)。使用定時器T1以定時1ms,當定時器溢出中斷時,刷新數(shù)據(jù)位。其程序在結(jié)構(gòu)上可分為三大部分:主函數(shù)等、定時器中斷服務函數(shù)、初始化函數(shù)。下面依次介紹各個部分。
1.主函數(shù)等
主函數(shù)前面這部分程序主要包括基本的IO口定義、全局變量定義、頭文件包含、函數(shù)聲明等。主函數(shù)首先調(diào)用初始化函數(shù),對各個資源進行初始化操作,然后等待中斷發(fā)生。
#define user_test//測試用
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.定時器T1中斷服務函數(shù)
定時器T1中斷服務函數(shù)主要是刷新顯示數(shù)據(jù)位,根據(jù)條件每次刷新一位數(shù)碼管。
//8位數(shù)碼管動態(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ù)主要配置開機顯示的字符。
void Int_Initialize(void)
{
TMOD|=0x10;//T1計數(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)注
22文章
5072瀏覽量
141847 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1889瀏覽量
92628 -
中斷
+關(guān)注
關(guān)注
5文章
905瀏覽量
42810 -
定時器
+關(guān)注
關(guān)注
23文章
3298瀏覽量
118966 -
IO口
+關(guān)注
關(guān)注
3文章
170瀏覽量
25006
發(fā)布評論請先 登錄
八位數(shù)碼管動態(tài)顯示學號
八位數(shù)碼管的相關(guān)資料推薦
八位數(shù)碼管動態(tài)掃描八位數(shù)碼管+流水燈的相關(guān)資料分享
如何去實現(xiàn)八位數(shù)碼管的靜態(tài)與動態(tài)顯示代碼呢
如何去實現(xiàn)八位數(shù)碼管的動態(tài)掃描呢
如何利用單片機去實現(xiàn)C51計數(shù)和八位數(shù)碼管顯示設(shè)計呢
DS1302八位數(shù)碼管C語言可調(diào)時鐘日歷
使用AT89C51制作八位數(shù)字頻率計的程序及注釋免費下載
單片機之基礎(chǔ)編程 八位數(shù)碼管(三)

評論