锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

99分钟倒计时程序,带继电器输出

时间:2023-10-01 23:07:02 tr50继电器

#include //最长99分钟定时倒计时提醒器
//2021-7-14 中微电
#define uchar unsigned char
#define uint unsigned int
sbit gewei0=P1^6; //允许个位显示。
sbit shiwei0=P1^7; //允许十位显示。
sbit key1=P1^2; //键1,每按10分钟。
sbit key2=P1^1; //键2,每按1分钟。
sbit key3=P1^0; //键3,打开倒计时或暂停。
sbit beep=P1^3; //蜂鸣器
sbit led=P1^4; //秒指示灯
sbit jdq=P3^4; //继电器
uchar k;
unsigned int s,m;
void delayms(uchar);
void delay(uint z);
void keyscan();
void display(uchar);
void init();
void xiang1();
void xiang2();
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void main()
{ init(); //调整初始化。
while(1)
{ keyscan(); //调整监控按钮。
display(k); //调整显示。
}}

void keyscan() //监控按钮。
{ if(key20)
{ delayms(26);
if(key2
0)
{ k ;
if(k>=99) //k==99与中断一致。
k=0;
while(!key2); //提起按钮key2时,显示出k 2的结果。
}
}

if(key10)
{ delayms(26);
if(key1
0)
{ k=k 10;
if(k>=99) //k99与中断一致。
k=0;
while(!key1);
}
}
if(key3
0)
{ delayms(26);
if(key3==0)
{
xiang1(); //启动倒计时提示。
delayms(246);
TR0=~TR0;
jdq=~jdq; ///继电器状态 按动并停止按钮翻转
while(!key3);

}}}

void delayms(uchar z) //延时。
{ uchar i,j;
for(i=z;i>0;i–)
for(j=110;j>0;j–); }

void delay(uint z)
{ while(z–); }

void display(uchar k) //显示。
{ uchar shi,ge;
shi=k/10;
ge =k;

gewei0=0;
P2=table[ge];
delayms(21);
gewei0=1;

shiwei0=0;
P2=table[shi];
delayms(21);
shiwei0=1;
}

void init() //初始化。设置中断和定时器的值。
{ TMOD=0x01;
TH0=(65536-50000)/256; //晶振12MHz,定时50ms。
TL0=(65536-50000)%6;
EA=1;
ET0=1;
}

void xiang1() ///计时开始提示音。
{
uchar q;
for(q=0;q<100;q )
{
beep=0;
delayms(6);
beep=1;
delayms(4);
}
delayms(64);
}

void xiang2() ///计时结束提示音–嘟嘟。
{
unsigned int m;
uchar n,i;
for(i=3;i>0;i–)
{
for(n=123;n>0;n–)
{
beep=0;
delay(100);
beep=1;
delay(100);
}

for(m=3456;m>0;m–);
for(n=123;n>0;n–)
{
beep=0;
delay(90);
beep=1;
delay(90);

} 

for(m=56789;m>0;m–);

}

}

void time0()interrupt 1 //0中断,中断序号1。
{ uint zxc=65432;
TH0=0xb1; //晶振12MHz,定时20ms。
TL0=0xe0;
s ;
if(m25) //秒指示。
{
m=0;
led=~led;}
m ; //uchar m; 定义为全局变量。
if(s
3000) //3000×20ms=60000ms÷1000ms=60s(1分钟)
{ s=0; //归零。等待下一分钟。
k–; } //倒计时,减1分钟。

if(k<=0) //如果到0,发出声音,关闭中断。
{
k=0;
xiang2();

TR0=0;   //到达预定时间,关闭0,停止。 jdq=1;  // 继电器释放 

}}

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章