基于单片机的十字交通灯控制设计内容摘要:

外部中断 1 T0 定时器 0的外部输入 T1 定时器 1的外部输入 WR 外部数据存储器写选通 11 数据总线是由 P0 口提供的, P0 口本身能以多种方式提供数据总线和地址总线。 当 ALE 输出信号为高电平时, P0 将输出的数据锁入总线驱动器中作为地址的低 8 位,然后和 P2 送出来的高 8 位地址一起组成一个完整的 16 位地址,以寻址到外部的 64KB 的地址空间。 ( 3) 控制总线 ( CB) 由部分 P3口的第二功能状态和 4 根独立控制线 RESET、 EA 、 ALE、 PSE 组成。 AT89C51 内部 结构框图 如图 : 图 AT89C51 内部功能图 各模块实现原理的分析和说明 单片机最小系统 单片机最小系统包括复位电路,时钟电路。 12 ( 1) 复位电路 复位电路是单片机的初始化操作,其主要功能是把 PC 初始化为 0000H,使单片机从 0000H 单元开始执行程序。 除了进入系统的正常初始化之外,当由于程序远行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要复位键以重新启动。 根据电路工作 原理,本设计电路如图 所示 按键电平复位。 图 按键电平复位电路图 复位信号的产生: RST 引脚是复位信号的输入端,复位信号是高电平有效,其有效时间持续 24 个振荡脉冲周期(即 2 个机器周期)以上,若使用频率为 12MHz的晶振,则复位信号持续时间应超过 2μ s 才能完成复位操作。 整个复位电路包括信片内外两部分,外部电路产生的复位电路送施密特触发器,再有片内复位电路在每个机器周期的 S5P2 时刻对施密特触发器的 输出进行采样。 ( 2) 时钟电路 单片机本身就是一个复杂的时序电路,时钟电路用于产生单片机工作所需的时钟信号。 单片机芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚 XTAL2,在芯片外部通过两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器,其结构图如图。 振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用振荡脉冲经过二分频后才作为系统的时钟信号。 在二分频的基础上再三分频产生 ALE 信号, 在二分频的基础上再六分频得到机器周期信号。 13 图 时序振荡电路 数显模块 用 12只发光二极管模拟交通信号灯,以单片机的 P1 控这 12 只发光二极管,在 P1 口与发光二极管之间采用 74LS07 作驱动电路,口线输出高电平则 “ 信号灯 ” 熄,口线输出低电平则 “ 信号灯 ” 亮。 如表 所示。 当东西方向亮绿灯时,南北方向亮红灯, , 送高电平,点亮 25S 时东西方向继续亮绿灯,南北方向亮黄灯, , 送高电平黄灯持续点亮 5S 钟,当点亮 30S 时东西方向亮红灯,南北方向亮绿灯, , 为高电平,点亮 25S 时南北方向继续亮绿灯,东西方向亮黄灯, , 为高电平点亮 5S 钟, 30S 后东西方向亮绿灯时,南北方向亮红灯, , 送高电平,再重复上述过程。 如图 所示。 表 各口线控制功能及相应控制码 控 制 码 状态说明 (空 ) (空 ) A 线红灯 A 线 绿红 A 线 黄灯 B 线 黄灯 B 线 绿灯 B 线 红灯 1 1 0 1 1 1 0 1 0F5H A 线禁止, B 线放行 1 1 0 1 1 0 1 1 0DBH A 线禁止, B 线警告 1 1 1 0 1 1 1 0 0EEH A 线放行, B 线禁止 1 1 1 1 0 1 1 0 0F6H A 线警告, B 线禁止 14 图 交通车道信号灯电路 当发光二极管发光时,数显同步显示 30S, 给相应的口线送段码和位码就可显示。 东西方向亮红灯时,相应的数码管点亮 30S 并且南北方向也显示 30S。 采用共阳LED 静态显示,如图。 图 数字显示模块 15 4 软件设计 主程序流程图 主程序中主要是一个死循环,不停的循环四个状态,如图 所示。 图 主程序流程图 图 按键子程序流程图 按键子程序流程图 它包含倒计时调整和紧急状态两个状态。 主程序中放了一个按键的判断指令,当有按键按下的时候,程序就自动的跳转到按键子程序处理。 当检测到 K2 键按下的时候就自动返回到主程序。 当出现紧急的情况的时候,按下 K3 或者 K4 就切换到紧急状态,当紧急事 16 件处理完毕的时候,按下 K2,就可以返回正常状态。 单片机的中断处理 MCS51 的中断源 8051 有 5个中 断源,它们是两个外中断 INT0( )和 INT1( )、两个片内定时 /计数器溢出中断 TF0 和 TF1,一个是片内串行口中断 TI或 RI,这几个中断源由 TCON 和 SCON 两个特殊功能寄存器进行控制。 其中 5个中断源的程序入口地址如 表 : 表 中断源程序入口 中断源的服务程序入口地址 中断源 入口地址 外中断 0 0003H 定时 /计数器 0 000BH 外中断 1 0013H 定时 /计数器 0 001BH 串行口中断 0023H 中断的处理流程 CPU 响应中断请求后,就立即转入执行中断服务程序。 不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述: (1)现场保护和现场恢复 中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份—— 即保护现场。 中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。 如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会是程序运行紊乱,程序跑飞,自然使单片机不能正常工作。 (2)中断打开和中断关闭 在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。 (3)中断服务程序 17 既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断 处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。 (4)中断返回 执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。 在 MCS51 单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。 交通灯中的中断处理流程 (1)现场保护和现场恢复 有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。 (2)中断打 开和中断关闭 为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。 (3)中断服务程序 有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。 (4) 中断返回 执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。 18 5 整机组装调试及改进措施 状态灯显示测试 当电路连接完毕后,将写好的测试程序刷写到芯片内, K1 和 K2 分别给端口送高电平和低电平,通电即可检测。 数码管的测试 将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可测试。 整体电路测试 系统上电,刷写好程序即可开始测试,观测一个周期(共计 S1~ S4 四个状态,默认 140 秒)灯的显示状态是否正常,同时观察倒计的计数是否正常。 由以上所述, 按下 总电源控制开关 , LED 数码管开始减一跳变,每当过 0跳变时,交通灯的红黄绿指示灯也按真值表给出的逻辑进行跳变。 从而实现交通控制的 功能。 通过 验证 发现 红黄绿指示灯的跳变与 LED 工作 协调。 排除所有实验中的错误并 实现了预定的功能。 该系统总体上 达到设计任务 及制作 要求。 考虑到实际中应用的问题。 我们可以在此基础上进行一些改进:针对主。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。