基于单片机的电子时钟系统设计

基于单片机的电子时钟系统设计
基于单片机的电子时钟系统设计

题目:电子时钟系统设计

班级:

姓名:

专业:

指导教师:

答辩日期:

毕业设计任务书

一、设计题目:

电子时钟系统设计

二、设计要求:

利用8031单片机作为主控器组成一个电子时钟系统。利用4个LED显示管分时显示当前时间和日历;上电或RESET后能自动显示当前时间(时:分),首次上电复位显示为0时0分;以后各次均显示正确的当前时间;利用尽可能少的小键盘(开关)实现;显示选择:时分显示/日历显示/报警显示,利用发光二极管作为报警指示,当报警时间到,二极管发光。

三、设计任务:

1.设计硬件电路,画出电路原理图;

2. 设计软件,编制程序,画出程序流程图;

3.调试程序,写出源程序代码;

4.写出详细毕业设计说明书(10000字以上),要求字迹工整,原理叙述正确,会计算主要元器件的一些参数,并选择元器件。

5.个人总结。

四、参考资料:

1. 教材;

2.《单片机实验指导书》,河南工业职业技术学院内部;

3.《51系列单片机设计实例》,楼然苗、李光飞编著,北京航空航天出版社;

4.《微机控制技术及应用》,韩全立主编,机械工业出版社;

5.《单片机应用技术与实训》,王治刚主编,清华大学出版社;

6.《常用电子电器手册》;

7.《单片机应用技术与实例》,睢丙东主编,电子工业出版社;

8.《单片微型计算机应用技术》,徐仁贵,机械工业出版社。

目录

第一章绪论 (6)

1.1 单片机的概述 (6)

1.2 数字电子钟的简介 (7)

第二章电子时钟硬件电路设计 (9)

2.1 硬件电路设计摘要 (9)

2.2 硬件电路设计来源 (9)

2.3 硬件电路设计原理图 (11)

第三章软件设计及程序编制 (13)

3.1 系统程序设计 (13)

3.2 电子钟的说明 (16)

3.3 中断服务程序 (18)

3.4 设计参数 (21)

3.5 控制源程序代码 (21)

第四章功能调试及分析 (31)

4.1 调试功能的方法 (31)

4.2 电子钟计时说明 (31)

4.3 调试及性能分析 (32)

第五章设计小结 (34)

参考文献 (36)

第一章绪论

1.1 单片机的概述

单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是CPU , RAM , ROM定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51 单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

加入世贸组织以后,中国会面临激烈的竞争。这种竞争将是一场科技实力、管理水平和人才素质的较量,风险和机遇共存。于是老师在单片机理论课程学习的基础上,为我们安排了一个涉及MCS—51单片机多种资源应用及具有综合功能的电子时钟设计。

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有单片机力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。C语言是一种编译型程序设计兼顾了多种高级语言的特点,并具备汇编语言的功能。此外,C语言程序具有完善序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语进行程序设计已成为软件开发的一个主流。C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可靠性,便于改进和扩展,从而研制出规模更大、

性能更完备的系统。因此,用C语言进行8051单片机程序设计是单片机开发与应用的必然趋势。

《单片原理及应用》是一门技术性、应用性很强的学科,实践教学是它的一个极为重要的环节。不论是硬件扩展、接口应用还是编程方法、程序调试,都离不开实验教学。如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节的局面。任随书本上把单片机技术介绍得多么重要、多么实用多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会感到对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。

单片机实际上是在半导体集成技术发展到一定程度,结合计算机技术的发展而出现的。单片机有着较大的发展空间。

本课程的目的是学习运用C语言开发单片机应用系统软件。为将来从事单片机应用系统的开发打下坚实的基础。

1.2 数字电子钟的简介

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,节省了电能。因此得到了广泛的应用。数字钟是一种典型的数字电路,包括了组合逻辑电路和时序电路。

当前,在世界范围内,一个以微电子技术,计算机和通信技术为先导的,以信息技术和信息产业为中心的信息革命方兴未艾。而计算机技术怎样与实际应用更有效的结合并有效的发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。本文主要从8051片机的应用上来实现十字路口交通灯智能化的管理,用以控制过往车辆的正常运作。

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善

数字电子钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒。数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于电子钟功能的扩充,即可用该电子钟发出各种控制信号,精确度高等特点。

第二章电子时钟硬件电路设计

2.1 :硬件电路设计摘要

时钟自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。

现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。本文利用单片机实现数字时钟计时功能的主要内容,其中AT89C51是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。

本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成了一个单片机电子时钟

2.2 硬件电路设计的来源

本系统的主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成本作品采用Atmel公司的8031单片机,以汇编语言为程序设计的基础,设计一个用四位数码管显示时、分的时钟。在实物图中,左边靠近电源的绿色发光二极管(长亮)是电源指示灯,表示的是5V稳定电源工作正常;单片机左下角红色发光二极管是秒灯,每闪烁一次表示时间走、动一秒钟;按键正上方绿色发光二极管是设置灯,当时间正常走动时此时不亮,当第一次按下设置键(右键)时,此绿灯亮,同时秒时熄灭,且分钟的两位数码管出现闪烁,时间停止走动,进入校时状态,表示此时可以进行分钟的调整,当按一次加一键(左键)可实现分钟的加一功能,分钟以60分为极限,超出60分则返回数值0,从0再重新算起;如果再次按下设置键时,这时秒灯和设置灯仍旧保持熄灭和点亮状态,表示分钟的数码管停止闪烁,反过来表示小时的两位数码管则开始闪烁,此时可进行小时的调整,按加1键可实现小时的加1功能,小时调整以24为上限,同样超出24小时则从新回0;当第三次按下设置键时,数码管停止闪烁,设置灯熄灭,秒灯重新闪烁,时间以设定值计时。

为了能对初学单片机的朋友有所启发,我简单的把我的实验的制作过程叙述一下高手们就没必要看这些拉,我也是只是会一些简单的东西,就在去年过年的时候在朋友的

宿舍偶尔看到一本单片机原理及应用技术的书,没事做随便拿起来看了几页,突然发现自己对这个挺有兴趣的,就把朋友的书借了准备回去看看,我这个人对什么都是这么认真,拿回去花了一周的时间一口气把这本书看完,因为我有点计算机和编程基础,所以看起来没感觉到费劲,但是当我看完整本书后,却发现在这本书上我根本没有学到东西,所以在大二开学来了我们居然开设了单片机课程,虽然不是我的非常重要的专业课毕竟也有老师教。毕竟课时不多学得也不太好。到了毕业老师又给了我们单片机题目做毕业设计。

我选择做个电子时钟,但是手头上什么也没怎么做呢?在网上看到很多实验板,由于初学对这也是一点不懂,幸好有老师的指导,告诉我实验板不买也罢,最好自己做,还能学点东西,所以我就买了一些资料,凭着自己仅有的一点电子基础慢慢的摸索,然后就是构思我的程序,可能有很多初学者会说:那么长的程序我还是初学,指令也没记住怎么做呢?搬着单片机课本一点一点的看看,像又从零做起,搞的晕头转向的。那么枯燥抽象的东西让你看几遍把他全部记住是件不容易的事,等我大体了解一点那就开始了,再遇到不懂的的时候就把书拿来仔细看,实在不懂的到电脑里查,找同学老师帮忙,这样下来会觉的收获很大.6段数码管分别显示,时,分,秒,四个按键,K1(P0.0),K2(P0.1),K3(P0.2),K4(P0.3),四个按键用来调时间的,按下K1,所有位都清零显示,然后按下K2,秒在闪烁,继续按K2分闪烁,不段地按K2 秒--分--时切换着闪烁,在某位闪时按下K3相应位加一,确认调整,按K4,取消调整再按K1。在K1

按下以后才有调时的功能,如果K1没有按下,按别的键没有反映。这为了在加点按键功能留着用!

2.3硬件电路设计原理图

电子钟的硬件系统电路图如上所示:采用8031单片机,最小化应用设计;采用共阳七段LED显示器,P0口输出段码数据,P2.0-P2.5口作列扫描输出,P1.0、P1.1、P1.2口接三个按钮开关,用以调时及功能设置。为了提供共阳LED数码管的驱动电压,用三极管8550作电源驱动输出。采用12MHz晶振,有利于提高秒表计时的精确性。

电原理图见附图1。由6 个共阴极的数码管组成时、分、秒的显示。P0 口的8条数据线P0.0 至P0.7 分别与两个CD4511 译码的ABCD 口相接,P2 口的P2.0 至P2.2 分别通过电阻R10 至R13 与VT1 至VT3 的基极相连接。这样通过P0 口送出一个存储单元的高位、低位BCD显示代码,通过P2 口送出扫描选通代码轮流点亮L ED1 至LED6,就会将要显示的数据在数码管中显示出来。从P0 口输出的代码是BCD 码,从P2 口输出的就是位选码。这是扫描显示原理。

第三章软件设计及程序编制

3.1、系统程序设计

电子时钟设计原理图

(1)、主程序、

在设计中,计时中,计时采用定时器T0中断完成,其余状态循环调用显示子程序,当端口开关按下时,转入相应功能程序。其主程序执行流程图见图2.0。(2)、显示子程序

数码管显示的数据存放在内存单元30H- 60H中。其中20 H-21 H存放秒数据,36 H

-37 H存放分数据,38 H- 39 H 存放时数据,每个地址单元内均为十进制BCD码。由于

采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放

在ROM表中。显示时,先取出30 H-31 H某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据植。为了显示小数点及“-”、“A”等特殊字符,在显示数字时采用不同的

显示子程序。

功能要求:秒表/计时器要求用四位LED数码管显示时、分、秒,以24h(小时)计时

式。

3.2 电子钟的说明

工作原理为:用定时计数器每隔50ms产生一个溢出中断信号(称为时基信号),向CPU 发出中断请求;CPU响应中断后,执行中断服务程序,对存放时、分、秒数值的单元进行计数处理;中断返回后,再执行显示程序显示时、分、秒的数值。

1)利用89C51内部定时器/计数器中断完成时间的显示。设置T0为定时器且为16位

定时,定时时间为50ms,设置T1为计数器工作方式,由于T1为计数器方式需要外加脉冲信号才可使其计数,因此在定时器T0溢出时中断内需自己制造一个脉冲给T1计数器。设置T1为8位初值重装工作方式使其加20次就溢出,这就产生了1S 然后送给数码管显示。

2)此电子钟为时,分,秒钟,设置它的显存为21H,22H,23H,分别为秒,分,时,且设置初值都为00H,也就是说这快钟刚开机默认为00:00:00,当够1S时T1就会中断。在中断内使30H加1,只到加到10,然后使31H加1,30H清零,当31H加到5,且30H为9时,再加1使32H加1,30H,31H清零依次做下去,在35H加到2时要检测为2时,34H只要加到4就要使所有单元清零。

3)按键模块将按键于P1口,且为2×2,显示接P0口,先将P1口上的8位数全置于1,当有键按下时,P1口上的数据会变化,检测哪二位发生了变化,行变为加4,列变为加1,最后得到按键的键码值,然后用JMP A ,@A+DPTR散转到相应按键模块去执行相应模块。

4)按键0使时钟停止工作,按键1使分钟加1,按一下加1,按键2使时钟加1,按一下加1。当分钟加到60时会自动变为00,当时钟加到24时也自动为00.

5)此显示数码管为动态显示,且显存里的内容已经是BCD码,要查表查到相应的显示字符的码,送出去显示。

按键开关可实现时分调整、秒表/时钟功能转换、省电(关闭显示)等功能。

由前述可知,从P2 口输出位选码,从P0 口输出段选码,LED 就会显示出数字来。但P0口的输出的数据是要BCD 码,各存储单元存储的是二进制数,也就是和要显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到P0 口去驱动LED 数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD 码行转换后,将各个单元数据的段选代码送入P0 口,给CD4511 译码后去驱动数码管显示。具体转换过程如下:

我们先将要显示的数据装入累加器A 中,再将A 中的数据转换成高低两位的BCD 码,

再放回A 中,然后将A 中的值输出。如:有一个单元存储了45 这样一位数,则需转换成四

位的BCD 码:(0100)(0101)然后放入A 中。A 中BCD 码,高位四位代表?4?低四位代表?5?同时送给两个译码器中,译码后? 45?字就在两个LED 中显示出来。

3.3 中断服务程序

中断服务又称中断处理,是指CPU从入口地址开始执行中断服务程序,直到执行完中断服务程序返回指令RETI的过程。

中断处理主要包括保护现场,允许和禁止中断,执行中断服务程序主体和中断返回个步棸。

时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0 打开后,进入计时,满100 毫秒后,重装定时。中断一次,满一秒后秒进位,满60 秒后即为1 分钟,分钟单元进位,60 分到了后,时单元进位,24 小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送LED 中显示出来,实现时钟计时功能。累加是用指令INC 来实现的。

进入中断服务程序以后,执行PUSH PSW 和PUSH A 将程序状态寄存器PSW 的内容和累加器A 中的数据保存起来,这便是所谓的?保护现场? . 以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM 中的任一区间设定,而堆栈的数据存取与一般的RAM 存取又有区别,对它的操作,要遵循?后进先出?的原则。

定时器T0用于时间计时。定时溢出中断周期可分别设为50ms和10ms。中断进入后,先判断是时钟计时还是秒表计时,时钟计时累计中断20次(即1s)时,对秒计数单元进行加1操作,秒表计时每10ms进行加1操作。时钟计数单元地址分别在30H-31H (秒)、36H-37H(分)和38H-39H(时),最大计时植为23时59分59秒。而秒表计数单元地址也在30H-31H(0.01毫秒)、36H-37H(秒)和38H-39H(分),最大计时为99分59.99秒。3AH单元内存放“熄灭符”数据(#0AH)。在计数单元中采用

十进制BCD码计数,满60(秒表功能时有100)进位,T0中断服务程序执行流程图。

T1中断服务程序用于指示调整单元数字的亮闪。在时间调整状态下,每过0.3s,将对应单元的显示数据换成“熄灭符”数据(#0AH)。这样在调整时间时,对应的整单元的显示数据会间隔亮闪。

系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入RAM 某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条CLR 指令,将对应的那路P3 置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB对应的P3 置低电位,二极管截止,。实现此控制功能用到的比较指令为CJNE A,#direct,rel,其转移条件是累加器A 中的值与立即数不等则转移。

键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电

平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里

采用软件延时的方法来避开抖动,延时时间20ms。

相关主题
相关文档
最新文档