视频演示
哔哩哔哩视频演示
Proteus 仿真图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201216174350470.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NTI2NDIy,size_16,color_FFFFFF,t_70)
代码:
#include<reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit key_stop = P3^0;
sbit key_star = P3^1;
sbit key_fen = P3^2;
sbit key_shi = P3^3;
uchar code num[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
uchar miao = 0, fen = 0, shi = 0;
uchar miao_L, miao_H, fen_L, fen_H, shi_L, shi_H;
uint counter = 0;
void delay(uint x){
while(x--)
;
}
void key_delay(int xms){
unsigned int i, j;
for(i=0; i<xms; ++i)
for(j=0; j<110; ++j)
;
}
void T0_Init(){
TMOD = 0x01;
TH0 = 0x3c;
TL0 = 0xb0;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void display(){
P2 = 0x20;
P0 = 0xbf;
delay(50);
P2 = 0x04;
P0 = 0xbf;
delay(50);
P2 = 0x80;
P0 = num[miao_L];
delay(50);
P2 = 0x40;
P0 = num[miao_H];
delay(50);
P2 = 0x10;
P0 = num[fen_L];
delay(50);
P2 = 0x08;
P0 = num[fen_H];
delay(50);
P2 = 0x02;
P0 = num[shi_L];
delay(50);
P2 = 0x01;
P0 = num[shi_H];
delay(50);
}
void keyscan(){
if(key_stop == 0){
key_delay(20);
if(key_stop == 0){
EA = 0;
while(!key_stop);
}
}
if(key_star == 0){
key_delay(20);
if(key_star == 0){
EA = 1;
while(!key_star);
}
}
if(key_fen == 0){
key_delay(20);
if(key_fen == 0){
fen++;
while(!key_fen);
}
}
if(key_shi == 0){
key_delay(20);
if(key_shi == 0){
shi++;
while(!key_shi);
}
}
}
void main(){
T0_Init();
while(1){
display();
keyscan();
}
}
void timer0_Init() interrupt 1{
counter++;
if(counter == 20){
counter = 0;
miao++;
if(miao == 60){
miao = 0;
fen++;
if(fen == 60){
fen = 0;
shi++;
if(shi == 24){
shi = 0;
fen = 0;
miao = 0;
}
}
}
miao_L = miao%10;
miao_H = miao/10;
fen_L = fen%10;
fen_H = fen/10;
shi_L = shi%10;
shi_H = shi/10;
}
}
完整工程
时钟——两组实验.zip