📄 51clock.c
字号:
//74series138 LEDDisplay Driver
#include<reg52.h>
//IO definition
sbit A0 = P2^0;
sbit A1 = P2^1;
sbit A2 = P2^2;
sbit FK = P1^4;
sbit KU = P1^3;
sbit KD = P1^2;
#define IO P0
//SEG definition
#define SEG0 A0=0;A1=0;A2=0
#define SEG1 A0=1;A1=0;A2=0
#define SEG2 A0=0;A1=1;A2=0
#define SEG3 A0=1;A1=1;A2=0
#define SEG4 A0=0;A1=0;A2=1
#define SEG5 A0=1;A1=0;A2=1
#define SEG6 A0=0;A1=1;A2=1
#define SEG7 A0=1;A1=1;A2=1
//define code table
unsigned char table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9
#define uint unsigned int
uint hour=0,min=0,sec=0,count=0,TM=24;
//time delay function
void delay(uint cnt)
{
while(--cnt);
}
//time display function
DisplayT()
{
IO=table[hour/10];
SEG0;
delay(300);
IO=0x00;
IO=table[hour%10];
SEG1;
delay(300);
IO=0x00;
IO=table[min/10];
SEG3;
delay(300);
IO=0x00;
IO=table[min%10];
SEG4;
delay(300);
IO=0x00;
IO=table[sec/10];
SEG6;
delay(300);
IO=0x00;
IO=table[sec%10];
SEG7;
delay(300);
IO=0x00;
}
//DisplayD()
//Key scan function
Keyscan()
{
if(KU==0)
{
delay(10);
if(KU==0)
{
min++;
if(min==60)
{
min=0;
hour++;
if(hour==TM)
{
hour=0;
}
}
while(KU==0); }
}
if(KD==0)
delay(10);
if(KD==0)
{
hour++;
if(hour==TM)
{
hour=0;
}
while(KD==0);}
}
//main function
void main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
IO=0x00;
while(1)
{
Keyscan();
DisplayT();
}
}
timer2() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
count++;
if(count==20)
{
count=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==TM)
{
hour=0;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -