可调时钟Proteus仿真+程序完整版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
keyscan();
display();
}
}
void t0(void) interrupt 1 using 0
{
TH0=0x3c;
TL0=0xb0;
n++;
if(n==20)
{
n=0;
sec++;
if(sec==60)
{sec=0;
min++;}
if(min==60)
{min=0;
hour++;}
void delayms(unsigned int x)//延时1ms
{
unsigned int i,j;
for ( i=x;i>0;i-- )
for ( j=125;j>0;j-- );
}
void keyscan(void)
{
if(k1==0)
{
delayms(5);
if(k1==0)n0++;
while(!k1);
}
void display()
{
sec0=sec%10;
sec1=sec/10;
min0=min%10;
min1=min/10;
hour0=hour%10;
hour1=hour/10;
for(i=0;i<8;i++)
{
P0=0xff;
P2_1=1;
P0=wei[i];
P2_1=0;
P0=0x00;
P2_0=1;
switch(i)
{
case 0:P0=duan[sec0]; break;
case 1:P0=duan[sec1]; break;
case 2:P0=duan[10];break;
case 3:P0=duan[min0]; break;
case 4:P0=duan[min1]; break;
case 5:P0=duan[10]; break;
if(hour==24)
{hour=0;}
}
}
#include<reg52.h>
unsigned char code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char hour0,hour1,min0,min1,sec0,sec1;
unsigned char i,n,k,n0;
char hour,min,sec;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
{
TR0=1;
if(k2==0)
{
delayms(5);
if(k2==0)min++;
if(min==60)min=0;
}while(!k2);
if(k3==0)
{
delayms(5);
if(k3==0)min--;
if(min==-1)min=59;
}while(!k3);
}
if(n0==3)
{
TR0=1;
case 6:P0=duan[hour0];break;
case 7:P0=duan[hour1];break;
}
delayms(5);
P0=0x00;
P2_0=0;
}
}
void main(void)
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ET0=1;
EA=1;
while(1)
}
if(n0==1)
{
TR0=0;
if(k2==0)Hale Waihona Puke Baidu
{
delayms(5);
if(k2==0)sec++;
if(sec==60)sec=0;
}while(!k2);
if(k3==0)
{
delayms(5);
if(k3==0)sec--;
if(sec==-1)sec=59;
}while(!k3);
}
if(n0==2)
if(k2==0)
{
delayms(5);
if(k2==0)hour++;
if(hour==24)hour=0;
}while(!k2);
if(k3==0)
{
delayms(5);
if(k3==0)hour--;
if(hour==-1)hour=23;
}while(!k3);
}
if(n0==4)n0=0;
相关文档
最新文档