基于stc89c51单片机的数码管时钟

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*郑州轻工业学院——————wuzhipeng*/
/*共有四个按键,K1按下后时钟启动,K1断开后可
以调表,其余三个按键分别调整时分秒,调整完毕按
下k1确认*/
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar count=0,miao=0,fen=0,shi=0;
uchar date[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int time[10];
sbit K1=P3^2;
sbit K2=P3^3;
sbit K3=P3^4;
sbit K4=P3^5;
bit K1flag=0;
void delay(uint xms)
{
uint i,j;
for (i=xms;i>0;i--)
for(j=115;j>0;j--); }
void display()
{
time[0]=miao%10;
time[1]=miao/10;
time[2]=11;
time[3]=fen%10;
time[4]=fen/10;
time[5]=11;
time[6]=shi%10;
time[7]=shi/10;
P2=wei[0];
P1=date[time[0]];
delay(1);//
P2=wei[1];
P1=date[time[1]];
delay(1);//
P2=wei[2];
P1=date[time[2]];
delay(1);//
P2=wei[3];
P1=date[time[3]];
delay(1);//
P2=wei[4];
P1=date[time[4]];
delay(1);//
P2=wei[5];
P1=date[time[5]];
delay(1);//
P2=wei[6];
P1=date[time[6]];
delay(5);//
P2=wei[7];
P1=date[time[7]];
delay(1);//
}
void KeyProcess()//键盘处理程序{
display();
if(K2==0)
{
delay(10) ;
if (K2==0)
{
while (!K2);
shi++;
if (shi==11) shi=0; //小时调整
}
}
if(K3==0)
{
delay(1) ;
if (K3==0)
{
while (!K3);
fen++;
if (fen==11) fen=0;//分钟调整
}
}
if(K4==0)
{
delay(1) ;
if (K4==0)
while (!K4);
miao++;
if (miao==11)
{miao=0; }//秒调整
}
}
}
void main ()
{
TMOD=0x01;
TH0=0x4c;TL0=0x00;
EA=1;ET0=1;
TR0=0;
while (1)
{
if(K1==0)
{TR0=1;display(); }
else
{
TR0=0; KeyProcess();
}
}
}
void timer0() interrupt 1 using 0//中断程序{
TH0=0x4c;TL0=0x00;
count++;
if(count==20)
{
count=0;
miao++;
}
if(miao==11)
miao=0;
fen++;
if(fen==11)
{
fen=0;
shi++;
if(shi==11)
{
shi=0;
}
}
}
}。

相关文档
最新文档