已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1目 录摘 要 .3第一章 概述 .31.1 交通灯的发展及现状.31.2 单 片 机 说 明 .4第二章 智能交通灯的设计原理 .62.1 智能交通灯的设计框图 62.2 智能交通灯的设计方案及改进措施.6第三章 智能交通灯电路设计 .73.1 控制器的系统框图.73.2 智能交通灯控制系统电路图.73.3 工作原理.8第四章 智能交通灯软件系统设计 144.1 智能交通灯的软件设计流程图 .144.2 程序源代码 .15第五章 智能交通灯方案的仿真 15小结 .18致谢词 .18参考文献 .18附 录 19附录 A:智能交通灯控制程序:192摘 要本文介绍的是一个基于 PROTEUS 的智能交通灯控制系统的设计与仿真,系统根据交通十字路口双车道车流量的情况控制交通信号灯按特定的规律变化。本文首先对智能交通灯的研究意义和智能交通灯的研究现状进行了分析,指出了现状交通灯存在的缺点,并提出了改进方法。智能交通灯控制系统通常要实现自动控制和在紧急情况下能够手动切换信号灯让特殊车辆优先通行。本文还对 AT89C51 单片机的结构特点和重要引脚功能进行了介绍,同时对智能交通灯控制系统的设计进行了详细的分析。最后利用 PROTEUS 软件,通过其平台对交通灯控制系统进行了仿真,仿真结果表明系统工作性能良好。关 键 词:PROTEUS、AT89C51 单片机、智能交通灯;3第一章 概述1.1 交通灯的发展及现状 中国车辆数量不断增加,交通管制的工作量越来越大,利用计算机代替人进行高效交通管理是必然的发展趋势,而让计算机控制的交通灯拥有类似人类的感知智能,具有很强的现实意义,比如通过摄像机让交通灯控制系统获得视觉感知功能,就可以代替人类的眼睛,使系统根据所“看到”交通情况自适应改变管制策略,提高了交通管理的自动化水平,使得交通更高效、更顺畅。目前设计交通灯的方案有很多,有应用 CPLD 设计实现交通信号灯控制器方法;有应用 PLC 实现对交通灯控制系统的设计;有应用单片机实现对交通信号灯设计的方法。目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1两车道的车辆轮流放行时间相同且固定, 在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。2没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。1. 2 单 片 机 说 明按 照 单 片 机 系 统 扩 展 与 系 统 配 置 状 况 , 单 片 机 应 用 系 统 可 分 为 最 小 系 统 、最 小 功 耗 系 统 及 典 型 系 统 等 。 AT89C51 单 片 机 是 美 国 ATMEL 公 司 生 产 的 低电 压 、 高 性 能 CMOS 8 位 单 片 机 , 具 有 丰 富 的 内 部 资 源 : 4kB 闪 存 、128BRAM、 32 根 I/O 口 线 、 2 个 16 位 定 时 /计 数 器 、 5 个 向 量 两 级 中 断 结 构 、2 个 全 双 工 的 串 行 口 , 具 有 4.25 5.50V 的 电 压 工 作 范 围 和 0 24MHz 工 作频 率 , 使 用 AT89C51 单 片 机 时 无 须 外 扩 存 储 器 。 因 此 , 本 流 水 灯 实 际 上 就 是一 个 带 有 八 个 发 光 二 极 管 的 单 片 机 最 小 应 用 系 统 , 即 为 由 发 光 二 极 管 、 晶 振 、复 位 、 电 源 等 电 路 和 必 要 的 软 件 组 成 的 单 个 单 片 机 。41. 2.1 AT89C51 单片机硬件结构AT89C51 是一种带 4K 字节闪存可编程可擦除只读存储器 (F PEROMFlash Programmable and Erasable Read Only Memory)的单片机芯片,它采用静态 CMOS 工艺制造 8 位微处理器,最高工作频率位 24MHZ。AT89C5 外形及引脚排列如图 1 所示: 图 11.2.2 管 脚 说 明 RST: 复 位 输 入 。 当 振 荡 器 复 位 器 件 时 , 要 保 持 RST 脚 两 个 机 器 周 期 的高 电 平 时 间 。 P0 口 : P0 口 为 一 个 8 位 漏 级 开 路 双 向 I/O 口 , 每 脚 可 吸 收 8TTL 门 电流 。 当 P1 口 的 管 脚 第 一 次 写 1 时 , 被 定 义 为 高 阻 输 入 。 P0 能 够 用 于 外 部程 序 数 据 存 储 器 , 它 可 以 被 定 义 为 数 据 /地 址 的 第 八 位 。 在 FIASH 编 程 时 ,P0 口 作 为 原 码 输 入 口 , 当 FIASH 进 行 校 验 时 , P0 输 出 原 码 , 此 时 P0 外 部必 须 被 拉 高 。 P1 口 : P1 口 是 一 个 内 部 提 供 上 拉 电 阻 的 8 位 双 向 I/O 口 , P1 口 缓 冲器 能 接 收 输 出 4TTL 门 电 流 。 P1 口 管 脚 写 入 1 后 , 被 内 部 上 拉 为 高 , 可 用 作5输 入 , P1 口 被 外 部 下 拉 为 低 电 平 时 , 将 输 出 电 流 , 这 是 由 于 内 部 上 拉 的 缘 故 。在 FLASH 编 程 和 校 验 时 , P1 口 作 为 第 八 位 地 址 接 收 。 P2 口 : P2 口 为 一 个 内 部 上 拉 电 阻 的 8 位 双 向 I/O 口 , P2 口 缓 冲 器 可接 收 , 输 出 4 个 TTL 门 电 流 , 当 P2 口 被 写 “1”时 , 其 管 脚 被 内 部 上 拉 电阻 拉 高 , 且 作 为 输 入 。 并 因 此 作 为 输 入 时 , P2 口 的 管 脚 被 外 部 拉 低 , 将 输出 电 流 。 这 是 由 于 内 部 上 拉 的 缘 故 。 P2 口 当 用 于 外 部 程 序 存 储 器 或 16 位地 址 外 部 数 据 存 储 器 进 行 存 取 时 , P2 口 输 出 地 址 的 高 八 位 。 在 给 出 地 址“1”时 , 它 利 用 内 部 上 拉 优 势 , 当 对 外 部 八 位 地 址 数 据 存 储 器 进 行 读 写 时 ,P2 口 输 出 其 特 殊 功 能 寄 存 器 的 内 容 。 P2 口 在 FLASH 编 程 和 校 验 时 接 收 高 八位 地 址 信 号 和 控 制 信 号 。 P3 口 : P3 口 管 脚 是 8 个 带 内 部 上 拉 电 阻 的 双 向 I/O 口 , 可 接 收 输 出 4个 TTL 门 电 流 。 当 P3 口 写 入 “1”后 , 它 们 被 内 部 上 拉 为 高 电 平 , 并 用 作 输入 。 作 为 输 入 , 由 于 外 部 下 拉 为 低 电 平 , P3 口 将 输 出 电 流 ( ILL) 这 是 由于 上 拉 的 缘 故 。 ALE/PROG: 当 访 问 外 部 存 储 器 时 , 地 址 锁 存 允 许 的 输 出 电 平 用 于 锁 存 地址 的 地 位 字 节 。 在 FLASH 编 程 期 间 , 此 引 脚 用 于 输 入 编 程 脉 冲 。 在 平 时 ,ALE 端 以 不 变 的 频 率 周 期 输 出 正 脉 冲 信 号 , 此 频 率 为 振 荡 器 频 率 的 1/6。 因此 它 可 用 作 对 外 部 输 出 的 脉 冲 或 用 于 定 时 目 的 。 然 而 要 注 意 的 是 : 每 当 用 作外 部 数 据 存 储 器 时 , 将 跳 过 一 个 ALE 脉 冲 。 如 想 禁 止 ALE 的 输 出 可 在SFR8EH 地 址 上 置 0。 此 时 , ALE 只 有 在 执 行 MOVX, MOVC 指 令 是 ALE 才 起作 用 。 另 外 , 该 引 脚 被 略 微 拉 高 。 如 果 微 处 理 器 在 外 部 执 行 状 态 ALE 禁 止 ,置 位 无 效 。 PSEN: 外 部 程 序 存 储 器 的 选 通 信 号 。 在 由 外 部 程 序 存 储 器 取 指 期 间 , 每个 机 器 周 期 两 次 PSEN 有 效 。 但 在 访 问 外 部 数 据 存 储 器 时 , 这 两 次 有 效 的PSEN 信 号 将 不 出 现 。 EA/VPP: 当 EA 保 持 低 电 平 时 , 则 在 此 期 间 外 部 程 序 存 储 器 ( 0000H-FFFFH) , 不 管 是 否 有 内 部 程 序 存 储 器 。 注 意 加 密 方 式 1 时 , EA 将 内 部 锁定 为 RESET; 当 EA 端 保 持 高 电 平 时 , 此 间 内 部 程 序 存 储 器 。XTAL1 和 XTAL2: 反 向 振 荡 放 大 器 的 输 入 及 内 部 时 钟 工 作 电 路 的 输 入 。 6第二章 智能交通灯的设计原理2.1 智能交通灯的设计框图2.2 智能交通灯的设计方案及改进措施交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧急转换开关。针对道路交通拥挤,交叉路口经常出现拥堵的情况利用单片机控制技术提出了软件和硬件设计方案及两点改进措施。1、根据各道路路口车流量的大小自动调节通行时间。2、考虑特殊车辆通行情况,设计紧急切换开关。AT89S51 单片机有 2 计数器,6 个中断源,能满足系统的设计要求。用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯。第三章 智能交通灯电路设计根据设计任务和要求,可画出该控制器的原理框图, 为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。其中红灯(R)亮,表示禁止通行;黄灯(Y)亮表示暂停;绿灯(G)亮表示允许通行。73.1 控制器的系统框图如图 3 所示图 33.2 智能交通灯控制系统电路图智能交通灯电路图如图 4 所示:图 4交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧急转换开关。83.3 工作原理绿灯的放行时间与车辆通过数量不成正比。比如说 20 秒内每车道可以通过20 辆车,40 秒内每车道却可以通过 45 辆车。因为这有一个起步的问题,还有一个黄灯等待问题。也就是说,绿灯放行时间越长,单位时间通过车辆的数量就越多。我们来计算一下,每车道通行 20 秒内可以通过 20 辆车,一个红绿灯循环是 40 秒( 单交叉路口),加上每次状态转换的黄灯 5 秒(一个循环要两次转换) ,即一个红绿黄灯循环要 50 秒,即 50 秒内通行的车辆为 40 辆。通过一辆车的平均时间是 1.25 秒。如果每次车辆通行的时间改为 40 秒,40 秒内每车道可以通过 45 辆,一个红绿灯循环是 80 秒(单交叉路口),加上每次状态转换的黄灯 5 秒(一个循环要两次转换) ,即一个红绿黄灯循环要 90 秒,即 90 秒内通行的车辆为 90 辆。通过一辆车的平均时间只需 1 秒。显然在车辆拥挤的情况下绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问题。我设定了绿灯通行时间的上限为 40 秒。在非拥挤时段绿灯的通行时间的下限为 20 秒,当交叉路口双方车辆较少时通行时间设为 20 秒,这样可以大大缩短车辆在红灯面前的等待时间。当交叉路口双方车辆较多时通行时间设为 40 秒。3.3.1 车检测电路用来判断各方向车辆状况,比如:20秒内可以通过的车辆为20辆,当20秒内南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒, 依此类推。绿灯下限时间为20秒,上限值为40秒,初始时间为20秒。这样检测,某次可能不准确,但下次肯定能弥补回来,累积计算是很准确的,这就是人们常说的“模糊控制”。因为路上的车不可能突然增多,塞车都有一个累积过程。这样控制可以把不断增多的车辆一步一步消化,虽然最后由于每个路口的绿灯放行时间延长而使等候的时间变长,但比塞车等候的时间短得多。本系统的特点是成本低,控制准确。十字路口车辆通行顺序如图5所示: 9图 5 十字路口车辆通行顺序由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就要加长东往西,西往东也一样,显示时间选择如表1。表1 显示时间选择车辆情况 本次该方向通行时间下次该方向通行时间本次该方向通行时间本次该方向通行时间南往北少车,北往南少车20 秒 20 秒 40 秒 20 秒南往北少车,北往南多车20 秒 40 秒 40 秒 40 秒南往北多车,北往南少车20 秒 40 秒 40 秒 40 秒南往北多车,北往南多车20 秒 40 秒 40 秒 40 秒东往西少车,西往东少车20 秒 20 秒 40 秒 20 秒东往西少车,西往东多车20 秒 40 秒 40 秒 40 秒东往西多车,西往东少车20 秒 40 秒 40 秒 40 秒东往西多车,西往东多车20 秒 40 秒 40 秒 40 秒3.3.2 信号灯电路信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图 6。每个路口的信号的的转换顺序为:绿黄红 绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。红灯表示禁止通行。绿灯的最短时间为 20 秒,最长时间为 40 秒,红红最短时间为 25 秒,最长时间为 45 秒,黄灯时间为 5 秒。10图 6 交通信号灯运行状态3.3.3 时间显示电路在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为 0-99 秒完全可以满足系统的要求,数码管连接方法如图 7 所示。图 7 数码管连接方法11下面我们用这种方法显示交通灯的时间,南北方向要显示 20 秒,东西方向要显示 25 秒,那么我们先给 P0 口送 2 的共阴极码即 5BH,让第一位 2 要显示的位码 GND 段为低电平,其它三位的控制端都接高电平,那么第一位就显示 2,其它三位不亮。让其显示 1MS 后再给 P0 口送 0 的共阴极码即 3FH,让第二位要显示 0 的位码 GND 段为低电平,其它三位的控制端都接高电平,那么第二位就显示 0,其它三位不亮。依此类推分别送完第一位 2,第二位 0,第三位 2,第四位 5,每一位点亮 1MS 一个扫描周期为 4MS,一秒时间就要扫描 250 次其程序如下:MOV R6,#250;显扫描次数LOOP:MOV P0,#5BH ;送 2 的共阴极码CLR P2.0;第一位显示 2ACALL D1MS ;延时 1MSSETB P2.0 ;灭第一位MOV P0,#3FH ;送 0 的共阴极码CLR P2.1;第二位显示 0ACALL D1MS ;延时 1MSSETB P2.1 ;灭第二位MOV P0,#5BH ;送 2 的共阴极码CLR P2.2;第三位显示 2ACALL D1MS ;延时 1MSSETB P2.2 ;灭第三位MOV P0,#6DH ;送 5 的共阴极码CLR P2.3;第四位显示 5ACALL D1MS ;延时 1MSSETB P2.3 ;灭第四位DJNZ R7,LOOP;不够一秒,继续扫描NEXTNUMBER;到一秒显示下一个数D1MS: ;1MS 延时程序STAT1:MOV R4,#2MOV R3,#250DJNZ R3,$DJNZ R4,STAT1RET3.3.4 紧急转换开关电路一般情况下交通灯按照车流量大小合理分配通行时间,按一定规律变化,但考虑紧急车通行车况,设计紧急通行开关,下面简述单片机的中断原理。1、Mcs51 的中断源128051 有 5 个中断源,它们是两个外中断 INT0(P3.2)和 INT1(P3.3)、两个片内定时/计数器溢出中断 TF0 和 TF1,一个是片内串行口中断 TI 或 RI,这几个中断源由 TCON 和 SCON 两个特殊功能寄存器进行控制,其中 5 个中断源的程序入口地址如表 2 所示:表 2 中断源程序入口中断源的服务程序入口地址中断源 入口地址外中断 0 0003H定时/计数器 0 000BH外中断 1 0013H定时/计数器 0 001BH串行口中断 0023H2、中断的处理流程CPU 响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述:1)现场保护和现场恢复:中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份即保护现场。中断开始前需将有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。 如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会是程序运行紊乱,单片机不能正常工作。2)中断打开和中断关闭:在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。133)中断服务程序:既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。4)中断返回:执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。在 MCS-51 单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。5) 交通灯中的中断处理流程:(1)现场保护和现场恢复:有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。(2)中断打开和中断关闭:为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。(3)中断服务程序:有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。(4)中断返回:执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。14第四章 智能交通灯软件系统设计4.1 智能交通灯的软件设计流程图智能交通灯的软件设计流程图如图 8 所示:图 8 交通灯的软件设计流程图4.2 程序源代码见附录第五章 智能交通灯方案的仿真PROTEUS嵌入式系统仿真软件在设计时已经注意到和单片机各种编译程序的整合了,如它可以和Keil ,Wave6000等编译模拟软件结合使用。由于Wave6000使用方便,具备强大的软件仿真和硬件仿真功能。把Proteus和Wave6000结合起来调试硬件就方便多了,这里就是采用“Proteus+Wave6000”的仿真方法,具体步骤如下:151)首先运行PROTEUS VSM 的ISIS,选择SourceDefine Code Generation Tool 菜单项,将出现如图8所示定义代码生成工具对话框。图9 定义代码生成工具对话框在Tool下拉列表框中选择代码生成工具,在这一示例中,电路中的微处理器为8051系列单片机,因此选择ASEM51, 单击Browse按钮,选取Wave6000的安装路径。单击OK按钮,结束代码生成工具的定义。选择SourceAdd/Remove Source File 菜单项,将出现Add/Remove Source Code Files对话框,如图10所示:图10添加/删除源文件对话框2)在Code Generation Tool 选项区,单击下三角按钮,选择ASEM51工具单击New按钮,将出现如图11所示对话框。16图11 创建源代码对话框选择用Wave6000创建好的AA.ASM文件,即完成了文件的创建。就这样当用Wave6000对AA.ASM 文件进行更改时每一次运行PROTEUS VSM 的ISIS对电路进行仿真时Wave6000都会对AA.ASM进行编译,AA.HEX文件也会随时更新。电路图绘制完成后, 再添加AT89C51 的应用程序。将鼠标移至AT89C51 上, 单击鼠标右键使之处于选中状态, 在该器件上单击左键, 打开如图12所示的对话框。在 Program File 栏添加编译好的十六进制格式的程序文件AA.hex(可以接受3 种格式的文件) ,给AT89C51输入晶振频率,此处默认为12MHZ, 单击OK 按钮完成程序添加工作, 下面就可以进行系统仿真了。单击主界面下方的按钮开始系统仿真。PROTEUS VSM 所进行的是一种交互式仿真, 在仿真进行中可以对各控制按钮、开关等进行操作, 系统对输入的响应会被真实的反映出来如图13。17图12 AT89C51添加程序文件图13 交通灯仿真界面18小 结在毕业设计的整个过程中,我深切地体会到:实践是理论运用的最好检验。毕业设计是对我们 3 年所学知识的一次综合性测试和考验,无论是在动手能力方面还是理论知识的运用能力方面,都使得我有了很大的提高。经过总结和分析,我意识到在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。 本次毕业设计为我的大学生活画上了圆满的句号,为我即将的工作和生活奠定了坚实的基础。19致谢词 在整个毕业设计中,我得到了学校电子实验室的大力支持,为我提供了各种所需的仪器设备。感谢学校为我们安排了本次毕业设计,让我们的理论知识和实际操作经验更加紧密的结合了在一起;同时又拓展了我们的知识面。同时十分感激夏老师对我的悉心指导和帮助,使我能够顺利的完成此次毕业设计。此次毕业设计让我从中受益匪浅,最后再次感谢老师对我的培养和教育!20参考文献1 徐爱钧 智能化测量控制仪表原理与设计 (第二版)M.北京:北京航空航天大学出版社,2004 年;2 吴金戌、沈庆阳、郭庭吉 8051 单片机实践与应用M.北京:清华大学出版社,2002 年;3 谢自美 电子线路设计实验测试 (第三版)M.武汉:华中科技大学出版社,2006 年;4 谢维成、杨加国 主编 单片机原理与应用及 C51 程序设计M.北京:清华大学出版社,2006 年;5 杨立、邓振杰、荆淑霞 微型计算机原理与接口技术M.中国铁道出版社,2006 年;6 黄智伟 全国大学生电子设计竞赛技能训练 M.北京:北京航空航天大学出版社,2007 年7 高峰, 单片微型计算机与接口技术M.北京:科学出版社,2003;8 华成英、童诗白 主编, 模拟电子技术基础 (第四版)M.高等教育出版社,2006 年.9 黄海萍、陈用昌 编 微机原理与接口技术实验指导M.北京:国防工业出版社,2004 年10 黄 智 伟 : 凌 阳 单 片 机 设 计 指 导 , 北 京 : 北 京 航 空 航 天 大 学 出版 社 , 2007 年21附 录附录 A:智能交通灯控制程序:ORG 0000HA_BIT EQU 20H ;用于存放南北十位数B_BIT EQU 21H ;用于存放南北十位数C_BIT EQU 22H ;用于存放东西十位数D_BIT EQU 23H ; 用于存放东西位数TEMP1 EQU 24H ;用于存放第一二南北状态要显示的时间TEMP2 EQU 25H ;用于存放第一二东西状态要显示的时间TEMP3 EQU 26H ;用于存放第三第四南北状态要显示的时间TEMP4 EQU 27H;用于存放第三第四南北状态要显示的时间LJMP MAINORG 0003H ;外部中断 0 入口LJMP INT0 ;跳转到外部 0 中断ORG 0013H ;外部中断 1 入口LJMP INT1 ;跳转到外部 1 中断INT0: MOV A,P1 ;外部 0 中断PUSH ACCMOV A,P2 ;中断保护PUSH ACCMOV P1,#0FFH ;清除先前状态MOV P2,#0FFHCLR P1.0CLR P1.4 ;南北通行,东西禁止通行CLR P1.6CLR P2.3JNB P3.2 ,$ ;判断是否还在中断状态POP ACCMOV P2,A ;返回中断前状态POP ACCMOV P1,ACCRETI ;中断返回INT1:MOV A,P1 ;外部 1 中断PUSH ACC ;中断保护MOV A,P2PUSH ACCMOV P1,#0FFH ;清除先前状态MOV P2,#0FFHCLR P1.2CLR P2.1CLR P1.3 ;东西通行,南北禁止通行CLR P1.522JNB P3.3 ,$ ;判断是否还在中断状态POP ACCMOV P2,A ;返回中断前状态POP ACCMOV P1,ARETI ;中断返回MAIN:ORG 0100H ;初始情况MOV P1,#0FFHMOV P2,#0FFH ;灭所有灯MOV TMOD,#55H ;计数方式方式 1MOV IE,#85H ;开中断MOV TEMP1,#20 ;MOV TEMP2,#25MOV TEMP3,#25MOV TEMP4,#20STAR:MOV P1,#0FFHMOV P2,#0FFH ;灭所有灯MOV A,24H ;将显示时间送 ACJNE A,#20,T40T ;判断时间,选初始值T20T: ;南北通行要显示的时间为 20 的计数器初始值CLR TF0 ;清 TF0CLR TF1 ;清 TF1MOV TH1 ,#0FFH ;送 20 秒时的初始值MOV TL1 ,#0FCH ;在些设计 20 秒 6 辆为多车MOV TH0 ,#0FFHMOV TL0 ,#0FCHLJMP TEMP20 ;跳到 20 秒T40T: ;南北通行要显示的时间为 40 的计数器初始值CLR TF0 ;清 TF0CLR TF1 ;清 TF1MOV TH1,#0FFH ;送 40 秒时的初始值MOV TL1 ,#0F8H ;在些设计 40 秒 8 辆为多车MOV TH0 ,#0FFHMOV TL0 ,#0F8HLJMP TEMP40 ;跳到 40 秒TEMP20: ;TEMP1=20 情况SETB TR0 ;开始计数SETB TR1CLR P1.2CLR P2.1 ;南北通行,东西禁止通行CLR P1.3CLR P1.5MOV TEMP1,#20 ;南北要显示的时间,MOV TEMP2,#25 ;东西要显示的时间23STLOP:ACALL DISPLAY1 ;调用显示DEC TEMP1 ;时间够一秒显示时间减 1DEC TEMP2MOV A,TEMP1CJNE A,#0,NEXT ;若显示时间不为 0 保持现在状态LJMP STAR2 ;若显示时间为 0 跳到第二状态NEXT: LJMP STLOPSTAR2: ;状态 1SETB P1.2CLR P1.1 ;南北黄灯,东西禁止通行SETB P1.3CLR P1.4MOV TEMP1,#05 ;南北要显示的时间,MOV TEMP2,#05 ;东西要显示的时间,STLOP2:ACALL DISPLAY1 ;调用显示DEC TEMP1 ;时间够一秒显示时间减 1DEC TEMP2MOV A,TEMP1CJNE A,#0,NEXT2 ;若显示时间不为 0 保持现在状态JB TF1 ,T40 ;判断南北是否多车JB TF0 ,T40 ;判断北南是否多车MOV TEMP1,#20 ;少车下次显示时间为 20 秒LJMP STAR3 ;跳到状态 3T40:MOV TEMP1,#40 ; 多车下次显示时间为 40 秒LJMP STAR3 ;若显示时间为 0 跳到第三状态NEXT2:LJMP STLOP2TEMP40:;TEM=40 程序SETB TR0 ; 开始计数SETB TR1CLR P1.2CLR P2.1 ;南北通行,东西禁止通行CLR P1.3CLR P1.5MOV TEMP1,#40 ;南北要显示的时间,MOV TEMP2,#45 ;东西要显示的时间STLOP11:ACALL DISPLAY1 ;调用显示DEC TEMP1 ;时间够一秒显示时间减 1DEC TEMP2MOV A,TEMP1CJNE A,#0,NEXT11 ;若显示时间不为 0 保持现在状态LJMP STAR22 ;若显示时间为 0 跳到第二状态NEXT11: LJMP STLOP1124STAR22: ;状态 1SETB P1.2CLR P1.1 ;南北黄灯,东西禁止通行SETB P1.3CLR P1.4MOV TEMP1,#05 ;南北要显示的时间,MOV TEMP2,#05 ;东西要显示的时间,STLOP22:ACALL DISPLAY1 ;调用显示DEC TEMP1 ;时间够一秒显示时间减 1DEC TEMP2MOV A,TEMP1CJNE A,#0,NEXT22 ;若显示时间不为 0 保持现在状态JB TF1 ,T401 ; 判断是否多车JB TF0 ,T401MOV TEMP1,#20 ;少车下次显示时间为 20 秒LJMP STAR3T401:MOV TEMP1,#40 ;多车下次显示时间为 40 秒LJMP STAR3 ;若显示时间为 0 跳到第三状态NEXT22:LJMP STLOP22STAR3:MOV A,26HCJNE A,#25,T40T1 ;判断时间,选初始值T20T1: ;南北通行要显示的时间为 20 的计数器初始值CLR TF0 ; 清溢出位CLR TF1MOV TH1 ,#0FFH ; 给初值MOV TL1 ,#0FCHMOV TH0 ,#0FFHMOV TL0 ,#0FCHLJMP TEMP320T40T1: ;南北通行要显示的时间为 40 的计数器初始值CLR TF0 ;CLR TF1MOV TH1,#0FFH ;给初值MOV TL1 ,#0F8HMOV TH0 ,#0FFHMOV TL0 ,#0F8HLJMP TEMP340TEMP320:;状态三SETB TR1 ;南北停止计数SETB TR0 ;东西开始计数SETB P1.1 ;东西通行,南北禁止通行CLR P1.0SETB P1.1CLR P1.025SETB P1.5CLR P1.6SETB P2.1CLR P2.3MOV TEMP3,#25 ;南北要显示的时间,MOV TEMP4,#20 ;东西要显示的时间,STLOP33:ACALL DISPLAY ;调用显示DEC TEMP3 ;时间够一秒显示时间减 1DEC TEMP4MOV A,TEMP4CJNE A,#0,NEXT33 ;若显示时间不为 0 保持现在状态LJMP STAR34 ;若显示时间为 0 跳到第四状态NEXT33:LJMP STLOP33STAR34: ;状态四SETB P2.3CLR P2.2SETB P1.6 ;东西黄灯,南北禁止通行CLR P1.5MOV TEMP3,#05 ;南北要显示的时间,MOV TEMP4,#05 ;东西要显示的时间,STLOP34:ACALL DISPLAY ;调用显示DEC TEMP3 ;时间够一秒显示时间减 1DEC TEMP4MOV A,TEMP4CJNE A,#0,NEXT34 ;若显示时间不为 0 保持现在状态JB TF1 ,T402JB TF0 ,T402MOV TEMP3,#25LJMP START402:MOV TEMP3,#45LJMP STARNEXT34: LJMP STLOP34TEMP340 :SETB TR1 ;南北停止计数SETB TR0 ;东西开始计数SETB P1.1 ;东西通行,南北禁止通行CLR P1.0SETB P1.1CLR P1.0SETB P1.5CLR P1.6SETB P2.1CLR P2.326MOV TEMP3,#45 ;南北要显示的时间,MOV TEMP4,#40 ;东西要显示的时间,STLOP43:ACALL DISPLAY ;调用显示DEC TEMP3 ;时间够一秒显示时间减 1DEC TEMP4MOV A,TEMP4CJNE A,#0,NEXT43 ;若显示时间不为 0 保持现在状态LJMP STAR44 ;若显示时间为 0 跳到第四状态NEXT43:LJMP STLOP43STAR44: ;状态四SETB P2.3CLR P2.2SETB P1.6 ;东西黄灯,南北禁止通行CLR P1.5MOV TEMP3,#05 ;南北要显示的时间,MOV TEMP4,#05 ;东西要显示的时间,STLOP44:ACALL DISPLAY ;调用显示DEC TEMP3 ;时间够一秒显示时间减 1DEC TEMP4MOV A,TEMP3CJNE A,#0,NEXT44 ;若显示时间不为 0 保持现在状态JB TF1 ,T403JB TF0 ,T403MOV TEMP3,#25LJMP START403:MOV TEMP3,#45LJMP STARNEXT44: LJMP STLOP44;显示DISPLAY1:MOV A,TEMP1 ;将南北要显示的数存放到 AMOV B,#10 ;B=10DIV AB ;A 除以 B 商存 A,余数 BMOV B_BIT,A ; 将 A 放到 20HMOV A_BIT,B ;将 B 放到 21HMOV A,TEMP2 ;将东西要显示的数存放到 AMOV B,#10 ;B=10DIV AB ;A 除以 B 商存 A,余数 BMOV C_BIT,A ;将 A 放到 22HMOV D_BIT,B ;将 B 放到 23HMOV DPTR ,#NUMT ;MOV R0,#2 ;R0=2DPL11: MOV R1,#250 ;R1=25027DPLOP1:MOV A,A_BIT ;将南北要显示的 10 位数送 AMOVC A,A+DPTR ;查表MOV P0,A ;显示南北 10 位数CLR P2.7ACALL D1MS;延时 1MSSETB P2.7 ;灭南北 10 位数MOV A,B_BIT ;将南北要显示的个位数送 AMOVC A,A+DPTR ;查表MOV P0,A ;显示南北个位数CLR P2.6ACALL D1MS ;延时 1MSSETB P2.6 ;灭南北个位数MOV A,C_BIT ;将东西要显示的 10 位数送 AMOVC A,A+DPTR ;查表MOV P0,A ;显示东西 10 位数CLR P2.5ACALL D1MS ;延时 1MSSETB P2.5 ;灭东西 10 位数MOV A,D_BIT ;将东西要显示的个位数送 AMOVC A,A+DPTR ;查表MOV P0,A ;显示东西东西位数CLR P2.4ACALL D1MS ;延时 1MSSETB P2.4 ;灭东西个位数DJNZ R1,DPLOP ;循环扫描DJNZ R0,DPL1RET; ;等待 1 秒返回显示DISPLAY:MOV A,TEMP3 ;将南北要显示的数存放到 AMOV B,#10 ;B=10DIV AB ;A 除以 B 商存 A,余数 BMOV B_BIT,A ; 将 A 放到 20HMOV A_BIT,B ;将 B 放到 21HMOV A,TEMP4 ;将东西要显示的数存放到 AMOV B,#10 ;B=10DIV AB ;A 除以 B 商存 A,余数 BMOV C_BIT,A ;将 A 放到 22HMOV D_BIT,B ;将 B 放到 23HMOV DPTR ,#NUMT ;MOV R0,#2 ;R0=2DPL1: MOV R1,#250 ;R1=250DPLOP:MOV A,A_BIT ;将南北要显示的 10 位数送 AMOVC A,A+DPTR ;查表28MOV P0,A ;显示南北 10 位数CLR P2.7ACALL D1MS;延时 1MSSETB P2.7 ;灭南北 10 位数MOV A,B_BIT ;将南北要显示的个位数送 AMOVC A,A+DPTR ;查表MOV P0,A ;显示南北个位数CLR P2.6ACALL D1MS ;延时 1MSSETB P2.6 ;灭南北个位数MOV A,C_BIT ;将东西要显示的 10 位数送 AMOVC A,A+DPTR ;查表MOV P0,A ;显示东西 10 位数CLR P2.5ACALL D1MS ;延时 1MSSETB P2.5 ;灭东西 10 位数MOV A,D_BIT ;将东西要显示的个位数送 AMOVC A,A+DPTR ;查表MOV P0,A ;显示东西东西位数CLR P2.4ACALL D1MS ;延时 1MSSETB P2.4 ;灭东西个位数DJNZ R1,DPLOP ;循环扫描DJNZ R0,DPL1RET ;等待 1 秒返回D1MS: MOV R7,#250 ;1MS 延时程序DJNZ R7,$RET;1 到 10 对应电路图数码管表NUMT: DB 7EH,48H,67H,6BH,59HDB 3BH,3FH,68H,7FH,7BH中英文摘要-目录-引言- 研究现状- 背景- 思路-整体原理- 部分电路介绍-程序介绍 -总结- 谢词= 参考文献=附件可以联系我,有程序。仿真,原理图,等. 南北方向绿灯和东西方向绿灯不能同时亮,如果同时亮,则立刻关闭信号灯系统,并报警。同理,东西向绿灯与南北向转弯灯也不能同时亮。2. 南北及南北转弯红灯亮并保持 40 秒,同时东西绿灯亮,但只保持 35 秒,到35 秒时东西绿灯闪 3 次(每周期为 1 秒)后熄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSBME 081-2024临床微生物实验室真菌检测设施设备和试剂耗材配置通用要求
- 采购管理团队绩效分析表
- 《西式烹调师》高级复习200题及答案
- 回复合同变更条款确认函7篇
- 能源行业研发工程师技术创新能力与成果转化绩效衡量表
- 知识库建设评估表
- 外研版(2024)英语八年级上册 Unit 4 Digital life 单元测试卷(含参考答案)
- 健身教练会员增肌减脂效果及课程满意度KPI考核表
- 碳八抽提苯乙烯装置操作工岗前环保知识考核试卷含答案
- 塑料挤出工变革管理强化考核试卷含答案
- 2026年强制性产品认证应知应会培训考核卷(十一)
- 2026年法律职业资格考试商经法客观题练习带答案
- 检维修作业:安全要点与应急处置
- 2026金属基陶瓷复合材料技术创新与应用展望报告
- 2026-2027学年人教版七年级数学上册期中测试卷(带答案解析)
- GB 48063-2026交通运输北斗卫星导航系统定位模块通用技术规范
- 2025年江苏泰州市中考语文试卷真题及答案详解(精校打印)
- 痔疮术后饮食调理建议
- 婴幼儿伤害预防与处理配套教材电子课件(完整版)
- 2026年殡葬系统版遗体火化师技能知识试题
- 美国金融硕士申请书范文
评论
0/150
提交评论