📄 数码管时钟.c
字号:
#include<reg52.h>
sbit a0=P1^0;
sbit a1=P1^1;
sbit a2=P1^2;
sbit a3=P1^3; //定义按键值
static char Lie[4]={0xef,0xdf,0xbf,0x7f}; //按键值的扫描
/////////
char LEDXS[8];
static char LEDWEI[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //行扫描数值表 最高位向最低位点亮
static char LED[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管真值表0-9
unsigned char hour,minute,second;
unsigned int counter=0; //250us计数单元
unsigned char i;
//////////////////////////////////////////////////////////////////////////
void delay(unsigned int i) //延时
{unsigned int j,k;
for(j=0;j<i;j++)
for(k=0;k<160;k++);
}
////////////////////////////////////////////////////////////
void Timer0(void) interrupt 1 //T0中断服务函数
{ counter++;
if(counter==4000){
counter=0;
second++;
}
if(second==60) {second=0;minute++;}
if(minute==60) {minute=0;hour++;}
if(hour==24) {hour=0;}
}
//////////////////////////////////////////////////////////////
void main(void) //主函数
{
TMOD=0x2;
TH0=0x6;
TL0=0x6;
TR0=1; //开中断
ET0=1;
EA=1;
hour=19; //设定时间初值
minute=41;
second=55;
while(1)
{
LEDXS[0]=LED[hour/10];
LEDXS[1]=LED[hour%10];
LEDXS[2]=0xbf;
LEDXS[3]=LED[minute/10];
LEDXS[4]=LED[minute%10];
LEDXS[5]=0xbf;
LEDXS[6]=LED[second/10];
LEDXS[7]=LED[second%10];
for(i=0;i<8;i++)
{P0=LEDXS[i];
P2=LEDWEI[i];
delay(1);}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -