實物圖.jpg (370.16 KB, 下載次數: 53)
下載附件
2022-11-10 02:07 上傳
原理圖.png (204.41 KB, 下載次數: 52)
下載附件
2022-11-10 02:07 上傳
部分程序如下:
#include <reg52.h>
#define uchar unsigned char
//位選口//
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
//定義按鍵口//
sbit key_hour=P2^0;//s1
sbit key_min=P2^1;//s2
sbit key_sec=P2^2;//s3
sbit key_rst=P2^3;//s4
//定義字符//
static unsigned char second,minute,hour;
unsigned int tcount;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uchar i)
{
uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display()
{
P1=table[hour/10];
P0_0 = 0;
delay(5);
P0_0 = 1;
P1=(table[hour%10]|0x80);
P0_1 = 0;
delay(5);
P0_1 = 1;
P1=table[minute/10];
P0_2 = 0;
delay(5);
P0_2 = 1;
P1=(table[minute%10]|0x80);
P0_3 = 0;
delay(5);
P0_3 = 1;
P1=table[second/10];
P0_4 = 0;
delay(5);
P0_4 = 1;
P1=table[second%10];
P0_5 = 0;
delay(5);
P0_5 = 1;
}
/*演示主程序*/
void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
/*************定義初始值*************/
//hour=16,minute=48,second=0;
while(1)
{
display();
if(key_hour==0)
{
delay(10);
if(key_hour==0)
{
hour++;
if(hour==24) hour=0;
}
while(!key_hour);
}
if(key_min==0)
{
delay(10);
if(key_min==0)
{
minute++;
if(minute==60) minute=0;
}
while(!key_min);
}
if(key_sec==0)
{
delay(10);
if(key_sec==0)
{
second++;
if(second==24) second=0;
}
while(!key_sec);
}
if(key_rst==0)
{
delay(10);
if(key_rst==0)
{
hour=0;
minute=0;
second=0;
}
while(!key_rst);
}
}
}可以按鍵調節時間。
|