51单片机数码管电子时钟程序#include
#define uint unsigned int
#define uchar unsigned char
uchar miao,fen,shi,m,f,s,num,num2,num1,num4;
uchar code table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit beep=P3^7;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y...
#include
#define uint unsigned int
#define uchar unsigned char
uchar miao,fen,shi,m,f,s,num,num2,num1,num4;
uchar code table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit beep=P3^7;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void xiansi( uchar aa,uchar bb,uchar cc)
{
P2=0xdb;
P0=0xbf;
delay(1);
P0=0xff;
// num2++;
if(num1==1&num2==0|num1==1&num2==1)
{
P2=0xff;
P0=table1[aa%10];
delay(1);
P0=0xff;
P2=0xff;
P0=table1[aa/10];
delay(1);
P0=0xff;
}
else
{
P2=0xfe;
P0=table1[aa%10];
delay(1);
P0=0xff;
P2=0xfd;
P0=table1[aa/10];
delay(1);
P0=0xff;
}
if(num1==2&num2==0|num1==2&num2==1)
{
P2=0xff;
P0=table1[bb%10];
delay(1);
P0=0xff;
P2=0xff;
P0=table1[bb/10];
delay(1);
P0=0xff;
}
else
{
P2=0xf7;
P0=table1[bb%10];
delay(1);
P0=0xff;
P2=0xef;
P0=table1[bb/10];
delay(1);
P0=0xff;
}
if(num1==3&num2==0|num1==3&num2==1) {
P2=0xff;
P0=table1[cc%10];
delay(1);
P0=0xff;
P2=0xff;
P0=table1[cc/10];
delay(1);
P0=0xff;
}
else
{
P2=0xbf;
P0=table1[cc%10];
delay(1);
P0=0xff;
P2=0x7f;
P0=table1[cc/10];
delay(1);
P0=0xff;
}
//if(num2==256)num2=1;
}
void jishi( ) //计时函数
{
if(num==20) //重复计数20次为一秒钟{
beep=1;
num=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
}
if(miao==0&fen==0)beep=~beep;
}
xiansi(miao,fen,shi);
}
void init(void) //初始化函数
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TH1=0x3c;
TL1=0xb0;
EA=1;
ET0=1;
TR0=1; // 定时/计数器0计时开始
ET1=1;
TR1=1; // 定时/计数器1计时开始
}
void key()//按键函数
{
P1=0xfe; //功能键
if(P1==0xee)
{
delay(10);
if(P1==0xee)
{
beep=0;
while(P1==0xee)xiansi(miao,fen,shi);
beep=1;
num1++;
TR0=0;
if(num1==4){num1=0;TR0=1;}
xiansi(miao,fen,shi);
}
}
if(num1!=0)
{
if(P1==0xde) //时间加
{
delay(10);
if(P1==0xde)
{
beep=0;
while(P1==0xde)xiansi(miao,fen,shi);
beep=1;
switch(num1)
{
case 1 :
miao++;
if(miao==60)miao=0;
break;
case 2 :
fen++;
if(fen==60)fen=0;
break;
case 3 :
shi++;
if(shi==24)shi=0;
break;
}
}
}
if(P1==0xbe);//时间减
{
delay(10);
if(P1==0xbe)
{
beep=0;
while(P1==0xbe)xiansi(miao,fen,shi);
beep=1;
switch(num1)
{
case 1 :
miao--;
if(miao==-1)miao=59;
break;
case 2 :
fen--;
if(fen==-1)fen=59;
break;
case 3 :
shi--;
if(shi==-1)shi=23;
break;
}
}
}
}
}
void main() ////////////////////////主函数{
init();
while(1)
{
jishi();
key();
}
}
void zhongduan() interrupt 1 //中断函数
{
TH0=0x3c; //初值重装
TL0=0xb0;
num++;
}
void zhongduan1() interrupt 3 //中断函数{
TH1=0x3c; //初值重装
TL1=0xb0;
num2++;
if(num2==3)num2=0;
}
本文档为【51单片机数码管电子时钟程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。