版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成人高等教育 毕业设计论文题 目 学 院 广东工业大学继续教育学院专 业 年 级 姓 名 指导教师 2021年4月广东工业大学继续教育学院制 基于单片机的电铃控制系统的设计 前言21世纪是信息技术蓬勃开展的世纪,单片机技术的应用及开展就是其中之一。自20世纪70年代问世以来,以极其高的性能价格比受到人们的重视和关注,所以应用很广,开展很快,目前已形成了多公司、多系列、多型号的局面。单片机的优点是体积小,重量轻,抗干扰能力强,控制能力强,扩展灵活,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。结合单片机的开展,我国的很多技术工程人员根据自己的工作需要开发出许
2、多拥有自主知识产权的单片机应用产品,推动了我国生产力的开展。但是单片机的应用意义远不限于它的应用范畴或由此带来的经济效益,更重要的是它已从根本上改变了传统的电子设计方法和控制策略,使科学上先前无法实现的理论技术得以实现并转化为现实的生产力,推动社会的前进,改善人们的生活,是技术开展史上的一次革命,是科技开展史上一座重要的里程碑。它们广泛存在于如下多个方面:智能仪器仪表、工业控制、家用电器、计算机网络和通信领域、医用设备领域。此外,单片机在工商、金融、科研、教育、国防航空航天等领域都有着十分广泛的用途。我们日常生活中看到的MP3、 、数码照相机、智能洗衣机、智能冰箱、高科技电视机等都是单片机应用
3、的典型例子。学生在校期间虽然系统的学习了有关单片机方面的知识,但由于缺乏实践锻炼的时机,对单片机没有一个深刻的理性的认识和理解,更不用说进行单片机的研究和开发了。为了能使学生在校期间更系统、更全面、更理性的掌握单片机的知识及应用,所以在毕业设计选题中参加了和单片机相关的一些课题,基于单片机作息时间控制系统的设计就是其中之一。 目 录一 绪 论1.1 课题的提出及意义1.2 设计要求根本要求发挥局部二 硬件设计2.2 AT89S52单片机 AT89S52引脚图2.4.1 LED显示器简介2.4.2 LED静态显示法接口设计2.4.3 LED动态显示法接口设计指令时序 软件设计 主程序设
4、计 子程序设计三 系统安装与调试3.1 系统构建33.1.2 制作PCB3.1.3 安装元器件3.2 硬件调试3.3 软件调试四 总 结致 谢参 考 文 献 摘要本文主要介绍了如何利用单片机设计一个作息时间控制系统。首先,对系统进行深入理解,包括系统的可行性、实用性等,然后确定设计方案。方案确定后,进行硬件设计,其中包括利用Protel绘制原理图和PCB以及实物的制作。最后,进行软件设计。在软件设计的时候,先用仿真软件在PC机上调试,然后在电路板上进行功能验证和完善。通过此课题的设计,学会利用单片机开发小型的应用系统。本设计通过单片机内部的定时器进行1S定时,利用8位七段LED数码显示器显示时
5、间,显示格式为:时-分-秒,最大计时时间为23-59-59。在计时的时候,将当前时间和定时时间比拟,如果相等,就铃响5s。由于定时计数存在误差,所以需要不定期调整时间。在调时的时候,调整单元开始闪烁,利用键盘输入调整时间。 【关键词】:单片机;作息时间控制; Protel;调整 ABSTRACTThis article mainly introduced how to design a daily schedule control system using the SCM. First, understand the system deeply,including the feasi
6、bility、practicality and so on,then determined the design proposal. After that, design the hardware, including uses the Protel plan schematic diagram and the PCB board as well as the material object manufacture. Finally, design the software. In software design, use the simulation software to debug on
7、 PC machine first, then confirm and improve the function in the self-made circuit board. Through this topic's design, learn to develop small application system using the SCM.This design carries on 1S through the SCM internal timer fixed time, uses 8 the LED numerical code monitor tell time, the
8、display format is hour-minute-second, the biggest time is 23-59-59. When timing, compare current time with fixed time, if is equal, makes a sound 5s on the bell. Because there is fixed time counts error, therefore requires the non-periodical time. In timing time, the adjustment unit does not stop th
9、e twinkle, uses the keyboard entry time. 【Key words】: SCM ;Rest time control; Protel; Debugging 一 绪 论1.1 课题的提出及意义 单片机作息时间控制系统是在数字电子钟的根底上,添加了电铃控制电路和音响控制电路,使其具有时钟、定闹等多重功能的一个小型的智能化系统。此系统可以实现对时间的智能化控制,摆脱了传统的由人来控制时间的长短的不便,可广泛应用在学校、工厂和机关的自动打铃、计时、路灯及室内照明和其他对象控制,因此具有广阔的市场和良好的经济效益。通过此次设计,我们要掌握以下方面
10、的知识:(l) 单片机的原理及应用。(2) Protel软件的使用。(3) 作息时间控制系统的原理和实现方法。此外,通过该课题的设计,要到达提高我们综合能力的目的,如综合应用所学知识能力、资料查询能力、计算机应用能力、语言表达能力、论文撰写能力等,尤其是要提高我们单片机应用技术的实践操作技能和利用单片机进行科技革新、开发和创新的根本能力,同时使我们初步掌握单片机应用系统设计、研制的方法。特别是如果我们毕业以后从事与单片机相关的工作,这就可以大大缩短我们在未来工作岗位上的适应期,使我们尽快在工作中担当主角,发挥我们
11、的作用。根本要求 1根本计时和显示功能(用12小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示。 2能设置当前时间(含上、下午,时,分) 3能实现根本打铃功能,规定:4设计能正常工作的一个单片机最小硬件系统,外围电路包括设置键盘,LCD或LED的显示器;上午6:00起床铃:打铃5秒、停2秒、再打铃5秒。下午10:30熄灯铃:打铃5秒、停2秒、再打铃5秒。铃声可用小喇叭播放
12、,但凡用到铃声功能的均按此处理发挥局部 1增加整点报时功能,整点时响铃5秒,要求有控制启动和关闭功能。 2增加调整起床铃、熄灯铃时间的功能。 3增设上午4节课的上下课打铃功能,规定如下: 730 上课,820下课:830上课,920下课;940 上课,1030下课;1040上课,1130下课;每次铃声5秒。二
13、硬件设计系统框图要设计一个系统,我们必须的先做大量的准备工作,比方市场调研、系统分析、资料查阅等,完成这些后我们在着手开始设计,就会事半功倍。利用单片机做作息时间控制系统就是单片机里非常经典的应用之一。作息时间控制系统从总体来分,可以分为两局部,控制核心和外围电路。控制核心为单片机,外围电路主要包括显示电路、键盘电路、复位电路、时钟电路等。确定了系统的大体形式之后,画出其结构布局,系统框图如图1.1所示。 硬件系统总体框图2.2 AT89S52单片机目前,在国内市场上MCS-51系列占据着主流地位,与其兼容的产品应用最广,应用开发的公司也最多,其中之一就是Atmel公司生产的AT89系列单片机
14、。结合作息时间控制系统的要求、本钱的因素以及单片机的性能,本次设计选用ATMEL公司的AT89S52单片机。下面对其详细介绍一下。功能特性AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。 AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件
15、可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 AT89S52引脚图AT89S52与AT89C51 的引脚一样,也有PDIP、PLCC、TQFP等多种封装形式,其典型引脚配置采用的是40只引脚的双列直插封装PDIP方式,如图1.2所示。目前大多数为此类封装方式。 图1.2 AT89S52单片机引脚图引脚功能 下面结合图1.2来介绍各引脚的功能。1电源引脚1 Vcc40脚:主电源正端,接+5V电源。2
16、60; Vss20脚:主电源负端,接地2) 时钟引脚两个时钟引脚XTAL1、XTAL2外接晶体与片内的反相放大器构成了一个振荡器,它为单片机提供了时钟控制信号。2个时钟引脚也可外接晶体振荡器。 1XTAL119脚:片内高增益反向放大器的输入端。接外部石英晶体和电容的一端。假设使用外部输入时钟,该引脚必须接地。2XTAL218脚:片内高增益反向放大器的输出端。接外部石英晶体和电容的另一端。假设使用外部输入时钟,该引脚作为外部输入时钟的输入端。 3控制引脚此类引脚提供控制信号,有的引脚还具有复用功能。1RST/VpD(9脚):RST(RESET)是复位信号输入端,高点平有效
17、。当振荡器运行时,在此引脚输入最少两个机器周期以上的高电平,将使单片机复位。复位后的那平静将从程序计数器PC=0000H地址开始执行程序。对HMOS工艺的单片机此引脚还有备用电源VPD功能。该引脚接上备用电源,在Vcc掉电期间,可以保持片内RAM的数据不丧失的。2ALE/PROG(30脚):当访问外部程存储器或数据存储器时,ALE地址锁存允许输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能存放器SFR区中的8EH单元的D0位置位
18、,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。3PSTN29脚:程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令或数据时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。4EA/Vpp31脚:片内程序存储器屏蔽控制端,低电平有效。当EA保持低电平时,将屏蔽片内的程序存储器,只访问片外程序存储器。当EA保持高电平时,执行片内程序存储器,但在PC值超过0FFFH或1FFFH时,将自动转向执行片外程
19、序存储器内的程序。Vpp为本引脚的第二功能。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。4I/O口引脚1P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址低8位和数据总线复用,在访问期间激活内部上拉电阻。2P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路。对端口写“1,通过内部的上拉电阻
20、把端口拉到高电平,此时可作输出口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。与AT89S51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入P1.0/T2和输入P1.1/T2EX,参见下表。引脚号功能特性T2定时/计数器2外部计数脉冲输入,时钟输出T2EX定时/计数2捕获/重装载触发和方向控制3P2口:P2是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路。对端口P2写“1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输
21、出一个电流。在访问外部程序存储器或16位地址的外部数据存储器例如执行MOVXDPTR指令时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器如执行MOVXRI指令时,P2口输出P2锁存器的内容。4P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动吸收或输出电流4个TTL逻辑门电路。对P3口写入“1时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,还具有的第二种功能,如下表所示。端口引脚第二功能RXD(串行输入口)TXD(串行输出口)INTO(外中断0)INT1(外中断1)TO(定时/计
22、数器0)T1(定时/计数器1)WR(外部数据存储器写选通)RD(外部数据存储器读选通) 键盘局部在单片机应用系统中,除了复位键有专门的复位电路以及专一的复位功能以外,其他的按键或键盘都是以开关状态来控制功能或输入数据的。键盘有两种根本类型:编码键盘和非编码键盘。编码键盘本身除了按键以外,还包括产生键码的硬件电路。这种键盘使用非常方便,但价格相对较高。非编码键盘是靠软件来识别键盘上的闭合键,由此计算出编码。非编码键盘几乎不需要附加硬件逻辑,在单片机应用系统中被普遍使用。本设计中也
23、是采用非编码键盘。键盘工作原理1按键的分类按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键、磁感应按键等。前者造价低,后者寿命长。目前,微机系统中常用的是第一类。按照接口原理可分为编码键盘与非编码键盘两类,两类键盘的区别是键符识别及给出相应键码的方法。 2键输入原理当所设置的功能键复位键单独或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入并检查是哪一个键按下,将该键号送入累加器ACC,然后
24、通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。3按键结构与特点微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。抖动时间的长短与开关的机械特性有关,一般为510ms。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是屡次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予
25、以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。软件上采取的措施是:在检测到有按键按下时,执行一个10ms左右具体时间应视所使用的按键进行调整的延时程序后,再确认该键电平是否仍保持闭合状态电平,假设仍保持闭合状态电平,那么确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。4按键编码一组按键或键盘都要通过I/O口线查询按键的开关状态。根据键盘结构的不同,采用不同的编码。无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。独立式键盘独立式按键是指各按键相互独立地接通一条输入数据线,
26、这是最简单的键盘结构,该电路为查询方式电路。当任何一个键按下时,与之相连的输入数据线即被清0(低电平),而平时该线为1(高电平)。要判别是否有键按下,用单片机的位处理指令十分方便。这种键盘结构的优点是电路简单;缺点是当键数较多时,要占用较多的I/O线。 行列式键盘为了减少键盘与单片机接口时所占用I/O线的数目,在键数较多时,通常都将键盘排列成行列矩阵形式。下面就说明一下行扫描法识别哪一个按键被按下的工作原理。首先判别键盘中有无键按下,由单片机I/O口向键盘送(输出)全扫描字,然后读入(输入)列线状态来判断。方法是:向行线输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读
27、入累加器A中。如果有按键按下,总会有一根列线电平被拉至低电平,从而使列输入不全为1。判断键盘中哪一个键被按下是通过将行线逐行置低电平后,检查列输入状态实现的方法是:依次给行线送低电平,然后查所有列线状态,称行扫描。如果全为1,那么所按下的键不在此行;如果不全为1,那么所按下的键必在此行,而且是在与零电平列线相交的交点上的那个键。1行扫描法识别键号值的工作原理将第0行变为低电平,其余行为高电平时,输出编码为1110。然后读取列的电平,判别第0行是否有键按下。在第0行上假设有某一按键按下,那么相应的列被拉到低电平,那么表示第0行和此列相交的位置上有按键按下。假设没有任一条列线为低电平,那么说明0行
28、上无键按下。将第1行变为低电平,其余行为高电平时,输出编码为1101。然后通过输入口读取各列的电平。检测其中是否有变为低电平的列线。假设有键按下,那么进而判别哪一列有键按下,确定按键位置。将第2行变为低电平,其余行为高电平时,输出编码为1011。判别是否有哪一列键按下的方法同上。将第3行变为低电平,其余行为高电平时,输出编码为0111。判别是否有哪一列键按下的方法同上。在扫描过程中,当发现某行有键按下,也就是输入的列线中有一位为0时,便可判别闭合按键所在列的位置,根据行线位置和列线位置就能判断按键在矩阵中的位置,知道是哪一个键按下。2) 键盘扫描工作过程1判断键盘中是否有键按下;2进行行扫描,
29、判断是否键按下,假设有,那么调用延时子程序去抖动;3)读取按键的位置码;(4)将按键的位置码转换为键值键的顺序号0、1、2、F。显示局部 显示器是计算机的主要输出设备,它把运算结果、程序清单等以字符的形式显示出来,以供用户查阅。目前常用的显示器有数码管显示器LED显示器、液晶显示器LCD显示器和CRT显示器等,本设计中采用的是LED显示器。下面就相信介绍LED显示器的结构和工作原理。 LED显示器简介1) 数码管结构数码管由8个发光二极管以下简称字段按“日字形排列构成,其中7个发光二极管组成“日字形的笔画段,另一个发光二极管为圆点形状。通过不同的组合可用来显示数字0 9、字符A F、H、P等、
30、符号“-及小数点“.。数码管又分为共阴极和共阳极两种结构。2) 数码管工作原理共阳(阴)极数码管的8个发光二极管的阳极阴极连接在一起。通常,公共阳阳极接高低电平,其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低高电平时,那么该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。注:二极管阳阴极为二极管正负端,高电平一般指接电源,低电平一般指接地。3) 数码管字形编码当某一二极管导通时,相应的字段发亮。这样,假设干个二极管导通,就构成了一个字符。在共阴极数码管中,导通的二极
31、管用“1表示,其余的用“0表示。这些“1,“0数符按一定的顺序排列,就组成了所要显示字符的显示代码。例如,对于共阴极数码管来说,阳极排列顺训为h、g、f、c、e、d、c、b、a。这样,字符1的显示代码为0000010,字符F的显示代码为011110001,用十六进制表示分别为06H和71H。假设要显示某一个字符,就在二极管的阳极按显示代码加以高电平,阴极加低电平即可。 LED静态显示法接口设计所谓静态显示,就是每一个显示器各笔画段都要独占具有锁存功能的输出口线,CPU把欲显示的字形代码送到输出口上,就可以使显示器显示所需的数字或符号,此后,即使CPU不再去访问它,因为各笔画段接口具有锁存功能,
32、显示的内容也不会消失。静态显示法的优点是显示程序十分简单,显示亮度大,由于CPU不必经常扫描显示器,所以节约了CPU的工作时间。但是其主要缺点是占用的I/O口线较多,硬件本钱较高。所以静态显示法常用在显示器数目较少的应用系统中。 LED动态显示法接口设计动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线公共阴极或阳极由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出
33、相应的段码。依此规律循环,即可使各位数码管显示将要显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。采用动态显示方式比拟节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。本设计显示电路采用简单实用的8位共阳LED数码管,段码由P0口输出,用74LS244驱动;位码由P2口输出,用PNP三极管驱动。复位电路复位操作复位是单片机的初始化操作。其功能主要是将程序计数器PC初始化为0000H,使程序从0000H单元开始执行,并将特殊功能存放器赋一
34、些特定值。复位是上电的第一个操作,然后程序从0000H开始执行。在运行中,外界干扰等因素可能会使单片机的程序陷入死循环状态或“跑飞。要使其进入正常状态,唯一方法是将单片机复位,以重新启动。4复位也是使单片机退出低功耗工作方式而进入正常状态一种操作。复位电路 RST引脚是复位端,高电平有效。在读引脚输入至少连续两个机器周期以上的高电平,单片机复位。RST引脚内部有一个施密特ST触发器以对输入信号整形,保证内部复位电路的可靠,所以外部输入信号不一定要求是数字波形。使用时,一般在此引脚与Vss引脚之间接上一个约8.2K的下拉电阻,与Vcc引脚之间接一个约10uF的电解电容,即可保证上电自动复位。复位
35、电路如图1.3所示。 上电复位 按键复位图1.3复位电路电容C和电阻R1实现上电自动复位功能。增加按键开关SW和阻值R1又可实现按键复位功能。该电阻的作用是在按键开关按下时,防止电容放电电流过大烧坏开关的触点。应保证R2/R1>10。一般取C=10uF,R1=100,R2=8.2K。时钟电路单片机的时钟一般需要多相时钟,所以时钟电路由振荡器和分频器组成。振荡电路MCS-51内部有一个用于构成振荡器的可控高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2 。在片外跨接一晶振和两个匹配电容C1、C2,,就构成一个自激振荡器。振荡频率根据实际要求
36、的工作速度,从几百千赫至24MHz可适中选取某一频率。匹配电容C1、C2要根据石英晶体振荡器的要求选取。当晶振频率为12MHz时,C1、C2一般选30pF左右。 指令时序振荡器产生的时钟脉冲经脉冲分配器,可产生多相时序。图1.5 时序发生器框图1振荡周期:为单片机提供时钟信号的振荡源的周期。2时钟周期:是振荡源信号经二分频后形成的时钟脉冲信号。 3机器周期:通常将完成一个根本操作所需的时间称为机器周期。4指令周期:是指CPU执行一条指令所需要的时间。一个指令周期通常含有14 个机器周期。单片机执行每一条指令,都是按照严格的时序进行的。 软件设计简要说明:实现24小时制电子钟,8位数码
37、管显示,显示时分秒 显示格式:23-59-59小时十位如果为0那么不显示 到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:P3.7 打铃方式分起床、熄灯铃和上、下课铃两种 系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮 调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁 增加键ADD_KEY:P1.1;按一次使选中位加1
38、0; 减少键DEC_KEY;P1.2;按一次使选中位减1 如果长按ADD_KEY或DEC_KEY,识别后那么进行调时快进,此时停止闪烁 如果选中位是秒,那么按增加键或减少键都是将秒清零 强制打铃键DALING_KEY:P1.3;用来强制打铃或强制关闭铃声 P0口输出数码管段选信号,P2口输出数码管位选信号。晶振12MHZ 主程序设计 本设计中计时采用定时器T0中断完成。主控程序循环调用显示子程序、键盘处理程序和闹铃判断子程序。显示子程序将最新的时、分、
39、秒的数据转换为数字数据并显示在七段显示器上。键盘处理程序判断端口是否有键按下,如果有键按下,就转入相应的功能程序。闹铃判断子程序检查当前时间和所设置的时间是否相等,如果相等就响铃5s。图1.4为主程序控制的工作流程图。主程序流程图:开始初始化打铃时间比拟打铃判断、执行显示按键检测正常走时状态有键按下吗?获取键值按键处理图1.6 子程序设计 定义蜂鸣器电铃控制信号输出口 ORG 0000H 程序入口地址 LJMP START ORG 000BH
40、160; 定时器0中断入口地址 LJMP TIMER_0 ORG 0300H/*程序开始,初始化*/ START: SETB BEEP 关闭蜂鸣器电铃 SETB 48H 使用一个bit位用于调时闪烁标志 SETB 47H 使用一个bit位用于产生脉冲用于调时快进时基 CLR 45H
41、;关闭响铃方式1标志 CLR 44H 关闭响铃方式2标志 MOV R1,#0 调整选择键功能标志:0正常走时、1调时、2调分、3调秒 MOV 20H,#00H 用于控制秒基准时钟源的产生 MOV 21H,#00H 清零秒存放器 MOV 22H,#00H 清零分存放器 MOV 23H,#00H 清零
42、时存放器 MOV 24H,#00H 用于控制调时闪烁的基准时钟的产生 MOV IP,#02H IP,IE初始化 MOV IE,#82H MOV TMOD,#01H 设定定时器0工作方式1 MOV TH0,#3CH MOV TL0,#0B0H 赋定时初值,定时50ms SETB TR0
43、60; 启动定时器0 MOV SP,#40H 重设堆栈指针/*主程序*/ MAIN: CJNE R1,#00H,MAIN1 是否为正常走时状态 LCALL BIJIAO1 调用起床、熄灯打铃比拟子程序 LCALL BIJIAO2 调用上、下课打铃比拟子程序 LCALL DALING1 调用响铃方式1执行子程序 LCALL
44、 DALING2 调用响铃方式2执行子程序MAIN1: LCALL DISPLAY 调用显示子程序 LCALL KEY_SCAN 调用按键检测子程序 JZ MAIN 无键按下那么返回重新循环 LCALL SET_KEY 调用选择键处理子程序 JB 46H,MAIN 如果已进行长按调整调时快进,那么不再执行下面的
45、单步调整 LCALL ADD_KEY 调用增加键处理子程序 LCALL DEC_KEY 调用减少键处理子程序 LCALL DALING_KEY 处理强制打铃/强制关闭铃声键 LJMP MAIN 重新循环 /*定时中断效劳程序*/ TIMER_0: PUSH ACC PUSH PSW 保
46、护现场 MOV TH0,#3CH MOV TL0,#0B0H 重新赋定时初值 CPL 47H 产生脉冲用于调时快进时基 INC 24H MOV A,24H CJNE A,#10,ADD_TIME 产生0.5秒基准时钟,用于调时闪烁 CPL 48H
47、; 取反调时闪烁标志位 MOV 24H,#00HADD_TIME: INC 20H MOV A,20H CJNE A,#20,RETI1 产生1秒基准时钟 MOV 20H,#00H 一秒钟时间到,清零20H MOV A,21H ADD A,#01H DA A
48、60; ;作十进制调整 MOV 21H,A CJNE A,#60H,RETI1 MOV 21H,#00H 一分钟到 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,RETI1 MOV 22H,#00H 一小时到 MOV A,23H ADD
49、A,#01H DA A MOV 23H,A CJNE A,#24H,RETI1 MOV 23H,#00H 到24点,清零小时 RETI1: POP PSW POP ACC 恢复现场 RETI 中断返回/*显示处理*/ DISPLAY: MOV A,21H
50、 秒 ANL A,#0FH MOV 2FH,A 转换出秒个位,存入2FH MOV A,21H ANL A,#0F0H SWAP A MOV 2EH,A 转换出秒十位,存入2EH JB 46H,MIN 如果长按按键调时快进,那么跳过闪烁处理 CJNE R1,#3,MIN
51、; 如果R1为3,闪烁秒位待调整 JB 48H,MIN MOV 2FH,#0AH 使该位为10,查表得到使该位不显示的输出 MOV 2EH,#0AHMIN: MOV A,22H 分 ANL A,#0FH MOV 2DH,A 转换出分个位,存入2DH MOV A,22H ANL A,#0F0H
52、0;SWAP A MOV 2CH,A 转换出分十位,存入2CH JB 46H,HOUR 如果长按按键调时快进,那么跳过闪烁处理 CJNE R1,#2,HOUR 如果R1为2,闪烁分位待调整 JB 48H,HOUR MOV 2DH,#0AH 使该位为10,查表得到使该位不显示的输出 MOV 2CH,#0AHHOUR: MOV A,
53、23H 时 ANL A,#0FH MOV 2BH,A 转换出时个位,存入2BH MOV A,23H ANL A,#0F0H SWAP A MOV 2AH,A 转换出时十位,存入2AH JB 46H,DISP 如果长按按键调时快进,那么跳过闪烁处理 CJNE R1
54、,#1,DISP 如果R1为1,闪烁时位待调整 JB 48H,DISP MOV 2BH,#0AH 使该位为10,查表得到使该位不显示的输出 MOV 2AH,#0AH/*数码管动态扫描显示*/DISP: MOV DPTR,#TABLE MOV A,2FH MOVC A,A+DPTR MOV P0,A CLR P2.7 LCALL DELAY
55、160; 显示秒个位 MOV A,2EH MOVC A,A+DPTR MOV P0,A CLR P2.6 LCALL DELAY 显示秒十位 MOV A,#0BFH MOV P0,A CLR P2.5 LCALL DELAY 显示“-
56、60; MOV A,2DH MOVC A,A+DPTR MOV P0,A CLR P2.4 LCALL DELAY 显示分个位 MOV A,2CH MOVC A,A+DPTR MOV P0,A CLR P2.3 LCALL DELAY 显示分十位 MOV
57、 A,#0BFH MOV P0,A CLR P2.2 LCALL DELAY 显示“- MOV A,2BH MOVC A,A+DPTR MOV P0,A CLR P2.1 LCALL DELAY 显示时个位 MOV DPTR,#TABLE1 该位使用TABLE1以消除前置0&
58、#160; MOV A,2AH MOVC A,A+DPTR MOV P0,A CLR P2.0 LCALL DELAY 显示时十位 RET /*按键检测子程序*/ KEY_SCAN: CLR 46H 关闭长按调整调时快进标志 MOV P1,#0FFH 将P1口设置成输入状态
59、60; MOV A,P1 CPL A ANL A,#0FH P1口低4位连接4个按键,只判断该4位 JZ EXIT_KEY 无键按下那么返回 LCALL DELAY 延时去抖动 MOV A,P1 重新判断 CPL A ANL A,#0FH JZ EXIT_KEY
60、; 键盘去抖动 MOV R5,A 临时将键值存入R5 MOV R4,#00H 用于控制调时快进速度 设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进 LOOP: 进入长按处理 LCALL DISPLAY 使长按时显示正常 MOV A,P1
61、 CPL A ANL A,#0FH JB 47H,LOOP1 INC R4 调时快进间隔时间基准加1LOOP1: CJNE R1,#03H,LOOP2 如果调秒时长按,那么不处理 LJMP LOOP3LOOP2: CJNE R4,#99H,LOOP3 MOV R4,#70H 确认用户长按后,重新设定起始值,加快调时快进速度
62、0; SETB 46H 长按调整调时快进标志 LCALL ADD_KEY LCALL DEC_KEYLOOP3: JNZ LOOP 等待键释放 MOV A,R5 输出键值 RET EXIT_KEY: RET/*延时子程序*/DELAY:
63、MOV R7,#150 DJNZ R7,$ RET /*选择键处理子程序*/ SET_KEY: CJNE R5,#01H,EXIT 选择键键值 INC R1 调整选择功能标志加一 SETB BEEP CJNE R1,#4,EXIT MOV R1,#0 MOV 24H,#00H 调时闪烁基准清零
64、;RET/*增加键处理子程序*/ ADD_KEY: CJNE R5,#02H,EXIT 增加键键值 CJNE R1,#01H,NEXT1 选择键功能标志为1,调时,否那么跳出 MOV A,23H ADD A,#01H DA A MOV 23H,A CJNE A,#24H,EXIT MOV 23H,#00HNEXT1: CJNE R1,#02H,NEXT2 选择键功能标
65、志为2,调分,否那么跳出 MOV A,22H ADD A,#01H DA A MOV 22H,A CJNE A,#60H,EXIT MOV 22H,#00HNEXT2: CJNE R1,#03H,EXIT 选择键功能标志为3,调秒,否那么跳出 MOV 21H,#00H 如增加键按下直接清零秒 RET/*减少键处理子程序*/ DEC_KEY: C
66、JNE R5,#04H,EXIT 减少键键值 CJNE R1,#01H,NEXT3 选择键功能标志为1,调时,否那么跳出 MOV A,23H ADD A,#99H DA A MOV 23H,A CJNE A,#99H,EXIT MOV 23H,#23H NEXT3: CJNE R1,#02H,NEXT4 选择键功能标志为2,调分,否那么跳出 MOV A,22H
67、 ADD A,#99H DA A MOV 22H,A CJNE A,#99H,EXIT MOV 22H,#59HNEXT4: CJNE R1,#03H,EXIT 选择键功能标志为3,调秒,否那么跳出 MOV 21H,#00H 如较少键按下直接清零秒 RET/*强制响铃键处理子程序*/ DALING_KEY: CJNE R5,#08H,EXIT 选择键键值&
68、#160; CPL BEEP RET/*万用返回程序*/ EXIT: RET/*数码管字形编码表*/TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;字形显示编码TABLE1: DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小时位的十位数编码,该位如果为0那么不显示/*打铃时间比照程序起床、熄灯*/BIJIAO1: M
69、OV A,23H CJNE A,#06H,B0 MOV A,22H CJNE A,#00H,B0 6:00到 SETB 45H 开启响铃方式1 RETB0: MOV A,23H CJNE A,#22H,EXIT_1 MOV A,22H CJNE A,#30H,EXIT_1 22:30到 SETB 45H
70、; 开启响铃方式1 RETEXIT_1: CLR 45H RET/*打铃时间比照程序上、下课*/BIJIAO2: MOV A,23H CJNE A,#07H,B1 MOV A,22H CJNE A,#30H,B1 7:30 SETB 44H 开启响铃方式2 RETB1: MOV A,23H CJNE A,#08H,B2 MOV A,22H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职业生涯与财务目标的结合计划
- 班级技术培训的计划与执行
- 创意写作活动的班级计划制定
- 五育并举教学工作方案计划
- 知识管理与传承方案计划
- 城市广场改造工程合同三篇
- 感控之魂:医用消毒设备-精准控感领航医疗卫生安全
- 电子商务专业毕业论文选题
- 经济公司外包协议书范文
- 婚产分配协议书范文模板
- 二十届三中全会知识含答案(224题)
- 公共租赁住房运行管理标准
- 重大事故隐患判定标准课件
- 2024年手术室感控工作计划
- 2024年东南亚QCW准连续激光器市场深度研究及预测报告
- 统编版2024年新版七年级上册历史第二单元测试卷(含答案)
- 2023年12月人民日报社工作人员(74名)笔试近年2018-2023考点突破与答案详解研判
- 2023-2024学年浙江“七彩阳光”新高考研究联盟高一上学期期中联考生物试题(解析版)
- 信息安全知识竞赛试题及答案(题库版)
- 机械设备维修保养合同范本2024年
- 2024年江苏省南京市国土资源信息中心招聘2人(高频重点提升专题训练)共500题附带答案详解
评论
0/150
提交评论