智能交通灯控制系统设计.doc_第1页
智能交通灯控制系统设计.doc_第2页
智能交通灯控制系统设计.doc_第3页
智能交通灯控制系统设计.doc_第4页
智能交通灯控制系统设计.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

湖北经济学院法商学院 专科毕业论文专科毕业论文( (设计设计) ) 题题 目:目: 智智 能能 交交 通通 灯灯 设设 计计 湖北经济学院法商学院教务部 制 目目 录录 摘摘 要要 3 3 第一章第一章 概述概述 3 3 1.11.1 交通灯的发展及现状交通灯的发展及现状3 3 1 1. .2 2 单单片片机机说说明明 4 4 第二章第二章 智能交通灯的设计原理智能交通灯的设计原理 6 6 2.12.1 智能交通灯的设计框图智能交通灯的设计框图 6 6 2.22.2 智能交通灯的设计方案及改进措施智能交通灯的设计方案及改进措施6 6 2 第三章第三章 智能交通灯电路设计智能交通灯电路设计 7 7 3.13.1 控制器的系统框图控制器的系统框图7 7 3.23.2 智能交通灯控制系统电路图智能交通灯控制系统电路图7 7 3.33.3 工作原理工作原理8 8 第四章第四章 智能交通灯软件系统设计智能交通灯软件系统设计 1414 4.14.1 智能交通灯的软件设计流程图智能交通灯的软件设计流程图 1414 4.24.2 程序源代码程序源代码 1515 第五章第五章 智能交通灯方案的仿真智能交通灯方案的仿真 1515 小结小结 1818 致谢词致谢词 1818 参考文献参考文献 1818 附附 录录 1919 附录附录 a a:智能交通灯控制程序:智能交通灯控制程序:1919 摘摘 要要 本文介绍的是一个基于 proteus 的智能交通灯控制系统的设计与仿真,系 统根据交通十字路口双车道车流量的情况控制交通信号灯按特定的规律变化。 本文首先对智能交通灯的研究意义和智能交通灯的研究现状进行了分析, 指出了现状交通灯存在的缺点,并提出了改进方法。智能交通灯控制系统通常 要实现自动控制和在紧急情况下能够手动切换信号灯让特殊车辆优先通行。本 文还对 at89s51 单片机的结构特点和重要引脚功能进行了介绍,同时对智能交 通灯控制系统的设计进行了详细的分析。最后利用 proteus 软件,通过其平台 3 对交通灯控制系统进行了仿真,仿真结果表明系统工作性能良好。 关关 键键 词词:proteus、at89s51 单片机、智能交通灯; 第一章第一章 概述概述 1.1 交通灯的发展及现状交通灯的发展及现状 中国车辆数量不断增加,交通管制的工作量越来越大,利用计算机代替人 进行高效交通管理是必然的发展趋势,而让计算机控制的交通灯拥有类似人类 的感知智能,具有很强的现实意义,比如通过摄像机让交通灯控制系统获得视 觉感知功能,就可以代替人类的眼睛,使系统根据所“看到”交通情况自适应 改变管制策略,提高了交通管理的自动化水平,使得交通更高效、更顺畅。 目前设计交通灯的方案有很多,有应用 cpld 设计实现交通信号灯控制器方 法;有应用 plc 实现对交通灯控制系统的设计;有应用单片机实现对交通信号灯 设计的方法。目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、 黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情 况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况, 还存在以下缺点:1两车道的车辆轮流放行时间相同且固定, 在十字路口, 经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道, 车辆较少,放行时间应该短些。2没有考虑紧急车通过时,两车道应采取的措 施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。 1. 2 单单片片机机说说明明 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、 最小功耗系统及典型系统等。 at89c51 单片机是美国 atmel 公司生产的低 电压、高性能 cmos 8 位单片机,具有丰富的内部资源: 4kb 闪存、 128bram、32 根 i/o 口线、2 个 16 位定时/计数器、5 个向量两级中断结构、 2 个全双工的串行口,具有 4.255.50v 的电压工作范围和 024mhz 工作 4 频率,使用 at89c51 单片机时无须外扩存储器。因此,本流水灯实际上就是 一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、 复位、电源等电路和必要的软件组成的单个单片机 。 1. 2.1 at89c51 单片机硬件结构单片机硬件结构 at89c51 是一种带 4k 字节闪存可编程可擦除只读存储器(fperom flash programmable and erasable read only memory)的单片机芯片,它采用 静态 cmos 工艺制造 8 位微处理器,最高工作频率位 24mhz。at89c5 外形 及引脚排列如图 1 所示: 图 1 1.2.2 管管脚脚说说明明 r rs st t:复位输入。当振荡器复位器件时,要保持rst 脚两个机器周期的 高电平时间。 p p0 0 口口:p0 口为一个 8 位漏级开路双向 i/o 口,每脚可吸收 8ttl 门电 流。当 p1 口的管脚第一次写 1 时,被定义为高阻输入。 p0 能够用于外部 5 程序数据存储器,它可以被定义为数据 /地址的第八位。在 fiash 编程时, p0 口作为原码输入口,当 fiash 进行校验时, p0 输出原码,此时 p0 外部 必须被拉高。 p p1 1 口口:p1 口是一个内部提供上拉电阻的 8 位双向 i/o 口,p1 口缓冲 器能接收输出 4ttl 门电流。p1 口管脚写入 1 后,被内部上拉为高,可用作 输入,p1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 在 flash 编程和校验时, p1 口作为第八位地址接收。 p p2 2 口口:p2 口为一个内部上拉电阻的 8 位双向 i/o 口,p2 口缓冲器可 接收,输出 4 个 ttl 门电流,当 p2 口被写“1”时,其管脚被内部上拉电 阻拉高,且作为输入。并因此作为输入时, p2 口的管脚被外部拉低,将输 出电流。这是由于内部上拉的缘故。 p2 口当用于外部程序存储器或 16 位 地址外部数据存储器进行存取时, p2 口输出地址的高八位。在给出地址 “1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时, p2 口输出其特殊功能寄存器的内容。 p2 口在 flash 编程和校验时接收高八 位地址信号和控制信号。 p p3 3 口口:p3 口管脚是 8 个带内部上拉电阻的双向 i/o 口,可接收输出 4 个 ttl 门电流。当 p3 口写入“1”后,它们被内部上拉为高电平,并用作输 入。作为输入,由于外部下拉为低电平, p3 口将输出电流( ill)这是由 于上拉的缘故。 a al le e/ /p pr ro og g:当访问外部存储器时,地址锁存允许的输出电平用于锁存地 址的地位字节。在 flash 编程期间,此引脚用于输入编程脉冲。在平时, ale 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因 此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作 外部数据存储器时,将跳过一个 ale 脉冲。如想禁止 ale 的输出可在 sfr8eh 地址上置 0。此时, ale 只有在执行 movx,movc 指令是 ale 才起 作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale 禁止, 置位无效。 6 p ps se en n:外部程序存储器的选通信号。在由外部程序存储器取指期间,每 个机器周期两次 psen 有效。但在访问外部数据存储器时,这两次有效的 psen 信号将不出现。 e ea a/ /v vp pp p:当 ea 保持低电平时,则在此期间外部程序存储器( 0000h- ffffh),不管是否有内部程序存储器。注意加密方式1 时,ea 将内部锁 定为 reset;当 ea 端保持高电平时,此间内部程序存储器。 x xt ta al l1 1 和和 x xt ta al l2 2:反向振荡放大器的输入及内部时钟工作电路的输入。 第二章第二章 智能交通灯智能交通灯的设计原理的设计原理 2.1 智能交通灯的设计框图智能交通灯的设计框图 2.22.2 智能交通灯的设计方案及改进措施智能交通灯的设计方案及改进措施 交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧 急转换开关。 针对道路交通拥挤,交叉路口经常出现拥堵的情况利用单片机控制技术提 出了软件和硬件设计方案及两点改进措施。 1、根据各道路路口车流量的大小自动调节通行时间。 2、考虑特殊车辆通行情况,设计紧急切换开关。 at89s51 单片机有 2 计数器,6 个中断源,能满足系统的设计要求。用其设 计的交通灯也满足了要求,所以本文采用单片机设计交通灯。 7 第三章第三章 智能交通灯电路设计智能交通灯电路设计 根据设计任务和要求,可画出该控制器的原理框图, 为确保十字路口的交通 安全,往往都采用交通灯自动控制系统来控制交通信号。其中红灯(r)亮,表 示禁止通行;黄灯(y)亮表示暂停;绿灯(g)亮表示允许通行。 3.13.1 控制器的系统框图如图控制器的系统框图如图 3 3 所示所示 图 3 3.2 智能交通灯控制系统电路图智能交通灯控制系统电路图 智能交通灯电路图如图智能交通灯电路图如图 4 所示:所示: 8 图 4 交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧 急转换开关。 3.33.3 工作原理工作原理 绿灯的放行时间与车辆通过数量不成正比。比如说 20 秒内每车道可以通过 20 辆车,40 秒内每车道却可以通过 45 辆车。因为这有一个起步的问题,还有 一个黄灯等待问题。也就是说,绿灯放行时间越长,单位时间通过车辆的数量 就越多。我们来计算一下,每车道通行 20 秒内可以通过 20 辆车,一个红绿灯 循环是 40 秒(单交叉路口),加上每次状态转换的黄灯 5 秒(一个循环要两次转 换) ,即一个红绿黄灯循环要 50 秒,即 50 秒内通行的车辆为 40 辆。通过一辆 车的平均时间是 1.25 秒。如果每次车辆通行的时间改为 40 秒,40 秒内每车道 可以通过 45 辆,一个红绿灯循环是 80 秒(单交叉路口),加上每次状态转换的 黄灯 5 秒(一个循环要两次转换) ,即一个红绿黄灯循环要 90 秒,即 90 秒内通 行的车辆为 90 辆。通过一辆车的平均时间只需 1 秒。显然在车辆拥挤的情况下 9 绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问 题。我设定了绿灯通行时间的上限为 40 秒。在非拥挤时段绿灯的通行时间的下 限为 20 秒,当交叉路口双方车辆较少时通行时间设为 20 秒,这样可以大大缩 短车辆在红灯面前的等待时间。当交叉路口双方车辆较多时通行时间设为 40 秒。 3.3.13.3.1 车检测电路车检测电路 用来判断各方向车辆状况,比如:20秒内可以通过的车辆为20辆,当20秒内 南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南 方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20 秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状 态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达 45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过 车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒, 依此类推。绿 灯下限时间为20秒,上限值为40秒,初始时间为20秒。这样检测,某次可能不 准确,但下次肯定能弥补回来,累积计算是很准确的,这就是人们常说的“模 糊控制”。因为路上的车不可能突然增多,塞车都有一个累积过程。这样控制 可以把不断增多的车辆一步一步消化,虽然最后由于每个路口的绿灯放行时间 延长而使等候的时间变长,但比塞车等候的时间短得多。本系统的特点是成本 低,控制准确。十字路口车辆通行顺序如图5所示: 图 5十字路口车辆通行顺序 由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就 要加长东往西,西往东也一样,显示时间选择如表1。 表1 显示时间选择 车辆情况本次该方下次该方向本次该方本次该 10 向通行时 间 通行时间向通行时 间 方向通 行时间 南往北少车,北往南 少车 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.23.3.2 信号灯电路信号灯电路 信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通 灯的四种状态见图 6。每个路口的信号的的转换顺序为:绿黄红 绿灯 表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行, 是绿灯过渡到红灯提示灯。红灯表示禁止通行。绿灯的最短时间为 20 秒,最长 时间为 40 秒,红红最短时间为 25 秒,最长时间为 45 秒,黄灯时间为 5 秒。 图 6 交通信号灯运行状态 3.3.3 时间显示电路时间显示电路 11 在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的 显示电路,采用数码管显示电路是一种很好的方法。由于东往西方向和西往东 方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需 要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管 可以时间的时间为 0-99 秒完全可以满足系统的要求,数码管连接方法如图 7 所 示。 图 7 数码管连接方法 下面我们用这种方法显示交通灯的时间,南北方向要显示 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;第一位显示 2 12 acall d1ms ;延时 1ms setb p2.0 ;灭第一位 mov p0,#3fh ;送 0 的共阴极码 clr p2.1;第二位显示 0 acall d1ms ;延时 1ms setb p2.1 ;灭第二位 mov p0,#5bh ;送 2 的共阴极码 clr p2.2;第三位显示 2 acall d1ms ;延时 1ms setb p2.2 ;灭第三位 mov p0,#6dh ;送 5 的共阴极码 clr p2.3;第四位显示 5 acall d1ms ;延时 1ms setb p2.3 ;灭第四位 djnz r7,loop;不够一秒,继续扫描 nextnumber;到一秒显示下一个数 d1ms: ;1ms 延时程序 stat1:mov r4,#2 mov r3,#250 djnz r3,$ djnz r4,stat1 ret 3.3.43.3.4 紧急转换开关电路紧急转换开关电路 一般情况下交通灯按照车流量大小合理分配通行时间,按一定规律变化, 但考虑紧急车通行车况,设计紧急通行开关,下面简述单片机的中断原理。 1、mcs51 的中断源 8051 有 5 个中断源,它们是两个外中断 int0(p3.2)和 int1(p3.3)、 两个片内定时/计数器溢出中断 tf0 和 tf1,一个是片内串行口中断 ti 或 ri, 这几个中断源由 tcon 和 scon 两个特殊功能寄存器进行控制,其中 5 个中断源的 程序入口地址如表 2 所示: 表 2 中断源程序入口 中断源的服务程序入口地址 中断源入口地址 外中断 0 0003h 定时/计数器 0 000bh 外中断 1 0013h 13 定时/计数器 0 001bh 串行口中断 0023h 2、中断的处理流程 cpu 响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不 同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述: 1)现场保护和现场恢复: 中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断 服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄 存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行 备份即保护现场。中断开始前需将有关寄存器的内容压入堆栈进行保存, 以便在恢复原来程序时使用。中断服务程序完成后,继续执行原先的程序,就 需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就 是现场恢复。 如果在执行中断服务时不是按上述方法进行现场保护和恢复现场, 就会是程序运行紊乱,单片机不能正常工作。 2)中断打开和中断关闭: 在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保 护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出 错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所 有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。 3)中断服务程序: 既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执 行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行 中断服务程序,进行中断服务。 4)中断返回: 执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服 务程序转回到原工作程序上来。在 mcs-51 单片机中,中断返回是通过一条专门 的指令实现的,自然这条指令是中断服务程序的最后一条指令。 5) 交通灯中的中断处理流程: 14 (1)现场保护和现场恢复: 有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况 保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。 (2)中断打开和中断关闭: 为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关 就关闭中断。 (3)中断服务程序: 有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中 断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿 灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿 灯,南北方向为红灯。 (4)中断返回: 执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态, 显示时间也和中断前一样。 第四章第四章 智能交通灯软件系统设计智能交通灯软件系统设计 4.14.1 智能交通灯的软件设计流程图智能交通灯的软件设计流程图 智能交通灯的软件设计流程图如图 8 所示: 15 图 8 交通灯的软件设计流程图 4.24.2 程序源代码程序源代码 见附录 第五章 智能交通灯方案的仿真 proteus嵌入式系统仿真软件在设计时已经注意到和单片机各种编译程序的 整合了,如它可以和keil ,wave6000等编译模拟软件结合使用。由于wave6000 使用方便,具备强大的软件仿真和硬件仿真功能。把proteus和wave6000结合起 来调试硬件就方便多了,这里就是采用“proteus+wave6000”的仿真方法,具 体步骤如下: 1)首先运行proteus vsm 的isis,选择sourcedefine code generation tool 菜单项,将出现如图8所示定义代码生成工具对话框。 16 图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所示对话框。 17 图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。 18 图图1212 at89c51at89c51添加程序文件添加程序文件 图图1313 交通灯仿真界面交通灯仿真界面 19 小小 结结 在毕业设计的整个过程中,我深切地体会到:实践是理论运用的最好检验。 毕业设计是对我们 3 年所学知识的一次综合性测试和考验,无论是在动手能力 方面还是理论知识的运用能力方面,都使得我有了很大的提高。 经过总结和分析,我意识到在设计程序之前,对所用单片机的内部结构有 一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完 整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复 修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序 的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为 资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常,但我们应 该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。 本 次毕业设计为我的大学生活画上了圆满的句号,为我即将的工作和生活奠定了 坚实的基础。 致谢词致谢词 在整个毕业设计中,我得到了学校电子实验室的大力支持,为我提供了各 种所需的仪器设备。感谢学校为我们安排了本次毕业设计,让我们的理论知识 和实际操作经验更加紧密的结合了在一起;同时又拓展了我们的知识面。同时 十分感激夏老师对我的悉心指导和帮助,使我能够顺利的完成此次毕业设计。 此次毕业设计让我从中受益匪浅,最后再次感谢老师对我的培养和教育! 参考文献参考文献 1 徐爱钧 智能化测量控制仪表原理与设计 (第二版)m.北京:北京航 空航天大学出版社,2004 年; 2 吴金戌、沈庆阳、郭庭吉 8051 单片机实践与应用m.北京:清华大学 出版社,2002 年; 3 谢自美 电子线路设计实验测试 (第三版)m.武汉:华中科技大 20 学出版社,2006 年; 4 谢维成、杨加国 主编 单片机原理与应用及 c51 程序设计m.北京: 清华大学出版社,2006 年; 5 杨立、邓振杰、荆淑霞 微型计算机原理与接口技术m.中国铁道出版 社,2006 年; 6 黄智伟 全国大学生电子设计竞赛技能训练 m.北京:北京航空航天 大学出版社,2007 年 7 高峰, 单片微型计算机与接口技术m.北京:科学出版社,2003; 8 华成英、童诗白 主编, 模拟电子技术基础 (第四版)m.高等教育出版 社,2006 年. 9 黄海萍、陈用昌 编 微机原理与接口技术实验指导m.北京:国防工 业出版社,2004 年 10 黄智伟: 凌阳单片机设计指导 ,北京: 北京航空航天大学出 版社,2007 年 附附 录录 附录附录 a a:智能交通灯控制程序:智能交通灯控制程序: org 0000h a_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 main org 0003h ;外部中断 0 入口 ljmp int0 ;跳转到外部 0 中断 org 0013h ;外部中断 1 入口 ljmp int1 ;跳转到外部 1 中断 int0: mov a,p1 ;外部 0 中断 push acc mov a,p2 ;中断保护 push acc mov p1,#0ffh ;清除先前状态 mov p2,#0ffh clr p1.0 clr p1.4 ;南北通行,东西禁止通行 clr p1.6 clr p2.3 21 jnb p3.2 ,$ ;判断是否还在中断状态 pop acc mov p2,a ;返回中断前状态 pop acc mov p1,acc reti ;中断返回 int1:mov a,p1 ;外部 1 中断 push acc ;中断保护 mov a,p2 push acc mov p1,#0ffh ;清除先前状态 mov p2,#0ffh clr p1.2 clr p2.1 clr p1.3 ;东西通行,南北禁止通行 clr p1.5 jnb p3.3 ,$ ;判断是否还在中断状态 pop acc mov p2,a ;返回中断前状态 pop acc mov p1,a reti ;中断返回 main: org 0100h ;初始情况 mov p1,#0ffh mov p2,#0ffh ;灭所有灯 mov tmod,#55h ;计数方式方式 1 mov ie,#85h ;开中断 mov temp1,#20 ; mov temp2,#25 mov temp3,#25 mov temp4,#20 star: mov p1,#0ffh mov p2,#0ffh ;灭所有灯 mov a,24h ;将显示时间送 a cjne a,#20,t40t ;判断时间,选初始值 t20t: ;南北通行要显示的时间为 20 的计数器初始值 clr tf0 ;清 tf0 clr tf1 ;清 tf1 mov th1 ,#0ffh ;送 20 秒时的初始值 mov tl1 ,#0fch ;在些设计 20 秒 6 辆为多车 mov th0 ,#0ffh mov tl0 ,#0fch 22 ljmp temp20 ;跳到 20 秒 t40t: ;南北通行要显示的时间为 40 的计数器初始值 clr tf0 ;清 tf0 clr tf1 ;清 tf1 mov th1,#0ffh ;送 40 秒时的初始值 mov tl1 ,#0f8h ;在些设计 40 秒 8 辆为多车 mov th0 ,#0ffh mov tl0 ,#0f8h ljmp temp40 ;跳到 40 秒 temp20: ;temp1=20 情况 setb tr0 ;开始计数 setb tr1 clr p1.2 clr p2.1 ;南北通行,东西禁止通行 clr p1.3 clr p1.5 mov temp1,#20 ;南北要显示的时间, mov temp2,#25 ;东西要显示的时间 stlop: acall display1 ;调用显示 dec temp1 ;时间够一秒显示时间减 1 dec temp2 mov a,temp1 cjne a,#0,next ;若显示时间不为 0 保持现在状态 ljmp star2 ;若显示时间为 0 跳到第二状态 next: ljmp stlop star2: ;状态 1 setb p1.2 clr p1.1 ;南北黄灯,东西禁止通行 setb p1.3 clr p1.4 mov temp1,#05 ;南北要显示的时间, mov temp2,#05 ;东西要显示的时间, stlop2: acall display1 ;调用显示 dec temp1 ;时间够一秒显示时间减 1 dec temp2 mov a,temp1 cjne a,#0,next2 ;若显示时间不为 0 保持现在状态 jb tf1 ,t40 ;判断南北是否多车 jb tf0 ,t40 ;判断北南是否多车 mov temp1,#20 ;少车下次显示时间为 20 秒 ljmp star3 ;跳到状态 3 t40: 23 mov temp1,#40 ; 多车下次显示时间为 40 秒 ljmp star3 ;若显示时间为 0 跳到第三状态 next2:ljmp stlop2 temp40:;tem=40 程序 setb tr0 ; 开始计数 setb tr1 clr p1.2 clr p2.1 ;南北通行,东西禁止通行 clr p1.3 clr p1.5 mov temp1,#40 ;南北要显示的时间, mov temp2,#45 ;东西要显示的时间 stlop11: acall display1 ;调用显示 dec temp1 ;时间够一秒显示时间减 1 dec temp2 mov a,temp1 cjne a,#0,next11 ;若显示时间不为 0 保持现在状态 ljmp star22 ;若显示时间为 0 跳到第二状态 next11: ljmp stlop11 star22: ;状态 1 setb p1.2 clr p1.1 ;南北黄灯,东西禁止通行 setb p1.3 clr p1.4 mov temp1,#05 ;南北要显示的时间, mov temp2,#05 ;东西要显示的时间, stlop22: acall display1 ;调用显示 dec temp1 ;时间够一秒显示时间减 1 dec temp2 mov a,temp1 cjne a,#0,next22 ;若显示时间不为 0 保持现在状态 jb tf1 ,t401 ; 判断是否多车 jb tf0 ,t401 mov temp1,#20 ;少车下次显示时间为 20 秒 ljmp star3 t401:mov temp1,#40 ;多车下次显示时间为 40 秒 ljmp star3 ;若显示时间为 0 跳到第三状态 next22:ljmp stlop22 star3: mov a,26h cjne a,#25,t40t1 ;判断时间,选初始值 t20t1: ;南北通行要显示的时间为 20 的计数器初始值 24 clr tf0 ; 清溢出位 clr tf1 mov th1 ,#0ffh ; 给初值 mov tl1 ,#0fch mov th0 ,#0ffh mov tl0 ,#0fch ljmp temp320 t40t1: ;南北通行要显示的时间为 40 的计数器初始值 clr tf0 ; clr tf1 mov th1,#0ffh ;给初值 mov tl1 ,#0f8h mov th0 ,#0ffh mov tl0 ,#0f8h ljmp temp340 temp320:;状态三 setb tr1 ;南北停止计数 setb tr0 ;东西开始计数 setb p1.1 ;东西通行,南北禁止通行 clr p1.0 setb p1.1 clr p1.0 setb p1.5 clr p1.6 setb p2.1 clr p2.3 mov temp3,#25 ;南北要显示的时间, mov temp4,#20 ;东西要显示的时间, stlop33: acall display ;调用显示 dec temp3 ;时间够一秒显示时间减 1 dec temp4 mov a,temp4 cjne a,#0,next33 ;若显示时间不为 0 保持现在状态 ljmp star34 ;若显示时间为 0 跳到第四状态 next33:ljmp stlop33 star34: ;状态四 setb p2.3 clr p2.2 setb p1.6 ;东西黄灯,南北禁止通行 clr p1.5 mov temp3,#05 ;南北要显示的时间, mov temp4,#05 ;东西要显示的时间, stlop34: 25 acall display ;调用显示 dec temp3 ;时间够一秒显示时间减 1 dec temp4 mov a,temp4 cjne a,#0,next34 ;若显示时间不为 0 保持现在状态 jb tf1 ,t402 jb tf0 ,t402 mov temp3,#25 ljmp star t402: mov temp3,#45 ljmp star next34: ljmp stlop34 temp340 : setb tr1 ;南北停止计数 setb tr0 ;东西开始计数 setb p1.1 ;东西通行,南北禁止通行 clr p1.0 setb p1.1 clr p1.0 setb p1.5 clr p1.6 setb p2.1 clr p2.3 mov temp3,#45 ;南北要显示的时间, mov temp4,#40 ;东西要显示的时间, stlop43: acall display ;调用显示 dec temp3 ;时间够一秒显示时间减 1 dec temp4 mov a,temp4 cjne a,#0,next43 ;若显示时间不为 0 保持现在状态 ljmp star44 ;若显示时间为 0 跳到第四状态 next43:ljmp stlop43 star44: ;状态四 setb p2.3 clr p2.2 setb p1.6 ;东西黄灯,南北禁止通行 clr p1.5 mov temp3,#05 ;南北要显示的时间, mov temp4,#05 ;东西要显示的时间, stlop44: acall display ;调用显示 dec temp3 ;时间够一秒显示时间减 1 26 dec temp4 mov a,temp3 cjne a,#0,next44 ;若显示时间不为 0 保持现在状态 jb tf1 ,t403 jb tf0 ,t403 mov temp3,#25 ljmp star t403: mov temp3,#45 ljmp star next44: ljmp stlop44 ;显示 display1: mov a,temp1 ;将南北要显示的数存放到 a mov b,#10 ;b=10 div ab ;a 除以 b 商存 a,余数 b mov b_bit,a ; 将 a 放到 20h mov a_b

温馨提示

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

评论

0/150

提交评论