基于单片机的数字钟课程设计(共40页).doc
《基于单片机的数字钟课程设计(共40页).doc》由会员分享,可在线阅读,更多相关《基于单片机的数字钟课程设计(共40页).doc(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上摘 要 单片计算机即单片微型计算机。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。本设计是通过单片机设计一个多功能电子表,要求不仅具有电子时钟的功能还具有闹铃、设定闹铃时间、整点报时、生日提醒功能,而且能够预置生日时间关键字:单片机;多功能电子表;跑表;数码管显示。专心-专注-专业ABSTRACTSingle chip computer is the sing
2、le chip computer. By RAM, ROM, CPU constitute, time, count and multiple interface in the integration of micro controller. Its small size, low cost, the function is strong, widely used in intelligent industry and industrial automation. And 51 series microcontroller is the most typical and various mic
3、rocontroller most representative one. This curriculum design through to its study, application, thus achieved the study, design, development, soft and hard ability. This is designed by SCM design a multi-functional electronic watch, requirement not only has the function of electronic clock still has
4、 alarm, set alarm time, integral point to announce, birthday reminds function, and can preset birthday time Key word: SCM, Multi-function digital watches, PaoBiao; Digital pipe display. 目 录摘 要0ABSTRACT0目 录1引言21、 AT89S52单片机介绍32、设计功能及说明63、整体设计方案84、单模块流程设计及程序设计84.1初始化模块84.2 开关检测模块94.3显示主程序94.4闹铃及整点报时判断
5、程序(EIGHT)114.5中断(TO)计时程序114.6中断(T1)预置程序114.7中断(INT0)设定程序125、单模块软件测试125.1编码中常用的程序结构说明125.2 单模块软件测试中的问题及解决146、软件部分烧写调试145、总结16致谢17参考文献:18附录A19附录B:19引言 1957年,Ventura发明了世界上第一个电子表,从而奠定了电子表的基础,电子表开始迅速发展起来。现代的电子表是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活不可缺
6、少的工具。 现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。1、 AT89S52单片机介绍 AT89S52 具有以下标准功能:8k 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路
7、。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 图 1.1 单片机引脚图VCC : 电源 GND: 地P0 口:P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TTL 逻辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下,P0 具有内部上拉电阻。在 flash
8、 编程时,P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校时,需要外部上拉电阻。P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0 和 P1.2 分别作定时器/计数器 2 的外部计数输入(P1.0/T2)和时器/计数器 2的触发输入(P1.1/T2EX),具体如下表所示。表1.1 AT89S52 P1口第二功能表脚号第二功能P1.0T2(定时器/计数器 T
9、2 的外部计数输入),时钟输出P1.1T2EX(定时器/计数器 T2 的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX DPTR)时,P2 口送出高八位地址P3 口:P3 口是一个具有
10、内部上拉电阻的 8 位双向 I/O 口,p2 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表所示。表1.2 AT89S52 P3口第二功能表脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断 0)P3.3INT0(外部中断 0)P3.4T0(定时器 0 外部输入)P3.5T1(定时器 1 外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外
11、部数据存储器写选通)RST: 复位输入。晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在 flash 编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。PS
12、EN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从 0000H 到 FFFFH 的外部程序存储器读取指令,EA 必须接 GND。为了执行内部程序指令,EA 应该接 VCC。在 flash 编程期间,EA 也接收 12 伏 VPP 电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2、设计功能及说明电子数字钟实现的主要功能: 实现正常走时(秒分时日
13、月年进位) 能够预置时间和日期 能够自动区分平闰年和大小月 具有闹铃及设定闹铃时间功能 具有整点报时功能 具有生日提醒功能,能够预置生日时间 在任何一种预置状态下,预置项目会闪烁显示其它设计说明: 优先级:预置闹铃报时生日提醒正常显示,即预置状态下闹铃、报时功能及生日提醒功能都无效 生日时间到五个数码管显示“HAPPY” 生日显示状态下,按下中断INT0恢复正常显示且此后只有在下更改生日日期或第二年生日显示才有效。 正常显示状态下按下中断INT0进入预置状态,再按一次恢复。 用数码管(K0,K1)控制显示状态:00:时间,01:闹铃时间,10:日期,11。生日时间且显示样板如下图所示:生日:6
14、 月1 日生日,最 闹铃:于早晨6 点10 分响,最后后两位bd 为birthday 的缩写 一位为一表示使能有效。日期:08 年2 月29 日 时间:12 点39 分45 秒 预置由拨码开关K2/K3/K4分别控制数码管12/34/56显示值,预置优先级:LED34LED12LED56(相应数码管显示的项目,显示状态下才能预置) 整点报时声音为59分51、53、55、57秒的后半秒报四声低音, 59秒的后半秒报一声高音 闹铃每次响一分钟 不论是预置状态还是正常走时状态均能够自动区分平闰年和大小月 闹铃使能由拨码开关K5控制并实时显示3、整体设计方案系统硬件电路根据系统功能可知,需要六个数码管
15、,一个外部中断INT0,一个扬声器,由此结合单片机课程学习中对实验面板的了解,做出如下电路:图 3.1系统硬件电路图如图,晶振频率12MHz,拨码开关数值由P0口读入;P2口的输出作为控制数码管的段控信号,经74LS573即8位数据锁存器接到数码管中。数码管采用共阴接法(图中未标示);P1.0-P1.5作为数码管的位控信号出端;开关W2经一个基本RS锁存器接入INT0,每按一次开关INTO取反次,按两次输入一个下降沿;扬声器由P1.6口控制。4、单模块流程设计及程序设计在完成了系统总流程设计后,便进入到了系统设计中工作量最大的模块流程设计。由于系统模块划分虽然是系统设计的基础,但比较简单而且模
16、块划分有多种方法,因此单模块的设计可以认为是本程序中最关键的部分。单模块设计的好坏与否决定了系统功能能否被稳定地实现以及下一阶段调试程序的难度。鉴于单模块设计的重要性,我在设计中并不急于对模块进行编码,而是反复论证模块的可行性和流程图,为下一阶段的工作做好准备,同时也能够尽早发现系统模块划分的错误,加以解决。4.1初始化模块初始化模块包含了各中断的跳转语句、存储资源的分配、各存储器和寄存器的赋值以及中断及计时器的状态设置。源程序中共使用了17字节的内部数据存储地址,其中包含3字节位寻址地址以便于进行位判断。三字节的位寻址地址分配如下:22H秒的存储地址,方便对整点报时条件进行判断23H月的存储
17、地址,方便对大小月平闰年进行判断另外一个位寻址字节00H地址拆开用做程序状态标志位00H(bit,BS)生日标志位,到生日那天为 1 使程序转入生日显示段01H(bit,SS)预置标志,以INT0控制其值,控制预置闪烁的实现02H(bit,GS)闪烁标志,在预置标志有效时控制闪烁项目的亮和灭两状态03H(bit,FC)频率控制,在整点报时时控制产生低音还是高音04H(bit,NB)忽略生日标志,控制预置及报时的优先级高于生日显示05H(bit)控制生日信号的有效与否,其使用目的参见调试过程源程序中使用了两个寄存器R1、R0,R1用于控制闪烁的间隔时间, R0用于显示延时。在初始化模块中设定了中
18、断的优先级、定时计数器的工作模式、并打开了定时计数器TO开始计时其他资源分配项目参见源程序集合及注释。初始化模块指令很大一部分都是伪指令,方便了后面程序的编写。4.2 开关检测模块开关检测模块主要执行两个任务:读取闹铃使能控制拨码开关K5的值并赋予闹铃使能相应值;读取显示选择开关(K0,K1)的值并将要显示的项目值送入显示缓存LED12、LED34、LED56当k5为1时将A1H送入RE反之送入A1H,其中A为“”的字型码查表偏移量。当显示生日日期时,将生日Birthday的缩写“bd”的字型码送入显示缓存 LED56。图 4.1开关检测流程图4.3显示主程序显示主程序是程序中最复杂的模块,实
19、现的功能也最多,占用了程序运行过程当中90%以上的执行时间。流程图中由判断SS(预置信号)开始分成两个分支,当SS=1,即预置状态下程序进入预置闪烁部分。图 4.2 显示主程序流程图预置闪烁的优先级是:LED34LED12LED56即同预置优先级相同(参见调试部分的详细说明)闪烁首先判断是否对LED34进行判断闪烁,如果是则另外两个显示值直接显示,否则判断是否对LED12进行闪烁,如果是则直接显示LED56的值,只有当前两个显示值都不闪烁的时候,才判断是否对LED56进行闪烁,这样就确保了每次只有一个显示值闪烁。预置通过GS标志位判断预置的亮/灭,由R1控制每50轮显示对GS取反一次。当SS=
20、0时进入判断闹铃/报时及正常显示模块,模块EIGHT(参见其说明)对闹铃及报时条件进行判断,符合条件则对P1.6取反一次并使NB(忽略生日)有效,此时行对BS(生日标志)的判断,即使响铃优先级高于生日显示(其实也可以对程序进行修改使响铃和生日显示不发生冲突,修改方法参见程序优化)。当不响铃并且生日标志BS有效时显示HAPPY其单列开来。本程序由生日标志BS控制,当到达生日时间时,T0中断程序会将BS置1使之有效在显示主程序中通过判断BS的置来控制是否执行本模块标志BS有效时显示HAPPY其单列开来。本程序由生日标志BS控制,当到达生日时间时,T0中断程序会将BS置1使之有效在显示主程序中通过判
21、断BS的置来控制是否执行本模块4.4闹铃及整点报时判断程序(EIGHT)在显示主程序中每隔一段时间调用一次本程序来实现闹铃及报时功能。符合闹铃条件时,每调用一次本程序对P1.6取反一次,调节调用的时间间隔便可以调节报时的输出频率。在主程序中设置每完成对一个数码管的显示变调用一次本程序,显示一个数码管的时间大约为1ms,因此响铃频率高音约为500Hz,低音约为250Hz。程序判断闹铃使能RE后分成两个分支,当RE=A1时判断闹铃条件是否满足,满足则对P1.6取反一次,否则跳转判断整点报时条件是否满足。当RE=0时,直接怕暖整点报时条件是否满足。判断整点报时条件时当当前时间满足:(MIN=59)(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 课程设计 40
限制150内