#include <reg52.h>//寄存器定义文件
//数码管定时显示数字递增
sbit P20=P2^0;//S1
sbit P32=P3^2;//S2
sbit P33=P3^3;//S3
sbit P34=P3^4;//S4
sbit P00=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
sbit P03=P0^3;
sbit P04=P0^4;
sbit P05=P0^5;
sbit P06=P0^6;
sbit P07=P0^7;
int keynum;
int code zxm[]={0xc0,0x0f9,0x0a4,0x0b0,0x099,0x092,0x082,0x0f8,0x080,0x090,0x088,0x083,0x0c6,0x0a1,0x86,0x8e,0x0ff};//字型码表格
// 0 1 2 3 4 5 6 7 8 9 A B C D E F 无字符
int number=0;//被显示的数
unsigned int count=0;//定时计次
int temp=0;
void delay(int i)//程序延时子程序,参数为时间长短
{
int j;//延时变量
j=1;
while(j<=i)//延时变量超过延时参数,停止延时
{
j++;//延时变量增加
}
}
void t0() interrupt 3
{
TH1=0x0e1;TL1=0x0f6;
count++;
if(count>=100)
{
count=0;
if(keynum==1)
{
temp++;
if(temp>100)
{temp=0;}
}
if(keynum==2)
{temp--;
if(temp<0)
{temp=100;}
}
if(keynum==3)
{temp++;
if(temp>50)
{temp=0;}
}
if(keynum==4)
{temp--;
if(temp<0)
{temp=50;}
}
}
}
void dis()//显示数的百、十、个位
{
P32=0;
P33=1;
P34=1;
P1=zxm[temp/100];
delay(300);
P32=1;
P33=0;
P34=1;
P1=zxm[(temp%100)/10];
delay(300);
P32=1;
P33=1;
P34=0;
P1=zxm[temp%10];
delay(300);
}
key()
{
P00=0;if(P07==0){keynum=1;temp=0;}
if(P06==0){keynum=2;temp=100;}
if(P05==0){keynum=3;temp=0;}
if(P04==0){keynum=4;temp=50;}
}
main()//主程序
{
TR1=1;
TMOD=0x010;
TH1=0x0e1;
TL1=0x0f6;
ET1=1;EA=1;
while(1)
{
key();
dis();
}
} |