/* 数码管显示加1到9999 */
#include<reg52.h> //头文件声明
#include<intrins.h>
#define uchar unsigned char //宏定义
#define uint unsigned int
uchar code leddata[]={
0xC0, 0xF9, 0xA4, 0xB0,
0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83,
0xC6, 0xA1, 0x86, 0x8E};
uint cot; //定义一个变量
uint time;
uchar hime;
sbit ADDR0=P3^0; //段选
sbit ADDR1=P3^1;
sbit ADDR2=P3^2;
sbit ADDR3=P3^3;
void delay(uint z) //延时子函数写在前面不用声明
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void init()
{
TMOD=0x10; //定时器1工作模式1 16模式定时器。
TH1=0x4b;
TL1=0xfe; //定时50毫秒
TR1=1; //启动定时器
}
void display()
{
P1=leddata[time/1000];
delay(1);
ADDR0=0;
delay(1);
ADDR0=1;
P1=leddata[time%1000/100];
delay(1);
ADDR1=0;
delay(1);
ADDR1=1;
P1=leddata[time%100/10];
delay(1);
ADDR2=0;
delay(1);
ADDR2=1;
P1=leddata[time%10];
delay(1);
ADDR3=0;
delay(1);
ADDR3=1;
}
sbit s2=P3^4;
sbit s3=P3^5;
void main() //主程序
{
init();
while(1)
{
if(TF1==1) //TF是否等于1
{
TF1=0; //等于1清零
TH1=0x4b;
TL1=0xfe; //初始化从新付值
cot++; //cot加1
}
if(cot==20) //cot是否等于20
{
cot=0;
delay(1);
time++;
if(time>9999)
time=0;
}
display();
}
}
|