定时器实验
两个数码管,K1,K2两个按键,完成K1启动计数,K2暂停计数,每一秒钟数码管增加1,60秒钟后,蜂鸣器响一声,数码管回归0,重新计数。
代码
#include"reg51.h"
#include"intrins.h"
#define seg1 P0
#define seg2 P2
typedef unsigned int u16;
typedef unsigned char u8;
u16 code smg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit key1=P3^2;
sbit key2=P3^3;
sbit buzzer=P1^0;
u16 num=0;
u16 i=0;
void delay(u16 i)
{
while(i--);
}
void int_init()
{
EA=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
}
void tim0_init()
{
ET0=1;
TMOD=0X01;
TH0=0XFC;
TL0=0X18;
TR0=0;
}
void display()
{
seg1=~smg[num/10%10];
delay(10);
seg2=~smg[num%10];
delay(10);
}
void main()
{
buzzer=0;
int_init();
tim0_init();
while(1)
{
display();
}
}
void int0() interrupt 0
{
if(key1==0)
{
delay(1000);
if(key1==0)
{
TR0=1;
}
}
}
void int1() interrupt 2
{
if(key2==0)
{
delay(1000);
if(key2==0)
{
TR0=0;
}
}
}
void tim0() interrupt 1
{
TH0=0XFC;
TL0=0X18;
if(i==1000)
{
i=0;
num++;
}
i++;
if(num==61)
{
buzzer=1;
delay(1000);
buzzer=0;
num=0;
}
}
图像

控件
AT89C51
BUTTON
BUZZER
NPN
RES
AND
7SEG-MPX1-CA
注意:选择蜂鸣器时,不要选错,若蜂鸣器不响,可以尝试改变蜂鸣器电压电阻大小
版权声明:本文为pretend52原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。