毕业设计模拟交通灯2.doc_第1页
毕业设计模拟交通灯2.doc_第2页
毕业设计模拟交通灯2.doc_第3页
毕业设计模拟交通灯2.doc_第4页
毕业设计模拟交通灯2.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

酒泉职业技术学院酒泉职业技术学院 毕毕 业业 设设 计计 题目模拟交通灯 系别机电工程系 专业机电一体化 班级09 机电 5 班 姓名毛显鹏 学号 091101003 指导教师李玉军 日期2011 年 11 月 I 设计任务书 设计题目 设计题目 单片机的交通灯控制器 设计要求 设计要求 1 在十字路口的两个方向上各设一组红绿黄灯 显示顺序为 其中一个方向是 绿灯 黄灯 红灯 另一个方向是红灯 绿灯 黄灯 2 设置一组数码管 以倒计时的方式显示允许通过或禁止通行的时间 其中左转 灯 绿灯 黄灯 红灯的持续时间分别是 15S 30S 3S 48S 3 当各条路上任意一条出现特殊情况 例如消防车 救护车或其他需要优先放行 的车辆时 各方向上均是红灯亮 倒计时停止 且显示数字在闪烁 当特殊运行状态结 束后 控制器恢复原来状态 继续正常运行 设计进度要求 设计进度要求 第一周 查找资料 初步确定论文题目 第二周 与老师商讨 第三周 确定论文题目 第四周 根据论文题目进一步查找材料 第五周 完成开提报告及论文大纲交老师批阅 第六周 依据论文大纲完成论文一稿交老师批阅 第七周 完成相关论文简介 答辩提纲等 第八周 定稿打印 指导教师 签名 指导教师 签名 李玉军 II 摘 要 近年来随着科技的飞速发展 单片机的应用正在不断地深入发展 同时带动传 统控制检测的更新 在实时检测和自动控制的单片机应用系统中 单片机往往是作 为一个核心部件来使用 仅单片机方面的知识是不够的 还应该根据具体硬件结构 以及针对具体应用对象特点的软件结合 加以完善 十字路口车辆穿梭 行人熙攘 车行车道 人行人道 有条不紊 那么靠什么来 实现这井然秩序呢 靠的是交通信号灯的自动指挥系统 交通信号灯控制方式很多 本系统采用 AT89C52 系列单片机和可编程并行 I O 接口芯片 8255A 为中心器件来设 计交通灯控制器 实现了能根据实际车流量通过 AT89C52 芯片的 P1 口设置红 绿灯 燃亮时间的功能 为了系统稳定可靠采用了 MAX629 看门狗 芯片 避免了系统因 为死机而停止工作的情况发生 显示时间直接通过 8255 的 PA PB 口输出 交通灯 信号通过 PC 口输出 交通灯的点亮采用 VT 双向晶闸管来控制 直接采用 220V 交 流电源驱动 系统实用性强 操作简单 扩展性强 关键词 关键词 单片机 看门狗 MAX629 交通灯 控制器 1 目 录 摘 要 II 1 交通灯的发展及应用 1 2 控制器系统设计 2 2 1 交通管理的方案 2 2 2 系统设计原理 3 3 芯片的选择与简介 6 3 1 AT89C52 芯片简介 6 3 2 8255 芯片简介 9 3 3 数码管 11 4 控制器的软件设计 12 4 1 计数器初值计算 12 4 2 软件延时 13 4 3 AT89C52 并行口的扩展 14 5 程序设计 16 5 1 流程图 16 5 2 程序清单 18 6 看门狗硬件电路 22 6 1 软件看门狗 22 6 2 硬件看门狗 23 7 系统的调试与运行方案 25 7 1 实验步骤 25 7 2 系统内存分配和 I 0 接口 26 7 3 实验程序原代码 27 8 结 论 30 致 谢 31 参考文献 32 1 1 交通灯的发展及应用 目前红绿灯安装在各个道口上 已经成为疏导交通车辆最常见和最有效的手 段 但这一技术在 19 世纪就已出现了 1858 年 在英国伦敦主要街头安装了以燃煤气为光源的红 蓝两色的机械扳手 式信号灯 用以指挥马车通行 这是世界上最早的交通信号灯 1868 年 英国机械 工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上 安装了世界上最早的煤 气红绿灯 它由红绿两以旋转式方形玻璃提灯组成 红色表示 停止 绿色表示 注意 1869 年 1 月 2 日 煤气灯爆炸 使警察受伤 遂被取消 1914 年 电气启动的红绿灯出现在美国 这种红绿灯由红绿黄三色圆形的投光 器组成 安装在纽约市 5 号大街的一座高塔上 红灯亮表示 停止 绿灯亮表示 通行 1918 年 又出现了带控制的红绿灯和红外线红绿灯 带控制的红绿灯 一种是 把压力探测器安在地下 车辆一接近红灯便变为绿灯 另一种是用扩音器来启动红 绿灯 司机遇红灯时按一下嗽叭 就使红灯变为绿灯 红外线红绿灯当行人踏上对 压力敏感的路面时 它就能察觉到有人要过马路 红外光束能把信号灯的红灯延长 一段时间 推迟汽车放行 以免发生交通事故 信号灯的出现 使交通得以有效管制 对于疏导交通流量 提高道路通行能力 减少交通事故有明显效果 1968 年 联合国 道路交通和道路标志信号协定 对各 种信号灯的含义作了规定 绿灯是通行信号 面对绿灯的车辆可以直行 左转弯和 右转弯 除非另一种标志禁止某一种转向 左右转弯车辆都必须让合法地正在路口 内行驶的车辆和过人行横道的行人优先通行 红灯是禁行信号 面对红灯的车辆必 须在交叉路口的停车线后停车 黄灯是警告信号 面对黄灯的车辆不能越过停车线 但车辆已十分接近停车线而不能安全停车时可以进入交叉路口 2 2 2 控制器系统设计控制器系统设计 2 12 1 交通管理的方案交通管理的方案 A B 两干道交于一个十字路口 各干道有一组红 黄 绿三色的指示灯 指挥 车辆和行人安全通行 红灯亮禁止通行 绿灯亮允许通行 黄灯亮提示人们注意红 灯 绿灯的状态即将切换 且黄灯燃亮时间为 A B 两干道的公共停车时间 设 A 道 比 B 道的车流量大 指示灯燃亮的方案如表 2 1 表 2 1 指示灯的状态 从表中可以看出 1 当为黄灯时 A B 两道同时为黄灯 以提示行人或车辆下一个灯色即将 到来 时间 3 秒 2 当 A 到为红灯 A 道车辆禁止通行 A 道行人可通过 B 道为绿灯 B 道车辆通过 行人禁止通行 时间为 60 秒 2 当 A 道绿灯 A 道车辆通行 B 道为红灯 B 道车辆禁止通过 行人通 行 时间为 80 秒 A 道车流大 通行时间长 3 这样如上表的时间和红 绿 黄出现的顺序依次出现这样行人和车辆就 能安全畅通的通行 4 此表可根据车流量动态设定 360380360 A 道黄 灯亮 红 灯亮 黄 灯亮 绿 灯亮 黄 灯亮 红 灯亮 B 道黄 灯亮 绿 灯亮 黄 灯亮 红 灯亮 黄 灯亮 绿 灯亮 3 2 22 2 系统设计原理系统设计原理 选用 AT89C52 单片机一片选用设备 AT89C52 单片机一片 8255 并行通用接 口芯片一片 74LS07 两片 MAX692 看门狗 一片 共阴极的七段数码管两个双 向晶闸管若干 7805 三端稳压电源一个 红 黄 绿交通灯各两个 开关键盘 连线若干 系统总框图如图 2 1 所示 图 2 1 交通灯控制系统总框图 4 交通灯控制线路图 2 2 所示 图 2 2 交通灯控制线路图 1 开关键盘输入交通灯初始时间 通过 AT89C52 单片机 P1 输入到系统 2 由 AT89C52 单片机的定时器每秒钟通过 P0 口向 8255 的数据口送信息 由 8255 的 PC 口显示红 绿 黄灯的燃亮情况 由 8255 的 PA PB 口显示每个灯的燃 5 亮时间 3 AT89C52 通过设置 各个信号等的燃亮时间 通过 AT89C52 设置 黄 绿 红时间依次为 3 秒 60 秒 3 秒 80 秒 3 秒循环由 AT89C52 的 P0 口向 8255 的数 据口输出 4 通过 AT89C52 单片机的 P3 0 位来控制系统是工作或设置初值 当 牌位 0 就对系统进行初始化 为 1 系统就开始工作 5 8255 口用于输出时间的个位 口用于输出时间的十位 由 747S07 驱动芯片驱动 而 口用于输出各个灯的情况 它的末段连接双向晶闸管采用 220V 交流电压驱动 6 在交通控制程序中加入看门狗指令 当系统出现异常看门狗将发出溢出中 断 通过专用端口输入到 MAX692 看门狗芯片的 WDI 引脚引起 RESET 复位信号复位 系统 6 3 3 芯片的选择与简介芯片的选择与简介 3 13 1 AT89C52AT89C52 芯片简介芯片简介 3 1 13 1 1 AT89C52AT89C52 单片机内部结构单片机内部结构 8051 是 AT89C52 系列单片机的典型产品 AT89C52 单片机包含中央处理器 程序存储器 ROM 数据存储器 RAM 定时 计数器 并行接口 串行接口和中断系 统等几大单元及数据总线 地址总线和控制总线等三大总线 见图 3 1 现在说明如 下 图 3 1 总线结构 1 中央处理器 中央处理器 CPU 是整个单片机的核心部件 是 8 位数据宽度的处理器 能处理 8 位二进制数据或代码 CPU 负责控制 指挥和调度整个单元系统协调的工作 完成 运算和控制输入输出功能等操作 2 数据存储器 RAM AT89C52 内部有 128 个 8 位用户数据存储单元和 128 个专用寄存器单元 它们 是统一编址的 专用寄存器只能用于存放控制指令数据 用户只能访问 而不能用 于存放用户数据 所以 用户能使用的 RAM 只有 128 个 可存放读写的数据 运算 的中间结果或用户定义的字型表 3 存储器 ROM AT89C52 共有 4096 个 8 位掩膜 ROM 用于存放用户程序 原始数据或表格 4 定时 计数器 ROM 7 AT89C52 有两个 16 位的可编程定时 计数器 以实现定时或计数产生中断用于 控制程序转向 5 并行输入输出 I O 口 AT89C52 共有 4 组 8 位 I O 口 P0 P1 P2 或 P3 用于对外部数据的传输 6 全双工串行口 AT89C52 内置一个全双工串行通信口 用于与其它设备间的串行数据传送 该 串行口既可以用作异步通信收发器 也可以当同步移位器使用 7 中断系统 AT89C52 具备较完善的中断功能 有两个外中断 两个定时 计数器中断和一个 串行中断 可满足不同的控制要求 并具有 2 级的优先级别选择 8 时钟电路 AT89C52 内置最高频率达 12MHz 的时钟电路 用于产生整个单片机运行的脉冲 时序 但 AT89C52 单片机需外置振荡电容 单片机的结构有两种类型 一种是程序存储器和数据存储器分开的形式 即哈 佛 Harvard 结构 另一种是采用通用计算机广泛使用的程序存储器与数据存储器合 二为一的结构 即普林斯顿 Princeton 结构 INTEL 的 AT89C52 系列单片机采用 的是哈佛结构的形式 而后续产品 16 位的 MCS 96 系列单片机则采用普林斯顿结构 3 1 23 1 2 AT89C52AT89C52 的引脚说明的引脚说明 AT89C52 系列单片机中的 8031 8051 及 8751 均采用 40Pin 封装的双列直接 DIP 结构 右图是它们的引脚配置 40 个引脚中 正电源和地线两根 外置石英振荡器 的时钟线两根 4 组 8 位共 32 个 I O 口 中断口线与 P3 口线复用 引脚如图 3 2 所示 8 图 3 2 引脚图 RESET Vpd复位信号复用脚 当 AT89C52 通电 时钟电路开始工作 在 RESET 引 脚上出现 24 个时钟周期以上的高电平 系统即初始复位 初始化后 程序计数器 PC 指向 0000H P0 P3 输出口全部为高电平 堆栈指针写入 07H 其它专用寄存器被 清 0 RESET 由高电平下降为低电平后 系统即从 0000H 地址开始执行程序 然 而 初始复位不改变 RAM 包括工作寄存器 R0 R7 的状态 AT89C52 的初始态 AT89C52 的复位方式可以是自动复位 也可以是手动复位 见图 3 3 此外 RESET Vpd还是一复用脚 Vcc掉电其间 此脚可接上备用电源 以保证单片机内部 RAM 的数据不丢失 图 3 3 复位电路 ALE 当访问外部程序器时 ALE 地址锁存 的输出用于锁存地址的低位字节 而访问内部程序存储器时 ALE 端将有一个 1 6 时钟频率的正脉冲信号 这个信号 可以用于识别单片机是否工作 也可以当作一个时钟向外输出 更有一个特点 当 访问外部程序存储器 ALE 会跳过一个脉冲 如果单片机是 EPROM 在编程其间 将用于输入编程脉冲 当访问外部程序存储器时 此脚输出负脉冲选通信号 PC 的 16 位地址数据 将出现在 P0 和 P2 口上 外部程序存储器则把指令数据放到 P0 口上 由 CPU 读入并 执行 EA Vpp程序存储器的内外部选通线 AT89C52 单片机 内置有 4kB 的程序存储器 当 EA 为高电平并且程序地址小于 4kB 时 读取内部程序存储器指令数据 而超过 9 4kB 地址则读取外部指令数据 如 EA 为低电平 则不管地址大小 一律读取外部程 序存储器指令 显然 对内部无程序存储器的 AT89C52 EA 端必须接地 在编程时 EA Vpp脚还需加上 21V 的编程电压 3 23 2 82558255 芯片简介芯片简介 8255 可编程并行接口芯片简介 8255 可编程并行接口芯片有三个输入输出端口 即 A 口 B 口和 C 口 对应于 引脚 PA7 PA0 PB7 PB0 和 PC7 PC0 其内部还有一个控制寄存器 即控制口 通常 A 口 B 口作为输入输出的数据端口 C 口作为控制或状态信息的端口 它在方 式字的控制下 可以分成 4 位的端口 每个端口包含一个 4 位锁存器 它们分别与 端口 A 配合使用 可以用作控制信号输出或作为状态信号输入 8255 可编程并行接口芯片方式控制字格式说明 8255 有两种控制命令字 一个是方式选择控制字 另一个是 C 口按位置位 复 位控制字 其中 C 口按位置位 复位控制字方式使用较为繁难 说明也较冗长 故 在此不作叙述 需要时用户可自行查找有关资料 方式控制字格式说明如表 3 1 表 3 1 8255 方式控制字 D7 设定工作方式标志 1 有效 D6 D5 A 口方式选 0 0 方式 0 0 1 方式 1 1 方式 2 D4 A 口功能 1 输入 0 输出 D3 C 口高 4 位功能 1 输入 0 输出 D2 B 口方式选择 0 方式 0 1 方式 1 D1 B 口功能 1 输入 0 输出 D0 C 口低 4 位功能 1 输入 0 输出 D7D6D5D4D3D2D1D0 10 8255 可编程并行接口芯片工作方式说明 方式 0 基本输入 输出方式 适用于三个端口中的任何一个 每一个端口都 可以用作输入或输出 输出可被锁存 输入不能锁存 方式 1 选通输入 输出方式 这时 A 口或 B 口的 8 位外设线用作输入或输出 C 口的 4 条线中三条用作数据传输的联络信号和中断请求信号 方式 2 双向总线方式 只有 A 口具备双向总线方式 8 位外设线用作输入或输出 此时 C 口的 5 条线用作通讯联络信号和中断请求信号 3 33 3 数码管数码管 采用共阴极的七段数码管 如图 3 4 所示 图 3 4 数码管电路 VT 为双向晶闸管 当门极为高电平时晶闸管导通 该支路指示灯亮 当门极为 低电平时晶闸管关断 该支路指示灯灭 11 4 4 控制器的软件设计控制器的软件设计 延时方法可以有两种一中是利用 AT89C52 内部定时器才生溢出中断来确定 1 秒 的时间 另一种是采用软延时的方法 4 14 1 计数器初值计算计数器初值计算 定时器工作时必须给计数器送计数器初值 这个值是送到 TH 和 TL 中的 他是 以加法记数的 并能从全 1 到全 0 时自动产生溢出中断请求 我们采用在主程序中设定一个初值为 20 的软件计数器和使 T0 定时 50 毫秒 这 样每当 T0 到 50 毫秒时 CPU 就响应它的溢出中断请求 进入他的中断服务子程序 在中断服务子程序中 CPU 先使软件计数器减 然后判断它是否为零 为零表示 秒已到可以返回到输出时间显示程序 相应程序代码 1 主程序 定时器需定时 50 毫秒 故 T0 工作于方式 1 初值 TC M T T 计数 216 50ms 1us 15536 3CBOH ORG 1000H START MOV TMOD 01H 令 T0 为定时器方式 1 MOV TH0 3CH 装入定时器初值 MOV TL0 0B0H MOV IE 82H 开 T0 中断 SEBT TR0 启动 T0 计数器 MOV R0 14H 软件计数器赋初值 OP SJMP 等待中断 2 中断服务子程序 ORG 000BH AJMP BRT0 ORG 00BH BRT0 DJNZ R0 NEXT AJMP TIME 跳转到时间及信号灯显示子程序 DJNZ MOV R0 14H 恢复 R0 值 12 MOV TH0 3CH 重装入定时器初值 MOV TL0 0B0H MOV IE 82H RETI END 4 24 2 软件延时软件延时 AT89C52 的工作频率为 2 12MHZ 我们选用的 AT89C52 单片机的工作频率为 6MHZ 机器周期与主频有关 机器周期是主频的 12 倍 所以一个机器周期的时间为 12 1 6M 2us 我们可以知道具体每条指令的周期数 这样我们就可以通过指令 的执行条数来确定 1 秒的时间 具体的延时程序 DELAY MOV R4 08H 延时 1 秒子程序 DE2 LCALL DELAY1 DJNZ R4 DE2 RET DELAY1 MOV R6 0 延时 125ms 子程序 MOV R5 0 DE1 DJNZ R5 DJNZ R6 DE1 RET MOV RN DATA 所以此指令的执行时间为 2ms DELAY1 为一个双重循坏 循环次数为 256 256 65536 所以延时时间 65536 2 131072us 约为 125us DELAY R4 设置的初值为 8 主延时程序循环 8 次 所以 125us 8 1 秒 由于单片机的运行速度很快其它的指令执行时间可以忽略 不计 13 4 34 3 AT89C52AT89C52 并行口的扩展并行口的扩展 AT89C52 虽然有 4 个 8 位 I O 端口 但真正能提供借用的只有 P1 口 因为 P2 和 P0 口通常用于传送外部传送地址和数据 P3 口也有它的第二功能 因此 AT89C52 通常需要扩展 由于我们用外输出时间时 时间的个位 十位 信号灯的显示都要 用到一个 I O 端口 显然 AT89C52 的端口是不够 需要扩展 扩展的方法有两种 1 借用外部 RAM 地址来扩展 I O 端口 2 采用 I O 接口来扩充 本设计中采用 8255 并行接口信片来扩展 I O 端口 4 3 14 3 1 显示原理显示原理 当定时器定时为 1 秒 时程序跳转到时间显示及信号灯显示子程序 它将依次 显示信号灯时间 同时一直显示信号灯的颜色 这时在返回定时子程序定时一秒 在显示黄灯的下一个时间 这样依次把所有的灯色的时间显示完后在重新给时间计 数器赋初值 重新进入循环 4 3 24 3 2 82558255 输出信号的放大输出信号的放大 要使行人能看见信号灯的情况 必须把 8255 输出的信号进行放大 这里我们 用 VT 为双向晶闸管 当门极为高电平时晶闸管导通 该支路指示灯亮 当门极为低 电平时关断 该支路指示灯灭 4 3 34 3 3 82558255 输出信号与信号灯的连接输出信号与信号灯的连接 LED 灯的显示原理 通过同名管脚上所加电平的高低来控制发光二极管是否点量 而显示不同的字形如 SP g f e d c b a 管脚上加上 7FH 所以 SP 为 0 伏 不亮 其余为 TTL 高电平 全亮则显示为 8 采用共阴级连接 见表 4 1 所示 14 表 4 1 驱动代码表 显示数值 dop g f e d c b a 驱动代码 16 进制 00 0 1 1 1 1 1 1 3FH 1 0 0 0 0 0 1 1 006H 2 0 1 0 1 1 0 1 15BH 3 0 1 0 0 1 1 1 14FH 4 0 1 1 0 0 1 1 066H 5 0 1 1 0 1 1 0 06DH 6 0 1 1 1 1 1 0 07DH 7 0 0 0 0 0 1 1 107H 8 0 1 1 1 1 1 1 17FH 4 3 44 3 4 82558255 与与 AT89C52AT89C52 的连接的连接 用 AT89C52 的 P0 口的 p0 7 连接 8255 的片选信号 cs 我们用 AT89C52 的地 址采用全译码方式 当 p0 7 0 时片选有效 其它无效 p0 1 p0 1 用于选 择 8255 端口 P0 7 p0 6 p0 5 p0 4 p0 3 p0 2 P0 1 P0 0 A7 A6 A5 A4 A3 A2 A1 A0 1 X X X X X 0 0 00H 为 8255 的 PA 口 1 X X X X X 0 1 01H 为 8255 的 PB 口 1 X X X X X 1 0 02H 为 8255 的 PC 口 1 X X X X X 1 1 03H 为 8255 的控制口 由于AT89C52是分时对 8255 和储存器进行访问所以AT89C52的 P0 口不会发生冲突 15 5 5 程序设计程序设计 5 15 1 流程图流程图 R4 存放黄灯时间 3 03H 此时间可以动态设定 R5 存放红灯时间 60 3CH R6 存放绿灯时间 80 50H PC0 显示黄灯信号 PC1 显示红灯信号 PC2 显示黄灯信号 8825 工作于方式 0 8255 PA PB PC 口输出 PC 控制字为 10000000B 80H 主程序如图 5 1 所示 图 5 1 主程序流程图 开始 初始化 等待键盘事件 键盘事件 处理 显示程序处 理 16 图 5 2 程序流程图 5 25 2 程序清单程序清单 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV R1 03H 初始化 8255 MOV A 80H MOVX R1 A 17 AGAIN MOV P3 80H 设置初值 MOV A P3 JB ACC 7 NEXT0 AGAIN1 MOV P3 40H MOV A P3 JB ACC 6 RED MOV P3 0FH MOV A P3 ANL A 0FH MOV R3 A AJMP AGAIN1 RED MOV P3 0FH MOV A P3 ANL A 0FH MOV R2 A AJMP AGAIN NEXT0 MOV R1 03H NEXT1 MOV DPTR TAB 显示黄灯个位 MOV A R1 MOVC A A DPTR MOV R1 00H MOVX R1 A MOV R1 O MOV DPTR TAB 显示黄灯十位 MOV A R0 18 MOVC A A DPTR MOV R1 01H MOVX R1 A MOV DPTR 0C62H 显示黄灯信号 MOV A 00H LCALL 0F4E0H ACALL DELAY 延时 1 秒 DJNZ R0 NEXT1 MOV A R3 MOV R0 A NEXT2 MOV DPTR TAB 显示红灯个位 MOV A R0 MOVC A A DPTR MOV R1 00H MOVX R1 A MOV DPTR TAB 显示红灯十位 MOV A R0 MOVC A A DPTR MOV R1 01H MOV A R0 MOVX R1 R0 MOV R1 02H 显示红灯信号 MOV A 02H MOVX R1 A 19 ACALL DELAY 延时 1 秒 DJNZ R0 NEXT2 MOV A R2 MOV R0 A NEXT3 MOV DPTR TAB 显示绿灯个位 MOV A R0 MOVC A A DPTR MOV R1 00H MOVX R1 R0 MOV DPTR TAB 显示绿灯十位 MOV A R0 MOVC A A DPTR MOV R1 01H MOV A R0 MOVX R1 R0 MOV R1 02H 显示绿灯信号 MOV A 02H MOVX R1 A ACALL DELAY 延时 1 秒 DJNZ R0 NEXT3 AJMP NEXT0 DELAY MOV R4 08H 延时 1 秒子程序 DE2 LCALL DELAY1 20 DJNZ R4 DE2 RET DELAY1 MOV R6 0 MOV R5 0 DE1 DJNZ R5 DJNZ R6 DE1 RET TAB DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 7CH 39H 5EH 79H 71H END 21 6 6 看门狗硬件电路看门狗硬件电路 由于单片机自身的抗干扰能力比较差 尤其在一些条件比较恶劣 噪声大的场 合 常会出现单片机因为受外界干扰而导致死机的现象 造成系统不能正常工作 设置看门狗是为了防止单片机死机 提高单片机系统抗干扰性的一种重要途径 一个完整的单片机应用系统应该是一个软 硬件的结合体 在系统正常工作时 会受到各种外界干扰因素的影响 这种外界干扰轻者导致系统内部数据出错 重者 将严重影响程序的运行 因此单片机应用系统的开发一定要考虑系统可靠性的设计 以满足系统在现场苛刻环境下的正常运行 而 看门狗 则是系统可靠性设计的重 要一环 在一个单片机应用系统中 所谓的 看门狗 是指在系统设计中通过软件 或硬件方式在一定的周期内监控单片机或其它 CPU 的运行情况 如果在规定的时间 内没有收到来自单片机或其它 CPU 的触发信号 则系统会强制复位 以保证系统在 受到干扰时仍能够维持正常的工作状态 在单片机系统中 看门狗的设计一般采用 硬件和软件结合两种方式 6 16 1 软件看门狗软件看门狗 软件看门狗是利用单片机片内闲置的定时器 计数器单元作为看门狗 在单片 机程序中适当的插入监控指令 当程序出现异常或进入死循环时 利用软件将程序 计数器 PC 赋予初始值 强制性的使程序重新开始运行 使用软件看门狗的具体实现方法如下 1 首先在初始化程序中设置好定时器 计数器的方式控制寄存器 TMOD 和定时 时间的初值 并开中断 2 根据定时器的定时时间 在主程序中按一定的间隔插入复位定时器的指令 既 插入监控指令 两条指令间的时间间隔应该小于定时时间 否则看门狗将发生错 误动作 3 在定时器的中断服务程序中设置一条无条件转移指令 将程序计数器 PC 转移 到初始化程序的入口 软件看门狗的最大特点是无须外加硬件电路 经济性好 当然 如果片内的 定时器 计数器被占用 就需要寻求其它的设计方式了 22 6 26 2 硬件看门狗硬件看门狗 专用硬件看门狗是指一些集成化的或集成在单片机内的专用看门狗电路 它实 际上是一个特殊的定时器 当定时时间到时 发出溢出脉冲 从实现角度上看 该 方式是一种软件与片外专用电路相结合的技术 硬件电路连接好后 在程序中适当 地插入一些看门狗复位的指令 保证程序正常运行时看门狗不溢出 而当程序运行 异常时 看门狗超时发出溢出脉冲 通过单片机的 RESET 引脚使单片机复位 这种 方式中 看门狗能否可靠有效地工作 与硬件组成及软件的控制策略都有密切的关 系 目前常用的集成看门狗电路很多 如 MAX705 708 MAX813L X5043 5045 等 看门狗电路可以分为内看门狗和外看门狗 看门狗电路是指看门狗的硬件电路 包含在单片机内部 如 Microchip 的 16C5x 系列 MOTOROLA 的 68C05 系列 51 内核 中比较典型的有 Atmel 公司的 AT89C55WD AT89S8252 Winbond 公司的 W77E58 SST 公司的 SST89C58 以及 Philips 公司 87 系列的多种型号的单片机等 对于没有看门狗定时器的单片机或是认为内部看门狗不可靠时 可以采用外部 看门狗定时器 外部看门狗电路既可以用专用看门狗芯片 也可由普通芯片实现 这里 以专用芯片 MAX692 作为外部看门狗的电路 MAX692 是微系统监控电路芯片 具有后备电池切换 掉电判别 看门狗监控等 功能 其封装和引脚说明如图 6 1 所示 VOUTVOUT VBATTVBATT VCCVCC RESETRESET GNDGND WDIWDI PFIPFI PFD PFD 图 6 1 MAX692 封装和引脚 VOUT 电源输出引脚 MAX692 1 2 3 4 5 6 7 8 23 VCC 接电源引脚 电源供电 3 0 5 5V GND 接地 PFI 电池故障输入 PFO 电池故障输出 WDI 监视器输入引脚 RESET 复位输出引脚 低电平有效 VBATT 后备电池输入端 MAX692 在本文的单片机系统中的具体使用方法和电路原理图 MAX692 电路原理图如图 6 2 所示 其中 WDI 是看门狗监测输入脚 接到 CPU 的一个 专用 I O 口或一个总线上 RESET 是复位信号输出脚 接到 CPU 的复位输入脚 MAX692 的 WDI 定时周期是 1 6s 复位脉冲宽度是 200ms 如果 WDI 保持高或低超过 看门狗定时周期 1 6s RESET 端将发生 200ms 的负脉冲使 CPU 复位 图 6 2 MAX692 电路原理图 24 7 7 系统的调试与运行方案系统的调试与运行方案 系统的调试与运行采用 TDN86 51 教学实验系统 系统简介 开启计算机及实验平台 进入 TDN 的子目录 键入 MD51 选择 1 1 COM1 口 进入系统集成软件 功能介绍 F1 EDIT 编辑 可以对源程序进行编辑 F2 MASM 汇编源程序 F3 LINK 连接成可执行文件 HEX F5 LOAD 将可执行文件载入实验系统 F6 SAVE 保存 F8 EXIT 推出系统 7 17 1 实验步骤实验步骤 1 按照系统硬件连线图连好 说明 由于此实验平台只提供了一个显示灯接口所以我们只用 了 8255 的 PA 口 只用了一个显示灯 和 3 个 LED 灯 AT89C52 的 P1 口的低 4 位用于给系统赋初 值 P1 7 用于控制系统工作或初始化 P1 6 用于控制是对红灯 绿灯进行初始化 2 把编好的程序进行汇编对输入单片机 AT89C52 仿真器和对 8255 进行初始化 3 通过平台上的开关来设定红 绿等的初值 4 先使 K7 拨为 0 观察 LED 灯和 8 段数码管的显示情况 拨 K6 为 0 设置 拨 K3 K2 K1 K0 为 0101 即红灯时间为 5 秒 拨 K6 为 1 设置 拨 K3 K2 K1 K0 为 1001 即绿灯时间为 9 秒 观察观察 LED 灯和 8 段数码管的显示与设置的时间和 LED 的颜色是否一致 5 不一致反复调试程序认识检查线路连接是否正确 直到与预定目的一致 25 7 27 2 系统系统内存分配和内存分配和 I 0I 0 接口接口 1 程序空间 64k 表 7 1 程序空间分配表 地址使用情况芯片 0000 3FFFH 用户程序区 U23RAM 4000 DFFFH 用户程序区 E000 FFFFH 系统保留 ROM 2 I O 接口分配 用户程序区 8255 的端口地址如下表 表 7 2 8255 的端口地址 信号线寄存器 编址 A 口 0C60H B 口 0C61H C 口 0C62H IOY3 控制寄存器 0C63H 7 37 3 实验程序原代码实验程序原代码 从 8255 的 PB 口输入开关量 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV DPTR 0C63H MOV A 82H LCALL 0F4E0H AGAIN MOV DPTR 0C61H 26 LCALL 0F4E3H MOV C ACC 7 JC NEXT0 AGAIN1 MOV DPTR 0C61H LCALL 0F4E3H MOV C ACC 6 JC RED MOV DPTR 0C61H LCALL 0F4E3H ANL A 0FH MOV R3 A AJMP AGAIN1 RED MOV DPTR 0C61H LCALL 0F4E3H ANL A 0FH MOV R2 A AJMP AGAIN NEXT0 MOV R0 03H NEXT1 MOV DPTR TAB MOV A R0 MOVC A A DPTR MOV DPTR 0C60H LCALL 0F4E0H MOV DPTR 0C62H MOV A 00H LCALL 0F4E0H 27 ACALL DELAY DJNZ R0 NEXT1 MOV A R2 MOV R0 A NEXT2 MOV DPTR TAB MOV A R0 MOVC A A DPTR MOV DPTR 0C60H LCALL 0F4E0H MOV DPTR 0C62H MOV A 02H LCALL 0F4E0H ACALL DELAY DJNZ R0 NEXT2 MOV A R3 MOV R0 A NEXT3 MOV DPTR TAB MOV A R0 MOVC A A DPTR MOV DPTR 0C60H LCALL 0F4E0H MOV DPTR 0C62H 28 MOV A 04H LCALL 0F4E0H ACALL DELAY DJNZ R0 NEXT3 AJMP NEXT0 DELAY MOV R4 08H DE2 LCALL DELAY1 DJNZ R4 DE2 RET DELAY1 MOV R6 0 MOV R5

温馨提示

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

评论

0/150

提交评论