单片机第9章 单片机的综合应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
“看门狗”技术可以由硬件实现,也可由软件实现。在8096系列单片机和增强型的89C51系列单片机芯片内已经内嵌了程序运行监视系统,使用起来很方便。而在普通型51系列单片机中,必须由用户自己建立。 当系统陷入死循环之后,什么样的程序才能使其跳出来呢?只有比这个死循环更高级的中断子程序才能夺走对CPU的控制权。 例如T0作WATCHDOG,定时约定为16ms,可在初始化时按下列方式建立WATCHDOG: MOV TMOD,#01H ;设置T0为16位定时器 SETB ETO ;允许T0中端 SETB PT0 ;设置T0为高级中断 MOV TH0,#0E0H ;定时约16ms SETB TR0 ;启动T0 SETB EA ;开中断 WATCHDOG启动以后,系统工作程序必须经常“喂它”,并且每两次的时间间隔不得大于16ms(如可以每10ms“喂”一次)。执行一条“MOV TH0,#0E0H”指令即可将它暂时“喂饱”,若改用“MOV TH0,#00H”指令来“喂”它,它将“安静”131ms(而不是我们要求的16ms)。 下面是一个完整的看门狗程序,它包括模拟主程序,喂狗(DOG)程序和空弹返回0000H(TOP)程序。 ORG 0000H AJMP MAIN ORG 000BH LJMP TOP MIAN: MOV SP,#60H MOV PSW,#00H MOV SCON,#00H … ;模拟硬件复位,可根据系统对资源的使用情况增减 MOV IE,#00H MOV IP,#00H MOV TMOD,#01H LCALL DOG ;调用DOG程序的时间间隔应小于定时器定时时间 … DOG:MOV TH0,#0BH ;喂狗程序 MOV TL0,#0E0H SETB TR0 RET TOP:POP ACC ;空弹断点地址 POP ACC CLR A PUSH ACC ;将返回地址换成0000H, ;以便实现软件复位 PUSH ACC RETI 9.4 综合应用举例 9.4.1 数码管时钟的设计 9.4.2 语音播报系统 9.4.3 交通信号灯控制设计 9.4.4 电动自行车里程/速度计设计 9.4.5 步进电机的单片机控制 9.4.1 数码管时钟的设计 1.设计要求 利用单片机设计制作具有以下功能的数字时钟: (1)自动计时,由6位LED显示器显示时、分、秒。 (2)具备调整功能,可以直接由0~9数字键设置当前时间。 (3)具备定时闹钟功能。 2.设计方案 数字时钟电路由单片机、键盘输入模块、时钟显示模块及闹钟模块组成。 单片机选用89C51,键盘及显示模块采用8155芯片扩展实现,键盘输入电路采用4×3键盘,包括0~9共10个数字键(键号为00H~09H)、C/R键(时间)(时间设定/启动计时键,键号为0AH)和ALM键(闹钟设置/启闹/停闹键,键号为0BH)。LED数码显示电路:采用共阴极数码管实现时钟显示,6位LED从左到右依次显示时、分和秒,采用24小时计时。 蜂鸣器启闹模块由89C51的P1.0控制驱动蜂鸣器(低电平有效)。 3.系统硬件电路图 4.系统软件设计 (1)主程序 实现初始化与键盘监控 。 (2)定时器T0中断服务程序 时钟电路的计时功能是利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。利用定时器T0中断服务程序实现计时功能,同时刷新计时缓冲区。 定时器T0每隔100ms溢出中断一次(设系统使用6MHz,定时器T0工作方式1)的定时器初始值为3CB0H,(即TH0=3CH,TL0=0B0H),每循环中断10次则延时时间为1s,重复60次为1min,分计时60次为1h,小时计时24次则时间重新回到00:00:00。 (3)时间设置与闹钟设置子程序 实现当前时间及定时启闹时间的键盘输入设置。 其功能是用键盘设置子程序将键入的6位时间值送入键盘设置缓冲区,用合字子程序将键盘设置缓冲区中的6位BCD码合并为3位压缩BCD码,送入计时缓冲区或闹钟值寄存区。 (4)键盘扫描子程序 判断是否有键按下,无键按下则循环等待,有键按下则求取键号后返回。 (5)显示子程序 实现显示缓冲区的6位BCD码的动态扫描方式显示。 (6)定时比较子程序 实现当前时间(计时缓冲区中的值)与预设的启闹时间(闹钟设置寄存器中的值)的比较,若二者完全相同时,启动蜂鸣器鸣叫并设置闹钟标志位。 (7)其他辅助功能子程序 ①键盘设置子程序:将键入的6位时间值送入键盘设置缓冲区,流程图如图

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档