單片機(jī)C語(yǔ)言實(shí)例-330-用數(shù)碼管顯示動(dòng)態(tài)檢測(cè)結(jié)果
//實(shí)例64:用數(shù)碼管顯示動(dòng)態(tài)檢測(cè)結(jié)果
#include<reg51.h> // 包含51單片機(jī)寄存器定義的頭文件
#include<stdlib.h> //包含隨機(jī)函數(shù)rand()的定義文件
unsigned char i; //記錄中斷次數(shù)
unsigned int x; //隨機(jī)檢測(cè)的數(shù)據(jù)
unsigned char code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //數(shù)碼管顯示0~9的段碼表
/***********************************************************************
函數(shù)功能:快速動(dòng)態(tài)掃描延時(shí),延時(shí)約0.9毫秒
************************************************************************/
void delay(void)
{
unsigned int i;
for(i=0;i<300;i++)
;
}
/***********************************************************************
函數(shù)功能:4位數(shù)的數(shù)碼顯示器顯示
入口參數(shù):k
出口參數(shù):無(wú)
************************************************************************/
void display(unsigned int k)
{
P2=0xfe; //即P2=1111 1110B,P2.0引腳輸出低電平,數(shù)碼顯示器DS0接通電源
P0=Tab[k/1000]; //顯示千位
delay();
P2=0xfd ; //即P2=1111 1101B,P2.1引腳輸出低電平,數(shù)碼顯示器DS1接通電源
P0=Tab[(k%1000)/100]; //顯示百位
delay();
P2=0xfb; //即P2=1111 1011B,P2.2引腳輸出低電平,數(shù)碼顯示器DS2接通電源
P0=Tab[(k%100)/10]; //顯示十位
delay();
P2=0xf7; //即P2=1111 0111B ,P2.3引腳輸出低電平,數(shù)碼顯示器DS3接通電源
P0=Tab[k%10];//顯示個(gè)位
delay();
P2=0xff; //關(guān)閉所有顯示器
}
void main(void) //主函數(shù)
{
TMOD=0x01; //使用定時(shí)器T0
TH0=(65536-46083)/256; //將定時(shí)器計(jì)時(shí)時(shí)間設(shè)定為46083×1.085微秒=50000微秒=50毫秒
TL0=(65536-46083)%256;
EA=1; //開(kāi)啟總中斷
ET0=1; //定時(shí)器T0中斷允許
TR0=1; //啟動(dòng)定時(shí)器T0開(kāi)始運(yùn)行
while(1)
{
display(x); //調(diào)用檢測(cè)結(jié)果的顯示程序
}
}
/********************************************************
函數(shù)功能:定時(shí)器T0的中斷服務(wù)程序
*******************************************************/
void Time0(void) interrupt 1 using 1
{
TR0=0; //關(guān)閉定時(shí)器T0
i++; //每來(lái)一次中斷,i自加1
if(i==20) //夠20次中斷,即1秒鐘進(jìn)行一次檢測(cè)結(jié)果采樣
{
x=rand()/10; //隨機(jī)產(chǎn)生一個(gè)從0到32767的整數(shù),再將其除以10,獲得一個(gè)隨機(jī)4位數(shù),模擬檢測(cè)結(jié)果
i=0; //將i清0,重新統(tǒng)計(jì)中斷次數(shù)
}
TH0=(65536-46083)/256; //重新給計(jì)數(shù)器T0賦初值
TL0=(65536-46083)%256;
TR0=1; //啟動(dòng)定時(shí)器T0
}
更多詳情參考附件文檔
+08:00C132聯(lián)盟網(wǎng)8813.png (10.62 KB, 下載次數(shù): 18)
下載附件
保存到相冊(cè)
2022-3-29 10:10 上傳
游客,如果您要查看本帖隱藏內(nèi)容請(qǐng) 回復(fù)
|