简易时钟课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

一、系统总体方案选择与说明 (1)

二、设计框图与工作原理 (2)

2.1设计框图 (2)

2.2工作原理 (2)

三、各单元硬件设计说明及计算方法 (3)

四、软件设计与说明 (5)

4.1程序设计流程图 (5)

4.2程序设计步骤 (6)

4.2.1延时程序 (6)

4.2.2主程序的设计 (7)

4.2.3中断服务程序的设计 (7)

4.2.4显示控制子程序的设计 (7)

4.2.5按键控制程序的设计 (7)

五、调试结果及说明 (8)

5.1软件调试 (8)

5.2硬件调试 (9)

六、各元件的使用说明 (10)

6.1AT89C51芯片 (10)

6.2数码管 (10)

6.3按键 (10)

七、总结 (11)

八、参考文献 (12)

九、附录 (13)

附录A (13)

附录B (14)

系统总体方案选择与说明

单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试3个过程。如果采用单片机系统的虚拟仿真软件——Proteus,则不用制作具体的电路板也能够完成以上工作。基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的精确度。另外,程序较为简洁,具有可靠性和较好的可读性。

针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构[7]。这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为显示程序、调时显示运用、时钟和跑表切换程序这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。本设计中我们采用的硬件是自己焊的单片机开发板,首先要先确认该板能够完成下载功能在开始编程;第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和段选电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。在下载到硬件中时确认程序的关键管脚与硬件电路一致。

设计框图与工作原理

1、设计框图(如图一):

图一

工作原理:

在整个系统中首先要做的是将要实现功能的软件程序编写好,在程序编写好以后对其进行仿真调试,直到仿真结果和所需结果一致;其次要做的就是焊接出硬件即单片机开发板,在焊接好的开发板中对开发板进行检

测看其是否能工作;在开发板能工作后,将软件程序下载到硬件开发板的芯片中,进行调试直到硬件中所示的结果和自己设计所需的结果一致。

各单元硬件设计说明及计算方法

这部分介绍各模块电路的硬件设计方法和成果,主要分为:输入部分、输出部分、复位。对于输入部分有时钟和跑表功能切换键,有对时钟的时、分、秒进行调整的按键;而输出部分则是电路的显示部分,将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的程序,用它来消除抖动,在判断按键是否按下是也用到延时程序,来消除抖动,因此这个延时程序是来优化该程序的。

相关文档
最新文档