数字钟毕业设计_第1页
数字钟毕业设计_第2页
数字钟毕业设计_第3页
数字钟毕业设计_第4页
数字钟毕业设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、毕毕 业业 设设 计(论计(论 文)文) 设 计(论文)题 目:数 字 钟 系别:电 子 工 程 系 专业:通信技术 班级: 05 通 信(1)班 姓名: 学号: 指导教师: 完成时间: 目录 论文目录论文目录1 摘要摘要 2 第一章第一章绪绪 论论 第一节课题简介3 第二节系统功能要求3 第二章第二章设计方案设计方案 第一节设计功能3 第二节实现功能方法4 第三节方案论证5 第三章第三章硬件设计分析硬件设计分析 第一节硬件框图5 第二节数字钟电路原理图6 第三节硬件分析6 第四章第四章软件设计软件设计 第一节单片机汇编语言8 第二节系统主要程序设计8 第三节数字钟汇编语言源程序11 第五章第

2、五章检测与调试检测与调试 第一节硬件调试17 第二节软件调试17 第六章第六章心得体会心得体会18 附录:附录: 参考文献参考文献19 1 摘要摘要 :近年来随着计算机在社会领域的渗透和大规模集成电路的 发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积 小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合 于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器, 仪表,数据采集, 军工产品以及家用电器等各个领域,单片机往往是 作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用 对象特点的软件结合,以作完善。本次做的数字钟是以单片机 (AT89C51) 为核心,

3、 结合相关的元器件 (LED 数码显示器时钟芯片、 等功能模块) ,再配以相应的软件,其硬件电路设计主要包括中央处 理单元电路、时钟电路、信号处理电路等几部分组成。 关键字关键字 :单片机电子时钟 AT89C51闹铃 2 第一章第一章绪绪 论论 第一节第一节课题简介课题简介 该产品介绍一个采用 AT89C51 单片机芯片制作的 “数码显示电子钟” , 该 LED 数码管时钟电路采用 24 小时计时方式,时、分、秒用六位数码管显示。该电路 采用 AT89C51 单片机,使用桥式整流电流电路和变压器将交流电转化为直流电, 其具有电路简单、制作容易、设置方便、使用灵活等优点。 第二节第二节系统功能要

4、求系统功能要求 1.1.本电路采用的内部振荡器方式,晶体振荡器频率为12MHZ,具有较高的频率稳 定性,且延时采用数字计数的方式进行,因而对时间的控制、精度较高,可有效 地控制时间不准、不可靠的问题出现。 2.2.初始加电时, 显示初始状态, 本电路的 6 位数码显示管将自动显示出程序默认 的时间,只要不进行新的时间设置,数码管将从初始状态起计时。本程序的初始 状态设为 00:00:00。 3.3.本电路允许用户随时通过闪烁和加 1 的功能来输入和设置新的时间参数, 范围 在 1S 和 24H 之间任意调试,使用户可以根据自身的需求来进行不同的时间来设 置. 4.4.当调时进行完毕后,数码管显

5、示将根据程序的要求自动加入 1S 秒两位累计加 到六十时,向分位进一;分两位累计加到六十时,向时位进一;当时两位累计加到 二十三,且分位为五十九秒位为五十九时,十位分位秒位自动归零.并且具有整点 报时功能. 5.5.本电路的外接电源可用 5V 直流电池电源,可以将交流电压转变成直流电,简单 方便. 6.6.在进行时间参数的设置和整个显示过程中系统采用六位数码管做”时位分位 秒位”来计时显示,直观又准确. 第二章第二章设计方案设计方案 随着社会科技文化的发展,电子、电脑技术的不断提高,许多电路都有了不 同的设计方案及连接方法。相同的产品用不同的系统也能用不同的原理去制成。 数字钟作为一个普通的生

6、活用品, 有多种不同的制作方案。虽然数字钟比较 简单,但作为我初次实验设计方案,对于我们初学者来说还是很有帮助的。 在制作数字钟电路时, 我选择了二种使用设计方案。第一种是用上述所说的 单片机(AT89C51)制作的。第二种主要是用 JK 触发器制作的。 第一节第一节设计功能设计功能 为了达到本次设计的要求,有众多方法可以选择,如:运用电子电路设计就 是其中一种。才用大量门元件组成数字钟电路,但因条件有限,再加上其十分烦 琐、焊接复杂、精度不高,达不到本次设计的目的,故不采用。为了达到实现 LED 显示器的数字显示,可采用动态显示法和静态显示法。由于静态显示法需 要数据锁存器等硬件, 接口又稍

7、微复杂一些, 而本身此次设计时钟显示只有六位, 并且系统本身又没有其它什么繁重的处理任务,所以决定采用动态扫描法实现 LED 的显示。设计中单片机采用容易购买的 AT89C51系列,单片机就具有足够 3 的空余硬件资源实现其它的扩展功能,如果考虑到要采用电池供电的话,则可采 用其它适合型号的单片机,在软件方面,通过程序的编制,可以很快的通过运用 伟福软件进行修改,大大的提高了工作效率,程序灌输也很迅速。 第二节第二节实现功能方法实现功能方法 第一种方案(见原理图) IC1 1 2 3 4 5 6 7 8 1 5 1 4 S1 1 2 1 3 S2 9 1 9 1 8 VCCS3 R3 C31

8、7 1 6 RXD TXD ALE/P PSEN P1 0 P1 1 P1 2 P1 3 P1 4 P1 5 P1 6 P1 7 T1 T0 INT 0 INT 1 RE SET X1 X2 P0 0 P0 1 P0 2 P0 3 P0 4 P0 5 P0 6 P0 7 3 9 3 8 3 7 3 6 3 5 3 4 3 3 3 2 A1 A2 A3 A4 A5 A6 A7 A8 A1 A2 A3 A4 A5 A6 A7 A8 1 2 3 4 5 6 7 8 DP Y a a b cf b g d ee c d f d p g d p DP Y_ 7 -S EG_ DP A11 A22 A33

9、 A44 A55 A66 A77 A88 DP Y a a b cf b g d ee c d f d p g d p DP Y_ 7 -S EG_ DP A11 A22 A33 A44 A55 A66 A77 A88 a b c d e f g d p DP Y a f e g d b c d p VCC R1 A11 A22 A33 A44 A55 A66 A77 A88 R2 DP Y_ 7 -S EG_ DP DP Y a a b cf b g d ee c d f d p g d p DP Y_ 7 -S EG_ DP A11 A22 A33 A44 A55 A66 A77 A88

10、DP Y a a b cf b g d ee c d f d p g d p DP Y_ 7 -S EG_ DP A11 A22 A33 A44 A55 A66 A77 A88 DP Y a a b cf b g d ee c d f d p g d p DP Y_ 7 -S EG_ DP EA/VP P2 0 P2 1 P2 2 P2 3 P2 4 P2 5 P2 6 P2 7 3 1 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 1 0 1 1 3 0 2 9 B1 B2 B3 B4 B5 B6 B1 B2 B3 B4 B5 B6 VCC RD WR R4 VCC C1

11、R5 X1 C2 第一种方案的特点比较明显: (1)可靠性高 (2)性能价格比高 (3)操作简便(4)才用 AT89C51 单片机系统相对的比前者的集成化程度更 高。而基本的功能和元器件在电路的设计方案和功能要求中会详细说明。 两种电路方案相比较之下,前者的方案虽然价格不是很贵,也比较实用、精确。 但其电子元件相对多了很多(例如仅是触发器就有 13 个之多) 。 使得电路的焊接 就显得非常困难。在短期的实践中就会显得比较仓促。更重要的一点就是当今社 会的发展趋势是更趋向于高度的集成化。 所以我选择了后者即单片机控制时数码 管显示电路。这个方案不仅电路简单,也更符合发展的趋势,将高度的集成化融

12、入实践中更具实际意义。 第二种方案:如下图所示: 4 第二种方案的设计思路:首先,应有一种秒脉冲产生器,由石英体振荡器产生的 基准信号,经过整形和分频获得。秒脉冲经过秒计数器(60 进制)可以累计秒 脉冲数,而秒计数器输出的分脉冲计数器(60 进制)累计分钟数。同样,分计 数器输出的脉冲经计数器(24 进制)可累计时分数。这些时、分、秒计数通过 译码器和显示器显示。最后需要考虑校时电路。 这种设计方案中主要用到的是 JK 触发器。采用 8421 码异步工作方式。计 数方式则采用 60 进制与 24 进制。60 进制就是 10 进制与 6 进制的串联组合。24 进制则采用 40 进制的组合, 通

13、过适当的反馈去掉多余的 16 个状态形成 24 进制。 10 进制中用到了 4 个 JK 触发器,驱动方程: J3=Q2Q1J3=Q2Q1J2=1J2=1J1=Q3J1=Q3J0=1J0=1 K3=1K3=1K2=1K2=1K1=1K1=1K0=1K0=1 6 进制中用到了 3 个 JK 触发器,驱动方程: J2=Q1J2=Q1J1=Q2J1=Q2J0=1J0=1 K2=1K2=1K1=1K1=1K0=1K0=1 各级译码和显示电路都是由 5Y8 译码器和 YS13-3 八段式荧光数码管组成。 工作原理就是把脉冲的数累加起来,并把个触发器的不同状态选给 5Y8 进行译 码。译码器译出来的译码再

14、进到数码管,使其相应的字码发光,从而直接显示出 来。 最后则是一个校时电路(如前图) (1)调分、调秒电路:可接开关K1(调时) 、K2(调分) 、K3(调秒) 。引入脉 冲或 0.2 秒脉冲调至新校数字为止。 (2)报时清零电路:有单脉冲产生电路(由按钮开关 K4 和基本触发器构成) 组成报时清零电路。 第三节第三节方案论证方案论证 从上面几种方案可以看出, 利用单片机所设计的数字钟要比采用电子电路所 设计的数字钟有明显的优越性。 利用 AT89C51单片机控制的硬件电路比较简单, 软件方面程序也不复杂。因此,制作原理简单,可在功能作用上要比电子电路设 计的数字钟精确广泛,方便小巧又通俗易懂

15、。在本次设计采用单片机设计中,动 态扫描显示法又有静态扫描法无法比拟的优点,故本次设计采用了以 AT89C51 为核心,利用其外部电路和数码管的动态扫描的设计思想。 第三章第三章硬件设计分析硬件设计分析 第一节第一节硬件框图硬件框图 5 复位电路 CPU 8051 蜂鸣器 数码显示 段码输出 按键闪烁和加 1 第二节第二节数字钟电路原理图数字钟电路原理图 位码输出 IC1 1 2 3 4 5 6 7 8 15 14 S1 12 13 S2 9 19 18 VCCS3 R3 C317 16 RXD TXD ALE/P PSEN P10 P11 P12 P13 P14 P15 P16 P17 T1

16、 T0 INT0 INT1 RESET X1 X2 P00 P01 P02 P03 P04 P05 P06 P07 39 38 37 36 35 34 33 32 A1 A2 A3 A4 A5 A6 A7 A8 A1 A2 A3 A4 A5 A6 A7 A8 1 2 3 4 5 6 7 8 DPY a a b cf b g d ee c d f dp g dp DPY_7-SEG_DP A1 1 A2 2 A3 3 A4 4 A5 5 A6 6 A7 7 A8 8 DPY a a b cf b g d ee c d f dp g dp DPY_7-SEG_DP A1 1 A2 2 A3 3 A

17、4 4 A5 5 A6 6 A7 7 A8 8 DPY a a b cf b g d ee c d f d p g d p VCC R1 A1 1 A2 2 A3 3 A4 4 A5 5 A6 6 A7 7 A8 8 R2 DPY_7-SEG_DP DPY a a b cf b g d ee c d f dp g dp DPY_7-SEG_DP A1 1 A2 2 A3 3 A4 4 A5 5 A6 6 A7 7 A8 8 DPY a a b cf b g d ee c d f dp g dp DPY_7-SEG_DP A1 1 A2 2 A3 3 A4 4 A5 5 A6 6 A7 7 A8

18、 8 DPY a a b cf b g d ee c d f dp g dp DPY_7-SEG_DP EA/VP P20 P21 P22 P23 P24 P25 P26 P27 31 21 22 23 24 25 26 27 28 10 11 30 29 B1 B2 B3 B4 B5 B6 B1 B2 B3 B4 B5 B6 VCC RD WR R4 VCC C1 R5 X1 C2 第三节第三节硬件分析硬件分析 (一)工作过程(一)工作过程 本电路采用的是 AT89C51单片机,使用 5V 电池供电,使用三个开关就可以 进入调时、省电(不显示 LED 数码管)和正常显示三种状态。数码管的时钟

19、设 计电路如原理图所示,其采用 AT89C51 单片机最小应用动态扫描方式实现。P1 口输出段码数据,P3.0P3.5 口作为扫描输出,P3.7 口接按钮开关。为了给 LED 数码管提供足够的驱动电流,用三极管 9012 做电源的驱动输出。为了提高秒计 时的精确性,因而采用了 12MHZ 的晶振。SET 为复位操作键,在此接 10UF 电 解电容,按键开关和 10K 电阻,实现复位操作键 SET 时,六位数码管显示 00: 00:00,即从新开始计时,外接晶体引脚XTAL1 和 XTAL2 分别接石英晶体 12MHZ 两端,再并联 2 个 30PF 电容接地,它是单片机的反相放大器的输入和输出

20、端, 构成了片内振荡器。 单片机在时钟电路工作以后,在 RST 端持续给出 2 个机器周 6 期的高电平就可以完成复位操作。访问片内程序存储器的控制信号时需在 EA/VP 上接皆 V 电源,因为当它为高电平时,单片机访问片内程序存储器 4KB。 (二)数值计算和电阻取值(二)数值计算和电阻取值 如图所示 5V LEDLEDLEDLEDLED LED LEDLED 假设 LED 数码显示器八段全亮,则集成极电流 Ics 为 240mA,基极与发射极之 间的电压 2 伏,则基极电流 Ib=U/R,即为(5-2)/R,又因为集电极电流为共射 电流放大系数 B 与基极电流之积,即 Ic=BIb,当(5

21、-2)/R240mA/B 时,PNP 工作 在饱和区,即 R(5-2)*B/240.因此,在此电路中,我们取电阻阻值为 100,使 PNP 工作在饱和区.具体计算如下 U1=2V Ics=240Ma Ib=U/R=(5-2)/R Ic= Ib Ib=Ic/ (5-2)/R240mA/ R(5-2)* /240 =100 R=100 ( (三三) )元件清单元件清单 名称型号规格数量 单片机 AT89C51 1 LED 数码显示管 SM4105 6 电阻 RES2,100 7 RES2,10K 1 RES2,4.7K 6 三极管 9012 6 有极性电容 ELECTR01,10UF 1 7 无极

22、性电容 CAP,30PF 2 石英晶体 CRYSTAL,12MHZ 1 按键开关 SW-PB 3 蜂鸣器 1 第四章第四章软件设计软件设计 第一节第一节 单片机汇编语言单片机汇编语言 自从 1946 世界上第一台数字电子计算机问世以来, 计算机应用领域不断扩 大,计算机技术高速发展,尤其是近几年来计算机的硬件和软件日新月异。作为 应用计算机的一种程序设计语言,也得到了不断的充实和完善。 由于构成计算机的电子器件的特性所决定,计算机只能识别二进制代码。 这种以二进制代码来描述指令功能代码的语言,称之为机器语言。用机器语言组 成的程序, 称为目标程序。计算机就是按照机器语言的指令来完成各种功能操作

23、 的,它具有程序简洁,占有存储空间小,执行速度快,控制功能强等特点。由于 机器语言只是一种二进制数 0、1 组成的代码。人们不易识别、记忆和书写,因 此使用不便,易错,也很难用它来进行程序设计。 为了既能体现机器语言的特点,又便于人们的理解、记忆和书写,计算机 常采用助记符来编写指令。 助记符是根据机器指令不同的功能和操作对象来描述 指令的。由于它采用有关英文的缩写来描述指令的特征,因此不但便于记忆,也 便于理解和分类。这种采用助记符和其他一些符号所编写的指令程序,称为汇编 语言源程序。 只要经过汇编就可将源程序变成计算机可执行的目标程序。但要注 意的一个问题是, 汇编语言与计算机的类型有关,

24、 不同的机器要完成同样的功能。 他们的助记符, 即英文的缩写有可能不同。因此对不同的机器要掌握不同的汇编 语言助记符,使用很不方便。 单片机程序存储器中存储程序或常数表格,都是以二进制形式存放的机器 语言程序, 要把用助记符编制的汇编语言源程序翻译成二进制目标程序有两种途 径:一种是利用单片机开发装置或PC 机,用配有的汇编程序工具把汇编语言源 程序编译成目标程序;另一种是人工翻译。 第二节第二节 系统主要程序设计系统主要程序设计 显示缓冲单元在 70H75H,70H71H 显示秒,72H73H 显示分,74H 75H 显示时;时间计数单元在 70H71H(秒) ,76H77H(分) ,78H

25、79H (时) ,74H 单元放熄灭符(#0AH) ;计数单元采用 BCD 码计数,定时器 T0 设 置为 50ms 溢出中断,为秒计数用,定时器 T1 为调整时闪烁用 P3.7 为调整按钮,P1 口为字符输出口,采用共阳显示管。 1主程序:从本设计的主程序流程图中可以看出,当按下复位开关 SET 时,显示单元开始清零,将 T0、T1 设为 16 位计数器模式。此时允许 T0 中断, 然后调用子程序, 如果此时 P3.7 口为零, 即输入为低电平, 表示此时复位键 SET 已经按下,即可进入调时程序进行时间设置。如若P3.7 口不为零,为1,即高电 平,则程序返回到显示子程序,继续执行,进行时

26、间加 1S,如此循环。 8 N 开始开始 显示单元清显示单元清 0 0 T1T1,T0T0 设为设为 1616 计数器模式位计数器模式位 允许允许 T0T0 中断中断 调用显示子程序调用显示子程序 P3.7=0?P3.7=0? Y 进入调试程序进入调试程序 2显示子程序: 数码管的显示的数据存放在内存单元 70H75H 中,其中 70H71H 存放 秒数据,72H73H 存放分数据,74H75H 存放时数据。每一单元内均为十进 制 BCD 码。由于采用软件动态扫描实现数据显示功能,显示用十进制 BCD 码 数据的对应码段存放在 ROM 表中。显示时,先取出70H75H 某一地址中的数 据, 然

27、后查它的对应的显示用码段从 P1 口输出。 P3 口将对应的数码管选种供电, 这样就能显示地址单元的数据值。 3 3定时器 T0 中断服务程序: 这是本次时钟设计的关键,也是重中之重。定时器 T0 的作用是用来进行时 间计时。定时溢出中断周期设为50ms ,中断累计达 20 次,即1s 钟时对秒计时单 元的数据进行加 1 操作。在执行 T0 中断服务程序时采用了 BCD 码计数,满 60 9 进位。具体分析见下图: N N N T0T0 中断中断 保护现场保护现场 1 1 秒到?秒到? 秒单元加秒单元加 1 1 = =6060 秒?秒? 秒单元清秒单元清 0 0,分加,分加 1 1 =60=6

28、0 分?分? N N 分单元清分单元清 0 0,时加,时加 1 1 =24=24 小时?小时? 时单元清时单元清 0 0 恢复现场,中断返回恢复现场,中断返回 10 4调时程序调时程序是本次设计的一个重点,也是一个难点,因此,此 次设计对调时程序作了较为详细的分析。 调时功能程序的设计方法是: 按下按钮, 若按下时时间小于 1S,进入省电状态(数码管不亮,时钟不停) ,否则进入调分 状态,等待操作,此时计时器停止走动。当再次按下按钮时,若按下时间小于 0.5s,则时间加 1 分钟;若按下时间大于 0.5s,则进入小时调整状态。在小时调 整状态下,当按键按下的时间大于 0.5s 时退出调整状态,

29、时钟继续走动。 第三节第三节数字钟汇编语言源程序数字钟汇编语言源程序 ; ; ;中断入口程序 ; ; ; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号 START 执行 ORG 0003H ;外中断 0 中断程序入口 RETI ;外中断 0 中断返回 ORG 000BH ;定时器 T0 中断程序入口 LJMP INTT0 ;跳至 INTTO 执行 ORG 0013H ;外中断 1 中断程序入口 RETI ;外中断 1 中断返回 ORG 001BH ;定时器 T1 中断程序入口 LJMP INTT1 ;跳至 INTT1 执行 ORG 0023H ;串行中断程序入口地址

30、 RETI ;串行中断程序返回 ; ; ; 主 程 序 ; ; ; START: MOV R0,#70H ;清 70H-7AH 共 11 个内存单元 MOV R7,#0BH ; CLEARDISP: MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清 20H(标志用) MOV 7AH,#0AH ;放入熄灭符数据 MOV TMOD,#11H ;设 T0、T1 为 16 位定时器 MOV TL0,#0B0H ;50MS 定时初值(T0 计时用) MOV TH0,#3CH ;50MS 定时初值 MOV TL1,#0B0H ;50MS

31、定时初值(T1 闪烁定时用) MOV TH1,#3CH ;50MS 定时初值 11 SETB EA ;总中断开放 SETB ET0 ;允许 T0 中断 SETB TR0 ;开启 T0 定时器 MOV R4,#14H ;1 秒定时用初值(50MS20) START1: LCALL DISPLAY ;调用显示子程序 JNB P3.7,SETMM1 ;P3.7 口为 0 时转时间调整程序 SJMP START1 ;P3.7 口为 1 时跳回 START1 SETMM1: LJMP SETMM ;转到时间调整程序 SETMM ; ; ; 1 秒计时程序 ; ; ;T0 中断服务程序 INTT0: PU

32、SH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关 T0 中断允许 CLR TR0 ;关闭定时器 T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低 8 位初值修正 MOV TL0,A ;重装初值(低 8 位修正值) MOV A,#3CH ;高 8 位初值修正 ADDC A,TH0 ; MOV TH0,A ;重装初值(高 8 位修正值) SETB TR0 ;开启定时器 T0 DJNZ R4, OUTT0 ;20 次中断未到中断退出 ADDSS: MOV R4,#14H ;20 次中断到(1 秒)重赋初值 MOV R0,#71H

33、;指向秒计时单元(71H-72H) ACALL ADD1 ;调用加 1 程序(加 1 秒操作) MOV A,R3 ;秒数据放入 A(R3 为 2 位十进制数组合) CLR C ;清进位标志 CJNE A,#60H,ADDMM ; ADDMM: JC OUTT0 ;小于 60 秒时中断退出 ACALL CLR0 ;大于或等于 60 秒时对秒计时单元清 0 MOV R0,#77H ;指向分计时单元(76H-77H) ACALL ADD1 ;分计时单元加 1 分钟 MOV A,R3 ;分数据放入 A CLR C ;清进位标志 CJNE A,#60H,ADDHH ; ADDHH: JC OUTT0 ;

34、小于 60 分时中断退出 ACALL CLR0 ;大于或等于 60 分时分计时单元清 0 MOV R0,#79H ;指向小时计时单元(78H-79H) ACALL ADD1 ;小时计时单元加 1 小时 MOV A,R3 ;时数据放入 A CLR C ;清进位标志 12 CJNE A,#24H,HOUR ; HOUR: JC OUTT0 ;小于 24 小时中断退出 ACALL CLR0 ;大于或等于 24 小时小时计时单元清 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移 MOV 73H,77H ;入对应显示单元 MOV 74H,78H ; MOV 75H,79H ;

35、POP PSW ;恢复状态字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放 T0 中断 RETI ;中断返回 ; ; ;闪动调时 程 序 ; ; ;T1 中断服务程序,用作时间调整时调整单元闪烁指示 INTT1: PUSH ACC ;中断现场保护 PUSH PSW ; MOV TL1, #0B0H ;装定时器 T1 定时初值 MOV TH1, #3CH ; DJNZ R2,INTT1OUT ;0.3 秒未到退出中断(50MS 中断 6 次) MOV R2,#06H ;重装 0.3 秒定时用初值 CPL 02H ;0.3 秒定时到对闪烁标志取反 JB 02H,FLASH1 ;0

36、2H 位为 1 时显示单元熄灭 MOV 72H,76H ;02H 位为 0 时正常显示 MOV 73H,77H ; MOV 74H,78H ; MOV 75H,79H ; INTT1OUT: POP PSW ;恢复现场 POP ACC ; RETI ;中断退出 FLASH1: JB 01H,FLASH2 ;01H 位为 1 时,转小时熄灭控制 MOV 72H,7AH ;01H 位为 0 时,熄灭符数据放入分 MOV 73H,7AH ;显示单元(72H-73H) ,将不显示分数据 MOV 74H,78H ; MOV 75H,79H ; AJMP INTT1OUT ;转中断退出 FLASH2: M

37、OV 72H,76H ;01H 位为 1 时,熄灭符数据放入小时 MOV 73H,77H ;显示单元(74H-75H) ,小时数据将不显示 MOV 74H,7AH ; MOV 75H,7AH ; AJMP INTT1OUT ;转中断退出 ; 13 ; ;加 1 子 程 序 ; ; ; ADD1: MOV A,R0 ;取当前计时单元数据到 A DEC R0 ;指向前一地址 SWAP A ;A 中数据高四位与低四位交换 ORL A,R0 ;前一地址中数据放入 A 中低四位 ADD A,#01H ;A 加 1 操作 DA A ;十进制调整 MOV R3,A ;移入 R3 寄存器 ANL A,#0FH

38、 ;高四位变 0 MOV R0,A ;放回前一地址单元 MOV A,R3 ;取回 R3 中暂存数据 INC R0 ;指向当前地址单元 SWAP A ;A 中数据高四位与低四位交换 ANL A,#0FH ;高四位变 0 MOV R0,A ;数据放入当削地址单元中 RET ;子程序返回 ; ; ;清零程序 ; ; ;对计时单元复零用 CLR0: CLR A ;清累加器 MOV R0,A ;清当前地址单元 DEC R0 ;指向前一地址 MOV R0,A ;前一地址单元清 0 RET ;子程序返回 ; ; ;时钟调整程序 ; ; ;当调时按键按下时进入此程序 SETMM: CLR ET0 ;关定时器

39、T0 中断 CLR TR0 ;关闭定时器 T0 LCALL DL1S ;调用 1 秒延时程序 JB P3.7,CLOSEDIS ;键按下时间小于 1 秒,关闭显示(省电) MOV R2,#06H ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许 T1 中断 SETB TR1 ;开启定时器 T1 SET2: JNB P3.7,SET1 ;P3.7 口为 0(键未释放) ,等待 SETB 00H ;键释放,分调整闪烁标志置 1 SET4: JB P3.7,SET3 ;等待键按下 14 LCALL DL05S ;有键按下,延时 0.5 秒 JNB P3.7,SETHH ;按下时间大于 0.5

40、 秒转调小时状态 MOV R0,#77H ;按下时间小于 0.5 秒加 1 分钟操作 LCALL ADD1 ;调用加 1 子程序 MOV A,R3 ;取调整单元数据 CLR C ;清进位标志 CJNE A,#60H,HHH ;调整单元数据与 60 比较 HHH: JC SET4 ;调整单元数据小于 60 转 SET4 循环 LCALL CLR0 ;调整单元数据大于或等于 60 时清 0 CLR C ;清进位标志 AJMP SET4 ;跳转到 SET4 循环 CLOSEDIS:SETB ET0 ;省电(LED 不显示)状态。开 T0 中断 SETB TR0 ;开启 T0 定时器(开时钟) CLO

41、SE: JB P3.7,CLOSE ;无按键按下,等待。 LCALL DISPLAY ;有键按下,调显示子程序延时削抖 JB P3.7,CLOSE ;是干扰返回 CLOSE 等待 WAITH: JNB P3.7,WAITH ;等待键释放 LJMP START1 ;返回主程序(LED 数据显示亮) SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态) SETHH1: JNB P3.7,SET5 ;等待键释放 SETB 01H ;小时调整标志置 1 SET6: JB P3.7,SET7 ;等待按键按下 LCALL DL05S ;有键按下延时 0.5 秒 JNB P3.7,SETOUT

42、;按下时间大于 0.5 秒退出时间调整 MOV R0,#79H ;按下时间小于 0.5 秒加 1 小时操作 LCALL ADD1 ;调加 1 子程序 MOV A,R3 ; CLR C ; CJNE A,#24H,HOUU ;计时单元数据与 24 比较 HOUU: JC SET6 ;小于 24 转 SET6 循环 LCALL CLR0 ;大于或等于 24 时清 0 操作 AJMP SET6 ;跳转到 SET6 循环 SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键释放 LCALL DISPLAY ;延时削抖 JNB P3.7,SETOUT ;是抖动,返回 SETOUT 再

43、等待 CLR 01H ;清调小时标志 CLR 00H ;清调分标志 CLR 02H ;清闪烁标志 CLR TR1 ;关闭定时器 T1 CLR ET1 ;关定时器 T1 中断 SETB TR0 ;开启定时器 T0 SETB ET0 ;开定时器 T0 中断(计时开始) LJMP START1 ;跳回主程序 SET1: LCALL DISPLAY ;键释放等待时调用显示程序(调分) 15 AJMP SET2 ;防止键按下时无时钟显示 SET3: LCALL DISPLAY ;等待调分按键时时钟显示用 AJMP SET4 SET5: LCALL DISPLAY ;键释放等待时调用显示程序(调小时) A

44、JMP SETHH1 ;防止键按下时无时钟显示 SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用 AJMP SET6 SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待 AJMP SETOUT ;防止键按下时无时钟显示 ; ; ;显示程序 ; ; ; 显示数据在 70H-75H 单元内,用六位 LED 共阳数码管显示,P1 口输出段码数 据,P3 口作 ; 扫描控制,每个 LED 数码管亮 1MS 时间再逐位循环。 DISPLAY: MOV R1,#70H ;指向显示数据首址 MOV R5,#0FEH ;扫描控制字初值 PLAY: MOV A,R5 ;

45、扫描字放入 A MOV P3,A ;从 P3 口输出 MOV A,R1 ;取显示数据到 A MOV DPTR,#TAB ;取段码表地址 MOVC A,A+DPTR ;查显示数据对应段码 MOV P1,A ;段码放入 P1 口 LCALL DL1MS ;显示 1MS INC R1 ;指向下一地址 MOV A,R5 ;扫描控制字放入 A JNB ACC.5,ENDOUT ;ACC.5=0 时一次显示结束 RL A ;A 中数据循环左移 MOV R5,A ;放回 R5 内 AJMP PLAY ;跳回 PLAY 循环 ENDOUT: SETB P3.5 ;一次显示结束,P3 口复位 MOV P1,#0

46、FFH ;P1 口复位 RET ;子程序返回 TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;共阳段码表 012 34567 89不亮 ; ; ;延时程序 ; ; ; ;1MS 延时程序,LED 显示程序用 DL1MS: MOV R6,#14H DL1: MOV R7,#19H 16 DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET ;20MS 延时程序,采用调用显示子程序以改善 LED 的显示闪烁现象 DS20MS: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY RET

47、 ;延时程序,用作按键时间的长短判断 DL1S: LCALL DL05S LCALL DL05S RET DL05S: MOV R3,#20H ;8 毫秒*32=0.196 秒 DL05S1: LCALL DISPLAY DJNZ R3,DL05S1 RET END ;程序结束 第五章第五章检测与调试检测与调试 第一节第一节硬件调试硬件调试: 硬件调试是利用开发系统、基本测试仪器(万用表、示波器)等,检查用户 系统硬件中存在的故障。 硬件调试可分为静态调试和动态调试两步进行: 静态调试静态调试:静态调试是在用户系统未工作时的一种调试。 步骤如下: 第一步:目测。检查外部的各种元件或者是电路是否

48、有断点。 第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,在检测各种电 源线与接地线之间是否有短路现象。 第三步:加点检测。给电路板加电,检测所有的插座或者是硬件的电源是否符合 要求的植。 第四步:联机检查。应为只有单片机开发系统才能完成对用户系统的调试。 动态调试:动态调试: 动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在 的器件内部故障、元器件失效或一些逻辑错误等的一种硬件检查。 第二节第二节软件调试软件调试: : 软件调试是通过对用户程序的汇编、 连接、 执行来发现程序中存在的语法错 误与逻辑错误并加以排除纠正的过程。 程序运行后编辑, 查看是否有逻辑的错误。 直到都没有错误后,我们就可以生成 HEX 文本,然后将程序灌到芯片中,最后, 将芯片安装到硬件电路中去,插上电源进行调试,看电路是否能按工作原理正常 运行。 17 第六章第六章

温馨提示

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

评论

0/150

提交评论