




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录 职 业 技 术 学 院 毕业设计报告 交通灯控制系统交通灯控制系统 学生姓名学生姓名 所所 在在 系系电子工程系电子工程系 班班 级级电电 08 微电微电 1 班班 专专 业业微电子技术微电子技术 指导教师指导教师 2010 年年 11 月月 X 日日 目录 摘要摘要 3 第一章第一章 绪论绪论 4 1 1 设计原因 4 1 2 交通灯颜色的选取机理 4 1 3 现代交通灯的控制技术 4 第二章第二章 设计方案设计方案 5 2 1 设计要求 5 2 2 选题依据 5 2 3 单片机的特点 5 2 4AT89S52 6 2 5 AT89S52 的组成 8 2 6 时钟震荡电路 9 2 7 复位电路 9 第三章 交通灯的电路设计第三章 交通灯的电路设计 11 3 1 数码管分类 11 3 2 CD4511 12 3 3 指示灯电路设计 13 第四章第四章 软件程序设计软件程序设计 15 4 1 指示灯的算法设计和端口连接 15 4 2 显示电路设计算法和接口 17 4 3 延时程序 17 4 4 中断 19 4 5 交通灯总体设计流程 20 总结总结 21 附录附录 1 1 交通灯控制系统仿真全图 交通灯控制系统仿真全图 22 附录附录 2 交通灯控制系统源程序 交通灯控制系统源程序 23 参考文献参考文献 28 Comment i1 摘要放在目录的前面 并且页脚用罗马数字 摘要 2 摘要 为了克服交通工具的迅速发展 给城市交通带来 的一系列的问题 在交 通管理 交通控制系统方面采用了计算机 自动化等新技术 本篇论文就是为 了有序管理交通而设计的 此设计是基于单片机来完成对交通灯的控制 达到 准确 高效的控制目的 现代科技最重要的是自动化 自动化的目的就是为了 提高效率减少人力资源的耗散 本设计采用了单片机为设计方法 基于 keil 和 proteus 为设计工具 运用数字电路和模拟电路的方法来完成设计 论文主 要分为四大章节 分别从交通灯的基本形式 设计方法 电路的设计和程序设 计的等几个方向来进行 本设计并非实际运用中的成品 考虑到成本和功能的限制 做出的产品是 小型原理的实物实验品 运用的信号指示等是发光二极管 计数屏为七段数码 显示管由于知识水平的局限性 其中可能有很多不足之处 还望读者多多提点 以求改进 关键词关键词 交通灯 单片机 Comment i2 第一章开始 页脚编 码用阿拉伯数字 1 2 第一章 3 第一章 绪论 1 1 设计原因 近年来在快速城市化进程和经济发展的影响下城市交通迅速增长 交通问 题成为了困扰许多城市发展的通病交通拥挤成为制约城市经济和社会发展的 瓶颈 而且随着机动车数量的增加而日趋严重 由于我国道路设施不足 路 网设计不合理 道路建设空间受制约 城市车辆数量急速增加 交通供应不能 满足机动车迅速增长的需要 出现上下班高峰期堵车塞车 交通事故频发等事 件 为了改善交通形式 减小管理负担 运用自动化的交通灯控制系统成为了 必要的交通控制手段 1 2 交通灯颜色的选取机理 运用红 绿 黄 三色来作交通讯号 是和人的视觉机能结构和心理反应有 关 我们的视网膜含有杆状和三种锥状感光细胞 杆状细胞对黄色的光特别 敏感 三种锥状细胞则分别对红光 绿光及蓝光敏感 由于这种视觉结构 人最容易分辨红色与绿色 虽然黄色与蓝色也容易分辨 但因为眼球 对蓝 光敏感的感光细胞较少 所以分辨颜色 还是以红 绿色为佳 所以通常 的交通灯都采用红 绿 黄三色信号灯来指挥交通 此外用红色来作为禁行 的原因是红色光的穿透力很强 就算是在大雾天气也能够看见 而黄色的 穿透力在红色后面所以用黄色来作为警惕信号 绿色则作为通行讯号 1 3 现代交通灯的控制技术 如今 在太阳能 风能 核能等新能源开发 集成电路的迅猛发展的前 提下 交通控制系统已经呈现 低能耗 高性能的发展 比如在我国部分城市 已经出现了太阳能的交通控制信号灯 而且交通控制系统不只运用于城市道 路等方面 现在某些高端汽车基本装有智能速度传感器 智能控速系统和车 距测量系统 和自动驾驶系统等 这些系统都是为城市交通安全服务的 而这 些系统的运用 都离不开自动控制这一 技术 单片机就是 比较好自动控制 方式 由此本文将以单片机为主要方向讲述交通灯控制系统的开发过程 第二章 4 第二章 设计方案 2 1 设计要求 自动开关合上 东西绿灯亮 4 秒 闪 2 秒灭 黄灯亮 2 秒灭 红灯亮 8 秒 绿灯亮 4 秒 闪 2 秒灭 黄灯亮 2 秒灭 红灯亮 8 秒循环 对应东西 绿灯黄灯亮时 南北红灯亮 8 秒 接着绿灯亮 4 秒闪 2 秒灭 黄灯亮 2 秒 后 红灯又亮 8 秒循环 2 2 选题依据 选择交通灯控制系统作为毕业设计的目的是因为其一 能够和即将学习 的单片机知识挂钩 能够促进对于新事物的专研程度 其二 交通灯控制 系统可以从硬件和软件两方面的方向出发 能够对以前所学的知识达到综合 的运用 其三 运用单片机来做来做其成本比较低廉 电路简单 而且单片 机还有非常多的优点 再加上能够运用 proteus 和 keil 两个软件来进行设 计过程中的仿真 proteus 的仿真功能非常强大 不仅可以对单片机内部进 行仿真还可以对其外围电路进行仿真 Keil C51 软件提供丰富的库函数和 功能强大的集成开发调试工具 全 Windows 界面 生成的目标代码效率非常 高 多数语句生成的汇编代码很紧凑 容易理解 在开发大型软件时更能体 现高级语言的优势 2 3 单片机的特点 单片机是一种集成在电路芯片 是采用超大规模集成电路技术把具有数据 处理能力的中央处理器 CPU 随机存储器 RAM 只读存储器 ROM 多种 I O 口和中 断系统 定时器 计时器等功能 可能还包括显示驱动电路 脉宽调制电路 模 拟多路转换器 A D 转换器等电路 集成到一块硅片上构成的一个小而完善的 计算机系统 单片机的芯片作为作为控制系统的核心部件 除了具有通用微机 CPU 的数值计算功能外 还具有灵活的 强大的控制功能 以便完成对外部系 统控制输入量检测 并控制输出量 实现自动控制 由于单片机是面向工业控 制的 工作环境恶劣 单片机具有抗干扰能力强 工作温度范围宽 可靠性高 第二章 5 控制功能很强 数值运算能力较差 指令系统比通用微机系统简单 更新换代 速度比通用微处理器慢的多等优点 2 4AT89S52 AT89S52 是一种低功耗 高性能 CMOS 8 位微控制器 具有 8K 在系统可编 程 Flash 存储器 使用 Atmel 公司高密度非易失性存储器技术制造 与工业 80C51 产品指令和引脚完全兼容 片上 Flash 允许程序存储器在系统可编程 亦适于常规编程器 在单芯片上 拥有灵巧的 8 位 CPU 和在系统可编程 Flash 使得 AT89S52 为众多嵌入式控制应用系统提供高灵活 超有效的解决方 案 AT89S52 具有以下标准功能 8k 字节 Flash 256 字节 RAM 32 位 I O 口线 看门狗定时器 2 个数据指针 三个 16 位定时器 计数器 一个 6 向量 2 级中断结构 全双工串行口 片内晶振及时钟电路 另外 AT89S52 可降至 0Hz 静态逻 辑操作 支持 2 种软件可选择节电模式 空闲模式下 CPU 停止工 作 允许 RAM 定时器 计数器 串口 中断继续工 作 掉电保护方式下 RAM 内容被保存 振荡器被冻结 单片机一切工作停止 直到下一个中断或硬件复 位为止 P0 口 P0 口是一个 8 位漏极开路的双向 I O 口 作为输出口 每位能驱 动 8 个 TTL 逻辑电平 对 P0 端口写 1 时 引脚用作高阻抗输入 当访问外 部程序和数据存储器时 P0 口也被作为低 8 位地址 数据复用 在这种模式下 P0 不具有内部上拉电阻 在 flash 编程时 P0 口也用来接收指令字节 在程序 校验时 输出指令字节 程序校验时 需要外部上拉电阻 P1 口 P1 口是一个具有内部上拉电阻的 8 位双向 I O 口 p1 输出缓冲 器能驱动 4 个 TTL 逻辑电平 对 P1 端口写 1 时 内部上拉电阻把端口拉高 此时可以作为输入口使用 作为输入使用时 被外部拉低的引脚由于内部电阻 的原因 将输出电流 此外 P1 0 和 P1 2 分别作定时器 计数器 T2 的外部计 数输入 P1 0 T2 和定时器 计数器 T2 的触发输入 P1 1 T2EX 在 flash 编程和校验时 P1 口接收低 8 位地址字节 Comment i3 这是第二章 编号应 该为图 2 1 仔细看你所有的图 是 否编号正确 第二章 6 图 3 1 单片机引脚封装图 RST 复位输入 当振荡器工作时 RST 引脚出现两个机器周期以上高电 平将使单片机复位 ALE PROG 当访问外部程序存储器或数据存储器时 ALE 地址锁存允许 输出脉冲用于锁存地址的低 8 位字节 一般情况下 ALE 仍以时钟振荡频率的 1 6 输出固定的脉冲信号 因此它可对外输出时钟或用于定时目的 要注意的 是 每当访问外部数据存储器时将跳过一个 ALE 脉冲 对 FLASH 存储器编程期间 该引脚还用于输入编程脉冲 PROG 如有必要 可通过对特殊功能寄存器 SFR 区中的 8EH 单元的 D0 位置位 可禁止 ALE 操作 该位置位后 只有一条 MOVX 和 MOVC 指令才能将 ALE 激活 此外 该引脚会被微弱拉高 单片机执行外部程序时 应设置 ALE 禁止位无效 PSEN 程序储存允许 PSEN 输出是外部程序存储器的读选通信号 当 AT89S52 由外部程序存储器取指令 或数据 时 每个机器周期两次 PSEN 有效 即输出两个脉冲 在此期间 当访问外部数据存储器 将跳过两次 PSEN 信号 EA VPP 外部访问允许 欲使 CPU 仅访问外部程序存储器 地址为 0000H FFFFH EA 端必须保持低电平 接地 需注意的是 如果加密位 LB1 被编程 复位时内部会锁存 EA 端状态 如 EA 端为高电平 接 Vcc 端 CPU 则执行内部程序存储器的指令 FLASH 存储器编程时 该引脚加上 12V 的编程 允许电源 Vpp 当然这必须是该器件是使用 12V 编程电压 Vpp XTAL1 外接时钟 震荡输入口 XTAL2 外接时钟震荡输出口 Comment i4 第二章 7 2 5 AT89S52 的组成 图 3 2 单片机组成框图 单片机 AT89S52 由时钟电路 内存储 ROM 外存储 RAM 定时器 并行口 串行口 CPU 和中断系统等几大部分构成 CPU 由运算器和控制器构成 其中运算器由算术逻辑单元 ALU 累加 A 暂 存 1 暂存 2 程序状态字 PSW 寄存器 B 寄存器构成 ALU 可以在控制器的信号下进行算术和逻辑运算 累加 A 最常用的专用寄存器 可存放操作数和操作结果 程序状态字 PSW PSW 程序状态字寄存器是一个 8 位特殊功能寄存器 用于 存放指令执行后结果的状态信息 B 寄存器 B 寄存器是 8 位特殊寄存器和累加 A 协同作用 完成乘除法运算 在不做乘除法运算时候 可以作为通用寄存器使用 控制器是单片机的控制和指挥中心 能根据不同的指令产生不同的 操作信 号 控制器包括 程序计数器 PC 指令寄存器 IR 指令译码器 ID 振荡器 定时电路和控制电路等 程序计数器 是一个 16 位的寄存器 存放的是 CPU 将要执行的下一条指令 地址 CPU 每执行完一条指令 PC 就自动加 1 地址寄存器 AR 存放将要执行的指令地址 存储单元地址或输入输出设备 地址 属于暂存器 数据寄存器 DR 存放正在译码的指令 从数据总线来的操作数 送往存储 器的操作数 中间结果 最后结果等 也属于暂存器 P1 P2 P3 P4 几个端口是并行输出输入口 FLASH 8K 可编程闪烁存储器 Comment i5 Comment i6 第二章 8 RAM 256B 的内部存储器 总线结构 总线信息按传输性质能够分成控制总线 数据总线 地址总线 成为三总线结构 控制总线 传送 CPU 发送的控制信号 也可以是其他部件输入到微处理器 的信息 对于每一条控制线 其传送方向是固定的 地址总线 用于传送 CPU 发送的地址信息 以选择需要访问的存储单元和 I O 端口 由于地址总线是单向的因此 CPU 只能向外传送地址信息 数据总线 用于 CPU I O 接口之间传送数据 属于双向传输线 2 6 时钟震荡电路时钟震荡电路 图 3 4 时钟振荡电路 图 3 5 外部时钟源接法 XTAL1 19 引脚 接外部晶体的一个引脚 在片内 它是一个反向放大 器的输入端 这个放大器构成了片内振荡器 当采用外部振荡器时 对 HMOS 单 片机来讲 XTAL1 脚应接地 对 CHMOS 单片机来讲 XTAL1 脚作为驱动端 XTAL2 18 引脚 接外部晶体的另一端 在片内 接到上述反向放大器 的输出端 当采用外部振荡器时 对 HMOS 来讲 XTAL2 脚接收振荡器的信号 即把此信号直接接到时钟发生器的输入端 对 CHMOS 此引脚悬浮 2 7 复位电路 单片机复位是使得单片机的 CPU 和其他的功能部件都处在一个确定的初始 状态 并从这个状态开始工作 其复位条件是复位引脚加上持续两个机器周期 有的高电平 Comment i7 前面好像也有图 3 3 和 图 3 4 第二章 9 3 3 按键复位电路 3 4 上电复位电路 如上图 3 3 是按键复位 如果要复位 只需按下开关此时电源 Vcc 经电阻 在 RESE 端产生一个复位高电平 图 3 4 是上电复位接电瞬间 RESET 端电压和 Vcc 一样 随着充电电流的减少 RESET 端电压下降 只要保证充电时间大于两 个机器周期 电路就能正常复位 Comment i8 每一个图都要命名和 编号 第三章 10 第三章 交通灯的电路设计 3 1 数码管分类 数码管引脚封装图 共阴极数码管接法 共阳极数码管接法 根据公共端接法的不同 数码管又分为共阴极和共阳极两种结构 分别如 图 b 和图 c 所示 共阳极就是将 8 个 LED 的阳极连接到一起组成公共端 COM 接正极 当相 应字段为低电平 0 时 可以点亮该字段 当相应字段为高电平 1 时 该 字段不亮 共阴极就是将 8 个 LED 的阴极连接到一起组成公共端 COM 接负极 当相 应字段为高电平 1 时 可以点亮该字段 当相应字段为低电平 0 时 该 字段不亮 为了节省单片机外接的管脚 本设计中采用了阴极数码管和 CD4511 共同组 成显示电路 电路如图所示 Comment i9 Comment i10 第三章 11 4 1 数码管和 cd4511 接线图 3 2 CD4511 CD4511 是一个用于驱动共阴极 LED 数码管 显示器的 BCD 码 七段码 译码器具有 BCD 转换 消隐和锁存控制 七段译码及驱动功能的 CMOS 电路 能 提供较大的拉电流 可直接驱动 LED 显示器 BI 4 脚是消隐输入控制端 当 BI 0 时 不管其它输入端状态是怎么样的 段数码管都会处于消隐也就是不显示的状态 LE 锁定控制端 当 LE 0 时 允许译码输出 LE 1 时译码器是锁定保持 状态 译码器输出被保持在 LE 0 时的数值 LT 3 脚是测试信号的输入端 当 BI 1 LT 0 时 译码输出全为 1 不管 输入 DCBA 状态如何 七段均发亮全部显示 它主要用来检测数 7 段码管是否 有物理损坏 A1 A2 A3 A4 为 8421BCD 码输入端 a b c d e f g 为译码输出端 输出为高电平 1 有效 CD4511 的里面有上拉电阻 可直接或者接一个电阻再与七段数码管接口 4 2 CD4511 引脚图 4 3 CD4511 封装图 第三章 12 在接阴极数码管显示数字的时候由于 CD4511 有消隐的功能因此在显示数字 6 的时候 a 段 LED 不亮 3 3 指示灯电路设计 指示灯电路分为东西南北四个方向 每个方向各有红 黄 绿指示灯 1 个 人行横道红绿灯各一个 指示灯均用红 绿 黄三色发光二极管代替 发光二 极管的阳极接 5v 直流电源 作为发光二极管的电源 阴极接 AT89S52 的 P0 口 当 P0 口输出信号为高电平 1 的时候 发光二极管熄灭 当 P0 口输出的是低 电平 0 的时候 发光二极管点亮 发光二极管简称 LED 采用砷化镓 镓铝砷 和磷化镓等材料制成 其内 部结构为一个 PN 结 具有单向导电性 当在发光二极管 PN 结上加正向电压时 PN 结势垒降低 载流子的扩散运动大于漂移运动 致使 P 区的空穴注入到 N 区 N 区的电子注入到 P 区 这样相互注入的空穴与电子 相遇后会产生复合 复合 时产生的能量大部分以光的形式出现 因此而发光 发光二极管在制作时 使 用的材料有所不同 那么就可以发出不同颜色的光 磷砷化镓二极管发红光 磷化镓二极管发绿光 碳化硅二极管发黄光 由于发光二极管的反向击穿电压约 5 伏 它的正向伏安特性曲线很陡 使 用时必须串联限流电阻以控制通过管子的电流 限流电阻 R 可用下式计算 IF UFE R 式中 E 为电源电压 UF 为 LED 的正向压降 IF 为 LED 的一般工作电流 因 为我们所用的是 5V 电源电压 发光二极管的接法是两个发光二极管串接 由此计算出的限流电阻为 100 欧姆 二极管正向压降为 2V 最大电流为 20 毫安 再用此公式计算一个二极管的电阻 大概为100 欧姆 因此本设计 采用两个二极管串联的方式来分压限流 Comment i11 第三章 13 4 4 交通指示灯布局图 上图所示的是交通灯的指示灯的布局图 中间的 12 个 LED 代表的是东西南 北四个方向上的红 绿 黄指示灯 图四角的十二个 LED 是人行横道的红绿灯 第四章 软件程序设计 交通信号灯采用的是红 绿 黄三色信号灯 红色代表停止 红灯一亮 所有车辆或行人都应立即止步 不再前行 黄灯代表警示 越过斑马线的车辆 或行人允许通过 未过斑马线的行人或车辆 应当禁止前行 绿灯代表允许通 行 此时车辆和行人可以随意通行 第四章 14 4 1 交通灯总体设计流程 开始 初始化 东西车道绿灯 人行红灯 南北车道红灯 人行绿灯 延时 4s 东西绿灯闪烁 延时 2s 延时 4s 延时 2s 东西车道黄灯 人行红 灯 南北车道红灯 人行绿 灯 东西车道红灯 人行绿 灯 南北车道绿灯 人行红 灯 东西绿灯闪烁 东西车道红灯 人行绿 灯 南北车道黄灯 人行红 灯 延时 2s 中断响应 关中断 保护现场 开中断 显示时间 关中断 延时 2s 恢复现场 返回 开中断 4 1 交通灯总设计流程图 4 2 指示灯的算法设计和端口连接 交通灯控制系统的原理就是以倒计时方法显示时间 通过对红 绿 黄三 色信号灯的不同次序的控制来达到交通控制的目的 由于本设计中要求东西红 Comment i12 看看你所有的表的编 号是否正确 附录 15 灯亮 8s 绿灯亮 4s 闪两秒 黄灯亮 2s 同时南北绿灯亮 4s 闪 2s 黄灯亮 2s 红灯亮 8s 由此我们认为十六秒为一个周期 其亮灯的顺序如下所述 0 4s 时刻 东西路口车行道绿灯 人行道红灯 南北路口车行道红灯 人行道绿灯 4 6s 时刻 东西路口车行道绿灯闪烁 人行道红灯 南北路口车行道红 灯 人行道绿灯 6 8s 时刻 东西路口车行道黄灯 人行道红灯 南北路口车行道红灯 人行道绿灯 8 12s 时刻 东西路口车行道红灯 人行道绿灯 南北路口车行道绿灯 人行道红灯 12 14s 时刻 东西路口车行道红灯 人行道绿灯 南北路口车行道绿灯 闪烁 人行道红灯 14 16s 时刻 东西路口车行道红灯 人行道绿灯 南北路口车行道黄灯 人行道红灯 循环往复的运行 达到了交通有序控制的目的 当然其中的间隔时间可以 由不同的路口状况来设定 由于不同的路口有不同的设计方法在此只讲本设计 中采用的方法 按照上面的设计方法 因为我们用的是二极管的阴极接的 AT89S52 的 P0 口 阳极接高电平 所以只要 P0 口输出为低电平 则指示灯点 亮 为了简化系统的开发 我们将东西和南北两个方向上的指示灯统一的去除 一半来作为设计模型 既东西车行道有红 黄 绿三个指示灯 人行道有红绿 灯各一个 南北红 绿 黄指示灯各一个 人行横道有红绿灯各一个 一共相 加 10 个灯 由于我们只运用 P0 口作为指示灯的显示输出口 因此必须简化路 灯系统 我们列出了各个时段人行横道上指示灯的亮灯真值表如下表所示 表 4 1 人行道状态时间图 时间东西人行绿灯东西人行红灯南北人行绿灯南北人行红灯 0 4s1001 4 6s1001 6 8s1001 8 12s0110 12 14s0110 14 16s0110 从上表所示可以看出无论什么时候东西绿灯和南北红灯状态一致 东西红灯和 南北绿灯状态一致 由此我们将东西绿灯和南北红灯定为人行 1 将东西红灯 和南北绿灯定为人行 2 其随时间变化的真值表如下 Comment i13 Comment i14 附录 16 4 2 人行道归纳状态表 这样我们就能够将这些二极管指示灯接入 P0 口了其接入状态如下表所示 4 3 交通灯路口接法 端口P0 7P0 6P0 5P0 4P0 3P0 2P0 1P0 0 时间人行 1人行 2东西 车红 东西 车绿 东西 车黄 南北 车红 南北 车绿 南北 车黄 十六 进制 0 4s10101011AB 4 6s1010 11011 6 8s10110011B3 8 12s010111015D 12 14s0101110 11 14 16s010111105E 如此一来 东西南北四个路口上的所有的灯都接好了下面讨论计数电路接口 问题 4 3 显示电路设计算法和接口 显示电路运用 P1 口输出 外接四个数码管 我将四个方向上的的数码管精 简成为两个 一个代表东西方向的计时 另一个代表南北方向的计时 因为要 两个数码管直接接入 P1 口的话 则 P1 口的端口数不够用 所以选择了用 CD4511 来驱动两个数码管 这样两个 CD4511 正好可以接 P1 口 但是出现的问 题是我们的计数器是 8 位计数的 如何使得在计数的时候不不产生冲突呢 这 里采用了 SWAP 指令来使显示电路的高位和低位的调换来达到共用 P1 口的目的 其程序如下 MOV A SECOND1 南北路口计时寄存器 MOV B 0FH ANL A B 将 SECOND1 高 4 位消除 时间人行 1人行 2 0 4s10 4 6s10 6 8s10 8 12s01 12 14s01 14 16s01 Comment i15 Comment i16 附录 17 MOV B A 将 SECOND1 变化后的值赋给 B MOV A SECOND2 东西路口计时寄存器 SWAP A 将 SECOND2 低位和高位互换 ANL A 0F0H 将 SECOND2 的低位消除 ORL A B 将东西 南北路计时数合并到 P1 口输出 东西路占 p4 p7 南北路占 p0 p3 MOV P1 A 输出数字显示 其处理的办法是将南北路口计时寄存器中的数送人寄存 A 然后给寄存 B 送数 0FH 然后将 A 和 B 相与 这样就屏蔽掉了高四位数字 然后再将东西路口 计时寄存器中的数送到累加 A 中 先用 SWAP 命令让累加 A 中的高位数和低位数 相互调换 然后把累加 A 中的数和 F0H 相与 这样就屏蔽掉了东西路口寄存器 中的低四位数 然后将累加 A 中的数和 B 寄存中的数进行或 最后把得到的数 送到 P1 口 处理好了数字显示问题 下面看看延时的问题 4 4 延时程序 单片机中延时的方法很多 但是最为准确的是用定时器和计数器来达到延 时的目的 本设计中采用的是定时器计数的方法 定时计数方式是方式 1 为 了达到开关效应 使 GATE 为高电平的做法 下面介绍定时 计数器方式寄存器 TMOD 和定时 计数器控制寄存器 TCON 表 4 1 寄存器 TMOD 的内部参数 TMOD 89H D7 D6 D5 D4 D3 D2 D1 D0 GATEC TM1M0GATEC TM1M0 C 为 0 时设定为定时器工作方式 为 1 的时候设定为计数器方式 T GATE 为 0 时软件控制位 TR0 或 TR1 置 1 即可启动定时器 计数器 GATE 为 1 时除了 TR0 或 TR1 需要置 1 外外中断 INT0 或 INT1 为 1 方可以启动定时器 M1 和 M0 是设定定时器工作方式的量其选择情况如下表所示 表 4 2 M1 和 M0 控制的计数方式 M1 M0工作方式功能说明 0 0方式 013 位定时 计数器 0 1方式 116 位定时 计数器 1 0方式 2自动重装 8 位定时计数器 1 1方式 3定时器 0 分成两个 8 位计数器 Comment i17 附录 18 因为本设计中采用的是 16 位定时器 而且要求控制定时器的启动在合上开 关后 所以要让计时器 TMOD 的 GATE 为高电平 1 这样 TMOD 初值为 09H 计数 方式为十六进制计数 TCON 是定时 计数器控制寄存器 TCON 的作用是控制定时器的启动 停止 标志定时器的溢出和中断情况 格式如下 表 4 3 TCON 内部参数 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TF1TR1TF0TR0IE1IT1IE0IT0 TF1 TF0 定时器 1 和定时器 0 溢出标志位 计数器为溢出时 TF 置 1 中 断允许的情况下可以硬件自动清零 中断不允许时由软件清零 TR1 TR0 定时 计数器 1 和定时 计数器 0 运行控制位 为高电平 1 时启动 定时器 IE1 IE0 外中断请求标志位 IT1 IT0 外中断触发方式选择位 用方式 1 计数则其计数大小为 M 216 65536 时序 时序就是单片机中的定时单位 主要有节拍 状态 机器周期 指 令周期 节拍与状态 震荡脉冲的周期叫节拍 节拍的二分频称为状态 机器周期 单片机 AT89S52 中的机器周期为 6 个状态 因为一个状态为两 个拍节 所以一个机器周期就是脉冲震荡的十二分频 指令周期 一条指令执行的周期为指令周期 因为我们用的单片机的震荡频率为 12MHz 一个周期为 1us 如果用的是 6MHz 的话 一个机器周期为 2us 因为我们采用的是 AT89S52 其机器周期为 1us 这样我们计数 1 秒的方法是先计数 50000 即 50ms 然后再循环 20 次 就可 以得到 1s 的延时 计数初值的计算方法是 计数初值 最大计数值 基本计数值 65536 50000 15536 3CB0H 所以把 3C 赋给 TH0 把 B0 赋给 TL0 程序如下 START MOV R0 20 置 1s 倒计时初值 MOV TH0 3CH 将 3C 赋给定时器高 8 位 MOV TL0 0B0H 将 B0 赋给定时器低 8 位 SETB TR0 定时器计数开始 JNB TF0 START 判断 50ms 到没 未到继续循环 附录 19 DJNZ R0 START 判断 1s 到没 未到继续循环 在调用过程中在让其分别循环 8 4 2 次就使红 绿 黄三色灯延时点亮 4 5 中断 中断就是使 CPU 在遇到中断请求的情况下 处理完当前操作后 转向中断 程序进行紧急事件的处理 中断有以下三个特点 1 分时操作 中断可以解决快速的 CPU 和慢速的外设之间的矛盾 使 CPU 和 外设同时工作 2 实时处理 在实时控制中 现场的各种参数信息可以通过向 CPU 发出中断 请求来要求 CPU 及时处理 3 故障处理 针对难以预料的故障可以由外设向 CPU 发送中断请求使 CPU 转 向故障源进行处理 本设计中采用了中断程序来显示数码管数字 其设计如下 ORG0003H 中断入口 LJMPINT INT0 ORG0100H SETBEA 开总中断 SETBEX0 外中断 0 允许 INT INT0 PUSH ACC 保护现场 PUSH PSW CLR EA INT RETI LCALLDISPLAY 显示计时数字 CLREA 关总中断 CLREX0 关外中断 POPPSW 恢复现场 POPACC RETI 中断返回 附录 20 总结 2010 年 11 月 我开始了我的毕业论文写作工作 时至今日 论文已经完 成 从最初的茫然 到慢慢的进入状态 再到对思路逐渐的清晰 整个写作过 程难以用语言来表达 历经了一个月的奋战 在紧张而又充实的毕业时光中 论文终于落下了帷幕 在这次毕业论文的写作过程中 我拥有了无数难忘的回 忆和无尽的收获 2010 年 8 月初 在老师的推荐和同学的建议 再根据自我的评估和测算 我以 交通灯控制系统 作为我的毕业论文设计题目 当开题报告定下来的时 候 我正在富士康工作 所带的书籍中的资料有限 时间紧迫 我只能将其推 到十一月中旬返校后才开始毕业设计的研发 在收集资料之前 我先和老师商 讨过 决定使用单片机来完成设计 然而单片机的课程是本学期才开设的一门 新课 对我来说是一个比较大的挑战 在导师细心的指导和我自己的钻研下 通过与同学交流 我终于有了设计的眉目 由于在一个星期左右的时间里 我 对单片机的基础知识狠命啃咬中 掌握了一些基本的原理 这在我以后开发本 设计产品时起到了重要的作用 通过资料的查询 我先是设计出一个计时器的 雏形 可是到此并不能够使其与我设计的外围指示灯电路相互连 在学习中断 以后 我开始将两个模块组合在一起 开发出了简化的电路 然后才正式的将 简化电路做成有车行道的交通灯控制系统 由于电路上的改变 原来的程序也 发生了巨大的变化 同过十几次的修改完善 终于开发出来了这个能够基本符 合要求的交通灯控制系统 在这个控制系统中 我采用了节省 P 口的方法 将四个方向上的人行横道 红绿灯简化成两个状态 这样更加接近生活中的交通灯控制系统 东西的雏形 是做出来了 扩展的功能也基本完成 可是烦恼的是如何来体现设计的新颖呢 我决定将我所有的设计思路都写入这篇论文中 设计中我参考了 B 语言 微机 原理 数字电路 模拟电路 单片机原理及应用等书籍 在这个过程中 做了 大量的分析 学到了很多我以前没有学到的东西 对我来说是一件不错的收获 在此我要特别感谢给予我建议和支持的张艳红和龙舰涵两位老师 在他们 的帮助下我的设计才能够如此迅速的成功完成 Comment i18 附录前面还有致谢和 参考文献 附录 22 附录 1 交通灯控制系统仿真全图 附录 23 附录附录 2 2 交通灯控制系统源程序 交通灯控制系统源程序 SECOND1 EQU 30H A 路口计时寄存器低位 SECOND2 EQU 31H B 路口计时寄存器高位 ORG 0000H LJMP START ORG 0003H LJMP INT INT0 ORG 0100H START MOV TMOD 09H 置 T0 为工作方式 1 16 位计数器 MOV SECOND1 0FFH MOV SECOND2 0FFH MOV TH0 3CH 3c 60 MOV TL0 0B0H B0 208 置 T0 定时初值 50ms SETB EA 开总中断 SETB EX0 外中断 0 允许 CLR TF0 计时器中断溢出清零 SETB TR0 启动 T0 MOV A 0FFH MOV P0 A 关闭不相关的 LED CLR INT0 JNB INT0 START LOOP MOVR2 20 置 1s 计数初值 50ms 20 1s MOVR3 4 A 路绿灯亮 4s MOVSECOND1 8 A 路口计时显示初值 8s MOVSECOND2 6 B 路口计时显示初值 6s LCALL DISPLAY 显示计时 MOV P0 0ABH 状态 1 A 路绿灯 B 路红灯 WAIT1 JNBTF0 WAIT1 查询 50ms 到否 CLRTF0 MOVTH0 3CH 恢复 T0 定时初值 50ms 3C 60 MOVTL0 0B0H B0 176 DJNZR2 WAIT1 判断 1s 到否 未到继续状态 1 附录 24 MOVR2 20 置 1s 计数初值 DECSECOND1 A 路口显示时间减 1s DECSECOND2 B 路口显示时间减 1s LCALL DISPLAY 显示数码管数字 DJNZR3 WAIT1 状态 1 维持 4s MOVR2 5 置 1s 计数初值20 MOVR3 2 A 路绿灯闪 2s MOVR4 4 闪烁间隔 200ms MOV P0 0ABH A 绿灯闪烁 B 路继续红灯 WAIT2 JNB TF0 WAIT2 查询 50ms 到否 CLR TF0 MOV TH0 3CH 恢复 T0 定时初值 50ms MOV TL0 0B0H DJNZR4 WAIT2 判断 200ms 到否 未到继续状态 2 CPL P0 4 A 绿灯闪 MOV R4 4 闪烁间隔 0 5s DJNZR2 WAIT2 判 1s 到否 未到继续状态 2 MOV R2 5 置 50ms 计数初值 DEC SECOND1 A 路口显示时间减 1s DECSECOND2 B 路口显示时间减 1s LCALLDISPLAY 显示数码管数字 DJNZR3 WAIT2 状态 2 维持 2s MOVR2 20 置 1s 计数初值 MOVR3 2 A 黄灯亮 2s B 红灯 MOV SECOND2 2 B 路口计时显示初值 2s LCALLDISPLAY 显示数字 WAIT3 MOV P0 0B3H 状态 3 A 黄灯 B 路绿灯 JNB TF0 WAIT3 查询 50ms 到否 附录 25 CLR TF0 MOV TH0 3CH 恢复 T0 定时初值 50ms MOV TL0 0B0H DJNZR2 WAIT3 判断 1s 到否 未到继续状态 3 MOV R2 20 置 1s 计数初值 DEC SECOND1 A 路口显示时间减 1s DEC SECOND2 B 路口显示时间减 1s LCALLDISPLAY 显示数字 DJNZR3 WAIT3 状态 3 维持 2s MOV R2 20 置 50ms 计数初值 MOV R3 4 B 绿灯亮 4s A 红灯 MOV SECOND1 6 MOV SECOND2 8 LCALL DISPLAY WAIT4 MOV P0 05DH 状态 4 A 绿 B 红 JNB TF0 WAIT4 查询 50ms 到否 未到继续 CLR TF0 MOV TH0 3CH 恢复 T0 定时初值 50ms MOV TL0 0B0H DJNZ R2 WAIT4 判断 1s 到否
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水性阀门面漆项目可行性研究报告
- 氢能飞行器项目可行性研究报告
- 深海装备防腐涂料项目可行性研究报告
- 智慧工厂整体解决方案基于企业数字化转型设计思路
- 亲子亲子沙龙活动策划
- 群租合同模板
- 食品饮料产业发展趋势及品牌营销策略
- 未签合同之前的安全协议4篇
- 消费升级与产品创新-洞察及研究
- 2025年钢材销售合同2篇
- 浙江省委党校考试试题及答案
- CJ/T 391-2012生活垃圾收集站压缩机
- 征拆工作面试题及答案
- 2025年成都市中考历史试题卷(含答案)
- 护理工作中的隐私保护规范
- 2025年能源安全风险评估报告
- 新药研究与开发技术 课件1.概论
- 索菲亚全屋定制合同协议
- 证件借用免责协议书范本
- 2025年人教版小学数学二年级上册学期教学计划
- 广东陆丰皮影戏在融合背景下的传承与创新发展研究
评论
0/150
提交评论