#include
#包括
#define uchar unsigned char
#定义使用无符号字符
#define uint unsigned int
#定义的无符号整型
uchar code tab[]={
使用代码表[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0x3F,0x06,0x5b,0x4f,0x66,0x6d,7d,0x07,0x7f,0x6f};
sbit SPK=P3^7;
SBITSPK=P3^7;
sbit key1=P1^0;
SBITKEY1=P1^0;
sbit key2=P1^1;
SBITKEY2=P1^1;
uchar n,a,b;
使用N,A,B;
void delay(uchar z)
延时(使用Z)
{
{
uchar x,y;
使用X,Y;
for(x=z;x>0;x--)
对(X =Z;x >0;X——)
for(y=110;y>0;y--);
对于(Y =110;y >0;y——);
}void scan()
}无效scan()
{
{
if(key1==0)
如果(Key1==0)
{
{
delay(5);
延迟(5);
if(key1==0)
如果(Key1==0)
{
{
while(!key1);
什么时候。KEY1);
n++;
n+ +;
if(n==100)
如果(N==100)
n=0;
N =0;
}
}
}
}
if(key2==0)
如果(KEY2==0)
{
{
delay(5);
延迟(5);
if(key2==0)
如果(KEY2==0)
{
{
while(!key2);
什么时候。Key2);
n=0;
N =0;
}
}
}
}
}
}
void display()
无效的display()
{
{
a=n%10;//个位
=N/个位占10;
b=n/10;//十位
B=N/ 10//十位;
P2=0xfe;//11111110
P2=0XFE;// 11111110
P0=~tab[b];
P0=~选项卡[B];
delay(5);
延迟(5);
P2=0xfd;//11111101
P2=0xfd;// 11111101
P0=~tab[a];
P0=~选项卡[一];
delay(5);
延迟(5);
}
}
void alarm(uchar t)
闹钟(使用T)
{
{
uchar i,j;
使用我,J;
for(i=0;i<200;i++)
对(我=0;i <200;i++)
{
{
SPK=~SPK;
SPK=~SPK;
for(j=0;j
}
}
}
}
void main()
无效的main()
{
{
while(1)
什么时候?1。
{
{
scan();
scan();
display();
display();
if((a==0)&&(b!=0))
如果((a=0)和(B!0。
{
{
alarm(30);
报警(30);
alarm(50);
报警(50);
小意思,全看懂了
两个按键两个数码管, Key1按一次数码管数值加1, 到100时清零, key2清零数码管显示值
当显示值为10的倍数(除0外)时,蜂鸣器以两种频率声音响一次
不知道你哪里不懂,先这样简单回答一下, 打字也不太方便
while(!key) //按键弹起时n++;
alarm(30)
alarm(50) //这个传不同的参数数 频率不一样,声音有区别