求程式設計實現倒計時的秒錶,2位LED數碼管顯示,延時採用硬體延時的方法
- 2022-11-02
用微控制器的定時器T0定時,計時1秒,實現倒計時的秒錶的功能。
程式如下
#include
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽數碼管段碼錶
unsigned char second;//秒倒計時變數
unsigned char t0n;//T0中斷次數計數
sbit k1=P3^2;//定義按鍵
void delay()
{
unsigned int j;
for(j=400;j>0;j——);
}
void display()//顯示子程式
{
P2=0x01;
P0=tab[second/10];//顯示十位
delay();
P2=0x02;
P0=tab[second%10];//顯示個位
delay();
}
void main()
{
TMOD=0x01;//用T0定時,中斷方式
TH0 =0x3C;//晶振12M,定時50ms
TL0 =0xB0;
IE =0x82;
while(1)
{
display();//調顯示子程式
if(k1==0)//按鍵按下
{
if(TR0==0)
{
TR0=1;//啟動開始計時
second=60;//從60秒開始倒計時
}
else
TR0=0;
while(k1==0);//等待按鍵釋放
}
}
}
//T0中斷程式
void T0_int() interrupt 1
{
TH0 =0x3C;
TL0 =0xB0;
t0n++;
if(t0n>=20)//1秒到
{
t0n=0;
second——;//減1秒
if(second==0)TR0=0;
}
}
模擬圖如下