proteus-单片机-实现60秒倒计时器
Posted 无乎648
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了proteus-单片机-实现60秒倒计时器相关的知识,希望对你有一定的参考价值。
proteus单片机实现60秒倒计时器
项目要实现的60s秒表倒计时器,用 AT89C51单片机的定时 / 计数器 T0 产生一秒的定时时间,实现 59 到 0秒的循环显示的功能。具体要求:
1)按下启动按键后,倒计时器开始工作,从60S开始倒计时。
2)再次按下启动按键后,倒计时器复位。
3)按下暂停按键后,倒计时器停止计时工作。
4)再次按下暂停按键后,倒计时器继续进行计时工作。
顺序图:
流程图:
组件图:
代码如下:
#include <reg51.h>
unsigned char code LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char m,buf[4];
unsigned int shu,j;
void delay(unsigned char x)
{
unsigned char y;
for(;x>0;x--)
for(y=110;y>0;y--);
}
void dis(unsigned int temp)
{
unsigned char i;
buf[0]=0;
buf[1]=0;
buf[2]=temp/10;
buf[3]=temp%10;
for(i=0;i<4;i++)
{
P2=(0x01<<i);
P1=LED[buf[i]];
delay(5);
P1=0xff;
}
}
void INT_0( ) interrupt 0
{
TR0=~TR0;
}
void INT_1( ) interrupt 2
{
TR0=~TR0;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
shu=60;
j=0;
}
void TIME_0( ) interrupt 1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
j++;
if(j==20)
{
j=0;
shu--;
if(shu==0)
TR0=0;
}
}
void main()
{
TCON=0x05;
IP=0x00;
TMOD=0x01;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
TR0=1;
IE=0x87;
shu=60;
j=1;
while(1)
{
dis(shu);
}
}
以上是关于proteus-单片机-实现60秒倒计时器的主要内容,如果未能解决你的问题,请参考以下文章
51单片机定时器计时1秒数码管静态循环显示0到F+Proteus仿真