整点报时数字钟学习资料.docx

上传人:b****6 文档编号:4183424 上传时间:2022-11-28 格式:DOCX 页数:17 大小:236.69KB
下载 相关 举报
整点报时数字钟学习资料.docx_第1页
第1页 / 共17页
整点报时数字钟学习资料.docx_第2页
第2页 / 共17页
整点报时数字钟学习资料.docx_第3页
第3页 / 共17页
整点报时数字钟学习资料.docx_第4页
第4页 / 共17页
整点报时数字钟学习资料.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

整点报时数字钟学习资料.docx

《整点报时数字钟学习资料.docx》由会员分享,可在线阅读,更多相关《整点报时数字钟学习资料.docx(17页珍藏版)》请在冰豆网上搜索。

整点报时数字钟学习资料.docx

整点报时数字钟学习资料

 

整点报时数字钟

数字钟

一、设计任务

本任务为:

数字钟。

设计任务具体内容如下:

1.1基本设计任务

依据命题题意,本设计采用89C51进行24小时计时并显示。

要求其显示时间范围是00:

00:

00~23:

59:

59,具备有时分秒校准功能。

数字钟上面要带有闹钟,闹钟与时钟之间能随时切换,闹钟具备时分秒设置功能。

1.2控制设计任务

由于本设计采用手动校准时钟与手动设置闹钟方案,所以要求用较少的按键来达到切换闹钟与时钟、时钟时分秒校准、闹钟时分秒设置等功能。

1.3软件设计任务

数字钟的所有计时都要由软件控制实现。

用软件对几个按键所得信号进行相应改变,以控制时钟与闹钟的显示。

通过软件对闹钟与时钟进行比较,当时钟所显示时间与闹钟一样时,要启动报时模块。

三、总体设计

经过对各个方案分析比较,最终确定总方案如图3-1所示。

该系统所有模块都由主单片机控制。

其中,设计各个模块,包括单片机、显示模块、电机驱动、光电探测由四节AA电池供电。

电机驱动采用L298驱动芯片控制。

用光电传感器对边线的探测来控制距离。

通过单片机的机器周期计算时间计数周期,以达到计时目的。

闹钟

 

AT89C52

 

按键

时间显示

语音报时

图3-1系统方案图

3.1系统硬件电路设计

3.1.1显示及控制模块

图3-4语音报时模块

3.2系统软件设计

3.2.1软件计时的分析与计算

单片机内部定时器有4种工作模式,方式0是13位计数器,由于计时时间过短,中断频率高,所以不选用此模式;方式2是自动重装式计数器,是8位计数器,同样中断频率过高;方式3也是8位计数器;方式1是16位计数器,综合考虑,选用方式1做精确计时。

由于51单片机是12分频,因此机器周期=晶振频率/12。

在该设计中,选用频率为12MHz的晶振,因此机器周期=1μs。

定时1s需要1000000个机器周期,因此通过20次定时器中断完成1s的定时,每次完成50000个周期的定时,因此每次给定时器的初值应该是TH0=B0H,TL0=3CH。

3.2.2系统软件设计

设计两套存储方案,一套存储时钟,一套存储闹钟,两者互不干涉,只有当两者相等时才会调用闹钟播放子程序,而当每次整点时则会调用整点报时子程序。

本设计有调用T0中断,并有以下子程序:

voiddelay(void)//延时子程序

voiddelay2(void)//1420专用延时子程序

voidplay(unsignedchartemp)//1420播放子程序

voiddisplay(void)//显示子程序

voidrdisplay(void)//闹钟显示子程序

voidring(void)//闹钟控制子程序

voidexamring(void)//闹钟播放子程序

voidzhengdian(void)//整点报时子程序

Ⅳ、测试结果及结果分析

4.1测试仪器及工具

测试仪器及工具:

电源一个。

4.2测试步骤

①、接上电源。

②、设定闹钟为00:

01:

00,并试听闹钟是否准确。

③、试听每次整点报时是否准确。

④、试验各按键功能是否正常。

4.3测试结果如下

闹钟与整点报时功能均正确无误,各按键功能均正常。

4.4测试结果分析

通过对测试数据的分析,可以看出,数字钟能实现时钟计时,并带有闹钟与整点报时功能,即数字钟已经实现了题目所给出的所有要求。

参考文献:

1、胡汉才.单片机原理及其接口技术.北京:

清华大学出版社,2005

2、阎石.数字电子技术基础.北京:

高等教育出版社,2001

3、童诗白华成英.模拟电子技术基础.北京:

高等教育出版社,2001

4、郁有文等.传感器原理及工程应用.西安:

西安电子科技大学出版社,2008

附件一:

参考程序如下:

#include

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsignedcharcodetab[]={0xfd,0xfb,0xf7,0xef,0xdf,0xbf};

unsignedcharcodets[]={0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50};

unsignedcharwei[]={0,1,2,3,4,5};

unsignedcharsec,min,hou,rsec,rmin,rhou,tcont;

unsignedchara0,a1,a2;

unsignedcharsmh;

voiddelay(void)//延时子程序

{unsignedchari,j;

for(i=10;i>0;i--)

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

}

voiddelay2(void)//1420专用延时子程序

{unsignedchari,j,k;

for(i=200;i>0;i--)

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

for(k=20;k>0;k--);

}

voidplay(unsignedchartemp)//1420播放子程序

{P1=0;P3_0=1;P3_1=1;P1=temp;

P3_1=0;

delay2();

P1=0;

P3_1=1;

}

voiddisplay(void)//显示子程序

{for(a2=0;a2<6;a2++)

{wei[0]=hou/10;

wei[1]=hou%10;

wei[2]=min/10;

wei[3]=min%10;

wei[4]=sec/10;

wei[5]=sec%10;

P2=tab[a2];

P0=table[wei[a2]];

delay();

}

}

voidrdisplay(void)//闹钟显示子程序

{for(a2=0;a2<6;a2++)

{wei[0]=rhou/10;

wei[1]=rhou%10;

wei[2]=rmin/10;

wei[3]=rmin%10;

wei[4]=rsec/10;

wei[5]=rsec%10;

P2=tab[a2];

P0=table[wei[a2]];

delay();

}

}

voidring(void)//闹钟控制子程序

{while(P3_5==0)

rdisplay();

smh=0;

a0=0;

while(a0==0)

{rdisplay();

if(P3_3==0)

{delay();

if(P3_3==0)

{switch(smh)

{case0:

rsec++;

break;

case1:

rmin++;

break;

case2:

rhou++;

break;

}

if(rsec==60)

{rsec=0;

rmin++;

}

if(rmin==60)

{rmin=0;

rhou++;

}

if(rhou==24)

rhou=0;

}

while(P3_3==0)

rdisplay();

}

if(P3_2==0)

{delay();

if(P3_2==0)

{switch(smh)

{case0:

rsec--;

break;

case1:

rmin--;

break;

case2:

rhou--;

break;

}

if(rsec==-1)

{rsec=59;

rmin--;

}

if(rmin==-1)

{rmin=59;

rhou--;

}

if(rhou==-1)

rhou=23;

}

while(P3_2==0)

rdisplay();

}

if(P3_4==0)

{delay();

if(P3_4==0)

smh++;

if(smh==3)

smh=0;

while(P3_4==0)

rdisplay();

}

if(P3_5==0)

{delay();

if(P3_5==0)

a0=1;

while(P3_5==0)

rdisplay();

break;

}

}

smh=0;

}

voidexamring(void)//闹钟播放子程序

{unsignedchari,j,k;

if(sec==rsec)

{if(min==rmin)

{if(hou==rhou)

{P1=0;P3_0=1;P3_1=1;P1=0x70;

P3_1=0;

for(i=150;i>0;i--)

display();

P1=0;

P3_1=1;

P1=0;P3_0=1;P3_1=1;P1=0x70;

P3_1=0;

for(i=150;i>0;i--)

display();

P1=0;

P3_1=1;

P1=0;P3_0=1;P3_1=1;P1=0x70;

P3_1=0;

for(i=150;i>0;i--)

display();

P1=0;

P3_1=1;

P1=0;P3_0=1;P3_1=1;P1=0x70;

P3_1=0;

for(i=150;i>0;i--)

display();

P1=0;

P3_1=1;

}

}

}

}

voidzhengdian(void)//整点报时子程序

{unsignedchardian;

if(sec==0)

{if(min==0)

{dian=hou/10;

if(dian==0)

{play(0x60);play(0x68);dian=hou%10;dian=ts[dian];play(dian);play(0x58);}

if(dian==1)

{dian=hou%10;

if(dian==0){play(0x60);play(0x68);play(0x50);play(0x58);}

if(dian!

=0){play(0x60);play(0x68);play(0x50);dian=hou%10;dian=ts[dian];play(dian);play(0x58);}

}

if(dian==2)

{dian=hou%10;

if(dian==0){play(0x60);play(0x68);play(0x10);play(0x50);play(0x58);}

if(dian!

=0){play(0x60);play(0x68);play(0x10);play(0x50);dian=hou%10;dian=ts[dian];play(dian);play(0x58);}

}

}

}

}

voidmain(void)//主程序

{unsignedchari;

TMOD=1;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

ET0=1;

EA=1;

tcont=0;

sec=0;

min=0;

hou=0;

rsec=0;

rmin=0;

rhou=0;

smh=0;

for(i=50;i>0;i--)

display();

while

(1)

{display();

examring();

zhengdian();

if(P3_3==0)

{delay();

if(P3_3==0)

{switch(smh)

{case0:

sec++;

break;

case1:

min++;

break;

case2:

hou++;

break;

}

if(sec==60)

{sec=0;

min++;

}

if(min==60)

{min=0;

hou++;

}

if(hou==24)

hou=0;

}

while(P3_3==0)

display();

}

if(P3_2==0)

{delay();

if(P3_2==0)

{switch(smh)

{case0:

sec--;

break;

case1:

min--;

break;

case2:

hou--;

break;

}

if(sec==-1)

{sec=59;

min--;

}

if(min==-1)

{min=59;

hou--;

}

if(hou==-1)

hou=23;

}

while(P3_2==0)

display();

}

if(P3_4==0)

{delay();

if(P3_4==0)

smh++;

if(smh==3)

smh=0;

while(P3_4==0)

display();

}

if(P3_5==0)

{delay();

if(P3_5==0)

ring();

}

}

}

voidt0(void)interrupt1using0//调用中断

{TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

tcont++;

if(tcont==100)

{tcont=0;

sec++;

if(sec==60)

{sec=0;

min++;

if(min==60)

{min=0;

hou++;

if(hou==24)

hou=0;

}

}

}

}

 

 

附件二:

总原理图如下:

附件三:

元器件清单

 

元器件清单报表

元件名称

数量

单片机AT89C51

一块

语音芯片ISD1420

一块

喇叭

一个

12M晶振

一个

单排排针

若干

 

220uF

5个

47uF

3个

10uF

3个

47nF

5个

33pF

5个

 

470K

5个

100K

5个

10K

10个

5.1K

5个

4.7K

10个

1K

5个

470

3个

大板子

一块

驻基体

一个

4位共阴显示数码管

2个

排线

若干

附表一元器件清单

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1