单片机课程设计数字电子钟.docx

上传人:b****7 文档编号:11299685 上传时间:2023-02-26 格式:DOCX 页数:38 大小:559.82KB
下载 相关 举报
单片机课程设计数字电子钟.docx_第1页
第1页 / 共38页
单片机课程设计数字电子钟.docx_第2页
第2页 / 共38页
单片机课程设计数字电子钟.docx_第3页
第3页 / 共38页
单片机课程设计数字电子钟.docx_第4页
第4页 / 共38页
单片机课程设计数字电子钟.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

单片机课程设计数字电子钟.docx

《单片机课程设计数字电子钟.docx》由会员分享,可在线阅读,更多相关《单片机课程设计数字电子钟.docx(38页珍藏版)》请在冰豆网上搜索。

单片机课程设计数字电子钟.docx

单片机课程设计数字电子钟

 

《单片机技术》课程设计说明书

数字电子钟

 

院、部:

电气与信息工程学院

学生姓名:

指导教师:

职称讲师

专业:

通信工程

班级:

通信1202班

完成时间:

2014年12月28日

 

摘要

 

电子钟由于它的的简单方便受到人们的欢迎,所以设计一个简易数字电子钟很有必要。

本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz晶振与单片机AT89S52相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

本次课程设计是应用单片机芯片AT89S52设计出的数字时钟电路,整个系统以单片机作为中央控制器,硬件电路主要由三个部分构成,即:

单片机最小系统、数码管显示电路、键盘控制电路。

设计完成的作品具有时间显示、校正功能,走时准确、显示直观、运行稳定等优点,达到课程设计的性能指标。

本设计的优点是:

1.能直观的从数码管显示器上读出时间信息;2.电路组成清晰明了,按键操作简单;3.相比于传统的指针式时钟,本产品误差很小,能耗小;4.软件编程采用C语言,可读性强;5.本设计采用的是可编程芯片AT89S52,用户可根据自身的其他要求,重新导入新的程序,具有更新能力。

   

关键词:

电子钟;AT89S52;数码管;按键

1设计课题任务、功能要求说明及方案介绍

1.1设计课题任务

设计一个具有特定功能的电子钟,具有时间显示、报时等功能。

并有时间设定,通过指示灯,来进行时间调整。

1.2功能要求说明

设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从00时00分00秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,按下功能选择键后,选择调时、调分、调秒,然后通过按加键、减键来修改时间。

1.3设计课题方案总体介绍及工作原理说明

本设计基于单片机技术原理,以单片机芯片AT89S52作为核心控制器,基于单片机的自身资源通过硬件电路的制作以及软件程序的编制,利用单片机的控制作用,通过八位七段式数码显示管直接显示“时-分-秒”时间信息,以及发光二极管的指示来实现相关的功能。

设计课题的硬件系统框图如图1所示:

 

 

图1数字电时钟硬件框图

1.3.1芯片(AT89S52)

 

图2AT89S52

工作原理:

单片机由运算器、控制器、存储器、输入输出设备构成。

其中有中央处理器CPU,内部数据存储器,内部程序存储器,定时/计数器,并行IO口,串行IO口,中断控制电路,时钟电路,位处理,内部整线。

1.3.2独立按键电路

 

 

图3按键电路

功能及作用:

通过按键电路和软件编程可以实现单片机的多种功能,用起来极其方便,实现功能多样化。

1.3.3复位电路

 

图4复位电路

功能:

关于单片机的复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机的复位电路作用是把一个例如状态机初始化到空状态。

1.3.4晶振电路

 

图5晶振电路

功能:

晶振可以说是单片机的时钟,有着固定稳固的频率,是一个标准,没有它的话,估计单片机的程序会乱跑,也有可能运行不了。

1.3.5电源电路

 

图6电源电路

功能:

此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。

电源电路中一般接入了电源指示LED。

1.3.6下载口电路

 

图7下载电路

功能:

用PC的USB口供电,通过下载口把程序导入单片机芯片内。

下载口分别接在单片机的RST引脚以及P15、P16、P17口线上实现数据传送。

1.3.7LED显示电路

 

图8LED显示电路

功能:

本设计采用的是LED数码管动态显示方式。

采用八个共阴的数码管显示器进行显示,加上一个74HC573作为驱动和8个470Ω的电阻起限流的作用。

将段控口接在P2口上,位控口接在P1口上,实现对显示的控制。

 

2设计课题硬件系统的设计

2.1设计课题硬件系统各模块功能简要介绍

2.1.1单片机最小系统

本设计的硬件系统主要采用以下基本模块来实现,单片机最小系统模块,输入模块、输出模块、电源模块。

(1)单片机最小系统模块:

包括低功耗、高性能CMOS8位微控制器AT89S52;

复位电路;晶振电路。

本模块AT89S52为控制核心,单片机系统复位由复位电路完成,单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端位位引脚XTAL2。

通过这两个引脚在芯片外并接石英晶体振荡器和两只电容。

这样就构成一个稳定的自激振荡器。

(2)输入模块:

本模块共用到了5个按键,1个电源开关,一个复位键,单片机运行期间,利用按键完成复位操作。

4个按键独立式键盘,S1键控制电子钟的启动\调整状态,S2键为加1键,S3键为减1键,S4为功能选择键。

且S1、S2、S3、S4任一键都独自连一个I/O口,说明它们可以独立实现相应的电子钟功能。

(3)输出模块:

本次设计显示为8位,采用2个四位一体数码管(共阴极)

作为显示窗口,既可以节约成本又能简化电路。

同时设置各功能的指示灯,用以区分是时、分、秒这三者之一在做调整。

(4)电源模块:

现在市面上销售的编程器有很多都是由PC机的USB口直接供电为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。

2.1.2设计课题电路原理图、PCB图

此处电路原理图以及PCB原理图的绘制均使用AD软件完成,AD提供了一个集成的设计环境,包括了原理图设计和PCB布线工具,集成的设计文档管理,支持通过网络进行工作组协同设计功能。

根据硬件接线要求设计绘制电路原理图及PCB。

具体电路原理图见附录A。

PCB图见附录B。

2.2设计课题元器件清单

见附录D:

元器件清单。

 

3设计课题软件系统的设计

3.1设计课题使用单片机资源的情况

设计课题使用单片机资源的情况如下:

P0口输出数码管位控信号,P2口输出数码管段控信号;P1接独立式键盘;晶振12MHz,接单片机XT1和XT2口;启动键/停止键(实物图上左起第一个)P1.0;调整选择键(实物图上为左起第四个键)P1.3;通过选择键选择调整位;增加键(实物图上为左起第二个键)P1.1,按一次使选中位加1,长按会一直加1;(实物图上为左起第三个键)P1.2,按一次使选中位减1,同样长按会一直减1。

3.2设计课题软件系统个模块功能简要介绍

本设计的软件系统主要采用以下基本模块来实现,主程序、中断服务程序、键盘输入程序模块、数码管及其驱动模块和延时模块。

主程序:

主要是用于对输入信号的处理、输出信号的控制和对各个功能程序模块的运用及其控制。

中断服务程序:

通过AT89S52自身的资源,及定时器来实现定时一秒的功能。

由于定时器比单纯的延时精确,所以会让设计的电子钟更精确,采用定时器0,用工作方式1,定时50ms,循环20次,就达到了1s。

键扫描与处理程序:

确认键是否按下,当有键按下时,得到相应的键值。

方便主程序调用时取出键值。

键功能程序:

从键扫描程序得到相应的键值后按照键值执行相关的键功能程序。

数码管及其驱动模块:

主要是用于驱动数码管及利用数码管显示时间。

延时模块:

由于本次设计采用的是数码管共阳极动态显示,P2口段控信号与P0口位控信号要保持协调才能把时分秒的信息完整的显示出来。

由于视网膜暂留效应,通过调用10毫秒的延时程序,动态逐个点亮数码管。

实现时间信息的显示。

 

3.3设计课题软件系统程序流程框图

3.3.1主程序流程框图

 

图9主函数流程图

系统初始化后,数码管显示P.。

调用键扫描程序,判断是否有键按下,当有键按下时,执行各键对应的键功能。

3.3.2显示程序流程框图

 

图10显示函数流程图

P2口控制段控,P0口控制位控,因为要用到八个数码管,所以设置i的初始值为1,在判断i的值是否为8,为8就结束。

把段控跟位控送给哪个数码管,被选中的数码管就显示相应的数值。

3.3.3时分秒转换程序流程框图

 

 

图11时分秒转换函数流程图

此流程图主要用来判断时是否等于24、分跟秒是否等于60,当满足这个条件时,都应清零。

当秒等于60时,分要加1;当分达到60时,时要加1;当时为24时,所有清零。

并且在最后要进行数据处理,送至数码管显示。

3.3.4键扫描与处理程序流程框图

 

 

 

 

图12键扫描与处理函数流程图

此流程中首先是键处理的功能,主要是保存键值。

然后判断按下的键的键值,执行相应的功能。

3.3.5键功能程序流程框图

 

 

图13键1功能函数流程图

此流程图主要是判断键值为1的键按下几次,当按下为一次时,开定时器,时钟开始计时。

当再按下一次时,关定时器。

 

 

图14键2功能函数流程图

此流程图主要是说明键值为2的功能。

当选择调整键选择时分秒中的一个,在按下键2时,选择调整位就会加1.当按下后一直不松开,那选择调整位会一直加1。

同时,每加一次,都要进行判断是否达到了要清零的要求。

 

图15键4功能函数流程图

此流程图主要是说明键值为8的功能。

当键按下一次时,选择调整位为时,当按下两次时,选择位为分,如果按下了第三次,则选择调秒。

 

 

图16键3功能函数流程图

此流程图主要是说明键值为4的功能。

对选择位进行减1操作,每减一次,都要判断是否为零,如果为零,就要给它相应的初值。

然后进行数据处理。

3.4设计课题软件程序清单

见附录E:

软件程序清单。

 

4设计结论、仿真结果、误差分析

4.1设计课题的设计结论及使用说明

本设计为基于单片机的电子钟的设计。

设计中有三个按键,其中S1为启动/选择调整位置,S2为加控制键S3为减控制键,S4为功能选择位。

4.2设计课题的仿真结果

 

图17“P.”运行状态仿真

把程序导入仿真图中,数码管显示P.,如果不按任何键,数码管会一直显示P.,因为没有启动定时器,不会进行计数。

 

图18启动仿真结果

按下启动键后,定时器开启,时钟从00时00分00秒开始计时。

图19时钟运行状态仿真

如果不按停止键,时钟会正常计时,当秒等于60时,分会加1,同时秒会清零;当分加到60时,时会加1,分清零;当时加到24时,时清零。

4.3设计课题的误差分析

本设计是有误差的,但是肉眼是看不到的。

通过理论分析,有三种可能:

①主程序调用显示函数,延时函数,键扫描函数,CPU执行相关的函数时需要时间,造成误差。

②由计时方案产生的误差:

本设计采用中断方式计时1秒,在理论上说,查询产生的误差比中断要小,并且用的是方式1,误差也会比较大。

并且在程序设计中,cout作为计时1秒的重要参数,当cout满20次时计时一秒。

此过程中,cout由0增加到20,代码执行需要一定的机器周期,产生误差。

③硬件系统:

由于元器件的布局,PCB走线的不同,产生一定的干扰。

特别是在晶振高频信号的作用下,硬件系统可能随之产生一定的误差。

4.4设计体会

在本次课程设计中,经历了很长一段时间,老师很早就把课程设计的任务书发给了我们,然后给了我们很长的时间去选择自己要做的课题。

理论知识的学习,

老师的教导,加上实验课自己编程操作,让自己积累了很多经验。

所以在这次设计中,从容地去解决遇到的问题,实在无法解决,就去问同学,跟同学一起讨论,上网XX相关知识。

此次设计中,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。

 

结束语

 

为期一学期的单片机课程学习就要结束了,经过本次课程设计后,才发现自己掌握的单片机很少很少。

学习单片机技术不光学习单片机的理论知识,更要将其运用于生活实践当中。

从当初做试验板,再到单片机实验,然后最后的电子钟课程设计。

老师告诉了我们任务,期初是给我们制定了单片机学习要求。

在理论授课中不断地教授我们相关设计的知识,督促我们完成任务。

本次的电子钟的软件设计中发现了很多问题。

①在按键调整时间时,在没有释放键盘的状态下,数码管是灭的。

在解决问题的过程中,我将问题定位在键扫描的缺陷。

修改的方法是将键扫描程序中的延时函数用显示函数代替。

这样,CUP在执行键扫描时一直在调用显示函数,以免造成CPU不送有效地时间数据,长按键盘数码管不显示的情况。

②在时,分,秒的减1过程中,比如用时作为例子,当时减到0时,如果在减1时,本应该为23,但出现了乱码,在一次又一次的修改,调试中,才解决了这个问题。

有的时候,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。

每次编写程序,都要把程序下载在实物中看结果,然后通过结果来分析我程序的错误跟漏洞,又或者是在KEIL软件中调试,查看哪里错误。

非常感谢老师对我的教导跟帮助,同时也感谢同学对我的帮助,才能让我完成得比较顺利。

在这次设计中,让我学到了很多,理论与实际是要相结合的,那样才会有完美的结果。

 

致谢

 

通过自己不断地努力,我的课程设计告一段落。

在本次课程设计过程中,感谢我的学校,给了我学习的机会,在学习中,凌云老师从选题指导、论文框架到细节修改,都给予了细致的指导,提出了很多宝贵的意见与建议,老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。

这次课程设计是在老师的精心指导和大力支持下才完成的。

感谢所有授我以业的老师,老师的指导跟教诲,让我掌握了知识,才有能力去攻克难关。

感恩之余,诚恳地请各位老师对我的论文多加批评指正。

同时,我感谢我身边的同学,朋友。

在这个设计过程中,我遇到了很多困难,有了她们的帮助,我才能顺利的完成了相关的设计作业。

谨以此致谢最后,我要向百忙之中抽时间对本文进行审阅的凌云老师表示衷心的感谢。

 

参考文献

[1]代启化.基于Proteus的电路设计与仿真[J].现代电子技术.2006,第19期.

DaiQiHua.Proteus-basedcircuitdesignandsimulation[J].Modernelectronictechnology.2006,No.19

[2]刘文秀.单片机应用系统仿真的研究[J].现代电子技术.2005,第286期.

LiuWenXiu.MicrocontrollerApplicationSystemSimulation[J]Modernelectronic

technology.2005,No.286

[3]曹巧媛.单片机原理及应用[M],北京:

电子工业出版社,1997.7.

CaoQiaoYuan.MicrocontrollerTheoryandApplications[M],Beijing:

ElectronicIndustryPress,1997.7.

[4]张洪润.兰清华,单片机应用技术教程[M],北京:

清华大学出版社,1997.11.

ZhangHongrun,LanQinghua,MCUapplicationtechnologytutorial[M],Beijing:

singhuaUniversityPress,1997.11.

[5]李广弟.单片机基础[M],北京:

北京航空航天大学出版社,2007.100~154

LiGuangdi.microcontrollerbasedon[M],Beijing:

BeijingAerospaceUniversityPress,2007.100~154

 

附录

 

附录A:

电路原理图

 

附录B:

PCB图

 

附录C:

仿真原理图

 

附录D:

元器件清单

元器件名称

规格

数目

AT89S52单片机

AT89S52单片机芯片锁紧座

四位一体共阳数码管

四位一体共阳数码管插座

74HC573

74HC573芯片插座

晶振

发光二极管

单排插针

三极管

蜂鸣器

小按键

下载口座子

六脚按键电源开关

USB电源线

USB电源线插座

电阻

电阻

电阻

电解电容

瓷片电容

排阻

排阻

短路冒

杜邦线8P

PCB板子

固定螺钉螺帽

USB下载线

40P

40P

40P

20P

20P

12MHz

40P

9012

 

200

470

1K

22uf

33pf

10k

470

 

3mm

1

1

2

1

1

1

1

9

2

1

1

10

1

1

1

1

1

8

4

2

2

4

1

4

1

1

4

1

 

附录E:

程序清单

/*********************************************************

程序名:

电子钟

编写者:

曾霞玲

指导老师:

凌云

时间:

2014.10.25

功能:

系统提示数码管显示P.。

只有按下启动/停止键S1,定时器开始启动,电子钟开始计时,当再次按下停止键时,可以按下功能选择键S4,可以调时、调分、调秒。

当长按S2时,会一直加一,当长按S3时,会一直减一。

*********************************************************/

#include

#include"delay.h"

#include"display.h"

#include"key.h"

#defineucharunsignedchar

#defineuintunsignedint

sbitP3_1=P3^1;//调时指示灯

sbitP3_2=P3^2;//调分指示灯

sbitP3_3=P3^3;//调秒指示灯

sbitP3_7=P3^7;//启动/停止指示灯

ucharfind_code[8];

ucharsec=0,min=0,hour=0;

ucharcount=0,v,i,z,x,c;

voidmain()

{EA=1;//打开中断使能位

ET0=1;//打开定时中断1使能位

PT0=1;//设置定时中断1服务优先级

TMOD=0x01;//设置定时器1为工作模式1

TH0=(65536-50000)/256;//设置定时为50ms的计数初值

TL0=(65536-50000)%256;

TR0=0;

while

(1)

{

find_code[0]=10;//缓冲数组赋初值

find_code[1]=12;

find_code[2]=12;

find_code[3]=12;

find_code[4]=12;

find_code[5]=12;

find_code[6]=12;

find_code[7]=12;

display();

v=key();

if(v==1)

{

while

(1)

{

biaohao:

//设定返回标号

P3_1=1;//启动/停止键指示灯亮,其他熄灭

P3_2=1;

P3_3=1;

P3_7=0;

TR0=1;//打开定时器0

find_code[0]=sec%10;//更新缓冲数组

find_code[1]=sec/10;

find_code[2]=13;

find_code[3]=min%10;

find_code[4]=min/10;

find_code[5]=13;

find_code[6]=hour%10;

find_code[7]=hour/10;

display();

v=key();

if(v==1)//当按键一按下

{

while

(1)

{

P3_7=0;

TR0=0;//关闭定时器0

display();

v=key();

switch(v)

{

case0:

display();break;

case8:

while

(1)

{

biaoji:

//设定返回标号值

P3_1=0;

P3_7=1;

z=keylianjia();

find_code[0]=sec%10;

find_code[1]=sec/10;

find_code[3]=min%10;

find_code[4]=min/10;

find_code[6]=hour%10;

find_code[7]=hour/10;

for(i=0;i<62&&(z==0||z==16||z==32||z==64);i++)

{

P3_1=1;

P3_2=1;

P3_3=1;

display();

z=keylianjia();

}

find_code[6]=12;

find_code[7]=12;

for(i=0;i<63&&(z==0||z==16||z==32||z==64);i++)

{

P3_1=0;

P3_2=1;

P3_3=1;

display();

z=keylianjia();

}

find_code[6]=hour%10;

find_code[7]=hour/10;

switch(z)

{

case0:

display();break;

case1:

gotobiaohao;//返回标号值

case2:

hour++;//小时加1

find_code[6]=hour%10;

find_code[7]=hour/10;

if(hour>23)

{

hour=0;

}

display();

break;

case4:

hour

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

当前位置:首页 > 高等教育 > 历史学

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

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