您的当前位置:首页正文

基于单片机的交通灯

2023-07-21 来源:年旅网


毕业设计说明书

基于单片机的交通灯

控制系统设计

专业 电气工程及其自动化

2008年6月10日

学生姓名 班学

级 号

指导教师 完成日期

盐城工学院本科生毕业设计说明书(2008)

基于单片机的交通灯控制系统设计 摘 要:对基于单片机的交通灯控制系统进行了设计。系统功能为:以MCS-51系

列单片机作为控制核心,设计并制作交通灯控制系统,东西南北四个方向具有左拐、右拐、直行及行人4种通行指示灯,用计时器显示路口通行转换剩余时间,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行状态。

在对系统功能分析的基础上,提出了三种设计方案,经比较,选择性能较优的LED动态循环显示方案进行了设计。设计包括硬件和软件两大部分。硬件部分包括单片机最小系统、时间显示、交通灯显示三部分。选用Atmel公司的AT89S52单片机作为控制核心,东西南北四个方向设置了LED时间显示和交通灯显示,时间显示采用三位LED显示器,交通灯显示则采用红绿双色高亮发光二极管来模拟。软件采用了模块化的设计方法,主要分为主程序、定时器中断服务子程序、倒计时显示子程序、交通灯模拟显示子程序四部分。

在实验板上制作了基于单片机的交通灯控制系统样机,对硬件和软件部分分别进行了调试,再进行了软硬件联调,得到的交通灯控制系统样机实物,可圆满地完成毕业设计任务书所要求的功能。

关键词: 交通灯;单片机;AT89S52

盐城工学院本科生毕业设计说明书(2008)

Design of traffic light control system based on SCM

Abstract: Traffic light control system based on SCM (Single Chip Microcomputer) is

designed in this paper. System requires that MCS-51 series SCM is used as CPU. Traffic light control system should be designed and made .There are four groups light which indicate to turn left, turn right, and go straight ahead and pedestrian access in east, west, north and south four directions. Timer shows traffic conversion remainder time. When special vehicles, such as 119,120 go through, the system can automatically allow special vehicles running and other vehicles is prohibited.

Based on analysis of the system functions, three schemes are put forward .By comparison, LED dynamic cycle display scheme has better functions and it is selected to be designed. The design includes hardware part and software part. Hardware has three parts .They are SCM system, LED time display, traffic lights. AT89S52 SCM is selected as control CPU. LED display and traffic lights are set in east, west, north and south four directions. Three LED monitors are used to show time. Highlight and red-green two color traffic lights are used as traffic lights. Software is designed by module. It is divided into main program, timer interrupting service subroutine, LED display subroutine, traffic display subroutine.

The model of traffic lights control system is made in experiment board. Hardware and software is debugged respectively, then hardware and software are combined and debugged .The model of traffic lights control system can meet the requirement of design task book perfectly.

Key words: Traffic light; SCM; AT89S52

盐城工学院本科生毕业设计说明书(2008)

目 录

1 概 述 .................................................................................................................... 1 1.1 课题研究背景与意义 ........................................................................................ 1 1.2 课题设计内容 ..................................................................................................... 1 2 系统设计 ................................................................................................................. 1 2.1设计方案论证 ...................................................................................................... 1 2.2系统硬件设计 ..................................................................................................... 3 2.2.1控制模块 ........................................................................................................... 3 2.2.2通行灯显示模块 ............................................................................................... 5 2.2.3时间显示模块 ................................................................................................... 5 2.2.4电源电路模块 ................................................................................................... 5 2.2.5硬件电路中器件选择 ....................................................................................... 6 2.3 系统软件的设计 ............................................................................................... 11 2.3.1主程序 ............................................................................................................. 11 2.3.2定时中断服务程序 ......................................................................................... 11 2.3.3特种车中断服务程序 ..................................................................................... 13 2.3.4算法分析 ......................................................................................................... 14 3 系统调试 .............................................................................................................. 14 3.1硬件调试 ............................................................................................................ 15 3.1.1静态检查 ......................................................................................................... 15 3.1.2通电检查 ......................................................................................................... 15 3.2软件调试及软硬件联调 ................................................................................... 15 3.2.1仿真器选择 ..................................................................................................... 15 3.2.2仿真过程 ......................................................................................................... 16 3.2.3通行灯输出调试 ............................................................................................. 17 3.2.4时间显示模块调试 ......................................................................................... 18 3.2.5特种车中断程序调试 ..................................................................................... 18 3.2.6脱机调试 ......................................................................................................... 18 3.2.7实验结果 ......................................................................................................... 19 4 结 束 语 ............................................................................................................... 20 参考文献 .................................................................................................................. 21 致 谢 .................................................................................................................... 22 附 录 .................................................................................................................... 23 附录1 基于单片机的交通灯控制系统电路原理图 ............................................. 23 附录2 基于单片机的交通灯控制系统PCB图 .................................................... 23 附录3 基于单片机的交通灯控制系统程序清单 ................................................. 23

盐城工学院本科生毕业设计说明书(2008)

基于单片机的交通灯控制系统设计 1 概 述 1.1 课题研究背景与意义

随着经济的增长和人口的增加,人们生活方式不断变化,人们对交通的需求不断增加。城市中交通拥挤、堵塞现象日趋严重,由此造成巨大的经济与时间损失。资料显示,对日本东京268个主要交叉路口的调查估计表明:每年在交叉路口的时间延误,折成经济报失为20亿美元;而在我国北京市,当早晚交通高峰时,交叉路口处的排队长度竟达1000多米,有的阻车车队从一个交叉路口延伸到另一个交叉路口,这时一辆车为通过一交叉路口,往往需要半个小时以上,时间损失相当可观。

我国是一个历史悠久、人口众多的国家,城市数量随着社会的发展不断增多。随着城市化进程的大大加快,诱发的交通需求急剧增长,供需矛盾不断激化,严重的交通问题也随之而来。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊,这一切要归功于城市交通控制系统中的交通灯控制系统。交通灯控制系统对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果,使城市交通得以有效管理。

交通灯可以采用PLC、单片机等控制方法。利用单片机实现对交通信号灯的实时控制,只要采用一块单片机,加上简单的接口与驱动放大电路,即可实现,具有成本低,可靠性高的特点。 1.2 课题设计内容

本课题对基于单片机的交通灯控制系统进行设计。以MCS-51系列单片机为控制核心,设计并制作交通灯控制系统,用于十字路口的车辆及行人的交通管理。东西南北四个路口具有左拐、右拐、直行及行人4种通行指示灯,并分别用计时器显示路口通行转换剩余时间,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行状态。

设计交通灯控制系统硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。

2 系统设计

2.1 设计方案论证

根据设计内容要求,提出了如下三种方案:

方案一:采用AT89S52单片机作为控制核心,采用四组高亮红绿双色二极管作

1

基于单片机的交通灯控制系统设计

为东西南北四个路口的通行指示灯;采用四组3位LED数码管作为四个路口的通行倒计时显示器,LED显示采用动态扫描方式,以节省端口数。按以上系统构架设计,单片机端口资源刚好满足要求。方案一设计框图如图2-1所示。 上电复位P1口南北通行灯 (2组)P2口串口通信AT89S52P0口东西通行灯 (2组)3位LED显示(4组)自动/手动键盘P3.7列扫描驱动P3口 图2-1 方案一:采用LED动态扫描的交通灯控制系统

方案二:采用AT89C2051单片机作为控制器,通行倒计时显示采用16×16点阵LED发光管,左拐、右拐、直行及行人4种通行指示也采用16×16点阵双色LED发光管。方案二设计框图如图2-2所示,LED点阵的列驱动采用74LS595,用串行端口扩展实现,行驱动采用1/16译码器74LS154动态扫描,译码器74LS154生成16条行选通信号线,再经过驱动器驱动对应的行线。每条行线上需要较大的驱动电流,应选用大功率三极管作为驱动管。

RXDTXD列驱动器74LS595电源单片机AT89C2051行驱动器74LS154…I/O口双色LED显示点阵(每个路口7个)... 图2-2 方案二:采用16×16点阵LED发光管设计的交通灯控制系统

方案三:采用AT89C2051单片机作为控制器,通行倒计时及左拐、右拐、直行、

行人通行指示采用单块LCD液晶点阵显示器。

三种方案的特点比较如下:方案一具有电路简单,设计方便,显示亮度高,耗电较少,可靠性高等特点;方案二的图案显示逼真,单片机占用端口资源少,缺点

2

盐城工学院本科生毕业设计说明书(2008)

是需要大量的硬件,电路复杂,耗电量大,不太适合于模型制作;方案三设计占用单片机的端口最少,硬件也少,耗电也最少;虽然显示图案也很精美,但由于亮度太暗,晚上还得开背光灯,不够实用。可见方案一优于其他两种方案,因此本设计选用方案一:采用LED动态扫描的方案进行设计。 2.2 系统硬件设计

采用LED动态扫描的交通灯控制系统电路原理图如图2-3所示。(为排版起见,该图放在下一页)。系统由控制模块、通行灯显示模块、时间显示模块、电源模块四部分组成。 2.2.1 控制模块 控制模块电路如图2-4所示。主控制器采用AT89S52。AT89S52是ATMEL公司生产的一款性能稳定的8位单片机,具有1个8KB的Flash程序存储器,1个512字节的RAM,3个16的定时/计数器,4个8位的双向可位寻址I/O端口, 1个串行口,6个中断源,两个中断优先级。 U5 +5VR2910KS1R3 2510ΩR3 1510ΩS291716+5VC120uFC530PFC430PFS313P3.212Y212MHZ1514+5V31191812345678P10P11P12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRAT 8 9 S 52P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27VCCGND3938373635343332212223242526272840+5V20AT 8 9 S 52P3.010RXDP3.111TXD30ALE/P29PSEN图2-4 控制模块原理图 AT89S52的P1口用于控制南北通行灯,P2口用于控制东西通行灯,P0口用于3位LED显示器的段码控制,P3.0~P3.2口用于3位LED显示器的位码控制,手动/自动转换采用P3.7扳键。EA/VPP接+5V电源端。晶振及复位按典型电路设计,元器件参数如图2-4中所示。晶振频率为12MHz。

3

基于单片机的交通灯控制系统设计

4

盐城工学院本科生毕业设计说明书(2008)

2.2.2 通行灯显示模块 通行灯显示模块如图2-5所示。通行灯指示采用高亮度共阴红绿双色发光二极管,左拐、直行、右拐及行人各一个。双色发光二极管的共阴极通过电阻接地,阳极接P1口或P2口(南北为P1口,东西为P2口),经74HC244控制。当发光电流为6mA时,限流电阻按公式R=(5-1.8)/0.006计算,应为510Ω。由于通行时南北双向指示牌相同,东西双向指示牌相同,因此每个端口应具有12mA的吸收电流能力,在单片机的输出口接驱动电路74HC244,以保护单片机的输出端口。 U3P20P21P22P23P24P25P26P272468111315171191A11A21A31A42A12A22A32A41G2G74HC2442Y1U21A11A21A31A42A12A22A32A42468111315171191A11A21A31A42A12A22A32A41G2G74HC244U21Y11Y21Y31Y42Y12Y22Y32Y4VCCGND181614129753P10P11P12P13P14P15P16P17+5V2Y22Y32Y4D9D10U31Y11Y21Y31Y42Y12Y22Y32Y4VCCGND1816141297531Y11Y21Y31Y42Y12Y22Y32Y4+5V1Y41Y11Y21Y3D11D12R12510 ΩP10D4P11P12D3P13P14D2P15P16P17D1R4510 Ω行人灯R11510 Ω行人灯R3510 Ω右拐灯西路口R10510 Ω右拐灯R2510 Ω北路口直行灯R9510 Ω直行灯R1510 Ω左拐灯左拐灯

图2-5 通行灯输出显示模块 2.2.3 时间显示模块

通行剩余时间显示模块如图2-6所示(以北路口为例)。

路口通行剩余时间采用高亮红色7段共阳LED发光数码管显示,采用共阳数码管,如用单片机吸收电流驱动,列扫描驱动使用三级管,按每段6mA电流算,全显示字型“8”时,每个数码管需6mA×8=48mA。由于时间显示每个路口相同,4组需192mA,因此设计中采用功率三极管S9012驱动。由于单片机每个段码输出口需吸收48mA电流,因此在电路设计中也使用了驱动集成块74HC244。

2.2.4 电源电路

电源电路如图2-7所示。整个系统采用的电源电压只需+5V电压,将交流电经变压器变换为15V交流电,再用整流桥得到13.5V左右的直流电,采用不可调的3端稳压器件LM7805将电源稳定在5V直流输出。

5

基于单片机的交通灯控制系统设计

1234567U1P0.0P0.1P0.2P0.324681A11A21A31A42A12A22A32A41G2G74HC2441Y11Y21Y31Y42Y12Y22Y32Y4VCCGND1816141297531234567+5V+5VP3.212345678DPYaabcfbgdeecdfdpgdpCOM123456712345678DPYaabcfbgdeecdfdpgdpCOM123456712345678DPYaabcfbgdeecdfdpgdpDS3COMCOMDS1DS2COMQ1AS9012R1710KCOMQ2AS9012R1810KQ3AS9012R1910KP0.411P0.513P0.615P0.717119北路口显示器P3.1P3.0 图2-6 时间显示模块电路 1D17U4780523INADJ415VACOUT2D18+5VBRIDGE3C2220uFC60.1uF1C3220uFC70.1uFR301K

图2-7 电源电路

2.2.5 硬件电路中器件选择 A. AT89S52单片机

AT89系列单片机是ATMEL公司的8位FLASH单片机。这个系列单片机最吸引人的特点就是在片内含有FLASH存储器,不需要再外扩存储器,与80C51插座兼容,由于这些优点,使它有着十分广泛的用途,特别是在便携式和需要特殊信息保存的仪器和系统中显得更为有用。89系列单片机典型型号有AT89C51,AT89LV51,AT89C52,AT89LV52,AT89C2051, AT89S52,AT89C1051, AT89S51和AT89S8252。

本设计选用AT89S52。它内部具有1个8KB的Flash的程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16的定时/计数器、1个串行口、6个二级中断源和两个中断优先级。引脚如图2-8所示。

6

盐城工学院本科生毕业设计说明书(2008) U5123456781312151431191891716P10P11P12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRAT8 9 S 52P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P2739383736353433322122232425262728+5VAT 8 9 S 5220VCC40GND10RXD11TXDP3.030ALE/PP3.129PSEN 图2-8 AT89S52引脚 按功能,引脚大致分为4部分: a)I/O口线 P0口:8位、漏级开路的双向I/O口。当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口用于接受指令代码字节;在程序校验时,P0口可输出指令字节(这时需要加外部上拉电阻)。 P1口:8位、准双向I/O口,具有内部上拉电阻。P1口是为用户准备的I/O双向口。在编程和校验时,可用做输入低8位地址。用做输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。 P2口:8位、准双向I/O口,具有内部上拉电阻。P2口也可做普通I/O口使用。用做输入时,应先将输出锁存器置1。P2口可驱动4个TTL负载。 P3口:8位、准双向I/O口,具有内部上拉电阻。P3口可作为普通I/O口,用做输入时,将输出锁存器置1。在编程/校验时,P3口接受某些控制信号。 b)控制信号线 RST:复位输入信号,高电平有效。在振荡器稳定工作时,在RST脚施加两个机器周期(即24个晶振周期)以上的高电平,将器件复位。 EA/VPP:外部程序存储器访问允许信号。当EA引脚接地时,仅使用64KB的片外程序存储器,CPU从外部0000H~FFFFH的地址空间取指令;当EA引脚接VCC时,CPU从片内0000H地址开始取指令,当PC值超过1FFFH时,自动转到外存储器2000H~FFFFH地址空间执行程序。 PSEN:片外程序存储器读选通信号,低电平有效。 ALE/PROG:低字节地址锁存信号。 c)电源线: VCC为电源电压输入引脚,GND为地线。 d)外部晶振引线: 7

基于单片机的交通灯控制系统设计

XTAL1:片内振荡器反相放大器和时钟发生线路的输入端。使用片内振荡器时,连接外部石英晶体和微调电容。

XTAL2:片内振荡器反相放大器的输出端。当使用片内振荡器时,外接石英晶体和微调电容。 B.74HC244

简单输出接口扩展通常使用的典型芯片为74HC244, 由该芯片可构成三态数据缓冲器。74HC244芯片的引脚排列与内部结构分别如图2-9(a)(b)。

VCC1OE1A02Y01A12Y11A22Y21A32Y3GND

(a)引脚排列 (b)内部结构

图2-9 74HC244

201234567891020Vcc192OE181Y0172A0161Y124681171513111910.1A01A11A21A31O E2A02A12A22A32 0 EGND1Y01Y11Y21Y32Y02Y12Y22Y318161412357974 H C 2 4 4152A1141Y2132A2121Y3112A374HC244芯片内部共有两组四位三态缓冲器, 使用时可分别以1OE和2OE作为它们的选通工作信号。1脚为低电平时只有4个缓冲器工作,输入2,4,6,8对应输出18,16,14,12;1为高电平时这4个缓冲器为高阻。19引脚为低电平另外四个缓冲器工作,同样,输入11,13,15,17,对应输出9,7,5,3;19为高电平时这四个缓冲器为高阻。 C. LM 7805

LM7805的外形如图2-10所示。LM7805三端集成稳压电源内部由基准电压回路、恒流源、过流保护、过压保护和短路保护回路等8部分组成,具有低功耗,高效率,纹波系数小,输出电压稳定等优点。

8

盐城工学院本科生毕业设计说明书(2008)

图2-10 LM7805的外形图

D.七段LED数码管

7段数码管是一种常用的显示器件,其外观与内部电路连接见图2-11。它使用7个笔画显示0~9共10个数字,加上一个小数点共8个显示段,每一个笔画都是由发光二级管组成的。LED数码管根据LED的接法不同分为共阴和共阳两类,图2-11 (b)是共阳极数码管的内部电路,将八只LED的阳极连在一起,其中a~g为7个笔画的驱动端;dp为小数点驱动端;COM为公共引脚。

109a876VCC3 8 COMfgebcdpa7b6c4d2e1f9g10dp5d12345

(a)外观 (b)内部电路连接

图2-11 LED数码管

0~9共10个字符的字形码如表2-1所示。 E.双色发光二极管

双色发光二极管是在一个封装结构内设置两只不同单色的发光二极管。共阴红绿双色发光电气符号图与内部电路连接如图2-12所示。有3根引出线,圆形和长方形两种封装。其中第一只发光二极管的负(或正极)与第二只发光二极管的负(或

9

基于单片机的交通灯控制系统设计

正极)极相互连接后再向外引出。

表2-1 LED数码管显示字符的字形码

字形 P0.7 dp 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 P0.6 g 1 1 0 0 0 0 0 1 0 0 P0.5 f 0 1 1 1 0 0 0 1 0 0 P0.4 e 0 1 0 1 1 1 0 1 0 1 P0.3 d 0 1 0 0 1 0 0 1 0 0 P0.2 c 0 0 1 0 0 0 0 0 0 0 P0.1 b 0 0 0 0 0 1 1 0 0 0 RP0.0 a 0 1 0 0 1 0 0 0 0 0 G字形编码 共阳 C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H 共阴 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH LED1LED2+G-K圆形+R+G+RK-K长方形

(a)外形 (b)共阴双色发光二极管内部电路连接

图2-12 双色发光二极管

发光双色二极管的判别与检测方法:将万用表打在电阻档,用万用表黑表笔接在双色发光二极管中间的负极上,红表笔接在双色发光二极管的正极上,每次都亮,该双色发光二极管是共阴极的,并且是好的。 F.三极管9012

9012为一PNP型的三极管,外形与引脚图如图2-13所示。 其中1脚为发射极,2脚为基极,3脚为集电极。 G.整流桥

整流桥的外形如图2-14所示。整流桥的是作用将交流电转换成直流电,本次设计电源电路中选用1A,220V的整流桥。

10

盐城工学院本科生毕业设计说明书(2008)

123

图2-13 9012外形图及引脚图 图2-14整流桥的外形如图

2.3 系统软件的设计

交通灯控制系统软件分为主程序、定时中断程序与特种车实时响应程序三部分。 2.3.1 主程序 主程序主要负责总体程序管理功能,包括初始化部分与人机交互设定部分。由于采用动态扫描方式显示时间,因此主程序大部分时间要调用扫描显示程序。主程序流程图如图2-15所示。 开始初始化显示程序NP3.7=0?Y键功能程序 图2-15主程序流程图

初始化部分主要完成内存规划,定时器的工作模式、中断方式等的设定。由于子程序调用较多,因此初始化时堆栈指针设于80H处。定时器T0、T1设为16位定时器模式,定时时间为50mS,T0为秒计时用,T1为通行结束闪烁用。 2.3.2 定时中断服务程序

定时中断服务程序主要用于车辆与行人的通行指示,按照通行规则,红绿灯控制转换逻辑表如表2-2所示。

11

基于单片机的交通灯控制系统设计

通行规则如下:

A.车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1min(60S),各路右拐比直行滞后10S开放。

B.车辆南北向左拐、各路右拐,行人禁行。通行时间为1min(60S)。

C.车辆东西直行、各路右拐,东西向行人通行。东西向通行时间为1min(60S),各路右拐比直行滞后10S开放。

D.车辆东西向左拐、各路右拐,行人禁行。通行时间为1min(60S)。

表2-2 路口通行方式控制码数据表

端口 南 P1.7 P1.6 控制功能 左拐红 左拐绿 直行红 直行绿 右拐红 右拐绿 行人红 行人绿 120-110S 1(亮) 0(暗) 0(暗) 1(亮) 1(亮) 0(暗) 0(暗) 1(亮) 99H 1(亮) 0(暗) 1(亮) 0(暗) 1(亮) 0(暗) 1(亮) 0(暗) AAH 110-70S 1(亮) 0(暗) 0(暗) 1(亮) 0(暗) 1(亮) 0(暗) 1(亮) 95H 1(亮) 0(暗) 1(亮) 0(暗) 0(暗) 1(亮) 1(亮) 0(暗) A6H 70-60S 1(亮) 0(暗) 0(暗) 1/0(提示) 0(暗) 1(亮) 0(暗) 1/0(提示) 95H/84H 1(亮) 0(暗) 1(亮) 0(暗) 0(暗) 1(亮) 1(亮) 0(暗) A6H 60-10S 0(暗) 1(亮) 1(亮) 0(暗) 0(暗) 1(亮) 1(亮) 0(暗) 66H 1(亮) 0(暗) 1(亮) 0(暗) 0(暗) 1(亮) 1(亮) 0(暗) A6H 10-0S 0(暗) 1/0(提示) 1(亮) 0(暗) 0(暗) 1/0(提示) 1(亮) 0(暗) 66H/22H 1(亮) 0(暗) 1(亮) 0(暗) 0(暗) 1/0(提示) 1(亮) 0(暗) A6H/ A2H P1.5 北 方 P1.4 P1.3 P1.2 P1.1 向 P1.0 路口控制字 东 西 方 向 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 左拐红 左拐绿 直行红 直行绿 右拐红 右拐绿 行人红 行人绿 路口控制字 交通灯的4种通行规则,是以给控制红绿灯端口送控制码的方式实现的。它的

原理是,将按不同规则通行时的各路口的红绿灯亮灭情况转换为单片机端口控制码。红绿灯指示功能通过T0定时中断服务程序实现。

定时器T0定时溢出中断周期设为50ms,中断累计20次(即1S)时对120S倒计时单元减一操作。设计中将4种通行规则分成几种不同的亮灯方式,通过查询秒倒计时单元的数据,实现在不同的时间段给控制端口送不同的控制数据码。控制码分为5个时间段:120~110S、110~70S、70~60S、60~10S、10~0S。交通管理定时功能程序流程图如图2-16所示。

12

盐城工学院本科生毕业设计说明书(2008)

T0中断程序现场保护关中断TOT0初始重装TIME<110?YTIME<70?YTIME<60?YTIME<10?YTIME=0?Y南北/东西标志位取反中断返回NMOV SN, #99HMOV EW,#AAHNMOV SN, #95HMOV EW,#A6HNMOV SN, #95/84HMOV EW,#A6HNMOV SN, #66HMOV EW,#A6HNMOV SN, #66/22HMOV EW,#A6/A2H 图2-16 交通管理定时功能程序

2.3.3 特种车中断服务程序

将按钮S3按下,给INT1引脚输入低电平信号来模拟特种车通过信号,此时外部中断1被触发,中断处理流程如图2-17所示。 送全红灯外中断程序N现场保护15s倒计时结束?Y关外中断1关定时器T1,开外中断1红灯显示开定时器T1现场恢复,中断返回 图2-17 特种车中断服务程序流程图

13

基于单片机的交通灯控制系统设计

总的程序清单见附录三 2.3.4 算法分析 A.定时器/计数器 本设计涉及到120~110S、110~70S、70~60S、60~10S、10~0S五段计时,首先须将它们转为16进制代码。 120=7×16+8=78H 110=6×16+14=6EH 70=4×16+6=46H 60=3×16+12=3CH 10=0×16+10=0AH B.定时时间初值与TMOD的设置 T0、T1为16位定时器,由于定时时间大于8192μS,应选用工作方式一。 由于晶振频率为12MHz,TCY=1μS,故有 T=(65536-X)TCY=(65536-X)×1μs =50ms 计算初值 X=15536=3CB0H 即TH0=3CH ,TL0=0B0H。 TMOD的格式如图2-18所示。 D7 D6 D5 D4 D3 D2 D1 D0 M0 GATE C/T M1 M0 GATE C/T M1 图2-18 TMOD的格式 TMOD各位的内容确定如下:由于定时器/计数器0设为定时器,选用工作方式一,所以C/T(TMOD.2)=0,M1(TMOD.1)=0,M0 (TMOD.0)=1,GATE(TMOD.3)=0;定时器/计数器1没有使用,相应的D7~D4为随意状态“X”。 若取“X”为0,则(TMOD)=00000001B=01H C.中断系统IE的取值 IE的格式如图2-19所示。 D7 EA D6 --- D5 D4 D3 ET1 D2 D1 D0 EX0 ET2 ES EX1 ET0 图2-19 IE的格式 IE每一位都由软件置1或清零。本设计中CPU允许中断即EA=1,定时器/计数器0中断允许位ET0及外部中断0中断允许位EX0可申请中断,即ET0=1,EX0=1,其余不允许中断,均设为0,所以IE=10000011H=83H 3 系统调试

根据前述第2大节中硬件和软件设计,制作了基于单片机的交通灯控制系统样机实物。对样机的硬件和软件分别进行了调试,最后进行了软件、硬件联调。

14

盐城工学院本科生毕业设计说明书(2008)

调试成功的实物照片如图3-1所示。

图3-1 调试成功的单片机控制交通灯系统实物照片

调试过程中遇到了不少问题,并已将其逐一解决。最终得到了调试成功的交通灯系统,可以完成本设计1.2节中设计内容的要求。 3.1 硬件调试

3.1.1 静态检查

根据硬件电路图核对了元器件的型号、极性,安装是否正确,检查硬件电路连线是否与电路原理图一致,检查电路元器件是否都已经连接好,用万用表一一测试。 3.1.2 通电检查

首先调试电源部分。整个电路只需要+5V的电压,接上电源,将220V交流电通入,测试变压器的输出端,整流桥输出,LM7805的输出电压是否和理论计算值一致,再用示波器检测单片机的复位和晶振电路是否有复位信号和振荡信号。 3.2软件调试及软硬件联调

对软件先用仿真器进行了调试。用仿真器运行正常后,再用烧写器将程序烧到AT89S52单片机中,进行了脱机调试。

3.2.1仿真器选择

单片机仿真器有很多型号,本次设计采用南京电子有限公司生产的伟福系列仿真器H51/S。仿真头类型采用POD-H8X5X。

15

基于单片机的交通灯控制系统设计

3.2.2仿真过程 A.建立程序

选择菜单[文件| 新建文件]出现一个文件名为NONAME1 的源程序窗口,如图3-2所示,输入程序段(此处以P18页时间显示程序段为例)。

图3-2 建立程序窗口

将文件存为扩展名为.ASM的文件进行保存。 B.建立项目

建立项目分如下三步:

a) 加入模块文件。(将上述A中建立的ASM文件加入) b) 加入包含文件。(若无包含文件,此步加以取消) c) 保存项目。 C.仿真器的设置

选择菜单[设置| 仿真器设置]功能或按“仿真器设置”快捷图标打开“仿真器设置”对话框,如图3-3所示。

在“仿真器”栏中,选择仿真器类型和配置的仿真头以及所要仿真的单片机。在“语言”栏中,“编译器选择”选择为“伟福汇编器”。

编译项目。选择菜单[项目| 编译]功能或按编译快捷图标,编译项目。

在编译过程中,如果有错可以在信息窗口中显示出来,双击错误信息,可以在源程序中定位所在行。纠正错误后,再次编译直到没有错误。在编译之前,软件会自动将项目和程序存盘。在编译没有错误后,就可调试程序了。

16

盐城工学院本科生毕业设计说明书(2008)

图3-3 “仿真器设置”对话框

3.2.3通行灯输出调试

对于通行灯输出程序的调试,首先看左拐灯、直行灯、右拐灯、行人灯是否能正常工作。编制了以下测试灯亮灭的程序: ORG 0000H

START: MOV A,#0AAH ;让东西南北四个路口的四个红灯全亮 MOV P1,A MOV P2,A

ACALL DELAY ;延时一段时间

MOV A,#55H ;让东西南北四个路口的绿灯全亮 MOV P1,A MOV P2,A

ACALL DELAY ;延时一段时间

SJMP START ; 到START处循环以上操作

DELAY: MOV R7,#01H ;延时子程序 MOV R6,#81H DL1: NOP NOP NOP

DJNZ R6,DL1 DJNZ R7,DL1 RET

将上述程序输入电脑,经仿真器传输到系统运行后,发现有一红灯不亮,而其他指示灯都按指令运行出现正确的结果。用万用表仔细检测,发现该灯的阳极被误

17

基于单片机的交通灯控制系统设计

接地了,没有接到单片机的并行口上。经修改,每个指示灯均能正确的显示了,至此,说明通行灯的接线完全正确。

判断出通行灯接线正确后,对于整个电路的通行控制,根据逻辑状态表2-2编制了相应的程序(程序段见附录2中的T0中断服务程序)多次、反复调试,直到逻辑关系正确。调试时南北方向、东西方向指示灯同时进行。

3.2.4时间显示模块调试

对于时间模块,首先看显示的数字是否正常,显示的亮度是否合适。对于图2-3所示的电路,尽管LED数码管为共阳极,但是各位的位选为P3.0, P3.1 ,P3.2经PNP型晶体管9012后提供,P3.i(i=0,1,2)必须提供低电平才能点亮相应的显示器,须输出CLR P3.i指令(i=0,1,2)。先编制了LED静态显示的程序,测试P3.i引脚上的LED是否可以正常显示,相应程序如下:

ORG 0000H

START: MOV A,#01H

MOV DPTR,#TAB ;取段码表地址

MOVC A,@A+DPTR ;查显示数据对应段码 MOV P0,A

CLR P3.0 ; 开启P3.0口 SETB P3.1 ; 关闭P3.1口 SETB P3.2 ; 关闭P3.2口

SJMP START

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H, END

运行后P3.0引脚上接的显示器显示为1,同理可分别测试P3.1 ,P3.2引脚上的LED显示器是否可以正常显示。经检测各位LED可以正常显示,但是发光的亮度偏暗,有些模糊,这说明电路连接没有问题,但选用的电阻过大了,以至于电流很小,显示器不太亮,在保证9012正常工作的情况下,将电阻从47K调整为10K,显示亮度合适,这部分调试成功。

将附录2中的显示子程序进行了调试,四个路口的三个数码管均可以动态显示。至此,显示模块调试成功。

整个程序设计中采用了两种倒计时显示方式,120S倒计时适用于车流量较大的大城市,60S倒计时可用于中小型城市,两种倒计时由P3.7上的开关进行转换。 3.2.5特种车中断程序调试

将附录3中的119、120特种车程序进行调试,所有绿灯自动关闭,红灯全亮。 3.2.6脱机调试

用仿真器与硬件电路连接调试成功后,又将附录3的程序烧写到AT89S52中去,接上电源,发现LED不能正常显示,而通行灯输出一切正常。经检查AT89S52的P0口需要加外部上拉电阻,在仿真器上不存在此问题,因为仿真器的P0口有外部

18

盐城工学院本科生毕业设计说明书(2008)

上拉电阻。接510Ω的上拉电阻,接通电源交通灯与倒计时显示器可以正常运行,至此调试工作全部完成。

3.2.7实验结果

对实验板通电后,显示器从120S开始倒计时,每秒钟自动减一,四个路口的红绿灯按通行规则正确显示。显示图片如图3-1所示。

将S1开关打在合上的位置,显示器从60S开始倒计时,每秒钟自动减1,四个路口的红绿灯按通行规则正确显示。

按下S3按钮,所有绿灯全部关闭,红灯全亮,呈现特种车辆放行状态。

实验结果表明,本次设计并制作的交通灯可以很好地满足设计任务书的要求。

19

基于单片机的交通灯控制系统设计

4 结 束 语

拿到课题后,开始着手设计。查阅了大量相关资料,结合毕业设计任务书中的指标要求,进行了方案论证,确定了设计方案:将系统分为控制模块、通行灯显示模块、时间显示模块、电源模块四部分。

设计方案与元器件参数确定后,就开始采购元器件,然后进行硬件制作。在制作硬件的过程中,每制作一步,都要检查这一步的正确性,可靠性。最后硬件制作完毕后,先进行了静态调试,根据硬件电路图核对了元器件的型号,极性,安装是否正确,检查硬件电路连线是否与电路图一致。然后是通电调试,先调试电源部分。将220V交流电通入,测试变压器的输出端整流桥输出,LM7805的输出电压是否和理论计算值一致。再调试单片机的复位和晶振电路。

硬件电路制作完毕后,采用仿真器进行了软件调试,这个过程相当复杂艰难,出现了很多问题,例如输出灯不按规律显示,倒计时数码管显示不正确等。每一个问题都相当棘手,遇到这些问题后,首先检测硬件电路,对硬件电路排查完毕并确定无误后,对软件进行修改及再调试。问题一一被解决后最后得出所需软件部分。这个过程让我学到很多东西:首先必须具有的是耐心和细心,问题出现后,必须分析问题,找出可能出现此种问题的原因,然后进行一一检测,进行多次修改后才得到所需结果。最后是软硬件联调,将程序烧入到AT89S52,进行调试直到成功。

基于单片机的交通灯控制系统的PCB板已进行了设计,但是由于时间紧迫,布线还不十分合理,需进一步调整,初步设计的PCB图见附录2。

通过本次设计,本人的知识领域得到进一步扩展,专业技能得到进一步提高,同时提高了分析和解决实际问题的综合能力。另外,也培养了自己严肃认真的科学态度和严谨求实的作风。

由于本人水平有限,本次设计还存在一些不足之处,请评阅与答辩的各位老师批评指正。

20

盐城工学院本科生毕业设计说明书(2008)

参考文献

[1]王幸之.AT89系列单片机原理与接口技术[M] .北京:北京航空航天大学出版社,2004. [2]李忠国.单片机应用技能实训[M] .北京:人民邮电出版社,2006. [3]先锋工作室.单片机程序设计实例[M] .北京:清华大学出版社,2003.

[4] 李朝青.单片机原理及接口技术(修订版)[M] .北京:北京航空航天大学出版社,1998. [5] 余永权.世界流行单片机技术手册——美国系列[M] .北京:北京航空航天大学出版社,2004. [6] 李广弟.单片机基础[M] .北京:北京航空航天大学出版社,1992.

[7] 张毅刚.单片机原理及接口技术[M] .哈尔滨:哈尔滨工业大学出版社,1990. [8] 潘永雄.电子线路CAD实用教程[M] .西安:西安电子科技大学出版社,2004. [9] 何立民.单片机应用技术大全[M] .北京:北京航空航天大学出版社, 1994. [10] 楼然苗.单片机课程设计指导[M] .北京:北京航空航天大学出版社,2007. [11] 谭浩强.单片机课程设计[M] .北京:清华大学出版社,1989.

21

基于单片机的交通灯控制系统设计

致 谢

本设计是在导师张兰红副教授的亲切关怀和悉心指导下完成。在设计的整个过程中,张老师不断给我指明方向,指导我抓住问题的关键。张老师对我言传身教、关心备至,正是她孜孜不倦的教诲与细致入微的关怀激励着我完成了本次毕业设计,学生无限感激,将会永远铭记在心,在此,谨向张老师表示衷心的感谢。导师敏锐的思维、开阔的视野、严谨的治学态度、丰富的科学经验、渊博的理论知识、一丝不苟的学术作风、正直宽厚的为人品格都给我留下了深刻的印象,使我终生受益。

在完成设计期间,还有许多老师给予了我极大的帮助,PCB设计方面,周云龙老师给予了热情的指导,在此向他们表示衷心的感谢!特别感谢王翠、邓兴冬、沈佳、陈逸等同学给予我在学习上的大力支持与无私帮助。十分荣幸我们有一个融洽的集体,感谢电信学院2004届BD电气042班的全体同学的帮助和勉励,同窗之谊和手足之情,我将终生难忘!

最后我还要感谢培养我长大含辛茹苦的父母,正是他们在物质和精神上的支持和帮助,我得以顺利完成学业。谢谢你们!

22

盐城工学院本科生毕业设计说明书(2008)

附 录

附录1 基于单片机的交通灯控制系统电路原理图 附录2 基于单片机的交通灯控制系统PCB图 附录3 基于单片机的交通灯控制系统程序清单

23

基于单片机的交通灯控制系统设计

24

盐城工学院本科生毕业设计说明书(2008)

25

基于单片机的交通灯控制系统设计

26

盐城工学院本科生毕业设计说明书(2008)

附录3 基于单片机的交通灯控制系统程序清单

;************************************************; ; 交通灯控制程序 ; ;************************************************; ;以下是初始化部分

TIME EQU 50H ;秒记数用 TIMESFR EQU 51H ;临时寄存器 CONR5 EQU 52H ;T1秒定时记数用

TIMED0 EQU 55H ;单向最大定时时间,直行开始,人行开

始(120S) TIMED1 EQU 56H ;各路右拐开始时间(110S) TIMED2 EQU 57H ;前行结束提醒(70S)

TIMED3 EQU 58H ;前行结束,人行结束,左拐开始(60S) TIMED4 EQU 59H ;左拐结束提醒 TIMED5 EQU 5AH ;左拐结束 TIMED6 EQU 5BH TIMED7 EQU 5CH

SN EQU P1 ;南北口 EW EQU P2 ;东西口

SCAN EQU P3 ;扫描口 LEDOUT EQU P0 ;段码口

SNEWFLAG BIT 09H ;东西口与南北口转换标志

;按键在扫描口的最高位,按一下,全红灯。P3.7扳键开关扳向合上位置,则为60秒倒计时

;定时器T0﹑T1溢出周期为50ms,T0为秒记数用 ;*************中断入口程序******************** ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回

ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTT0执行

ORG 0013H ;外中断1中断程序入口 LJMP INT11 ;外中断1、119﹑120中断 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1

ORG 0023H ;串行中断程序程序返回 RETI

27

基于单片机的交通灯控制系统设计

;****************主程序********************* START: MOV SP, # 80H

MOV R0, # 00H ;清00H~8EH内存单元 MOV R7, # 8FH CLEARDISP: MOV @R0, # 00H INC R0

DJNZ R7, CLEARDISP

MOV MOV MOV MOV MOV CLR MOV MOV MOV MOV MOV JB ;以下为60s管理

LCALL LCALL LCALL JB MOV MOV MOV MOV MOV SSWAIT: JNB LCALL LCALL LCALL

TIMED0, # 78H ;单向最大定时时间,直行开始,

人行开始 TIMED1, # 6EH ;各路右拐开始时间(110S) TIMED2, # 46H ;前行结束提醒(70S)

TIMED3,# 3CH ;前行结束,人行结束,左拐开始

(60S)

TIMED4,# 0AH ;左拐结束提醒

SNEWFLAG ;南北先通行标志位

TMOD, # 01H ;设T0,T1为16位定时器 TL0, #0B0H ;50ms定时初值(T0记时用) TH0, #3CH ;50ms定时初值

TL1, #0B0H ;50ms定时初值(T1闪烁定时用) TH1, #3CH ;50ms定时初值 SCAN.7, SSST ;120s管理 DL1MS DL1MS DL1MS

SCAN.7, SSST ;干扰

TIMED0, #60 ;单向最大定时时间,直行开始,人行开始

TIMED1, #55 ;各路右拐开始时间(55S) TIMED2, #35 ;前行结束提醒(35S)

TIMED3, #30 ;前行结束,人行结束,左拐开始

(30S)

TIMED4, #05 ;左拐结束提醒 SCAN.7, SSWAIT DL1MS DL1MS DL1MS

28

盐城工学院本科生毕业设计说明书(2008)

JNB SCAN.7, SSWAIT

SSST: MOV TIME, TIMED0 ; 120S LCALL TUNBCD MOV SN, #99H MOV EW, #0AAH

SETB EA ;总中断开放 SETB PX1 START1:

KEYFUN: KEYWAIT: KEYY: KEYWAIT1:

SETB SETB SETB MOV MOV LCALL JNB SJMP LCALL LCALL JB CLR CLR MOV MOV MOV LCALL LCALL JNB LCALL JB LCALL JB LCALL JNB MOV LCALL CLR SETB EX1

ET0 ;允许T0中断

TR0 ;开启T0定时器

R4, #14H ;1S定时用初值(50ms×20) CONR5, #20

DISPLAY ;调用显示子程序 SCAN.7, KEYFUN ;手动状态

START1 ;P1.0口为1时跳回START1 DISPLAY DISPLAY

SCAN.7, START1

ET0 TR0

SN, #056H ;全车道停,行人通 EW, #056H

TIME, #00H ;时间显示0 TUNBCD DISPLAY

SCAN.7, KEYWAIT

DISPLAY ;等待按键按下 SCAN.7, KEYY DISPLAY SCAN.7, KEYY DISPLAY

SCAN.7, KEYWAIT1

TIME, TIMED0 ;重新开始计时初值 TUNBCD

SNEWFLAG ;南北先通行标志位 TR0

29

基于单片机的交通灯控制系统设计

SETB ET0 AJMP START1

;********************1s计时程序******************* ;T0中断服务程序

INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET0 ;关T0中断允许 CLR TR0 ;关闭定时器T0

LOOP11: LOOP22: LOOP33: LOOP44: LOOP55:

MOV A, #0B7H ;中断响应时间同步修正 ADD A, TL0 ;低8位初值修正

MOV TL0, A ;重装初值(低8位修正值) MOV A, #3CH ;高8位初值修正 ADDC A, TH0

MOV TH0, A ;重装初值(高8位修正值) SETB TR0 ;开启定时器T0 DJNZ R4, OUTT00 ;20次中断到(1S),重赋初值MOV R4, #14H

JB SNEWFLAG, INT22 DEC TIME

MOV A, TIME

CJNE A, TIMED1, LOOP11 ;判断是否小于110S JC LOOP22 ;120-110 MOV SN, #99H MOV EW, #0AAH

LJMP OUTT0 ;120-110 MOV A, TIME

CJNE A, TIMED2, LOOP33;判断是否小于70S JC LOOP44 ;110-70

MOV SN, #95H MOV EW, #0A6H

LJMP OUTT0 ;110-70 MOV A, TIME

CJNE A, TIMED3, LOOP55 ;判断是否小于60S JC LOOP66 ;70-60 MOV 20H, SN CPL 04H CPL 00H

MOV SN, 20H

30

盐城工学院本科生毕业设计说明书(2008)

MOV EW, #0A6H

LJMP OUTT0 ;70-60 LOOP66: MOV A, TIME

CJNE A, TIMED4, LOOP77 ;判断是否小于10S LOOP77: JC LOOP88 ;60-10 MOV SN, #66H MOV EW, #0A6H

LJMP OUTT0 ;60-10 LOOP88: OUT88: OUTT0: OUTT00: INT22: LOOP111: LOOP221: LOOP331:

MOV JZ MOV CPL CPL MOV MOV CPL MOV LJMP MOV CPL LCALL POP POP SETB RETI DEC MOV CJNE JC MOV MOV LJMP MOV CJNE JC MOV MOV LJMP A, TIME OUT88

20H, SN 06H 02H

SN, 20H 20H, EW 02H

EW, 20H

OUTT0 ;70-60 TIME, TIMED0 ;20初值

SNEWFLAG TUNBCD

PSW ;恢复状态字(出栈) ACC ;恢复累加器 ET0 ;开放T0中断 ;中断返回 TIME A, TIME

A, TIMED1, LOOP111 ;判断是否小于110S LOOP221 ;120-110 EW, #99H SN, #0AAH

OUTT01 ;120-110 A, TIME

A, TIMED2, LOOP331 ;判断是否小于70S LOOP441 ;110-70 EW, #095H SN, #0A6H

OUTT01 ;110-70

31

基于单片机的交通灯控制系统设计

LOOP441: MOV A, TIME

CJNE A, TIMED3, LOOP551 ;判断是否小于60S LOOP551: JC LOOP661 ;70-60 MOV 20H, EW CPL 04H CPL 00H

MOV EW, 20H MOV SN, #0A6H

LJMP OUTT01 ;70-60 LOOP661: MOV A, TIME

CJNE A, TIMED4, LOOP771 ;判断是否小于10S LOOP771: JC LOOP881 ;60-10 MOV EW, #66H MOV SN, #0A6H

LJMP OUTT01 ;60-10 LOOP881: MOV A, TIME JZ OUT881 MOV 20H, EW CPL 06H

CPL 02H

MOV EW, 20H MOV 20H, SN CPL 02H

MOV SN, 20H

LJMP OUTT01 ;70-60

OUT881: MOV TIME, TIMED0 ;120S初值 CPL SNEWFLAG OUTT01: LCALL TUNBCD

POP PSW ;状态恢复字(出栈) POP ACC ;恢复累加器 SETB ET0 ;开放T0中断 RETI ;中断返回 ;**********************显示程序******************

;显示数据在70H~72H单元内,用3位LED共阳数码管显示,LEDOUT口输出段码数据,

;SCAN口作扫描控制,每个LED数码管亮1ms再逐位循环

DISPLAY: MOV R1, #70H ;指向显示数据首址 MOV R5, #0FEH ;扫描控制字初值

32

盐城工学院本科生毕业设计说明书(2008)

PLAY: MOV A, R5 ;扫描字放入A

MOV SCAN, A ;从SCAN口输出 MOV A, @R1 ;取显示表地址 MOV DPTR, #TAB ;取段码表地址

MOVC A, @A+DPTR ;查显示数据对应段码 MOV LEDOUT, A ;段码放入LEDOUT口 LOOP6: LCALL DL1MS ;显示1ms INC R1 ;指向下一地址

MOV A, R5 ;扫描控制字放入A

JNB ACC.2, ENDOUT ;ACC.2=0时,一次显示结束 RL A ;A中数据循环左移 MOV R5, A ;放回R5内 MOV LEDOUT, #0FFH

AJMP PLAY ;跳回PLAY循环

ENDOUT: MOV LEDOUT, # 0FFH ;一次显示结束,端口复位 MOV SCAN, #0FFH ;端口复位 RET ;子程序返回

TAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H, 0FFH, 88H, 0BFH

;共阳段码表 \"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"不亮\",\"A\",\"-\" ;***********************延时程序******************* ;1ms延时程序,LED显示程序用

DL1MS: MOV R6, #14H DL1: MOV R7, #19H DL2: DJNZ R7, DL2 DJNZ R6, DL1 RET

TUNBCD: PUSH ACC PUSH PSW PUSH B

MOV A, TIME MOV B, #100 DIV AB

MOV 72H, A JNZ JJ0

MOV 72H, #0AH ;最高位为0,不点亮 JJ0: MOV A, B

33

基于单片机的交通灯控制系统设计

MOV B, #10 DIV AB

MOV 71H, A JNZ JJ1

MOV A, 72H ;次高位为0,先看最高位是否为不

SUBB A, #0AH JNZ JJ1

MOV 71H, #0AH ;最高位不亮,次高位也不亮 JJ1: MOV 70H, B

POP B POP PSW POP ACC RET

;*********************119,120车中断程序**************** INT11: PUSH ACC PUSH PSW CLR EX1 CLR ET0

CLR TR0

MOV SN, #AAH ;全红灯 MOV EW, # AAH

MOV TIMESFR, TIME ;保存道口数据 MOV TIME, #0FH MOV CONR5, #20 LCALL TUNBCD SETB ET1 SETB TR1

POP PSW POP ACC RETI

;******************15s计时程序********************* ;T1中断服务程序

INTT1: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护 CLR ET1 ;关T1中断允许 CLR TR1 ;关闭定时器T1

MOV A, #0B7H ;中断响应时间同步修正

34

盐城工学院本科生毕业设计说明书(2008)

ADD A, TL1 ;低8位初值修正

MOV TL1, A ;重装初值(低8位修正值)

MOV A, #3CH ;高8位初值修正 ADDC A, TH1

MOV TH1, A ;重装初值(高8位修正值)

SETB TR1 ;开启定时器T1

DJNZ CONR5, OUTT333 ;20次中断未到,中断退出 MOV CONR5, #14H ;20次中断到(1S),重赋初值 OUT333: OUT444:

DEC LCALL MOV JZ SETB POP POP RETI

CLR CLR MOV LCALL SETB SETB SETB POP POP RETI

END TIME TUNBCD A, TIME OUT444 ET1 PSW ACC TR1 ET1

TIME, TIMESFR

TUNBCD ET0 TR0 EX1 PSW ACC ;程序结束

35

因篇幅问题不能全部显示,请点此查看更多更全内容