数字钟显示计时系统_湖北大学_电子信息工程毕业论文_第1页
数字钟显示计时系统_湖北大学_电子信息工程毕业论文_第2页
数字钟显示计时系统_湖北大学_电子信息工程毕业论文_第3页
数字钟显示计时系统_湖北大学_电子信息工程毕业论文_第4页
数字钟显示计时系统_湖北大学_电子信息工程毕业论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖北大学 毕 业 设 计(论文)设计(论文)题目:数字显示计时系统系 别: 物理与科学技术学院 专 业: 电子信息工程班 级:07电信(3)班姓 名: 学 号: 指导老师: 完成时间: 2010年5月摘要:本次设计主要是利用AT89C51单片机完成,其中AT89C51是核心元件同时采用数码管动态显示“时”、“分”、“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显示满刻度为“23时59分59秒”,另外具有校时功能、整点报时功能、闹铃功能、断电后有记忆功能、恢复供电时可实现计时同步等特点。本文主要介绍用单片机内部的定时/计数器来实现数字显示计时系统

2、的方法,本设计硬件由单片机AT89C51芯片和LED 数码管为核心,辅以必要的电路,构成了一个单片机数字显示计时(闹钟)显示系统,硬件电路仿真由Proteus 仿真软件完成,软件由伟福(WAVE )编程完成。关键词:AT89C51 LED 闹铃 整点报时Abstract:This is the main design, including complete AT89C51 is the core element also USES AT89C51 dynamic display of "digital tube," "points" and "

3、second" modern timing devices. Compared with the traditional mechanical watch, it is precisely that intuitive, walking, etc. It's time for 24 hours, show period for the full scale "and" 59 seconds when 59, also has the function of time, when the school on the function, alarm funct

4、ions, power was restored after the memory function, can be realized when the clock synchronization etc.This paper mainly introduces the MCU internal timing counter to realize/digital display timer system, the design method of the hardware of microcomputer AT89C51 chip and LED digital tube as the cor

5、e, with the necessary circuit, a digital display timer (alarm display system, the hardware circuit simulation by Proteus, software simulation software by weifu (WAVE programmed.Keywords: AT89C51 LED alarm on tim目录第一章 概述1.1 课题简介41.2 设计的主要原理4 1.3方案论证4 1.4设计的目的及要求5 第二章 硬件设计2.1 硬件部分框图62.2 使用芯片介绍6 2.3 分电

6、路设计8 第三章 软件设计3.1 单元分配14 3.2 程序框图与汇编程序14 第四章 调试4.1 软件调试20 4.2 protues仿真软件的应用20 4.3性能分析21参考文献23附录A 源程序24 附录B 电路原理图32附录C 元件清单33第一章 概述1.1 课题简介数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,已得到广泛的使用。数字钟的设计方法有许多种, 例如, 可用中小规模集成电路组成电子钟;也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟;还可以利用单片机来实现电子钟等等。这些方

7、法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,并便于功能的扩展。单片机应用的重要意义在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。本次设计以AT89C51单片机为核心来控制时钟电路、按键电路、复位电路、LED 显示器段码驱动电路、LED 显示器码驱动电路、6位LED 显示器电路以及蜂鸣器,以达到对“时”“分”“秒”精确的控制和显示。1.2 设计的主要原理电路工作原理:该电路以AT89C51为核心。显示器用七段共阳LED 数

8、码管显示器,显示小时、分钟以及秒,从P0口接入4个按钮开关,作为输入电路,进行手动设置调时、调分和调秒,通过P2,P1口来实现对显示的实时控制。同时在从P3口接入1个蜂鸣电路,作为报警用。1.3 设计的目的及要求1 设 计 目 的(1)熟悉集成电路的引脚安排;(2)熟悉并掌握80C51的结构原理及应用; (3)了解电路板结构及其接线方法; (4)了解数字钟的组成及工作原理; (5)掌握芯片的逻辑功能及使用方法; (6)熟悉数字钟的设计与制作。 2. 设 计 要 求 (1)报时用中断方式计时; (2)到整时时能够准时;(3)由晶振提供标准时间基准信号;(4)自动计时并具备校调功能。可以单独对每一

9、位校调;(5)设置四个按键SET,RET,ALM 和+1键,对时,分,秒进行调整;(6)通过软件编程的方法实现以24小时为一个周期同时显示小时, 分钟和秒。1.4方案论证方案一:采用实时时钟芯片设计:针对计算机系统对实时时钟功能的普遍需求,各大芯片生产厂家陆续推出了一系列的实时时钟集成芯片,如DS1287,DS12887等,这些实时时钟芯片具备年月日,时分秒计时功能和多点定时功能,计时数据的更新每秒进行一次,不需程序干预。计算机间程序简单。此外,实时时钟芯片多数带有锂电池做后备电池具备永不停止的计时功能,具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性

10、RAM ,可用来存放需长期保存的但有时也需变更的数据。方案二:采用单片机软件控制技术:利用AT89C51内部的16位定时/计数器进行中断服务,配合软件延时实现计时计时及控制全部采用软件控制,并配合外围显示及键盘电路,从而实现电子时钟的各项功能。比较上述两种方案:方案一虽然功能强大,性能较好但所用芯片较贵、外围逻辑电路复杂,且灵活性较低,不利于各种功能的扩展;方案二此系统硬件简单,将复杂的硬件功能用软件实现,因此系统控制灵活,能很好的满足基本需求,且能够使人在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,因此本次设计采用方案二。第二章 硬件设计2.1 硬件部分框图图2-1为该系统设计方案

11、的硬件电路设计框图。该数字显示计时系统的硬件电路是由单片机、时钟电路、按键电路、复位电路、LED 显示器段码驱动电路、LED 显示器码驱动电路、6位LED 显示器电路以及蜂鸣器电路。 图2-1硬件电路框图在图2-1中,以AT89C51单片机为核心,LED 数码管显示内容通过P1口从单片机传送到数码管。P2口是数码管位选控制端口。形成一个可以显示时,分,秒的数字显示计时系统。在这一系统中当时间调整设置键(SET )被按下时,系统进入时间调整输入功能状态;当定时时间设置键(ALM被按下时,系统进入定时(闹钟)时间输入功能状态;当+1调整键被按下时,被调整位加一;当确认键(RET被按下时,指向下一个

12、要调整的位。4个按键开关通过不同的组合实现外部控制程序状态2.2 使用芯片介绍AT89C51 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash ,使得AT89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89 c51具有以下标准功能:8k 字节Flash ,256字节RAM , 32 位I/O 口线,看门狗定时器,2 个数据指针

13、,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器8K 字节在系统可编程Flash AT89C51。AT89C51系列单片机如图2-2所示: 图2-2 AT89C51系列单片机单片机的中央处理器(CPU )是单片机的核心,完成运算和控制操作,中央处理器(CPU主要包括运算器和控制器。1)

14、运算器运算器主要用来实现算术,逻辑运算和位操作,其中包括算术运算和逻辑运算单元ALU, 和累加器ACC,B 寄存器程序状态字PSW 和两个存储器等。2 控制器控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,控制器主要包括程序计数器PC ,PC 增量器,指令寄存器,指令译码器,定时及控制逻辑电路等。其功能是控制指令的读入,译码和执行,并对指令执行过程进行定时和逻辑控制,在AT89C51单片机中,PC 是一个16位的计数器,可对64KB 程序存储器进行寻址,复位时PC 内容为0000H ,说明程序应从存储器0000H 单元开始执行。3)外围接口电路CPU 与外部设备的信息交换都

15、要通过接口电路来进行,这主要是为了解决CPU 的高速处理能力和外部设备低速运行之间的速度匹配问题,并可以有效地提高CPU 的工作效率,同时也提高了CPU 的对外驱动能力。输出借口电路具有锁存器和驱动器,输入接口电路具有三态门控制,成为接口电路的基本特性,AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器及中断系统等,由于受集成度的限制,片内存储器和外围接口电路的规模及数量受到一定的限制,为了适应外部更复杂的控制功能,单片机具有较强的扩展功能,可以很方便地扩展外部存储器ROM,RAM 和I/O口等4 位处理器。单片机主要用于控制,需要有

16、较强的位处理功能,因此位处理器是它的必要组成部分,常把位处理器称为布尔处理器。位处理器以状态寄存器中的进位标志位C 为累加位,可进行置位、复位、取反、等于“0”转移、等于“1”转移且清“0”以及C 与可寻址位之间的传送、逻辑与、逻辑或等位操作。位处理操作也是通过运算器实现的。4 存储器单片机内部的存储器分为程序存储器和数据存储器,标准型AT89C51单片机的程序存储器采用4KB 的快速擦写存储器FLASH MEMORY,程序和擦除完全是电气实现,编程和擦写速度快,可以使用通用的编程器脱机编程,也可在线编程。FLASH 的应用成为AT89系列单片机的显著特点之一,在单片机中,用随机存储器RAM

17、来存储程序运行期间的工作变量和数据,所以又称为数据数据存储器。一定容量的RAM 集成在单片机内,提高了单片机的运行速度,也降低了功耗。5 串行口AT89C51单片机是由一个全双工的串行接口,以实现单片机和其他数据设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。6)中断控制系统AT89C51单片机的中断功能较强,以满足控制应用的需要。80C51工有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。全部中断分为高级和低级共两个优先级别。2.3 分电路设计1按键电路设计与器件选择数字显示计时系统工作时应具备两项基本功能,一是随时输入定时(

18、闹钟)时间,二是随时对当前时间进行调整。要实现这两项功能,可以接入键盘输入电路。1)按键方案一:4*4矩阵式键盘。如果选择此方案,那么在修改时钟或设置闹铃时间时就可以直接从键盘输入,方便、快捷,但程序较为复杂。方案二:独立式按键。如果设置过多按键,将会占用较多I/O口,而且会给布线带来不便,因此,此方案适用于按键较少的情况。如果选择此方案,由于按键较少,在修改时间或设置闹铃时间时就不能直接输入,只能通过加或减来完成,稍为麻烦一些,但其程序简单。由于并不需要经常修改时间和设置闹铃时间,而且方案二的程序简单,按键少、成本低,因此,选择方案二。2) 键盘结构的选择键盘结构可以分为独立式键盘和行列式键

19、盘(矩阵式)两类。在本次设计中只需要4个按键,因此选择独立式键盘。电路是由按键和4个电阻组成,按键分别命名为 SET、 ALM 、+1和 RET键,按键可以采用轻触开关,电阻采用并脚排电阻(4*10K)如图2-4所示: 图2-4 键盘结构在图2- 4中4个按键的功能的具体说明:RET 确认键的功能:确认,即对 +1 调整位进行确认,该键按下时说明被调整位的值已经确定,转去调整下一位。+1键调整键的功能:分别对时间值的小时十位、小时个位、分的十位、分的个位、秒的十位、秒的个位进行+1调整,即该键每按下一次,对应的时间调整位+1。ALM 键功能:设置定时(闹钟)时间,即当需要电子时钟进行定时(闹钟

20、)服务时,可以通过该键的功能来输入定时(闹钟)时间,使用ALM 键与 +1键RET 键配合来完成这一功能。SET 键功能:设置当前时间,即当电子时钟的时间有误差时,需要随时对它进调整,使用SET 键与+1 键RET 键配合来完成这一功能。键盘的硬件电路设计只能保证4个按键信号的可靠进入,要想完成键盘的输入功能,还要靠软件编程来具体实现的。3) 按键消抖处理:通常的按键所用开关为机械弹性开关, 当机械触点断开、闭合时, 电压信号小型如图2-5所示。由于机械触点的弹性作用, 一个按键开关在闭合时不会马上稳定地接通, 在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动, 如下图。抖

21、动时间的长短由按键的机械特性决定, 一般为5ms 10ms 。这是一个很重要的时间参数, 在很多场合都要用到。 图2-5 按键工作过程按键稳定闭合时间的长短则是由操作人员的按键动作决定的, 一般为零点几秒至数秒。键抖动会引起一次按键被误读多次。为确保CPU 对键的一次闭合仅作一次处理, 必须去除键抖动。在键闭合稳定时读取键的状态, 并且必须判别到键释放稳定后再作处理。按键的抖动, 可用硬件或软件两种方法。 硬件消抖:在键数较少时可用硬件方法消除键抖动。图2-6所示的RS 触发器为常用的硬件去抖。在图2-6中两个“与非”门构成一个RS 触发器。当按键未按下时, 输出为1; 当键按下时, 输出为0

22、。此时即使用按键的机械性能, 使按键因弹性抖动而产生瞬时断开(抖动跳开B ), 只要按键不返回原始状态A, 双稳态电路的状态不改变, 输出保持为0, 不会产生抖动的波形。也就是说, 即使B 点的电压波形是抖动的,但经双稳态电路之后, 其输出为正规的矩形波。 图2-6 RS触发器去抖 软件消抖:如果按键较多, 常用软件方法去抖, 即检测出键闭合后执行一个延时程序, 产生5ms 10ms 的延时, 让前沿抖动消失后再一次检测键的状态, 如果仍保持闭合状态电平, 则确认为真正有键按下。当检测到按键释放后, 也要给5ms 10ms 的延时, 待后沿抖动消失后才能转入该键的处理程序。2. LED显示电路

23、选择在单片机的应用系统中,通常需要进行人机对话。这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行状态与运行结果等。显示器、键盘电路就是用来完成人-机对话活动的人-机通道。LED 显示器的驱动是一个非常重要的问题,由系统硬件设计框图可知显示电路由LED 显示器、段驱动电路和位驱动电路组成。在本次设计中运用LED 数码显示器、采用PNP 管以及单片机的P2口来组成显示电路。1) 显示器:方案一:液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。但液晶显示器的驱动电路复杂,使用起来有一定的难度。方案二:用数码管作为显示器。数码管的驱动电路简单,使用方便

24、,如果选择了此方案,那么在夜间看时间的时候就不需要有光源,非常方便。其缺点是功耗较大。由于数码管使用起来较为方便,在夜间看时间也很方便,因此我们选择了方案二。2) LED数码显示器的结构LED 是发光二极管的缩写,LED 显示器由若干个发光二极管构成的,妥发光二极管导通时,显示对应的字符。LED 显示器控制简单,使用方便,在单片机中应用非常普遍。LED 显示器由7个发光二极管组成,也称为7段LED 显示器,排列形状如图2-3a 所示。LED 显示器还有一个圆点型的发光二极管(图中以dp 表示),用于显示小数点,有时也称为8段LED 显示器。通过7段发光二极管亮暗的不同组合,可以显示多种数字、字

25、母和其他符号。LED 显示器的发光二极管有共阴极和共阳极两种连接方法. 图2-3b 为共阴极接法, 各发光二极管的阴极连在一起并接地, 当某一发光二极管的阳极输入高电平时, 则该段发光;图2-3c 为共阳极接法, 各发光二极管的阳极连在一起并接+5V,当阴极输入法低电平时, 该段发光二极管发光。使用LED 显示器时,要注意区分两种不同的接法。为了显示数字或符号,要为LED 显示器提供代码(字形码),在两种接法中字形码是不同的。 图2-3 7(8段LED 显示器7段发光二极管再加上一个小数点位,共计8段,提供给LED 显示器的字形 用LED 显示器显示十六进制数的字形码见表2-2。 3. 蜂鸣器

26、电路的设计闹铃指示可以有声或光两种形式,本系统采用声音指示。关键元件是蜂鸣器。蜂鸣器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可;元件内部已经封装了音频振荡电路,在得电状态下即起振发声。市场上的有源蜂鸣器分为3V 、5V 、6V 等系列,以适应不同的应用需要。其中PNP 小功率三极管采用9012。其最大集电极电流为800mA 。完全满足蜂鸣器驱动的需要。适当调节基极电阻可改变蜂鸣器的发声功率。 图2-7蜂鸣器电路在图2-7中,当P3.7=0时,VT1导通时,使蜂鸣器的两个引脚间获得将近5V 的直流电压,蜂鸣器中有电流通过,而产生蜂鸣音。当P3.7=

27、1时,VT1截止时,蜂鸣器的两引脚间的直流电压接近0V ,蜂鸣器不发声。4. 单 片 机 的 复 位 方 式 与 电路选择复位就是通过某种方式,使单片机内各寄存器的值变为初始化状态的操作。AT89C51单片机在时钟电路工作以后,在RESET 端持续给出2个机器周期的高电平就可以完成复位操作。复位分为上点自动复位和手动复位两种方式。本系统采用上电复位方式。上电复位是在单片机接通电源时,对单片机的复位。在上电瞬间RST 端与VCC 电位相同,随着电容上电压的逐渐上升,RST 端电位逐渐下降。上电复位所需要的最短时间是振荡器建立时间加2个机器周期3种方式复位电路图: 注:一般情况下图中电容C1和C2

28、取30PF 左右,晶体的振荡频率范围是1.212MHZ 。晶体振荡频率越高,则系统的时钟频率越高,单片机运行速度也越快。一般情况下,单片机使用的振荡频率为6MHZ 或者说12MHZ 。5. 相关电路参数的计算(1)PNP 三极管与P2口之间的电阻选择:选取三极管9012的放大倍数为100,选通一个LED 数码管所需电流即三极管的集电极电流为:Ic=15mA*7=105mA,则它的基极电流Ib=105mA/100=1.05mA,取1mA ,三极管压降为0.7V ,则电阻阻值为:R=(5-0.7V/1mA=4.3K,实际取4.7K(2)LED 数码管与P1口之间的电阻选择:由于LED 数码管是由七

29、段发光二极管组成。每个二极管所需电压为2V ,电阻的峰值电流取10mA ,又由于P1的压降为,则电阻上所需电压为5-2-0.3=2.7V则电阻上的阻值为2.7V/10mA=270,实际取300(3)开关与P0口之间的电阻选择:由于开关端的电阻接+5电源,导线本身的电流是非常微小的,所以我选择了10K 的电阻来完成硬件电路的连接。(4)I 端口分配及连接:P1.0P1.7:LED 数码管显示内容通过P0口从单片机传送到数码管。 P2.0P2.5:数码管位选控制端口。P0.0- P0.3:分别连接开关,SET 、 ALM 、+1和 RET键,通过不同的组合实现外部控制程序状态。第三章 软件设计3.

30、1单元分配在AT89C51单片机的内部00H-1FH 为工作寄存器区,20H-2FH 为位寻址区,30H-7FH 为数据缓冲区。堆栈的先进后出的特点。1. 堆栈区 70H-7FH2. 段码显示缓冲区 45H-40H3. 当前时间的二进制存储单元30H-32H4. 闹铃时间的二进制存储单元33H-35H5. 闪烁显示单元 20H3.2程序框图与汇编程序主程序框图如图3-1所示: 图3-1主程序框图一、主程序主程序的内容的一般包括:主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化和一些子程序的调用等内容。设置中断入口地址、设置主程序的起始地址(开始),为了保护现场设置堆栈指

31、针,为了保证显示的正确性要进行T0的初始化和显示缓冲区与计时有关的寄存器的清零。启动T0调用显示程序显示当前时间,根据需要可以进行按键处理,一旦闹钟时间到,发出报警,报警时间过后,调用显示程序继续正常的时间显示。主程序清单如下:ORG 0000H ;中断入口地址 AJMP MAINORG 000BH ;T0中断 AJMP T0INTMAIN: MOV SP,#70H ;设置堆栈指针MOV R6,#06H ;显示缓冲区清零 MOV R1,#45H S0:MOV R1,#00H DEC R1 DJNZ R6,S0MOV TMOD,#01H ;T0为工作方式1 MOV TH0,#0BH ;设T0计数

32、初值 MOV TL0,#0DCHSETB RS0 ;选择工作区1 MOV R2,#00H ;相关寄存器清零 MOV R3,#00H MOV R4,#00H MOV R5,#00HCLR RS0 ;选择工作区0MOV R1,#45H ;显缓区首指针送R1 SETB TR0 ;开T0SS1: LCALL DISP ;调用显示程序LCALL KEYBOARD ;调用按键处理程序 MOV R2, 35H ;判断是否有定时时间 CJNE R2, #0, NT MOV R2, 34H CJNE R2, #0, NT MOV R2, 33H CJNE R2, #0, NT SJMP BBNT: MOV A,

33、 35HCJNE A, 32H, BB ;判断定时时间到否 MOV A, 34HCJNE A, 31H, BB MOV A, 33HCJNE A, 30H, BBCLR P3.7 ;时间到发出报警 MOV R7,#15 SJMP SS1BB: SETB P3.7 SJMP SS1 二中断系统的介绍如果在执行主程序时只有一个中断请求源请求中断,而这时CPU 又是对中断开放的那么这个中断立即得到响应。然而由于中断是随机产生的,中断源又不止1个,因此往往会出现这样的情况:几个中断源同时请求中断,或者当某一个中断正在响应中,又有其他中断源请求中断,这时中断一般会按如下原则进行处理:(1) 不同级的中断

34、源同时请求中断时先高后低 (2) 同级的中断源同时申请中断时事先规定(3) 处理低级中断又收到高级中断请求时停低转高 (4) 处理高级中断又收到低级中断请求时高不理低AT89C51单片机的中断系统对优先级的控制比较简单,只规定了两个中断优先级,对于每一个中断源均可编程为高优先级中断或低优先级中断。在同一个优先级中,五个中断优先级的次序如下: 外部中断0(IE0)定时器/计数器T0溢出中断(TF0) 外部中断1(IE1)定时器/计数器T1溢出中断(TF1) 串行口中断(RI+TI)AT89C51单片机有1个中断优先级寄存器IP ,字节地址为B8H 。对于每一个中断源,均可通过IP 的设置来确定优

35、先等级,置1为高优先级,反之为低。 三、时钟计时程序数字显示计时系统的主要任务是:采用单片机为核心的器件产生24小时时间,并用LED 显示器将它显示出来。在本次设计中所用的晶振为6MHz ,定时器最长的定时时间为131.72ms ,要产生24h 的时间值,故我们采用定时器T0方式1。(1)24小时的产生:选择定时器T0 方式1,定时125ms 中断一次,利用R2寄存器加1,8次为1s ,再利用寄存器R3计数60s ,依次类推,累计24的时间值,并需设置以下几个寄存器:R2:累计1s 时间寄存器。T0每中断一次R2=R2+1,计数八次向R3进位,并将R2清零R3:累计60s 时间寄存器。当R3=

36、60s,向R4进位,并使R3=0。R4:累计60min 时间寄存器。当R4=60min向R5进位,并使R4=0。R5:累计24h 时间寄存器。当R5=24h,正好是昼夜的时间,并使R5=0。 (2)定时器的初值:F=6MHZ, Tp=2us X=65536-125ms/2us=0BDCH (3)程序设计框图:计时程序设计框图如图3-2所示 图 3-2计时程序设计框图程序清单如下:T0定时器,每125ms 中断一次,中断8次为1s 。T0INT: PUSH A ;T0计时中断程序, 保护现场CLR TR0MOV TH0,#0BH ;设T0计数初值 MOV TL0,#0DCHSETB TR0 ;开

37、T0 SETB RS0 ;选择工作区1 INC R2CJNE R2,#08H,JT0 ;1s到了吗? 没到, 转JT0 MOV R2,#00H ;到了,R2清零 INC R3 ;秒单元+1CJNE R3,#60,JT0 ;60s到了吗? 没到, 转JT0 MOV R3,#00H ;到了, 秒单元清零 INC R4 ;分单元+1CJNE R4,#60,JT0 ;60min到了吗? 没到, 转JT0 MOV R4,#00H ;到了, 分单元清零 INC R5 ;时单元+1CJNE R5,#24,JT0 ;24h到了吗? 没到, 转JT0 MOV R5,#00H ;时单元清零JT0: MOV 30H

38、,R3MOV 31H,R4 MOV 32H,R5MOV R6,#03 ;二-十进制转换程序 MOV R0,#32H MOV R1,#45H JT1:MOV B,#10 MOV A,R0 DIV AB MOV R1,A DEC R1 MOV A,BMOV R1,A DEC R1 DEC R0 DJNZ R6,JT1 CLR RS0POP A ;恢复现场 RETI ;中断返回DTOB: SETB RS0 ;十-二进制转换程序MOV R6,#03 MOV R0,#32H MOV R1,#45H JT2:MOV B,#10 MOV A,R1 MUL AB DEC R1 ADD A,R1 MOV R0,

39、A DEC R1 DEC R0 DJNZ R6,JT2 MOV R3,30H MOV R4,31H MOV R5,32H MOV R2,#00 CLR RS0 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0CFHEND第四章 调试4.1 软 件 调 试软件调试的任务是利用应用软件(如WAVE 软件 进行仿真调试,是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。程序运行后编辑,查看程序是否有逻辑的错误。运用WAVE (伟福)软件编译自己设计的汇编程序,检验程序。发现程序中的语

40、法错误与逻辑错误并加以排除纠正。注意运用WAVE 软件保存文件时的后缀名用(.ASM )。仿真结果如下: 4.2 proteus 仿 真 软 件 的 应 用PROTEUS 软件是由英国Labcenter electronics公司开发的一款电子设计软件,它是目前能对CPU 芯片及其外围电路进行完整仿真的计算机设计分析软件。在使用Proteus 进行仿真调试时,可以从实物的角度直接观看电路运行的结果(而不是某条语句或存储器的内容),从某种意义上讲,proteus 解决了理论设计与动手制作相互脱节的重大问题。在本次设计中,正是由于这款软件的使用,大大提高了设计的效率,缩短了设计的周期。Proteu

41、s 仿真软件无疑是单片机开发者掌握单片机开发技术的绝好的入门工具。 仿真结果数码管能显示“时”,“分”,“秒”,蜂鸣器也能响。系统初步达到了设计的要求。在仿真的过程中每个管脚旁边会出现一个小方块,红色的方快表示高电平,蓝色的表示低电平。通过方快颜色的变化可以很方便地知道每个管脚电平的变化,从而能对系统的运行有更直观的了解,这对程序的调试有很大的帮助 Protues 仿真电路图如下: 4.3性能分析按照设计程序分析,LED 显示器动态扫描频率在实际观察时没有闪烁。由于即使中断程序中加了中断延时误差处理,所以实际计时精度很高,可以满足多种场合的应用需要。小 结面临毕业,我在学校的最后一门功课(毕业

42、设计)也即将完成。毕业设计是对我们整个大学阶段所学的所有专业课程的一次综合性考核。我做的是用AT89C51单片机设计具有闹钟等功能的数字显示计时系统。这次数字显示计时系统的设计,使得我对单片机理论知识有了进一步的了解。学习了三年,这次设计是对我们三年所学东西的检验,提高了我们的综合能力,具体来说提高了我们的自学能力,独立分析,解决问题的能力以及动手进行实验的能力。同时也对所学知识进行有效的巩固,根据设计任务,提出参考书目,让我们自己自学,对于设计中可能遇到的重点与难点,通过分析与老师的详细讲解,启发了我们的思考,帮助我们掌握自学的方法,起到了很好的效果。让我们在设计实践中锻炼能力,在整个设计过

43、程中方老师也引导我们明确了设计的要求以及现实这些要求的方法。鼓励我们开动脑筋,大胆探索,充分发挥我们的主观能动型与创造型。时间安排上,能使我们有效的去钻研比较难的问题,也通过每组的同学的交流与讨论确定最后的方案,方老师也定期负责检查我们所设计的情况,并提出相关问题,以及帮助我们解决在设计过程中疑难的问题,直到设计出合格的电路。通过这次数字钟的设计制作,我们将从书本上学到的知识应用于实践,提高了一些电子电路仿真设计能力, 虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对自己自身专业素质的一种提高。当最终调试成功的时候也是对自己的一种肯定。此次的设计作业不仅增强了自己在专业设计方面的信

44、心,鼓舞了自己,更是一次兴趣的培养,为自己以后的学习方向的明确了重点。 另外在这次实验中我们遇到了不少的问题针对不同的问题我们采取不同的解决方法,最终一一解决设计中遇到的问题。在我们遇到不懂的问题时,利用网上的资源,搜索查找得到需要的信息。和同学之间相互讨论,明白了团队合作的重要性。这次的制作也让我们感受到,我们在电子方面学到的只是很小的一部分知识,我们需要更多的时间来学习知识,学习技术。在软件编程方面,我在这方面学到很多很多的东西,我为了搞懂一则程序可以一天不出宿舍,就算是这样,我也知道自己所学到的东西太少,但我还是很感谢这次设计,感谢我的的指导老师方老师,还有同组同学,是老师的指导和同学一

45、起的努力才有了这一份收获。参 考 文 献:(1)王效华 张咏梅 主编:单片机原理与应用 2009年1月第4次印刷 (2)楼然苗 李光飞 主编:单片机课程设计指导 2008年3月 (3)李珍. 单片机原理与控制技术. 北京:清华大学出版社,2002(4)皮红梅,李英顺. 单片机开发中的定时方法. 沈阳:石油化工高等专科学校学报,2002年12月(5)张友德. 单片微型机原理、应用与实践. 上海:复旦大学出版社,1992 (6)汪敏,凌阳.16位单片机实验与实践. 北京: 北京航空航天大学出版社,2007 (7)夏继强, 邢春香. 单片机应用设计培训教程实践篇. 北京:北京航空航天大学出版社,20

46、08附录A 源程序主程序清单:ORG 0000H ;中断入口地址AJMP MAINORG 000BH ;T0中断AJMP T0INTMAIN: MOV SP,#70H ;设置堆栈指针MOV R6,#06H ;显示缓冲区清零MOV R1,#45HS0:MOV R1,#00HDEC R1DJNZ R6,S0MOV TMOD,#01H ;T0为工作方式1MOV TH0,#0BH ;设T0计数初值MOV TL0,#0DCHSETB RS0 ;选择工作区1MOV R2,#00H ;相关寄存器清零MOV R3,#00HMOV R4,#00HMOV R5,#00HCLR RS0 ;选择工作区0MOV R1,

47、#45H ;显缓区首指针送R1SETB TR0 ;开T0S S1: LCALL DISP ;调用显示程序LCALL KEYBOARD ;调用按键处理程序MOV R2, 35H ;判断是否有定时时间CJNE R2, #0, NTMOV R2, 34HCJNE R2, #0, NTMOV R2, 33HCJNE R2, #0, NTSJMP BBNT: MOV A, 35HCJNE A, 32H, BB ;判断定时时间到否MOV A, 34HCJNE A, 31H, BBMOV A, 33HCJNE A, 30H, BBCLR P3.7 ;时间到发出报警SJMP SS1BB: SETB P3.7S

48、JMP SS1按键处理(当前)时间程序清单KEYBOARD: NOPKEY: MOV R4,#04H ;调显示程序S1: LCALL DISPDJNZ R4,S1SETB P0.0JB P0.0,KEY ;P0.0(SET键 为高电平吗? 是, 转KEY MOV R4,#0AH ;否, 调显示延时消抖 S2: LCALL DISPDJNZ R4,S2SETB P0.0JB P0.0,KEY ;P0.0为高电平吗? 是, 转KEY CLR TR0 ;否, 关T0 JNB P0.0,$ ;等待键释放 MOV 20H,R1 ;R1送闪烁显示单元20H MOV R2,#00 ;LED位数单元R2清零

49、KEY1: LCALL DISP_2 ;调闪烁显示程序 MOV P0,#0FFHMOV A,P0CPL AJZ KEY1KEY2: JNB ACC.0,KEY3 ;P0.0(SET键 按下吗? 否, 转KEY3 JNB P0.0,$ ;是, 等待键释放 DEC R1 ;R1-1INC R2 ;R2+1CJNE R2,#06,L13 ;R2=6吗? 否, 转L13 MOV R1,#45H ;是, 重新开始调位 MOV R2,#00L13:MOV 20H,R1 ;R1送闪烁显示单元20H SJMP KEY1KEY3: JNB ACC.2,KEY4 ;P0.2(+1键 按下吗? 否, 转KEY4 J

50、NB P0.2,$MOV A,R1CJNE R1,#45H,L1 ;是小时的十位吗? 否, 转L1 CJNE A,#02,LL ;十位为2吗? 否, 转LL SJMP KEY5L1: CJNE R1,#44H,L2 ;是小时的个位吗? 否, 转L2 MOV R4,45HCJNE R4,#02,L101 ;十位为2吗? 否, 转L101CJNE A,#03,LL ;是, 个位为3吗? 否, 转LL SJMP KEY5L101: CJNE A,#09,LL ;个位为9吗? 否, 转LLSJMP KEY5L2: CJNE R1,#43H,L3 ;是分钟的十位吗? 否, 转L3 CJNE A,#05,

51、LL ;是, 十位为5吗? 否, 转LL SJMP KEY5L3: CJNE R1,#42H,L4 ;是分钟的个位吗? 否, 转L4 CJNE A,#09,LL ;是, 个位为9吗? 否, 转LL SJMP KEY5L4: CJNE R1,#41H,L5 ;是秒钟的十位吗? 否, 转L5 CJNE A,#05,LL ;是, 十位为5吗? 否, 转LL SJMP KEY5L5: CJNE R1,#40H,L6 ;是秒钟的个位吗? 否, 转L6 CJNE A,#09,LL ;是, 个位为9吗? 否, 转LL KEY5: MOV R1,#00H ;R1单元内容清零SJMP KEY1LL: INC A

52、 ;做+1处理MOV R1,AL6: SJMP KEY1KEY4: JNB ACC.3,L6 ;P0.3(RET键 按下吗? 否, 转L6 JNB P0.3,$ ;是, 等待键释放MOV R1,#45HACALL DTOB ;调十-二进制转换程序SETB TR0 ;开T0LJMP KEY按键处理(闹钟)时间程序清单KEYBOARD: NOPKEY: MOV R4,#04H ;调显示程序S1: LCALL DISPDJNZ R4,S1SETB P0.2JB P0.1,KEY ;P0.1(ALM键 为高电平吗? 是, 转KEY MOV R4,#0AH ;否, 调显示延时消抖S2: LCALL DI

53、SPDJNZ R4,S2SETB P0.1JB P0.1,KEY ;P0.1为高电平吗? 是, 转KEY CLR TR0 ;否, 关T0JNB P0.0,$ ;等待键释放MOV 20H,R1 ;R1送闪烁显示单元20HMOV R2,#00 ;LED位数单元R2清零KEY1: LCALL DISP_2 ;调闪烁显示程序MOV P0,#0FFHMOV A,P0CPL AJZ KEY1KEY2: JNB ACC.1,KEY3 ;P0.1(ALM键 按下吗? 否, 转KEY3 JNB P0.1,$ ;是, 等待键释放DEC R1 ;R1-1INC R2 ;R2+1CJNE R2,#06,L13 ;R2

54、=6吗? 否, 转L13MOV R1,#45H ;是, 重新开始调位MOV R2,#00L13:MOV 20H,R1 ;R1送闪烁显示单元20H SJMP KEY1KEY3: JNB ACC.2,KEY4 ;P0.2(+1键 按下吗? 否, 转KEY4 JNB P0.2,$MOV A,R1CJNE R1,#45H,L1 ;是小时的十位吗? 否, 转L1 CJNE A,#02,LL ;十位为2吗? 否, 转LL SJMP KEY5L1: CJNE R1,#44H,L2 ;是小时的个位吗? 否, 转L2 MOV R4,45HCJNE R4,#02,L101 ;十位为2吗? 否, 转L101 CJN

55、E A,#03,LL ;是, 个位为3吗? 否, 转LL SJMP KEY5L101: CJNE A,#09,LL ;个位为9吗? 否, 转LL SJMP KEY5L2: CJNE R1,#43H,L3 ;是分钟的十位吗? 否, 转L3 CJNE A,#05,LL ;是, 十位为5吗? 否, 转LL SJMP KEY5L3: CJNE R1,#42H,L4 ;是分钟的个位吗? 否, 转L4 CJNE A,#09,LL ;是, 个位为9吗? 否, 转LL SJMP KEY5L4: CJNE R1,#41H,L5 ;是秒钟的十位吗? 否, 转L5 CJNE A,#05,LL ;是, 十位为5吗?

56、否, 转LL SJMP KEY5L5: CJNE R1,#40H,L6 ;是秒钟的个位吗? 否, 转L6 CJNE A,#09,LL ;是, 个位为9吗? 否, 转LL KEY5: MOV R1,#00H ;R1单元内容清零 SJMP KEY1LL: INC A ;做+1处理 MOV R1,AL6: SJMP KEY1KEY4: JNB ACC.3,L6 ;P0.3(RET键 按下吗? 否, 转L6 JNB P0.3,$ ;是, 等待键释放MOV R1,#45HACALL DTOB ;调十-二进制转换程序 SETB TR0 ;开T0LJMP KEY显示程序清单DISP: MOV DPTR,#TAB ;显示程序MOV R0,#45HMOV B,#0FEHMOV R5,#06HDIP1: MOV P2,#0FFH ;关显示MOV A,R0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论