#include <reg52.h>
#define LED P0
sbit key1 = P3^1;
sbit key2 = P3^2;
sbit key3 = P3^3;
sbit latch_bit = P2^1;
sbit latch_seg = P2^2;
unsigned char sec;
unsigned char min;
unsigned char hour;
unsigned char bit_table[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char seg_table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(unsigned int t);
void time();
void key_add();
void DelayUs2x(unsigned char t);//函数声明
void DelayMs(unsigned char t);
void main(void)
{
TMOD = 0x01;
TH0 = 0x3c;
TL0 = 0xb0;
TR0 = 1;
EA = 1;
ET0 = 1;
while(1)
{
time();
key_add();
// delay(300);
latch_bit = 1;
LED = bit_table[7];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[sec%10];
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[6];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[sec/10];
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[5];
latch_bit = 0;
latch_seg = 1;
LED = 0x80;
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[4];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[min%10];
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[3];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[min/10];
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[2];
latch_bit = 0;
latch_seg = 1;
LED = 0x80;
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[1];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[hour%10];
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[0];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[hour/10];
latch_seg = 0;
DelayMs(1);
}
}
void time()
{
if(sec == 60)
{
sec = 0;
min++;
}
if(min == 60)
{
min =0;
hour++;
}
if(hour == 24)
{
hour = 0;
}
}
void key_add()
{
time();
if(!key1)
{
if(!key1)
{
while(!key1);
latch_bit = 1;
LED = bit_table[1];
latch_bit = 0;
// delay(300);
latch_seg = 1;
LED = seg_table[hour%10];
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[0];
latch_bit = 0;
// delay(300);
latch_seg = 1;
LED = seg_table[hour/10];
latch_seg = 0;
hour++;
DelayMs(1);
}
}
if(!key2)
{
if(!key2)
{
while(!key2);
latch_bit = 1;
LED = bit_table[4];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[min%10];
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[3];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[min/10];
latch_seg = 0;
min++;
DelayMs(1);
}
}
if(!key3)
{
if(!key3)
{
while(!key3);
latch_bit = 1;
LED = bit_table[7];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[sec%10];
latch_seg = 0;
DelayMs(1);
latch_bit = 1;
LED = bit_table[6];
latch_bit = 0;
latch_seg = 1;
LED = seg_table[sec/10];
latch_seg = 0;
sec++;
DelayMs(1);
}
}
}
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
void ISO_time() interrupt 1
{
unsigned char i;
EA = 0;
TH0 = 0x3c;
TL0 = 0xb0;
i++;
if(i == 20)
{
i = 0;
sec++;
}
EA = 1;
}
简易电子钟设计
最新推荐文章于 2022-02-11 14:42:12 发布