资讯详情

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

#include<reg52.h> //最长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(key20) { k ; if(k>=99) //k==99与中断一致。 k=0; while(!key2); //提起按钮key2时,显示出k 2的结果。 } }

if(key10) { delayms(26); if(key10) { k=k 10; if(k>=99) //k99与中断一致。 k=0; while(!key1); } } if(key30) { 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(s3000) //3000×20ms=60000ms÷1000ms=60s(1分钟) { s=0; //归零。等待下一分钟。 k–; } //倒计时,减1分钟。

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

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

}}

标签: tr50继电器

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

锐单商城 - 一站式电子元器件采购平台