热门搜索 :
考研考公
您的当前位置:首页正文

实训电子时钟51单片机24小时

来源:东饰资讯网


数字时钟的设计与分析

姓名:

班级:

学号:

基本要求:

1.时间以24小时为一个周期;

2.显示时、分;电子时钟的格式为:XX.XX,由左向右分别为:时,分。完成显示从1一直加至59,再从为1.00至23.59,在恢复为1;

3.有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间。

扩展功能:

丰富其功能(闹钟功能)

模块:

1.校时电路:设P3.3-P3.4

2.功能按键:设P3.5-P3.7

3.显示电路:采用动态显示;

P3口作为数码管数据(段选);

P2口作为数码管控制(位选);

实验室的硬件是共阳极的数码管;

数码表采用:

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00};

4.晶振电路

5.复位电路

所需硬件:

AT89C51,电容3个,电阻9个,晶振1个,开关5个,共阳数码管4个,蜂鸣器1个

总原理图

校时模块和功能模块

显示模块

晶振模块

复位模块

蜂鸣模块

源程序

24小时可调时程序

#include

unsigned char seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char con[6]={0x1,0x2,0x4,0x8,0x10,0x20};

unsigned char mm=0;

unsigned char ss=0;

unsigned char hh=0;

unsigned char count=100;

sbit S1=P3^3;

sbit S2=P3^4;

sbit S3=P3^5;

sbit S4=P3^6;

main()

{

TMOD=1;

TH0=-10000>>8;TL0=-10000;

EA=1;ET0=1;TR0=1;

while(1);

}

void isr_time0() interrupt 1

{

unsigned int i=0,j;

unsigned char time[6];

TH0=-10000>>8;TL0=-10000;

count--;

if(count==0)

{

count=100;

ss++;

if(ss==60)

{

ss=0;mm++;

if(mm==60)

{

mm=0;hh++;

if(hh==24)

hh=0;

}

}

if(S1==0)

{hh++;

if(hh==24)

{hh=0;}

time[3]=hh/10;time[2]=hh%10;

}

if(S2==0)

{mm++;

if(mm==60)

{ mm=0;}

time[1]=mm/10;time[0]=mm%10;

}}

time[3]=hh/10;time[2]=hh%10;

time[1]=mm/10;time[0]=mm%10;

time[4]=ss/10;time[5]=ss%10;

for(i=0;i<6;i++)

{

P2=con[i];

if(i==1||i==3)

P1=seg[time[i]]&0x7f;

else P1=seg[time[i]];

for(j=100;j>0;j--);

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top