键盘可调时钟课程设计_精品文档Word下载.doc
《键盘可调时钟课程设计_精品文档Word下载.doc》由会员分享,可在线阅读,更多相关《键盘可调时钟课程设计_精品文档Word下载.doc(15页珍藏版)》请在冰豆网上搜索。
单片计算机即单片微型计算机。
(Single-ChipMicrocomputer),是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。
他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。
而51单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
关键词:
单片机,数字时钟
目录
摘要 -2-
1.引言 -5-
2.设计方案及原理 -5-
2.1总体设计方案 -5-
2.2运算模块 -6-
2.3校时模块 -6-
2.4门电路设计 -7-
2.5键盘及读数原理 -7-
3.硬件设计 -7-
4.软件设计 -7-
4.1流程图 -7-
4.2Proteus仿真 -10-
5.总结 -10-
6.参考文献 -11-
7.附录 -11-
1.引言
在科技如此发达的今天,社会对人才的要求的不断提升,当代大学生不仅需要扎实的理论知识,还需要过硬的动手能力。
作为自动化专业的学生,更应该熟练掌握各种电路编辑软件,作为专业必需的技能更要及时地对这一类软件的更新版本进行学习,其日趋强大的功能是对我们专业技能的补充。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
基于单片机课程的学习,在本次课程设计中利用单片机实现时钟的显示,利用键盘和门电路控制时间的调整,在设计上采用硬件计数与软件计数相结合的方式,并且定时器T0采用了中断方式,优先级最高。
然后通过开关的闭合与关断来控制时钟的校正,采用二十四小时制计时。
充分利用单片机的资源和空间,较大限度的实现了功能。
过实际程序设计和调试,逐步掌握块化程序设计方法和调试技术,通过课程设计,掌握一单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法,通过完成一个包括电路设计和程序设计开发的完整过程,了解开发单片机应用系统的全过程,为今后从事相应工作打下基础。
2.设计方案及原理
2.1总体设计方案
用8255控制,用数码管的显示功能来设计。
显示部分硬件用六只LED为显示管,这些LED发光二极管的阴极是互相连接在一起的,所以称为共阴极数码管。
通过在这8只发光二极管的阳极加+5V或0V的电压使不同的二极管发光,形成不同的数字。
该模块主要是将运算模块和校时块运算出来并存放在内存单元里的十六进制表示的时位、分位和秒位数值转化为十进制,并通过8只数码管显示出来。
该模块实现的硬件是DVCC-8086JH实验箱中的LED单元,采用软件译码,即在程序中设置一个段选码表。
CPU直接往LED输出八段代码,省去了硬件译码器。
A0~A3作为8段数据输出口,经74LS07驱动后到达各LED。
只要做到每送一次段选码时也送一次位扫描码,并且每送一次位扫描码后,位码中的0右移一位作为下一次的位扫描码,即可实现由左向右使6只LED依次出现数字显示。
图1总体原理框图
2.2运算模块
该模块的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟的内存单元里,以便显示模块即时地显示出来。
该模块可以细分为秒定时模块和运算模块。
秒定时模块负责提供中断信号,由于CPU运算模块中的指令消耗一定的时间,所以中断信号最好通过硬件来实现。
本实验中用8031定时器/计数器,但因为8031供的信号的周期是毫秒级的,因此必须通过软件的方法在运算模块中设置一个统计中断次数的变量,并且这一变量必须事先在内存里开辟存储单元。
中断信号是8051工作方式为方式1,产生一个50ms的脉冲信号。
运算模块负责时、分、秒的计算,该模块主要通过8031的IR1号中断来实现,但由于每50ms一次中断请求,所以在中断服务程序必须利用已申请内存单元26H来统计中断请求的次数,只有当26H的值为20时,才能让秒单元内的数值加1。
在中断服务程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;
当分加到60时,时加1、分清零。
当时加到24时,直接清零。
然后转到调用处。
2.3校时模块
该模块主要功能是修改时、分、秒内存单元的数值。
每按一次键,对应的显示值便加1。
分、秒加到59后变为00;
小时加到23后再按键即变为00.再调校时均不向上一单位进位(例如分加到59后变为00;
但小时不发生改变)。
注意:
在主程序中对时间进行调校前应关闭中断,以防在调校过程中定时中断服务程序也对时间进行修改而造成混淆。
2.4门电路设计
为了达到调整时间的快速性与准确性,采用中断响应方式,可以达到这个要求。
四个键盘与与门芯片74LS21相连。
当四个键盘有一个按下后,就会向CPU发送中断申请这样可以做到实时的调整时间。
由于设置定时T0的优先级最高,当CPU响应中断的时候系统仍然在计时。
采用这种方法可以提高电子时钟的准确程度,不会产生较大的误差。
2.5键盘及读数原理
键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。
可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms.
3.硬件设计
根据要求,设计一个时钟。
能够显示时间格式为时.分.秒,并且设置键盘,根据按键任意调整时间。
利用AT89C51单片机内部定时器0与软件结合来实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;
若秒值达到60,则将其清零,并将相应的分字节值加1;
若分值达到60,则清零分字节,并将时字节值加1;
若时值达到24,则将时字节清零。
显示部分用共阴极的LED显示等显示。
为了提高显示亮度采用了74HC373驱动芯片。
设计的电路原理图如图2所示。
4.软件设计
4.1流程图
流程图是程序编写的思路,流程图的合理与否,直接关系到程序的对错,因此流程图对于程序设计有这非同寻常的价值。
对于电子时钟这个系统来说,应该对各模块进行编写程序,各模块的协调工作才能确保系统的正常运行。
主流程图如图3所示,中断流程图如图4所示,显示模块流程图如图5所示,键盘中断和响应程序流程图。
图2硬件原理图
图3主程序流程图图4中断程序流程图
图5显示程序流程图
图6键盘中断和响应程序流程图
4.2Proteus仿真
Proteus是一款功能强大的仿真软件。
在该软件中,我们可以模拟实际硬件电路,检测电路设是否正确、合理。
根据硬件原理电路,在proteus中的仿真结果如图7所示。
设计的电子时钟共有四个按键,分别对应着1小时、10分钟、1分钟和10秒的时间调整。
按下1HOUR键时小时加1。
超过24小时就溢出回到0小时。
其他的按键原理和1HOUR键相同。
差别在于溢出数值的不相同。
由于系统上电复位以后所有的数值初始化,所以电子时钟每次计时是从0时0分0秒开始的。
图7proteus仿真结果
5.总结
在此次课程设计中,我主要负责硬件接线图和程序流程图的绘制。
接近一星期的单片机课程设计,我感慨颇多,的确,从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域。
在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
我感触最深的当属查阅大量的设计资料了。
为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。
我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。
当然我们在设计中遇到了很多编程问题,最后都在老师的辛勤指导下迎刃而解。
此次设计中老师为教导我们很是辛苦,为此我表示感谢!
在此,我对给过我帮助的所有同学和指导老师再次表示忠心的感谢!
6.参考文献
[1]李华,王思明.单片机应用及原理[M].兰州:
兰州大学出版社,2001.
[2]李广弟.单片机基础[M].北京:
北京航空航天大学出版社,1994.
[3]房小翠.单片机实用系统设计技术[M].北京:
国防工业出版社,1999.
[4]贾金铃等编著.微型计算原理及应用[M].重庆大学出版社,2006.
7.附录
源程序代码:
ORG0000H
AJMPSTART
ORG0003H
LJMPST1
ORG000BH
AJMPTT0
ORG0030H
START:
MOV30H,#00H;
秒个位内存单元
MOV31H,#00H ;
秒十位内存单元
MOV32H,#00H;
分个位内存单元
MOV33H,#00H;
分十位内存单元
MOV34H,#00H;
时个位内存单元
MOV35H,#00H;
时十位内存单元
MOVTMOD,#01H;
定时器T0,工作方式1,
MOVTH0,#3CH;
定时50MS
MOVTL0,#0B0H;
MOVR0,#30H;
指针指向显示单元
MOVR5,#0FEH;
选中秒个位
MOVR1,#20;
MOV36H,#00H;
时位键盘判断时用
MOVR3,#6