简易时钟课程设计报告.docx
《简易时钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《简易时钟课程设计报告.docx(22页珍藏版)》请在冰点文库上搜索。
简易时钟课程设计报告
系统总体方案选择与说明
单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试3个过程。
如果采用单片机系统的虚拟仿真软件——Proteus,那么不用制作具体的电路板也能够完成以上工作。
基于单片机设计的数字钟准确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。
从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的准确度。
另外,程序较为简洁,具有可靠性和较好的可读性。
针对要实现的功能,拟采用AT89C51单片机进展设计,AT89C51单片机是一款低功耗,高性能CMOS8位单片机,片含4KB在线可编程〔ISP〕的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚构造[7]。
这样,既能做到经济合理又能实现预期的功能。
在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。
程序可分为显示程序、调时显示运用、时钟和跑表切换程序这种方法,关键在于各模块的兼容和配合,假设各模块不匹配会出现意想不到的错误。
首先,在编程之前必须了解硬件构造尤其是各引脚的用法,以及部存放器、存储单元的用法,否那么,编程无从下手,电路也无法设计。
这是前期准备工作。
本设计中我们采用的硬件是自己焊的单片机开发板,首先要先确认该板能够完成下载功能在开场编程;第二局部是硬件局部:
依据想要的功能分块设计设计,比方输入需要开关电路,输出需要显示驱动电路和段选电路等。
第三局部是软件局部:
先学习理解汇编语言的编程方法再根据设计的硬件电路进展分块的编程调试,最终完成程序设计。
第四局部是软件画图局部:
设计好电路后进展画图,包括电路图和仿真图的绘制。
第五局部是软件仿真局部:
软硬件设计好后将软件载入芯片中进展仿真,仿真无法完成时检查软件程序和硬件电路并进展修改直到仿真成功。
第六局部是硬件实现局部:
连接电路并导入程序检查电路,假设与设计的完全一样一般能实现想要的功能。
在下载到硬件中时确认程序的关键管脚与硬件电路一致。
设计框图与工作原理
1、设计框图〔如图一〕:
熟悉硬件了解各引脚功能
分块设计各局部电路
将分块的电路组合
认真学习单片机汇编语言
完成整体电路图
确定编程构造和思路
综合各程序完成整体程序
编辑各个程序模块
用Proteus画出电路图
调试程序,进展修改
对仿真中出现的问题进展改正
画出仿真图进展仿真
焊接单片机开发板
仿真成功
软硬件结合,完成任务书要求
验证硬件电路
成功
对设计进展总结和分析
图一
工作原理:
在整个系统中首先要做的是将要实现功能的软件程序编写好,在程序编写好以后对其进展仿真调试,直到仿真结果和所需结果一致;其次要做的就是焊接出硬件即单片机开发板,在焊接好的开发板中对开发板进展检测看其是否能工作;在开发板能工作后,将软件程序下载到硬件开发板的芯片中,进展调试直到硬件中所示的结果和自己设计所需的结果一致。
各单元硬件设计说明及计算方法
这局部介绍各模块电路的硬件设计方法和成果,主要分为:
输入局部、输出局部、复位。
对于输入局部有时钟和跑表功能切换键,有对时钟的时、分、秒进展调整的按键;而输出局部那么是电路的显示局部,将AT89C51的输出与数码管连接起来就构成了该硬件电路的显示局部。
对于硬件个元件的来源,我们先把单片机开发板焊接好,在焊接的过程中初步的了解一下开发板的部构造以及各元件之间的关系,以便于在后续的下载连线工作中能够正确的、快速的连接好线,以便下载,焊接好开发板后,接下来就是测试开发的好坏,好的话就完成了硬件的设计,坏的话就将其原因查出重新焊接直到开发板能够下载程序,为后续的下载做好准备。
下面分别来介绍一下各个局部。
输入局部:
在电子钟的输入局部,设置相应的置数功能,通过外部设备的输入,如按键,实现时间的修改。
在选用输入端口时,将P1引脚与按键相连进展输入。
设计的输入局部如图二:
图二
输出局部:
在电子钟的输出局部,与数码管相连显示出时、分、秒,在显示中其数字的输出在P0口,数码管有共阳和共阴之分,根据自己的软件程序的编写来选择不同的数码管和数码管的个数,以及正确的连接数码管的驱动电路。
设计的输出局部如图三:
图三
硬件的计算是简单的计算,其要计算需要多少个数码管来显示,以及多少个开关来控制该电路,本硬件电路需要五个按键来控制对于时、分、秒的调整以及时钟和跑表的切换功能和复位键,对于数码管那么只需要六个来分别显示时时:
分分:
秒秒或分分:
秒秒:
毫秒毫秒。
软件设计与说明
程序设计流程图〔如图四〕:
图四
结合电路,程序的总体思路分析:
1、点复位键〔即单片机的系统复位键〕后,进展时钟时间显示,从0时0分0秒开场。
2、按下SECOND键时进展校时,当SECOND键按下1次对秒位进展调时,此时按下1次对秒位加1;
3、当MINUTE键按下1次时对分位进展调整,此时按下1次对分位加1;
4、当HOUR键按下1次时对时进展调整,此时按下1次久对时位加1;
5、当xuanze键按下时,系统将切换到跑表功能,数码管显示分分:
秒秒:
毫秒毫秒。
在程序设计时,尽量改良算法,算法的改良可以使相对误差减小,或者可以使占用空间减小。
另外,分块的设计思想要贯穿始终,整个程序较为繁杂,某些程序段会反复用到,因此采取的方法是写出多个程序段,通过跳转指令进展调用。
程序设计步骤:
在程序设计过程中,我遇到了很多困难,这局部也是让我学到很多东西的地方。
首先,我学习了定时器的相关知识,计数器的使用是很重要的组成局部,在这个设计中选择计数器T0。
T0的工作方式有:
方式1:
16位计数器,常用
方式2:
自动重装初值的8位定时/计数器
方式3:
T0相当于两个独立的8位定时/计数器
此程序采用方式1,方式1的定时时间t为t=(216-M)*12/fosc。
其中M为定时器初值,fosc为12MHz,假设M为0那么t=65536*12/2*106=65.536ms。
因此可取10ms为计时单位,初值M应为〔216-M〕*2*10-6=10*10-3。
M=55536=1101100011110000B=0D8F0H。
即定时器初值为TH0=0D8H,TL0=0F0H。
定时器中断100次为一秒,这局部在中断程序中用到。
其次,我参看了文献中的设计思路,做到胸有成竹后再进展具体的程序书写工作。
认真学习了教科书中关于汇编语言编程的问题,熟悉了汇编语言的编程方法和语法习惯。
第三步就是进展具体的程序编写工作。
1、延时程序
在动态扫描时,必然用到延迟程序,这里使用延迟1ms的程序,用它来消除抖动,在判断按键是否按下是也用到延时程序,来消除抖动,因此这个延时程序是来优化该程序的。
2、主程序的设计
主程序的主要功能是进展定时器T0
设置T0为方式1
设中断次数为100
清计时单元
开中断
启动T0
调用显示子程序
的初始化,并启动T0,然后通过反复调用显示子程序,等待10ms定时中断的到来,器流程图如图五所示:
主程序中是用来控制全局的,当有中断时那么转向中断效劳程序,中断效劳程序执行完后又回到主程序中,等待下一次的中断降临,这样就形成了一个循环,知道系统暂停和复位。
3、中断效劳程序的设计
中断效劳程序中,总体思路是:
由于初值是D8F0H,所以装满定时器需要10ms的时间,从而100次中断为一秒,一秒之后,判断是否到60秒,假设不到那么秒加一,然后返回,假设到,那么秒赋值为0,分加一,依次类推。
4、显示控制子程序的设计
在显示子程序中所要显示的是当为时钟时显示时、分、秒,当为跑表时显示分、秒、毫秒,所以在显示模块中需要一条转至语句,通过按键来分别选择所需显示的方向。
图五
5、按键控制程序的设计
在按键控制程序中,首先要判断按键是否按下,假设按下那么执行按键按下所要执行的语句,假设没按下那么继续判断按键是否按下,对于按键还得需要消抖程序,使得按键更准确。
调试结果及说明
软件调试:
程序编写完成后需要对程序进展编译和调试,在编译过程中刚开场很大可能都有错误,因为这么多的程序很有可能自己的粗心而导致语句有错误,经过反复的编译和调试,程序才真正的正确,在程序调试完成后,需生成后缀名为.HEX文件,该文件是用来仿真加载到AT89C51芯片上的,在仿真过程中也遇到了很多的问题,比方说仿真结果和所需的不一致,这就得改程序,还有仿真时数码管没有显示,这又可能是仿真电路有问题,总之在软件调试过程中问题是很多的,我们得一一的解决。
仿真结果如图六所示:
图六
结果说明:
图中所示从左至右数码管显示的是时、分、秒,图中左下角有四个按键,分别用来调整时、分、秒和时钟和跑表的选择。
74LS245是数码管显示的驱动芯片。
硬件调试:
对硬件调试,首先是对已经焊接好的单片机开发板进展测试,使其能正常工作,在测试中首先检测知道上电后LED灯不亮,原因是开关接反了,其次是下不进程序,原因是LED灯接反了,经过反复的检测和改良,终于使得开发板能够正常工作;其次是将自己所编写好的程序下载到单片机板上,按照程序来正确的连接端口的连线,在我们自己焊接的开发板中只有四个数码管,个数不够,所以还得借上一个显示模块来补足这数码管的个数,将程序下载后进展调试,如果结果不对那么就根据程序和硬件的连线来修改错误,直到结果正确。
硬件调试结果如图七所示:
图七
结果说明:
图中所示从左至右数码管显示的是时、分、秒,图中左下角有四个按键,分别用来调整时、分、秒和时钟和跑表的选择。
各元件的使用说明
1、AT89C51芯片
该单片机功能强大,不仅能满足设计的需要,也可以在设计要求的根底上进展一些扩展。
在使用时VCC接电源电压,GND接地。
P0,P1,P2,P3可作为输入或输出端口,RST是复位输入,接复位电路。
XTAL1和XTAL2接振荡电路。
这些可以在硬件设计局部表达出来。
在本设计中我们将AT89C51芯片的P1都作为按键的输入,P0口作为段显示的输出,而在仿真是P3口作为片选的输出,下载到硬件是把P3口作为片选的输出,其引脚图如图八所示:
图八
2、数码管
该数码管是七段数码管,其中用A、B、C、D、E、F、G的显示来显示数字和字符,比方要显示0的话,如果该数码管是共阴极的,那么ABCDEFG分别为0111111,假设是共阳的话那么为1000000,其图如图九所示:
图九
3、按键
本设计中用了两种按键,其实脉冲式的按钮按下后立即抬起,另一种是开关是的,有闭合和断开两个状态;用开关式的来作为时钟和跑表的切换功能,用按钮来对时、分、秒的调整,其图如图十所示:
图十
总结
通过这次对简易时钟的设计,让我了解了电路设计的根本步骤,也让我了解了关于时钟的原理与设计理念,要设计一个电路先进展软件模拟仿真再进展实际的电路制作。
但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。
而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。
所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际。
特别是在焊接单片机开发板的时候,结果自己亲自的焊接对该开发板的部结果以及怎样连接和各个模块的功能有了了解,通过对单片机的检测也学到了对器件和电路的检测方法,学到了设计的思维方法,这对我是有很到好处的,起初对于这板子一点都不怎么的了解,但经过自己的焊接以后对于其作用和功能有了很大的了解,如果不焊接直接买块单片机的话就可能对其部连接和功能了解的就没这么的深刻。
通过时钟的设计和制作,加深了对单片机的理解,能够更熟练地应用单片机实现预期的功能,对今后的工作有很大的帮助。
时钟各项功能的实现,为以后的更深一步的学习单片机打下了理论根底,获得了实现方法。
整个的课程设计过程中是非常的辛苦,比方在焊接板子的时候为了快而好的焊接好板子,我是从早一直焊接到晚上,一天没吃饭没喝过水,有比方在做程序设计的时候,有时一个功能没实现自己反复的在思索如何来实现,有时弄到凌晨几点才睡。
虽然在此过程中我吃了不少的苦,但是我学到了很多的东西,找到了自信。
在今后的其他工作中,也可以把这次设计中的收获运用进去,这是我此次课程设计得到的最大财富。
课程设计是大学生活中重要阶段的工作,是真正考验我们能力的一项教学容,在这个过程中我认真思考,不断尝试,收获了很多在平时的课堂上收获不到的东西。
课程设计即将完毕,我会吸取课程设计中的经历和教训,在今后的工作中少走弯路。
在此设计中教师给了我很大的帮助,在我不能解决的问题中给了我思考的方向使得我能够将问题解决,在此感指导教师的帮助。
参考文献
1、建忠编单片机原理及应用电子科技大学
2、顶峰编单片微型计算机原理与接口技术电子工业
3、邹逢兴编单片机应用新技术教程高等教育
4、朱宇光编16位微型计算机原理接口及其应用电子工业
5、吴秀清编微型计算机原理与接口技术中国科学技术
6、邓亚平编微型计算机接口技术清华大学
7、王迎旭编单片机原理及及应用机械工业
8、毅刚编单片机原理及应用高等教育
附录
附录A:
系统原理图〔如图十一〕:
图十一
附录B:
程序清单:
S_SETBITP1.0;数字钟秒控制位
M_SETBITP1.1;分钟控制位
H_SETBITP1.2;小时控制位
X_SETBITP1.3;时钟跑表控制位
Z_SETBITP1.4
MSECONDEQU30H
SECONDEQU31H
MINUTEEQU32H
HOUREQU33H
TCNTEQU35H
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVDPTR,#TABLE
MOVHOUR,#0;初始化
MOVMINUTE,#0
MOVSECOND,#0
MOVMSECOND,#0
MOVTCNT,#0
MOVTMOD,#01H
MOVTH0,#0D8H;定时10毫秒
MOVTL0,#0F0H
MOVIE,#82H
SETBTR0
;****************************************************
;判断是否有控制键按下,是哪一个键按下
A1:
LCALLDISPLAY
JNBS_SET,S1
JNBM_SET,S2
JNBH_SET,S3
LJMPA1
S1:
LCALLDELAY;去抖动
JBS_SET,A1
INCSECOND;秒值加1
MOVA,SECOND
CJNEA,#60,J0;判断是否加到60秒
MOVSECOND,#0
LJMPK1
S2:
LCALLDELAY
JBM_SET,A1
K1:
INCMINUTE;分钟值加1
MOVA,MINUTE
CJNEA,#60,J1;判断是否加到60分
MOVMINUTE,#0
LJMPK2
S3:
LCALLDELAY
JBH_SET,A1
K2:
INCHOUR;小时值加1
MOVA,HOUR
CJNEA,#24,J2;判断是否加到24小时
MOVHOUR,#0
MOVMINUTE,#0
MOVSECOND,#0
LJMPA1
;****************************************************
;等待按键抬起
J0:
JBS_SET,A1
LCALLDISPLAY
SJMPJ0
J1:
JBM_SET,A1
LCALLDISPLAY
SJMPJ1
J2:
JBH_SET,A1
LCALLDISPLAY
SJMPJ2
;***********************************************
;定时器中断效劳程序,对毫秒.秒.分钟和小时的计数
INT_T0:
MOVTH0,#0D8H
MOVTL0,#0F0H
INCTCNT
MOVA,TCNT
INCMSECOND;计时毫秒
CJNEA,#100,RETUNE
INCSECOND;计时1秒
MOVTCNT,#0
MOVMSECOND,#0
MOVA,SECOND
CJNEA,#60,RETUNE
INCMINUTE
MOVSECOND,#0
MOVA,MINUTE
CJNEA,#60,RETUNE
INCHOUR
MOVMINUTE,#0
MOVA,HOUR
CJNEA,#24,RETUNE
MOVHOUR,#0
MOVMINUTE,#0
MOVSECOND,#0
MOVTCNT,#0
RETUNE:
RETI
;******************************************
;显示控制子程序
DISPLAY:
JNBX_SET,PB
SZ:
MOVA,SECOND;显示秒
MOVB,#10
DIVAB
CLRP3.6
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.6
MOVA,B
CLRP3.7
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.7
MOVA,MINUTE;显示分钟
MOVB,#10
DIVAB
CLRP3.4
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.4
MOVA,B
CLRP3.5
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.5
MOVA,HOUR;显示小时
MOVB,#10
DIVAB
CLRP3.2
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.2
MOVA,B
CLRP3.3
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.3
LJMPAA
PB:
JNBZ_SET,BB
MOVA,MSECOND;显示毫秒
MOVB,#10
DIVAB
CLRP3.6
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.6
MOVA,B
CLRP3.7
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.7
MOVA,SECOND;显示秒
MOVB,#10
DIVAB
CLRP3.4
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.4
MOVA,B
CLRP3.5
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.5
MOVA,MINUTE;显示分钟
MOVB,#10
DIVAB
CLRP3.2
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.2
MOVA,B
CLRP3.3
MOVCA,A+DPTR
MOVP0,A
LCALLDELAY
SETBP3.3
BB:
CLRTR0
AA:
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
DELAY:
MOVR6,#10
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
RET
END
工程
评价
优
良
中
及格
差
设计方案合理性与创造性〔10%〕
开发板焊接及其调试完成情况*〔10%〕
硬件设计或软件编程完成情况〔20%〕
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
辩论情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分