[工学]2009闪烁

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

[工学]2009闪烁

l学士学位毕业设计(论文)基于单片机的电子定时器的设计学生姓名:邰璐指导教师:李爱传所在学院:信息技术学院专业:电气工程及其自动化中国·大庆2010年6月\n黑龙江八一农垦大学本科毕业设计(论文)任务书学生姓名邰璐所在班级电气06级导师姓名李爱传导师职称讲师论文题目基于单片机的电子定时器的设计题目分类1.应用与非应用类:〇工程〇科研〇教学建设〇理论分析〇模拟Ö2.软件与软硬结合类:〇软件〇硬件〇软硬结合〇非软硬件Ö主要研究内容及指标:以单片机为核心,能定时给电器供电或者断电,最大时间可以长达30h,操作使用方便,四位共阳数码管显示时间。继电器作电源输出控制。具有按键控制功能,有功能键,修改键,复位键。程序采用模块化、结构化设计,采用软件抗干扰技术防止程序跑飞。主要参考文献:1、何立民.单片机高级教程-应用与设计.北京:北京航空航天大学出版社,20002、楼然苗.51系列单片机设计实例.北京:北京航空航天大学出版社,2003.3、何立民.单片机中级教程-原理与应用.北京:北京航空航天大学出版社,20004、王福瑞.单片微机测控系统设计大全.第一版.北京:北京航空航天大学出版社,19985、网络资源:http:www.mcu51.com/、http:/www.mcufan.com/、http://www.p8s.com/阶段规划:2009年11月28日至2009年12月15日系统分析准备,硬件设计初步2009年12月16日至2009年12月30日系统设计分析,硬件书面完成2010年1月1日至2010年1月30日硬件加工做版,编码测试及改进2010年3月1日至2010年4月30日整理论文材料及论文撰写2010年4月1日至2010年5月31日答辩准备开题时间2009年12月28日完成论文时间2010年5月31日专业审定意见:系主任签字:年月日注:1.任务书由指导教师填写后交给学生,要求学生妥善保存。2.此任务书夹于论文扉页与论文一并装订,作为论文评分依据之。\n摘要摘要电子定时器是日常生活中应用最多的,例如,家用电器中的微波炉、洗衣机、电饭煲等内部都含有不同形式的定时器。在工业控制中,也经常遇到对某些物理量定时进行采样与控制的问题。本文中的电子定时器能定时给电器供电或断电,最大时间可以长达30h,操作使用方便,系统中以AT89S52单片机为核心,采用分秒显示,在4位共阳极LED上显示分和秒,秒时钟用一发光二极管表示,每秒闪烁一次,表示电子表正在运行。若想重新设置时间,需复位单片机。定时时间到则蜂鸣器鸣叫;等待按键设置时间,时间开始设置,立即停止鸣叫。继电器作电器电源输出控制,提出了硬件及软件的设计方案,具有连接简单、可靠性高等特点。关键词:单片机AT89S52定时器-23-\nABSTRACTABSTRACTE-Timeristhemostwidelyusedindailylife,forexample,Householdapplianceslikethemicrowaveovens,washingmachines,ricecookers,andetc.Therearedifferentformsofinternaltimerinsidethem.Inindustrialcontrol,peopleoftenencounterssomephysicalquantitiesofsampleandcontrolissuesfromtimetotime.Inthispaper,theelectronictimercansupplyorstoptheelectricalpoweratdefinitetimewithamaximumtimeupto30handconvenientoperation.thesystemconsidersthesingle-chipAT89S52asthecoreanduseminutesandsecondsastheembodiment.ItdisplaysminutesandsecondsinatotaloffouranodeLED,andthesecondclockisstatedwithalight-emittingdiodethatflashesoncepersecond,whichindicatestheelectronicformisrunning.Ifyouwanttore-setthetime,youhavetoreplacethesingle-chipmicrocomputer.Regulartimeuntilthebuzzercalling,waitingforkeytosetuptime.Whentimesettings,itstopscallingimmediately.Thefunctionofthedigitalistocontroltheelectricalpoweroutput,andadvocatesahardwareandsoftwareplaningdesignwithacharacterofsimpleconnectionsandhighreliability.Keywords:Single-chipcomputerAT89S52Timer-23-\n目录目录摘要IABSTRACTII前言IV1绪论12硬件部分的设计32.1AT89S52单片机及其晶振电路32.2键盘与显示电路82.3输出驱动接口电路122.4电源电路132.5报警电路132.6PCB图的制作133软件程序设计153.1主程序流程图153.2定时器中断服务程序流程图设计173.3本设计中用到的软件知识183.4操作说明194单片机技术及其发展趋势204.1单片机技术的发展史204.2单片机技术的主要应用领域214.3单片机的发展趋势21结论22参考文献23致谢25附录A:总体电路图26附录B:源程序27附录C:系统设计PCB图49附录D:实物照片50-23-\n前言前言随着计算机技术的发展和微型化,单片计算机由于其功能强,体积小,价格低等优点目前在通信、智能仪表、过程控制、家用电器等方面都得到了广泛应用。本设计就是以单片机为核心,利用其定时功能进行设计的电子定时器。电子定时器总的来说可以分为两种类型:其一是基于模拟技术的传统产品,这种定时器功能简单,尽管曾被广泛应用过,但已进入淘汰之列;另一种就是基于数字技术的新一代产品,这种产品功能强,是前者的换代之物。然而,此类产品大多是较大型的设备,真正实用、携带方便、功能齐全的“大路”商品则就不多见了。随着单片机性能价格比的不断提高,新一代产品的应用越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能,小则可以用于家电控制,甚至能够用来做儿童电子玩具。它功能强大,体积小,重量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品。鉴此,本文设计开发了一种基于单片机的电子定时器。这种定时器除了AT89S52芯片以外,只采用74HC245、LM7805为主要芯片,是典型的“三片系统”。它造价低,功能全,整体功能价格比高,配以按键和LED显示器,可适应各种场合的定时预警之用。但由于本人水平的限制,设计中的不足还请老师与朋友加以指正。-23-\n黑龙江八一农垦大学毕业设计(论文)1绪论人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。它利用机械钟带动开关来控制煤气阀们。起初每周上一次发条,1918年使用电钟计时后,就不用上发条了。定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间。定时器是一个多任务定时提醒软件,它全面支持WINDOWS9X/ME/NT/2K/XP按时执行程序、播放声音、关机、待机、拨号、断开连接、关闭显示器等等操作。具有多种设定任务的方法。支持SKIN,可以随意更换界面。随着科学技术的不断发展,人们对时间计量的精度要求越来越高。高精度的计时工具大多数都使用了石英晶体振荡器。由于电子钟、石晶表、石英钟都采用了石英技术,因此走时精度高、稳定性好、使用方便,不需要经常调校。数字式电子钟用集成电路计时时,译码代替机械式传动。用LED显示器代替指针显示进而显示时间,减小了计时误差。这种表具有时、分、秒。显示时间的功能,还可以进行时和分的校对。片选的灵活性好。系统的工作原理:振荡器产生稳定的分频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。计数器的输出分别由译码器送显示器显示,计时出现误差时,可以用较时电路较时、校分。计时电路主要由计数电路组成。计数电路可以采用集成计数电路芯片构成,也可以直接利用触发器芯片和门电路组成。计时电路的典型例子是电子钟逻辑电路。电子钟逻辑电路由秒计时电路,分计时电路和小时计时电路组成。秒、分计时电路由六十进制计数电路组成,而小时计时电路可以采用十二进制计数电路。也可以采用二十四进制计数电路组成。在本设计中单片机是系统的控制核心,所以单片机的性能关系到整个系统的好坏。因此单片机的选择,对所设计系统的实现以及功能的扩展有着很大的影响。单片机种类很多,在众多51系列单片机中,较为常用的是ATMEL公司的AT89C51和AT89S52单片机,AT89C51片内4KROM是Flash工艺的,使用专用的编程器自己就可以随时对单片机进行电擦除和改写,片内有128字节的RAM。而AT89S52含有在系统可编程的Flash存储器,片内有8K闪存,RAM的容量也较AT89C51大,为256字节。显然这种单片机优点更多,开发时间也大为缩短。因此,在本次设计中选用了ATMEL公司的AT89S52单片机。-23-\n黑龙江八一农垦大学毕业设计(论文)在本设计中,键盘接口电路较为简单,而显示部分有两种方案供选择:一种为LCD,一种为LED。LCD液晶显示的像素单元是整合在同一块液晶版当中分隔出来的小方格。通过数码控制这些极小的方格进行显像。显示非常细腻但是造价很高。而LED数码显示中每一个像素单元就是一个发光二极管,如果是单色,一般是红色发光二极管。如果是彩色,一般是三个三原色小二极管组成的一个大二极管。这些二极管组成的矩阵由数码控制实时显示文字或图象,造价相对低廉,显示效果也较好。在本设计中采用继电器控制,也可以采用可控硅控制。在通断的情况下可以替换使用,但是两者价格相差很大,可控硅的价格要高些,可控硅的响应速度很快为微秒级而接触器的速度是1百多毫秒,接触器是当有电压时就吸合,通过继电器控制断开,可控硅是当电压升高到一定时才通断,可以连续调节;用做无级调节方面比较多,为了节约成本,本设计中采用继电器控制。程序采用模块化、结构化设计,并采用了软件抗干扰技术,其软件的可靠性较好,可维护性强,在本文中将详细介绍。系统由以上元器件组成,通过硬件电路和软件程序的设计,实现系统的基本功能。以下就分别对系统的硬件以及软件方面做一详细介绍。-23-\n黑龙江八一农垦大学毕业设计(论文)2硬件部分的设计对于硬件部分的设计,本着简单可靠的思想。本次设计的对象是针对一个应用系统,本电子定时器能定时给电器供电或断电,最大时间可以长达30小时,其系统构图如图1所示。系统中主要用到:AT89S52单片机与晶振时钟电路;继电器;按键与LED显示等。单片机AT89S52按键输入电路时钟电路复位电路蜂鸣器电路LED显示器驱动电路4位LED显示器继电器电路图1系统结构图下面就对各个功能模块或芯片进行详细介绍。2.1AT89S52单片机及其晶振电路2.1.1功能特性描述及管脚说明AT89S52是一种低功耗、高性能CMOS八位微控制器,具有8K在系统可编程Flash存储器,使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许ROM在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使其为众多嵌入式控制应用系统提供灵活的解决方案。其主要特性为:与MCS-51单片机产品兼容;1000次擦写周期;32个可编程I/O口线;全双工UART串行通道;低功耗空闲和掉电模式;看门狗定时器;双数据指针;-23-\n黑龙江八一农垦大学毕业设计(论文)掉电后中断可唤醒。AT89S52芯片的引脚图见图2所示图2AT89S52的引脚图管脚说明VCC:电源GND:地P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,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所示。在flash编程和校验时,P1口接收低8位地址字节。表1AT89S52P1引脚的第二功能引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)-23-\n黑龙江八一农垦大学毕业设计(论文)P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如表2所示。在flash编程和校验时,P3口也接收一些控制信号。表2AT89S52P3引脚的第二功能引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA-23-\n黑龙江八一农垦大学毕业设计(论文)应该接VCC。在flash编程期间,EA也接收12伏VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。2.1.2AT89S52晶振连接电路AT89S52单片机有一个用于构成内部振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话,XTAL2可以不接,而从XTAL1接入,如图4。在本设计系统中采用的是内部振荡电路连接法,如图3所示。图3内部振荡电路连接图图4外部振荡电路连接图(石英晶振C1,C2=30PF±10PF陶瓷谐振器C1,C2=40PF±10PF)2.1.3AT89S52的复位与复位电路复位是单片机初始化操作,其主要功能是把包括PC在内的一些专用寄存器赋予初始数据,使单片机从这些出值开始工作。单片机运行出错或进入死循环时,可使其复位后重新运行。单片机本身一般是不能自动进行复位的,必须配合相应的外部电路才能实现。AT89S52单片机各寄存器的复位状态如表3表3单片机各寄存器的复位状态寄存器复位状态寄存器复位状态-23-\n黑龙江八一农垦大学毕业设计(论文)PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0~P30FFHSCON00HIP××000000BSBUF00HIE0×000000BPCON不定TMOD00H0×××000B外部复位电路分为上电自动复位和按钮复位,最简单的上电自动复位电路如图5所示;按键手动复位,有电平方式(如图6所示)和脉冲方式(如图7所示)两种。本设计中采用的是按键手动复位中的电平方式复位。图5上电自动复位电路图6电平方式按键手动复位-23-\n黑龙江八一农垦大学毕业设计(论文)图7脉冲方式按键手动复位2.2键盘与显示电路2.2.1LED显示电路设计在单片机系统中,发光二极管(LED)常常作为重要的显示手段,它既可以显示系统的状态,又可以显示数字和字符。由于LED显示器的驱动电路简单,易于实现且价格低廉,因此是工业仪表和实验室仪器常用的一种输出显示设备。LED显示器是LED显示器的一种,它是将多个发光二极管集中在一块,构成阿拉伯数字笔画的形状。这些发光二极管共用一个或两个公共极,为数字信息的显示提供了方便。LED显示器的驱动方法分静态和动态两种。所谓动态是指LED显示器上的信息是通过不断地刷新(即周期性的驱动)维持的。动态驱动的优点是连线比静态方式大为减少,它是数码显示器常用的一种方式。静态驱动编程简单,但占用I/O口较多。本设计采用74HC164驱动4位LED显示的动态扫描驱动方式。为了在定时精度达到分(钟)的时候能显示时钟在计时,在P2.3口增加了一个发光二极管,以其闪烁来表示秒的走动。2.2.2芯片介绍74HC245为双向总线发送器/接收器简要说明:74HC245为三态输出的八组总线收发器,其主要电器特性的典型值如下(不同厂家具体值有差别):(见下页表4)-23-\n黑龙江八一农垦大学毕业设计(论文)表474HC245电器特性的典型值型号tPLHtphlPD74HC2458ns8ns275mW表5引出端符号及其意义引出端符号表示AA总线端BB总线端/G三态允许端(低电平有效)DIR方向控制端其逻辑图,如图5所示图874HC245逻辑图(双列直插封装)表674HC245工作中的极限值工作条件极限值电源电压7V输入电压7V输出高阻态时高电平电压5.5V工作环境温度0~70℃存储温度-65~150℃-23-\n黑龙江八一农垦大学毕业设计(论文)表7功能表三态允许端/G方向控制端DIR操作控制LLB数据到A总线LHA数据到B总线H×断开分离表8推荐工作条件最小额定最大单位电源电压4.7555.25V输入高电平电压VIH2V输入低电平电压VIL0.8V输出高电平电流IOH-15mA输出低电平电流IOL24mA表9动态特性(TA=25℃)参数测试条件最大tPLH输出由低到高传输延迟时间Vcc=5V12nstPHL输出由低到高传输延迟时间CL=45pF12nstPZH输出由低到高传输延迟时间RL=667Ω40nstPZL输出由低到高传输延迟时间40nstPHZ输出由低到高传输延迟时间Vcc=5VCL=5pF25nstPLZ输出由低到高传输延迟时间RL=90Ω25ns表10静态特性(TA为工作环境温度范围)参数测试条件最小最大单位VIK输入嵌位电压Vcc=最小,Iik=-18mA-1.5V△VT滞后电压Vcc=最小0.2VVOH输出高电平电压Vcc=最小,VIL=最大,VIH=2V,IOH=-3mA2.4VVOL输出低电平电压Vcc=最小,VIL=最大,VIH=2V,IOL=最大0.5VII最大输入电压时输出电流A,BVcc=最大,VI=7V0.1mAII最大输入电压时输出电流DIR,/GVcc=最大,VI=7V0.1mAIIH输入高电平电流Vcc=最大,VIH=2.7V20uA-23-\n黑龙江八一农垦大学毕业设计(论文)IIL输入低电平电流Vcc=最大,VIL=0.4V-0.2mAIOS输出短路电流Vcc=最大-40-225mAIOZH输出高阻态时高电平电流Vcc=最大,VIH=2VVIL=最大,VO=2.7V20uAIOZL输出高阻态时低电平电流Vcc=最大,VIH=2VVIL=最大,VO=0.4V-200uAIcc电源电流Vcc=最大,所有输出均为高电平70mAIcc电源电流Vcc=最大,所有输出均为低电平90mAIcc电源电流Vcc=最大,所有输出均为高阻态96mA测试条件中的“最小”和“最大”用推荐工作条件中的相应值。2.2.374HC245与AT89S52连接74HC245与AT89S52连接图9所示(下页),图中由于P1口的驱动能力有限,在此我们采用74HC245来增加其驱动能力。LED动态显示的原理:首先以串行方式向LED显示器数据端口发送第一个8位数据,这时发送位码数据到P1口,此时由于P1.4位低电平而其他口都为高电平,因此LED1数码管显示该数码。这样我们可以发送第二个数据,同样我们应使其对应的位码为低电平且保证其它位为高电平。以此类推对各显示器进行扫描,显示器分时轮流工作。显然每次只有一个显示器显示,但由于人的视觉暂留现象我们仍会感觉所有的显示器都在同时显示。它的优点是:硬件电路简单,占用较少的I/O口,但其传输数速度较慢。图9显示电路的连接-23-\n黑龙江八一农垦大学毕业设计(论文)2.2.4键盘的设计前面设计的控制面板中带一个键盘,这里的键盘我并没有用专业的键盘。因为如果利用通讯接口连接上了带有专业键盘的上位机,这里设计的专业键盘就显得华而不实,因此我用了几个简单的按键将它们拼成了一个简易的键盘。为提高CPU的效率,键盘采用中断方式。按键对单片机的接口电路图如图10所示。图10按键对单片机的接口电路图2.3输出驱动接口电路将继电器接到单片机AT89S52的P3.7口上。驱动电路与单片机的连接电路如图11所示。图11驱动电路与单片机的连接-23-\n黑龙江八一农垦大学毕业设计(论文)2.4电源电路电源电路采用普通三端集成稳压电路,如图12所示。图12电源电路2.5报警电路报警电路采用普通5V成品小蜂鸣器。如图13所示。图13报警电路2.6PCB图的制作1.确定设计图纸大小:图纸大小是根据电路图的复杂度和规模来确定的,确定设计图纸的大小是设计原理的第一步。鉴于我们的元件比较少为了节省空间,我们采用了A4的图纸大小设计。2.设置Protel99SE中的设计环境:包括格点大小的设置,光标设置等,一般采用的是默认。本设计也是默认的。3.放置设置元件:根据电路图需要,将元件从元件库中取出放置在图纸上,并对放置零件的序号及封装进行填写设置,如果元件库中没有此元件可以自己画出元件,设置好封装与描述后再进行绘制原理图,比如本设计中显示部分采用的4位LED,是自己绘制的!-23-\n黑龙江八一农垦大学毕业设计(论文)4.布线:根据电路图将图纸中的各零件用导线和符号连接起来,构成一个完整的原理图。5.制作完原理图,进行分析,进行DRC检查。标准元件库的建立,特殊元器件的建立,具体印制板设计文件的建立,转网表。6.网表的输入。7.规则设置:进行线宽、线距、层定义、过孔、全局参数的设置等。如图14是本设计采用的线宽规则。图14PCB的线宽规则8.根据印制板结构尺寸画出边框,参照原理图,结合机构进行布局,检查布局。本设计板尺寸是3000mil×3000mil双层板。9.参照原理图进行预布线,检查布线是否符合电路模块要求,修改布线,并符合相应要求。10.PCB制作初步完成,“铺铜”与“补铜”,进行连线、连通性、间距、“孤岛”、文字标识检查,并对其进行修改,使其符合要求。11.检查无误后,生成底片,到此PCB板制作完成。-23-\n黑龙江八一农垦大学毕业设计(论文)3软件程序设计单片机的程序设计有其自身的特点。在单片机系统中,硬件与软件紧密结合,由于硬件电路的设计不具有通用性,所以必须根据具体的硬件电路来设计对应的软件,硬件设计的优劣直接影响到软件设计的难易,软件设计的优劣又直接影响到硬件的发挥。在很多时候,软件可以替代硬件的功能,当然,需要付出额外占用CPU时间的代价。软件程序的设计是根据硬件电路图的连接和各个元器件的功能进行设计。在编写软件时,可以按各个程序的功能将软件细分为各个功能模块,再通过主程序的调用来实现整个软件系统。3.1主程序流程图程序采用模块化、结构化设计,并采用了软件抗干扰技术,其软件的可靠性较好,可维护性强。其主要程序模块有:(1)主程序主程序有3个状态:待命状态、计时工作状态和到点工作状态。(2)菜单(设置)程序菜单程序完成定时方式和定时时间的设定。(3)到点工作程序到点工作程序根据所选定的不同定时方式,作不同的处理。(4)抗干扰(出错)程序程序跑飞时能被软件陷阱捕获,被干扰程序处理,返回复位状态,重新启动系统。主流程图如图15所示(见下页)。-23-\n黑龙江八一农垦大学毕业设计(论文)复位关中断,设置堆栈有上电复位标志?冷启动,全面初始化全面初始化热启动,恢复正常调用显示程序F键被按下?调用菜单程序,设定时间开始计时、工作到点了吗?停止计时,调用到点工作程序结束图15主程序流程图-23-\n黑龙江八一农垦大学毕业设计(论文)3.2定时器中断服务程序流程图设计3.2.1T0中断服务子程序在本次设计的系统中使用了一个中断服务程序:定时器T0中断。T0中断服务程序主要是处理倒计时程序的。在T0中断程序中,T0作为一个缓存区,在这里进行着时钟的倒计时程序,执行完毕后就重装T0计数值,然后中断返回。其流程图如图16所示。入栈保护中断同步修正恢复计时判断是否到0.5sLED取反调用BCD子程序恢复现场中断返回图16T0倒计时程序流程图3.2.2键盘消抖动程序设计键盘所用开关通常为机械性开关,利用了机械触点的闭合和断开来描述不同的工作状态,由于机械触点的弹性作用,一个按键开关在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间一般为10ms~20ms。键盘的抖动会引起一次按键被误读多次,为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。消除抖动的措施有硬件和软件两种方法。本设计采用软件延时的方法进行消除抖动。在第一次检测到有按键按下时,执行一段10ms-23-\n黑龙江八一农垦大学毕业设计(论文)左右的延时子程序,再确认该键电平是否仍保持闭合状态电平,如果保持闭合状态电平则确认为真正有键按下,从而消除了抖动的影响。其键盘扫描流程图如图17所示。图17键盘中断流程图入栈保护有键按下?调延时20ms子程序有键闭合?转各键处理子程序恢复现场返回NNY读键值键盘扫描3.3本设计中用到的软件知识3.3.1热启动与冷启动的分析在软件中判断单片机的冷启动还是热启动,能利用AT89S52本身的资源,正常工作时在某几个RAM中置标志,启动时判断这个标志即可,但要注意AT89S52内部RAM在很低的残余电压下仍能保持数据,最好在电源上并一适当大小的放电电阻。所谓“冷启动”是指掉电后再启动,而热启动过程是不掉电的。单片机内部RAM在掉电再上电后的值在理论上是随机的(实际上大多会是0x00或0xFF),这样你可以在某几个RAM中写上一些特定的值,例如0x55,0xAA,在启动时检查这几个RAM中的值是否与你预先写入的值相等,如相等,表示单片机没有掉过电,是热启动,否则就是冷启动。多设几个这样的标志,则随机因素引起误判的可能性极小。在PC中就是这样判断冷热启动的,用了两个字节的RAM作标志,标志值是0xAA55。-23-\n黑龙江八一农垦大学毕业设计(论文)3.3.2BCD子程序的编写在BCD码转换的过程中,是将一个正常的BCD码转换成压缩的BCD码进行加减的。先移入被操作数的高位,然后将指针减1指向低位,再将高位在A寄存器中交换后,移入被操作数的低位,对其进行减1操作,分别将其从结果中取回交回高低位即可。3.4操作说明(1)通电以后,显示窗显示“-----”,表示机器处于待命状态。(2)按功能键(F键),显示窗显示“”,进入功能设置,此时按修改键(M键)选择不同定时方式:方式1:定时关电源,定时范围为1s~30min59s;方式2:定时关电源,定时范围为1min~30h59min;方式3:定时开电源,定时范围为1s~30min59s;方式4:定时开电源,定时范围为1min~30h59min。(3)选定定时方式之后,再按功能键,进入时间设定。先设定秒(方式1、方式3)或分(方式2、方式4),再设定分(方式1、方式3)或小时(方式2、方式4)。按修改键增加数字,按功能键确定,按住修改键不放可快进。(4)设定时间完毕,按下功能键,定时器长鸣一声,开始工作。(5)定时时间到了,在定时方式1和方式2,定时器会鸣叫,此时按任意键可停止鸣叫。(6)在任何情况下,按下复位键(R键),定时器重新回到待命状态。-23-\n结论结论经过四个多月的设计时间,本次毕业设计:基于单片机的电子定时器的设计已经基本完成了。通过这次毕业设计,我掌握了一些实践性质的设计的基本步骤:首先,明确设计任务,并且要对市场上的电子定时器要有初步了解,还要知道前人做了哪些工作,本设计方案的可利用程度等等。其次,要对整个设计系统做深入的方案论证、计算并且结合现有实际条件,确立自己的设计方案,进而,就是对自己确立的方案进行硬件实现,包括所用原器件选型,以及控制部分整个单片机系统的硬件选型与设计,并用Protel绘制出整个系统总体电路图制作了PCB板。接着我们就进入到软件编程设计了,要画出各部分的大体流程图,弄清楚各个部分实现的功能,最后对整个系统进行软件编程实现。到此为止,这个系统的设计基本上已经完成了,最后就是要经过生产实践的检验,确定我们的设计是否符合实际要求,具有可利用价值。本系统采用的单片机控制,实现能定时给电器供电或断电的控制,最大定时时间长达30小时,操作使用方便。用单片机汇编语言编程,采用模块化的结构设计,提高了可靠性和可扩展性。把单片机控制理论与技术应用在监控中,能够实现智能化的控制要求。整个设计过程同时也是一个很好的学习机会,例如以前自己学习过运用Protel99SE绘图,但不是很通透,经过这次设计后自己在这方面有很大地进步;在查找资料方面,认识到:图书资料、网络资料和期刊等都很有价值,以后做设计的时候要注意查找完整的资料,不要只偏重一个方面。当然整个设计过程学到的知识和经验远远比运用Protel、学会查找多方资料多得多,这些对于自己以后的学习和工作将受益匪浅。但必须认识到的是,在设计中也存在着不足之处,例如单片机控制系统在可靠性方面相对于可编程控制器(PLC)控制系统略为欠缺,并且自己深入实践不够,所做的系统也不是很完善。但是我想通过以后的学习和努力一定会有所提高,能够做出更好的设计。所设计系统不仅只适用于对电器供电还要向外部扩展,做到较强的通用性和适应性。-23-\n致谢参考文献[1]何立民.单片机高级教程-应用与设计.北京:北京航空航天大学出版社,2000[2]楼然苗.51系列单片机设计实例.北京:北京航空航天大学出版社,2003.[3]何立民.单片机中级教程-原理与应用.北京:北京航空航天大学出版社,2000[4]王福瑞.单片微机测控系统设计大全.第一版.北京:北京航空航天大学出版社,1998[5]网络资源:http:www.mcu51.com/.http:/www.mcufan.com/.http://www.p8s.com/.[6]胡汉才主编.单片机原理及其接口技术(第2版)[M].北京:清华大学出版,2003[7]梅丽凤,王艳秋,汪毓铎,张军.单片机原理及接口技术[M].北京:清华大学出版社,北京交通大学出版社,2004.[8]何立民.MCS-51系列单片机应用系统设计系统配置与接口技术[M].北京:北京航空航天大学出版社,2001.[9]李华,孙晓民,李红青.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993.[10]雷升印,周元志.X5045芯片在单片机系统中应用的研究[J].武汉理工大学学报,2003,25(3):28-29.[11]林凌,李刚,丁茹,李小霞.新型单片机接口器件与技术[M].西安:西安电子科技大学出版社,2005.[12]潘永雄.新编单片机原理与应用[M].西安:西安电子科技大学出版社,2003.[13]孙育才,王荣兴,孙化芳.,新型AT89S52系列单片机及其应用.北京:清华大学出版社,2005.[14]周慈航.单片机应用程序设计技术[M].北京:北京航空航天大学出版社,2002.[15]韩志军,沈晋源,王振波.单片机应用系统设计——入门向导与设计实例接[M].北京:机械工业出版社,2005.[16]夏路易,石宗义.电路原理图与电路板设计教程Protel99SE.北京:北京希望电子出版社,2002.[17]DallasSemiconductorDataBook.DallasSemiconductorCorp.2000.-23-\n致谢[18]AtmelCorporation.MicrocontrollerDataBook.2004.[19]GyugyiL,OttoRA,PutmanTH.PrinciplesandApplicationsofStatic,Thristor-controlledShuntCompensators[J].IEEETrans.onPowerApparatusandSystem,1978,97(5):1935~1945.[20]D.Abowd,B.Brumitt,S.Shafer.TheEverywhereDisplaysProjector:ADevicetoCreateUbiquitousGraphicalInterfaces.LectureNotesinComputerScience.[21]PhilipsSemiconductorsandElectronicsNorthAmericaCorporation.DataHanndbook80C51-Based8-BitMicrocontrollers.PrintedinUSA,2005.[22]MichaelJohnSebastianSmith.《Application-SpecificIntegratedCircuits》.AddisonWesley/Pearson,2003.[23]《MicrocontrollerHandbook》,IntelCrop,1992.[24]RichardR.Spencer,MohammedS.Ghausi. 《IntroductiontoElectronicCircuitDesign》.PrenticeHall/Pearson.2001.[25]《Data-AcquisitionDatabook》,AnalogDeviceCrop,1991-23-\n致谢致谢在本次毕业设计过程中,我的指导教师李爱传老师给予了我极大的帮助和耐心的指导,在设计过程中不仅帮我解决了许多设计存在的问题,而且帮我弥补了许多知识漏洞,从而使得自己的毕业设计能顺利完成。在此,对于他的帮助和指导表示最衷心的感谢。李老师的每一次指导都是那么用心,无论在学习生活中还是在就业选择上都给予了我们耐心、细致的帮助,在这里,我由衷的说一声“老师您辛苦了!”同时,感谢大学四年来培育我的每一位老师,在您们的关怀教育下使我快速的成为社会需要的人。整个设计过程也得到了电气工程系的大力帮助,提供了很好的设计环境,开放了系里的机房,使得自己在收集资料、整理资料、撰写设计论文等方面都很方便。对此特别表示感谢。-23-\n附录附录A:总体电路图-48-\n附录附录B:源程序;******************;定时器程序;;采用AT89S52;;2009.06;;******************;;******************;伪定义;;******************SLEQU30H;SL存放秒的个位数SHEQU31H;SL存放秒的十位数MLEQU32H;ML存放分的个位数MHEQU33H;MH存放分的十位数HLEQU34H;HL存放小时的个位数HHEQU35H;HH存放小时的十位数;L0EQU36H;L0~L3:显示数据存储器L1EQU37HL2EQU38HL3EQU39HDSPLYPEQU3AH;显示数据指针(DISPLAY-POINT)PLYTSEQU3BH;显示次数计数器(DISPLAY-TIMES);LPLMODBIT39H;低两位显示方式(LOW-PLAY-MOD)HPLMODBIT3AH;高两位显示方式(HIGH-PLAY-MOD)BRIGHTBIT3BH;DISPLAY子程序参数:亮/灭指示灯;TCOUNTEQU3CH;时间计数器(TIME-COUNT)-48-\n附录;ADDRESEQU3DH;加1子程序参数MAXEQU3EH;加1子程序参数IFDECEQU20H;BCD加法子程序参数;R_MODEQU3FH;响铃方式参数;LED4BIT30H;发光管状态位BELLBITP2.0;蜂鸣器SWITCHBITP3.7;继电器FKEYBITP3.0;功能键(S1)MKEYBITP3.1;修改键(S2);WORKINBIT38H;工作状态指示位;;******************;中断入口;;******************ORG0000HSTART:LJMPMAIN;0000H引向主程序LJMPERR;0003HNOPNOPLJMPERR;引向出错处理程序LJMPPGT0;000BH引向中断处理程序PGT0NOPNOPLJMPERR;引向出错处理程序LJMPERR;0013HINT1NOP-48-\n附录NOPLJMPERRLJMPERR;001BHT1NOPNOPLJMPERRLJMPERR;0023HNOPNOPLJMPERRLJMPERR;002BHNOPNOP;;******************;主程序;;******************ORG0200HMAIN:MOVIE,#00H;关中断MOVSP,#57H;设置堆栈指针MOVPSW,#00H;选用寄存器组0MOVTMOD,#11H;设定中断工作方式为T0和T1;MOVA,56HCJNEA,#0AAH,CSTART;判断上电复位标志,无标志转冷启动MOVA,57HCJNEA,#55H,CSTART;无标志转冷启动AJMPHSTART;有上电复位标志转热启动NOPNOPLJMPERR;软件陷阱,引向出错处理程序-48-\n附录CSTART:MOVP1,#0FFH;冷启动,全面初始化MOVP3,#0FFH;MOVP2,#0FFHMOVTCON,#00H;计时停止MOVTL0,#0B0H;赋中断T0初值MOVTH0,#3CHMOVTCOUNT,#0AH;赋定时器初值MOVR5,#00H;R5为一空单元(备用)MOVR4,#00H;R4为工作模式选择寄存器MOVSL,#00H;定时单元清零MOVSH,#00H;秒MOVML,#00H;MOVMH,#00H;分MOVHL,#00H;MOVHH,#00H;时MOVPLYTS,#64H;赋显示次数初值为100次MOVDSPLYP,#L0;显示指针指向显存单元MOVL0,#0AH;送显示数据“-----”MOVL1,#0AHMOVL2,#0AHMOVL3,#04HSETBLED4;LED4为计秒数的发光二极管SETBLPLMOD;设定显示方式为闪烁SETBHPLMOD;SETBBRIGHT;允许显示CLRWORKIN;清工作标志,待命AJMPSETUP;转开始工作NOPNOPLJMPERR;软件陷阱HSTART:MOVSCON,#00H;有上电标志,热启动,清串行口控制寄存器-48-\n附录MOVIP,#00H;清中断优先控制寄存器SETBFKEY;重设按键SETBMKEYSETBEA;开中断AJMPBEGIN;转向继续工作NOPNOPLJMPERR;软件陷阱SETUP:SETBEA;开中断;MAIN1:ACALLDISPLY;调用显示JBFKEY,JUDGE;按键扫描ACALLKEYDLY;延时消抖动JBFKEY,JUDGE;无键按下转向判断是否到点CLRET0;功能键被按下CLRTR0;暂停计时ACALLMENU;调用菜单设置程序BEGIN:SETBWORKIN;置工作标志位,开始工作SETBET0;开中断SETBTR0;开始计时MOVA,R4;移入工作模式选择RLA;指针放大MOVDPTR,#M_TABJMP@A+DPTR;根据工作模式跳转到相应程序段M_TAB:AJMPWORK1AJMPWORK2AJMPWORK3AJMPWORK4NOPNOPLJMPERR;软件陷阱-48-\n附录WORK1:;WORK2:CLRSWITCH;工作方式1和2:开继电器AJMPMAIN2NOPNOPLJMPERR;软件陷阱WORK3:;WORK4:SETBSWITCH;工作方式3和4:不开继电器MAIN2:CLRBELL;蜂鸣器短鸣一声,以示开始工作ACALLDL05SSETBBELLJUDGE:JNBWORKIN,MAIN1;判断是否在定时之中MOVA,SL;判断秒是否为零JNZMAIN1MOVA,SH;判断秒是否为零JNZMAIN1MOVA,ML;判断分是否为零JNZMAIN1MOVA,MH;判断分是否为零JNZMAIN1MOVA,HL;判断时是否为零JNZMAIN1MOVA,HH;判断时是否为零JNZMAIN1;若时、分、秒全为零CLRET0;停止计时CLRTR0;ACALLACTION;调用到点工作子程序AJMPMAIN;返回NOPNOPLJMPERR;软件陷阱-48-\n附录;;*********************;倒计时程序;;*********************PGT0:CLREA;关中断PUSHACC;堆栈PUSHPSWPUSHDPLPUSHDPHMOVPSW,#08H;选用寄存器组1CLRTR0;暂停计时MOVA,#0B7H;中断同步修正ADDA,TL0MOVTL0,AMOVA,#3CHADDA,TH0MOVTH0,ASETBTR0;恢复计时DECTCOUNT;定时器T0每50000ms溢出一次MOVA,TCOUN;溢出10次为0.5sJNZOUTT0;判断是否到0.5sMOVTCOUNT,#0AH;CPLLED4;若到0.5sLED取反JNBLED4,OUTT0;LED每闪烁一次是1sMOVR0,#SH;移入秒位的地址SETBIFDEC;BCD子程序参数,使其做减法ACALLADDBCD;调用BCD子程序,秒减1CJNER3,#99H,OUTT0;判断秒是否要借位MOVSH,#05H;要借位则送数据59(否则显示99)MOVSL,#09HMOVR0,#MH;移入分位的地址-48-\n附录ACALLADDBCD;分减1CJNER3,#99H,OUTT0;判断分是否要借位MOVMH,#05HMOVML,#09HMOVR0,#HHACALLADDBCDOUTT0:POPDPH;恢复现场POPDPLPOPPSWPOPACCSETBEARETI;中断返回NOPNOPLJMPERR;软件陷阱;;;************************;BCD子程序(加1或减1);;************************ADDBCD:MOVA,@R0;移入被操作数的高位DECR0;指针减1SWAPAORLA,@R0;移入被操作数的低位MOVB,#01H;B寄存器送立即数#01HMOVC,IFDEC;减法标志位为1MOVB.3,C;MOVB.4,C;B寄存器的值被改为#99HMOVB.7,C;ADDA,B;对一个压缩的BCD码加#99H等于对其减1DAA;BCD码调整-48-\n附录MOVR3,A;暂存结果ANLA,#0FH;取低位码MOV@R0,A;存数MOVA,R3;取回结果INCR0;指针加1SWAPA;交换ANLA,#0FH;取结果数的高位MOV@R0,A;存数RETNOPNOPLJMPERR;软件陷阱;;*******************;加1程序;;*******************ADDONE:MOVR0,ADDRES;移入被加数单元的地址CLRIFDEC;设定BCD子程序做加法ACALLADDBCD;调用BCD子程序CLRC;判断被加数是否大于MOVA,R3;最大值“MAX”CJNEA,MAX,JGOVERJGOVER:JCENDADOCLRA;若大于“MAX”,则清零MOV@R0,ADECR0MOV@R0,AENDADO:RETNOPNOPLJMPERR;软件陷阱-48-\n附录;;*******************;调时快进程序;;*******************QUICK:CLRLPLMOD;设定显示方式不闪烁CLRHPLMODACALLADDONE;调用加1子程序MOVL0,R4;将工作模式选择数移入显存INCL0;加1转化成显示值ACALLKEYDLY;延时ACALLDL100JNBMKEY,QUICK;判断键是否松开SETBLPLMOD;若松开则恢复闪烁显示方式CJNER6,#02H,ENDQUKSETBHPLMODCLRLPLMODENDQUK:RETNOPNOPLJMPERR;软件陷阱;;;*******************;功能菜单程序;;*******************MENU:MOVR6,#00H;初始化;R6计功能键按键次数MOVADDRES,#05H;将R5的地址送入,以便于改变R4的值MOVMAX,#04H;定义工作模式选择寄存器R4的最大值MOVDSPLYP,#L0;定义显示指针指向显存SETBLPLMOD;设定低两位数闪烁CLRHPLMOD-48-\n附录MOVL0,R4;送显示数据“F-0X”INCL0MOVL1,#00HMOVL2,#0BHMOVL3,#00HSETBLED4;WAITFK:ACALLDISPLY;等待F键释放JNBFKEY,WAITFKMENU1:ACALLDISPLYJBMKEY,JGFKEY;M键扫描ACALLKEYDLY;延时消抖动JBMKEY,JGFKEY;未按下则转F键扫描CJNER6,#00H,NEXT1;MOVSL,#00H;若中途改变定时方式,则清除原计时数据MOVSH,#00HMOVML,#00HMOVMH,#00HMOVHL,#00HMOVHH,#00HNEXT1:MOVR2,#00H;R2用于判断按键时间是否超过0.5sNEXT2:ACALLADDONE;调用加1程序MOVL0,R4;移入工作方式选择数INCL0;WAITMK:ACALLDISPLY;等待M键释放INCR2;R2自增1CLRCCJNER2,#0C8H,JGQUIC;若R2大于等于200则调用快进子程序JGQUIC:JCWATMK1ACALLQUICK-48-\n附录WATMK1:JNBMKEY,WAITMK;R2小于200则等待M键释放;JGFKEY:JBFKEY,MENU1;功能(F)键扫描ACALLKEYDLY;延时消抖动JBFKEY,MENU1;键未按下则转修改(M)键扫描INCR6;F键按键次数加1MOVA,R6;移入按键次数RLA;指针放大MOVDPTR,#FUNTABJMP@A+DPTR;根据按键次数跳转到相应的程序段FUNTAB:AJMPWAITFKAJMPSETLOWAJMPSETHI;AJMPENDMENNOPNOPAJMPENDMEN;STWKMD:;工作模式设定,不需另外改变菜单;SETLOW:MOVMAX,#60H;设置低位(秒位或分位)MOVA,R4;移入工作模式选择数RLA;指针放大MOVDPTR,#FTAB1JMP@A+DPTR;根据工作模式选择数跳转到相应的程序段FTAB1:AJMPSETSSAJMPSETM60AJMPSETSSAJMPSETM60NOPNOPAJMPWAITFK-48-\n附录SETSS:MOVDSPLYP,#SL;设定显示区域为MM:SSMOVADDRES,#SHAJMPWAITFKSETM60:MOVDSPLYP,#ML;设定显示区域为HH:MMMOVADDRES,#MHAJMPWAITFK;SETHI:CLRLPLMOD;设置高位(分位或时位)SETBHPLMOD;高两位数码管闪烁MOVMAX,#31H;最大数为30MOVA,R4;移入工作模式选择数RLA;指针放大MOVDPTR,#FTAB2;移入表首地址JMP@A+DPTR;根据工作模式选择数跳转到相应的程序段FTAB2:AJMPSETM30AJMPSETHHAJMPSETM30AJMPSETHHNOPNOPAJMPWAITFK;返回等待键释放SETM30:MOVADDRES,#MH;移入分位的地址AJMPWAITFK;转向等待释放键SETHH:MOVADDRES,#HH;移入时位的地址AJMPWAITFK;转向等待键释放;ENDMEN:CLRHPLMOD;恢复不闪烁显示方式RETNOPNOPLJMPERR;软件陷阱-48-\n附录;;***************;到点工作程序;;***************ACTION:MOVL0,R4;移入工作模式选择数INCL0;送显示数“F-0X”MOVL1,#00HMOVL2,#0BHMOVL3,#00HSETBLED4MOVDSPLYP,#L0;指针指向显存SETBLPLMOD;设定显示方式不闪烁SETBHPLMODMOVA,R4;移入工作模式选择数RLAMOVDPTR,#A_TABJMP@A+DPTR;根据工作模式选择数跳转A_TAB:AJMPACTF1;工作模式一AJMPACTF1;工作模式二AJMPACTF3;工作模式三AJMPACTF3;工作模式四NOPNOPLJMPERR;软件陷阱ACTF1:SETBSWITCH;工作模式一(或二):关继电器MOVR_MOD,#82H;响铃模式参数#82HMOVR2,#96H;响铃次数参数#96HACTF11:ACALLRING;调用响铃程序JNBMKEY,ENDACT;等待键按下JNBFKEY,ENDACT;有键按下则结束响铃DJNZR2,ACTF11;次数未满继续响铃-48-\n附录MOVR_MOD,#0FFH;参数#0FF使响铃无效AJMPACTF11;无键按下返回NOPNOPLJMPERR;软件陷阱ACTF3:CLRSWITCH;工作模式三(或四):开继电器CLRBELL;蜂鸣器短鸣一声ACALLDL1SSETBBELLMOVR_MOD,#0FFH;响铃模式参数#0FFHMOVR2,#96H;响铃时间参数#96HACTF31:ACALLRING;调用响铃子程序JNBMKEY,ENDACT;等待键按下JNBFKEY,ENDACT;有键按下则结束DJNZR2,ACTF31;次数未满继续MOVR2,#96H;重新赋值CLRBELL;短鸣一声(说明:响铃模式参数#0FFH使;响铃程序无效,仅起延时作用,;每延时一段时间短鸣一声,以;提醒使用者继电器仍在工作)ACALLDL100SETBBELLAJMPACTF31NOPNOPLJMPERR;软件陷阱ENDACT:SETBSWITCH;关继电器AWAITF:ACALLDISPLY;调用显示JNBFKEY,AWAIT;等待键释放AWAITM:ACALLDISPLY;调用显示JNBMKEY,AWAITM;等待键释放-48-\n附录RETNOPNOPLJMPERR;软件陷阱;;**************;响铃程序;;**************RING:MOVR5,#18H;R5为循环控制变量RING1:JNBMKEY,R_EXIT;键扫描JNBFKEY,R_EXIT;有键按下则退出MOVA,R_MOD;移入响铃模式参数MOVC,ACC.7;根据响铃模式参数改变响铃MOVBELL,CRLAMOVR_MOD,AACALLDL100;延时DJNZR5,RING1;循环次数控制R_EXIT:SETBBELL;关闭响铃RETNOPNOPLJMPERR;软件陷阱;;**************;显示程序;;**************DISPLY:PUSHACC;数据压栈??PUSHPSWMOVPSW,#10H;选用寄存器组2MOVR0,DSPLYP;移入显示指针-48-\n附录MOVR2,#0BFH;R2寄存的是数码管选通数MOVA,PLYTS;移入显示循环控制量JNZPLAY;不为0则转PLAYMOVPLYTS,#64H;否则重新赋值CPLBRIGHT;亮灭指示位取反PLAY:DECPLYTS;显示循环控制量减1JNBLPLMOD,PLAYL;低两位数码管不闪则“PLAYL”JBBRIGHT,PLAYL;亮灭指示为1也“PLAYL”ACALLNOPLAY;否则灭灯延时AJMPPLAY1;转显示高位数码管NOPNOPLJMPERR;软件陷阱;用来显示低位PLAYL:ORLP1,#7FH;清原显示数据ORLP3,#3CH;清原选通数据MOVA,R2;移入数码管位选数RRA;换一位ANLP3,A;选通低位的个位数码管MOVR2,A;暂存位选数MOVA,@R0;移入显示数据MOVDPTR,#TABLE1;移入表首地址MOVCA,@A+DPTR;查表MOVP1,A;送显示数据ACALLDL1MS;延时INCR0;指向低位的十位数JBP3.4,PLAYL;显示低位的十位数;PLAY1:JNBHPLMOD,PLAYH;高两位数码管不闪则“PLAYH”-48-\n附录JBBRIGHT,PLAYH;亮灭指示为1也“PLAYH”ACALLNOPLAY;否则灭灯延时AJMPOUTPLY;转结束NOPNOPLJMPERR;软件陷阱;;用来显示高位PLAYH:ORLP1,#0FFH;清原显示数据ORLP3,#3CH;清原选通数据ANLP3,#0F7H;选通高位的个位数码管MOVA,@R0;移入显示数据MOVDPTR,#TABLE1;移入表首地址MOVCA,@A+DPTR;查表MOVP1,A;送显示数据ACALLDL1MS;延时INCR0;指向高位的十位数;;显示高位的十位数ORLP1,#0FFH;清原显示数据ORLP3,#3CH;清原选通数据ANLP3,#0FBH;选通高位的十位数MOVA,@R0;移入显示数值MOVC,LED4;指针放大+小灯状态RLCA;MOVDPTR,#TABLE2;移入表首地址MOVCA,@A+DPTR;查表MOVP1,A;送显示数据ACALLDL1MS;延时MOVC,LED4MOVP2.3,C-48-\n附录;OUTPLY:POPPSW;恢复数据POPACCRETNOPNOPLJMPERR;软件陷阱;TABLE1:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,8EH,0FFH;“0”,“1”,......“9”,“-”,“F”,“”;TABLE2:DB0FFH,0FFH,0F9H,0F9H,0A4H,0A4H,0B0H,0B0H,0BFH,0BFH;“”,“:”,“1”,“1:”,“2”,“2:”,“3”,“3:”,“-”,“-:”;;;;**********************;无显示(灭灯)程序;;**********************NOPLAY:ORLP1,#7FH;清显示数据ORLP3,#3CH;清选通数据INCR0;指针自增2INCR0ACALLDL1MS;延时RETNOPNOPLJMPERR;软件陷阱;;****************-48-\n附录;延时程序;;****************DL1MS:MOVR3,#0F9H;延时1250us只为DISPLY所调用DL1MS1:NOPNOPNOPDJNZR3,DL1MS1RETNOPNOPLJMPERR;软件陷阱;KEYDLY:CLRBELL;按键消抖动专用延时程序ACALLDISPLY;在消除抖动的同时发出按键提示音SETBBELLRETNOPNOPLJMPERR;软件陷阱;DL50MS:MOVR7,#0AH;50ms延时程序DL50M1:ACALLDISPLY;每调用一次显示程序5msDJNZR7,DL50M1;调用10次RETNOPNOPLJMPERR;软件陷阱;DL100:ACALLDL50MS;延时100msACALLDL50MSRET-48-\n附录NOPNOPLJMPERR;软件陷阱;DL05S:ACALLDL100;延时0.5sACALLDL100ACALLDL100ACALLDL100ACALLDL100RETNOPNOPLJMPERR;软件陷阱;DL1S:ACALLDL05S;延时1sACALLDL05SRETNOPNOPLJMPERR;软件陷阱;;***********************;ERR(出错处理)程序;;***********************ERR:CLREA;关中断MOVDPTR,#ERR1;准备返回地址PUSHDPL;压栈PUSHDPH;RETI;中断返回ERR1:MOV56H,#0AAH;建立上电标志(出错标志)MOV57H,#55H-48-\n附录MOVA,#00H;准备返回地址PUSHACCPUSHACC;PUSHA;压栈;PUSHARETI;中断返回NOPNOPLJMPERR;软件陷阱;ORG07FAHNOPNOPNOPLJMPERR;软件陷阱;END;程序结束-48-\n附录附录C:系统设计PCB图-48-\n附录附录D:实物照片-48-\n黑龙江八一农垦大学毕业论文(设计)成绩单院系信息技术学院专业电气工程及其自动化入学时间2006.9学号20064073401学生姓名邰璐班级2006级周数16起止日期09.11.16-10.5.20指导教师李爱传职称讲师论文(设计)题目基于单片机的电子定时器设计指导教师评语指导教师签名年月日评阅人评语评阅人签名年月日答辩小组评语答辩小组负责人签名年月日评分指导教师评阅人答辩小组平均分五级制等级备注:本成绩单一式二份,一份装订在毕业论文(设计)中,一份入学生学籍档案。
查看更多

相关文章

您可能关注的文档