单片机课程设计示例交通灯控制_第1页
单片机课程设计示例交通灯控制_第2页
单片机课程设计示例交通灯控制_第3页
单片机课程设计示例交通灯控制_第4页
单片机课程设计示例交通灯控制_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

1、第四章单片机课程设计示例(交通灯控制)4.1 课题设计内容对基于单片机的交通灯控制系统进行设计。所设计的系统功能为:以MCS-51系列单片机作为控制核心,在东西南北四个方向设置左拐、右拐、直行及行人4种通行指示灯,用计时器显示路口通行转换剩余时间。在出现紧急情况时,可以由交警手动实现全路口车辆禁行而行人通行状态,在特种车辆如119、120通过路口时,系统可自动转为特种车辆放行,其他车辆禁止通行状态。4.2 设计方案论证根据设计内容要求,提出了如下三种方案:方案一:采用40脚、片内带8kBFlashROM的AT89S52单片机作为控制核心,采用四组高亮红绿双色二极管作为东西南北四个路口的通行指示

2、灯,采用四组3位LED数码管作为四个路口的通行倒计时显示器,LED显示采用动态扫描方式,以节省端口数。方案一结构框图如图4-1所示,按照这种结构设计,单片机端口资源刚好满足要求。图4-1方案一:采用LED动态扫描的交通灯控制系统结构框图方案二:采用20脚、片内带2kBFlashROM的AT89C2051单片机作为控制器,左拐、右拐、直行及行人4种通行指示采用16M6点阵双色LED发光管,通行倒计时显示也采用16X16点阵LED发光管。LED点阵的列驱动采用74LS595,以实现串行端口扩展,行译码采用4/16译码器74LS154,74LS154生成16条行选通信号线,每条行线上需要较大的驱动电

3、流,选用大功率三极管作为驱动管。方案二结构框图如图4-2所示,方案三:采用AT89C2051单片机作为控制器,左拐、右拐、直行、行人通行指示及通行倒计时指示采用单块LCD液晶点阵显示器。三种方案的特点比较如下:方案一具有电路简单,设计方便,显示亮度高,耗行译码器行驱动器双色LED显示点阵(每个路口7个)列驱动器74LS595RXDTXDAT89C2051I/O口图4-2方案二:采用16X16点阵LED发光管设计的交通灯控制系统结构框图电较少,可靠性高等特点;方案二的图案显示逼真,单片机占用端口资源少,缺点是需要大量的硬件,电路复杂,耗电量大,不太适合于模型制作;方案三设计占用单片机的端口最少,

4、硬件也少,耗电也最少,虽然显示图案也很精美,但由于亮度太暗,晚上还得开背光灯,不够实用。可见方案一优于其他两种方案,因此本设计选用方案一:采用LED动态扫描的方案进行设计。4.3 系统硬件设计采用LED动态扫描的交通灯控制系统电路原理图如图4-3所示系统由控制模块、通行灯显示模块、时间显示模块、电源模块四部分组成。4.3.1 控制模块控制模块电路如图4-4所示。主控制器采用AT89S52。AT89S52的晶振及复位电路按典型电路设计,元器件参数如图4-4中所示,晶振频率选为12MHz。P1口用于控制南北通行灯,P2口用于控制东西通行灯,P0口用于四组3位LED显示器的段码控制,P3.0P3.2

5、口用于3位LED显示器的位码控制。对不同城市,准备采用两种倒计时方式:对车流量较大的大城市采用120S倒计时,对中小城市采用60S倒计时。两种倒计时采用P3.6上的S2开关进行转换。在出现紧急情况时,由交警手动按S3实现全路口车辆禁行而行人通行状态。现场特种车的到来信号可以采用红外线接收器采集,使用单片机的外部中断1响应特种车的通行要求。此处采用S4按键模拟特种车的到来信号,按一下S4表示有特种车要通行,执行相应的中断服务程序。由于AT89S52使用片内的8KB的Flash程序存储器,所以片内外程序存储器选择引脚EA/Vpp接+5V电源。4.3.2通行灯显示模块通行灯显示模块如图4-5所示(以

6、西路口和北路口为例)。通行灯指示采用高亮共阴红绿双色发光二极管,左拐、右拐、直行及行人各一个。双色发光二极管的共阴极通过电阻接地,阳极接P1口或P2口(南北为P1口,东西为P2口),经74HC244控制。当发光电流为6mA时,限流电阻按公式R=(5-1.8)/0.006计算,取标称值为510QO由于通行时南北双向指示牌相同,东西双向指示牌相同,因此每个端口应具有12mA的驱动电流能力,在单片机的输出口接驱动电路74HC244,以保护单片机的输出端口。|4.3.3 时间显示模块通行剩余时间显示模块如图4-6所示(以北路口为例)DS5CMO1122bcdpDPY123456712345678LRL

7、RXQ4AR18S9012R20S9012665466MOmnrnR34-R41510Q*8IC11392881532INT0AT89S5215EA/VPRESET3717RDS2fflR31-R33510Q*3IC2D17C20.1uFT1T0X1X2RXDTXDALE/PPSENVCCGND1113233837C3220uF3433+5V314367+5V7805I,OUTDAP3.313P3.212191845463635172A42Y421P20222325262728204030IC4281Y42Y1VCC20GND!1G2G2A22A32A41A11A21A32Y22Y32Y41Y

8、11Y21Y3VCCGND1A4'P20PTP2I1+-i,+5V151746P3.010P3.111P24112513P21310K10K10KP3.011abcdefgdpoDS733+5VIC5R29510QJ11_19上2A315h112A417卜2A111工2A213、1A12、1A24、1A36.1A48昌+5V18P1016P11、14P12,12P139P147P15>5P1飘3P17,R12R9510Q骨左拐灯2Y4510Q、2丫2、11丫21丫4R4BRIDGE3I1G_2GVCCGND123456781234567-IC3R3010K1A11A21A31A4

9、2A12A22A32A415VACC1220uFP10P11P12P13P14P15P16P17P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27T23x.P241P25P267271A11A21A31A41Y11Y21Y31Y4ODS12A12A22A374HC2442Y12Y22Y3D183F工C4下1uF74HC2442A1:1A11Y11A21Y21A31Y31A41Y474HC2442A12Y12A22Y22A32Y32A42Y4181Y1161Y2,141丫3、12-1Y4>X92Y172Y2、52Y3-32丫4、DS2北路口显Q

10、3AS9012R191122abcdefgdpMDPYaQ1AMQ2AS9012,印79012r东路口显示命Q5AR21S9012R2210K10K10KfD12-X510Q行灯R11D114艮M-D10510Q右拐灯西路口R10510Q行人灯R3<k510Q右拐灯储口R2*卜510QR1*卜510Q左拐灯P10/rr行人灯R5510Q左拐灯R6-JL510Q灯口R74i510Q右拐灯R8510Q、2Y4R13FlD13A2Y3kJ.510Q左拐灯R14、2Y2*rD14乩510Q2Y1AJ吉KT-gL刁_t=LlJ八J小蛇"4芸上D15R1Y3kJ.510QFlR16、1丫2

11、a.D164、1丫1a<»510Qrj仃人”+5V图4-3采用LED动态扫描的交通灯控制系统电路原理图路口通行剩余时间采用高亮红色7段共阳LED发光数码管显示。如用单片机吸收电流驱动,列扫描驱动使用三级管,按每段6mA电流算,全显示字型“8”时,每个数码管需6mA<8=48mA。由于时间显示每个路口相同,4组需192mA,因此设计中采用功率三极管S9012驱动。由于单片机每位段码输出口需吸收24mA电流,因此在电路设计中也使用了驱动集成块74HC244。4.3.4 电源电路电源电路如图4-7所示。整个系统采用的电源电压只需+5V电压,将交流电经变压器变换为15V交流电,再

12、用整流桥得到13.5V左右的直流电,采用不可调的3端稳压器件LM7805将电源稳定在5V直流输出。图4-4控制模块原理图IC4P2411P2513P26151A11Y11A21Y21A31Y31A41Y474HC2442A12Y12A22Y22A32Y32A42Y41GVCC2GGNDP202P214P226P2382A1112A2132A3152A4171A11Y11A21Y21A31Y31A41Y42714HC2424i2A22Y22A32Y32A42Y41GVCC2GGND1A361A481R12510Q行人灯R11510QD111Y4VJY1D10娶妻2Y2N浦右拐灯公西路口R10P1

13、0-D4P11/P12,D3P13R4510Q行人灯R32Y3一510Q灯R9510Q'2Y4同左拐灯-4P14D2"/P15Nrr/P16HiD1"P17M/fr-510Q右拐灯北路口R2510Q灯R1510Q左拐灯图4-5通行灯输出显示模块IC3P0021A11Y1P0141A21Y2P02-6,1A31Y3P0381A41Y4P041174HC244w2A12Y1P05-3,2A22Y2P0615,2A32Y3P0717,2A42Y41VCC191GGNDQ2G_0181/162;143y124y95/rz6z/=-+5VII+5VaDPYbcdgdpMDS1

14、DPYarrcfMQ1AzS9o12abcde一g一dp,MODS2R1710KQ2AS9012P3.2北路口显示器efgdpMR1810KP3.1DPYafg,bdpQ3AS9012R1910KP3.0图4-6时间显示模块电路图4-7电源电路图4-8AT89S52引脚功能4.4 系统软件设计交通灯控制系统软件主要分为主程序、定时器中断服务子程序、特种车中断服务子程序三部分。4.4.1 主程序主程序主要负责总体程序管理功能,包括初始化部分和人机交互设定部分。由于采用动态扫描方式显示时间,因此主程序大部分时间是调用扫描显示程序。主程序流程图如图4-9所示。P3.7=0表示按下了自动/手动转换开关

15、。P3.7=0?NY手动控制程序显示程序初始化图4-9主程序流程图初始化部分主要完成内存规划,定时器的工作模式、中断方式等的设定。由于子程序调用较多,因此初始化时堆栈指针设于80H处。定时器T0、T1设为16位定时器模式,定时时间为50mS,T0为秒计时用,T1为特种车通行秒计时用。4.4.2 定时器中断服务子程序定时器中断服务子程序主要用于车辆和行人的通行指示,按照通行规则,红绿灯控制转换逻辑表如表4-1所示。通行规则如下:A.车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1min(60S),各路右拐比直行滞后10S开放。B.车辆南北向左拐、各路右拐,行人禁行。通行时间为1min(

16、60S)。C.车辆东西直行、各路右拐,东西向行人通行。东西向通行时间为1min(60S),各路右拐比直行滞后10S开放。D.车辆东西向左拐、各路右拐,行人禁行。通行时间为1min(60S)。交通灯的4种通行规则,是以给控制红绿灯端口送控制码的方式实现的。它的原理是,将按不同规则通行时的各路口的红绿灯亮灭情况转换为单片机端口控制码。红绿灯指示功能通过T0定时中断服务程序实现。表4-1路口通行方式控制码数据表端口控制功能120-110S110-70S70-60S60-10S10-0S南P1.7左拐红1(亮)1(亮)1(亮)0(暗)0(暗)北P1.6左拐绿0(暗)0(暗)0(暗)1(亮)1/0(提示

17、)P1.5直行红0(暗)0(暗)0(暗)1(亮)1(亮)方P1.4直行绿1(亮)1(亮)1/0(提示)0(暗)0(暗)P1.3右拐红1(亮)0(暗)0(暗)0(暗)0(暗)向P1.2右拐绿0(暗)1(亮)1(亮)1(亮)1/0(提示)P1.1行人红0(暗)0(暗)0(暗)1(亮)1(亮)P1.0行人绿1(亮)1(亮)1/0(提示)0(暗)0(暗)路口控制字99H95H95H/84H66H66H/22HP2.7左拐红1(亮)1(亮)1(亮)1(亮)1(亮)东P2.6左拐绿0(暗)0(暗)0(暗)0(暗)0(暗)P2.5直行红1(亮)1(亮)1(亮)1(亮)1(亮)西P2.4直行绿0(暗)0(暗)

18、0(暗)0(暗)0(暗)方P2.3右拐红1(亮)0(暗)0(暗)0(暗)0(暗)向P2.2右拐绿0(暗)1(亮)1(亮)1(亮)1/0(提示)P2.1行人红1(亮)1(亮)1(亮)1(亮)1(亮)P2.0行人绿0(暗)0(暗)0(暗)0(暗)0(暗)路口控制字AAHA6HA6HA6HA6H/A2H定时器T0定时溢出中断周期设为50ms,中断累计20次(即1S)时对120S倒计时单元减一操作。设计中将4种通行规则分成几种不同的亮灯方式,通过查询秒倒计时单元的数据,实现在不同的时间段给控制端口送不同的控制数据码。控制码分为5个时间段:120110s11070S、7060S、6010S、100S。交

19、通管理定时功能程序流程图如图4-10所示。图4-10交通管理定时功能程序图4-11特种车中断服务子程序流程图4.5 特种车中断服务子程序将按钮S4按下,给INT1引脚输入低电平信号来模拟特种车通过信号,此时外部中断1被触发,中断处理流程如图4-11所示。总的程序清单见附录4。4.6 算法分析4.6.1, 定时器/计数器本设计涉及到120110s11070S、7060S、6010S、100S五段计时,首先须将它们转为16进制代码。120=7M6+8=78H110=6M6+14=6EH70=4X6+6=46H60=3X6+12=3CH10=0X6+10=0AH4.6.2, 定时时间初值和TMOD的

20、设置T0、T1为16位定时器,由于定时时间大于8192应选用工作方式1。由于晶振频率为12MHz,Tcy=1C,故有T=(65536-X)Tcy=(65536-X)X1s=50ms初值X=15536=3CB0H,即TH0=3CH,TL0=0B0H。TMOD的格式如图4-12所示。D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0图4-12TMOD的格式TMOD各位的内容确定如下:由于定”器/计数器0设为定时器,选用工作方式1,所以GATE(TMOD.3)=0,C/T(TMOD.2)=0,M1(TMOD.1)=0,M0(TMOD,0)=1;定时器/计数器1没有使用,相应

21、的D7D4为随意状态“X:若取“X'为0,则(TMOD)=00000001B=01H4.6.3, 中断系统IE的取值IE的格式如图4-13所示。D7D6D5D4D3D2D1D0EAET2ESET1EX1ET0EX0图4-13IE的格式IE每一位都由软件置1或清零。本设计中CPU允许中断即EA=1,定时器/计数器0中断允许位ET0及外部中断0中断允许位EX0可申请中断,即ET0=1,EX0=1,其余不允许中断,均设为0,所以IE=10000011H=83H。附录一交通灯控制程序清单基于单片机的交通灯控制系统程序清单 *.;交通灯控制系统程序; *.77*初始化部分*TIMEEQU50H;

22、秒计数用TIMESFREQU51H;临时寄存器CONR5EQU52H;T1秒定时计数用TIMED0EQU55H;单向最大定时时间,直行开始,人行开;始(120S)TIMED1EQU56H;各路右拐开始时间(110S)TIMED2EQU57H;前行结束提醒(70S)TIMED3EQU58H;前行结束,人行结束,左拐开始(60S)TIMED4EQU59H;左拐结束提醒TIMED5EQU5AH;左拐结束TIMED6EQU5BHTIMED7EQU5CHSNEQUP1;南北口EWEQUP2;东西口SCANEQUP3;扫描口LEDOUTEQUP0;段码口SNEWFLAGBIT09H;东西口和南北口转换标志

23、ORGLJMPORGRETIORGLJMPORGLJMPORGLJMPORGRETI0000H;START;0003H;000BHINTT00013HINT11001BHINTT10023H程序执行开始地址跳到标号START执行外中断0中断程序入口;外中断0中断返回定时器T0中断程序入口;跳至INTT0执行;外中断1中断程序入口119、120中断定时器T1中断程序入口;串行中断程序程序返回;*±序*;P3.6所接S2开关打开,为120秒倒计时,合上,则为60秒倒计时;P3.7所接S2开关打开,正常状态,合上,全红灯。;定时器T0、T1溢出周期为50ms,T0为秒计数用START:MO

24、VSP,#80HMOVR0,#00H;清00H8EH内存单元MOVR7,#8FHCLEARDISP:MOVR0,#00HINCR0DJNZR7,CLEARDISPMOVTIMED0,#78H;单向最大定时时间,直行开始;人行开始MOVTIMED1,#6EH;各路右拐开始时间(110S)MOVTIMED2,#46H;前行结束提醒(70S)MOVTIMED3,#3CH;前行结束,人行结束,左拐开始;(60S)MOVTIMED4,#0AH;左拐结束提醒CLRSNEWFLAG;南北先通行标志位MOVTMOD,#01H;设T0,T1为16位定时器MOVTL0,#0B0H;50ms定时初值(T0记时用)M

25、OVTH0,#3CH50ms定时初值*MOVTL1,#0B0H;50ms定时初值MOVTH1,#3CH;50ms定时初值JBSCAN.6,SSST;120s管理;以下为60s管理LCALLDL1MSLCALLDL1MSLCALLDL1MSJBSCAN.6,SSST;干扰MOVTIMED0,#60;单向最大定时时间,直行开始;人行开始MOVTIMED1,#55;各路右拐开始时间(55S)MOVTIMED2,#35;前行结束提醒(35S)MOVTIMED3,#30:;前行结束,人行结束,左拐开始(30S)MOVTIMED4,#05;左拐结束提醒SSST:MOVTIME,TIMED0LCALLTUN

26、BCDMOVSN,#99HMOVEW,#0AAHSETBEA;总中断开放SETBPX1SETBEX1SETBET0;允许T0中断SETBTR0;开启T0定时器MOVR4,#14H;1S定时用初值(50msX20)MOVCONR5,#20START1:LCALLDISPLAY;调用显示子程序JNBSCAN.7,KEYFUN;手动状态SJMPSTART1;P3.7为1时跳回START1KEYFUN:LCALLDISPLAYLCALLDISPLAYJBSCAN.7,START1CLRET0CLRTR0MOVSN,#0A9H;全车道停,行人通MOVEW,#0A9HMOVTIME,#00H;时间显示0L

27、CALLTUNBCDKEYWAIT:LCALLJNBDISPLAYSCAN.7,KEYWAITKEYWAIT1:LCALLDISPLAYJNBSCAN.7,KEYWAIT1MOVTIME,TIMED0;重新开始计时初值LCALLTUNBCDCLRSNEWFLAG;南北先通行标志位SETBTR0SETBET0AJMPSTART1*r1s计时程序(T0定时器中断服务子程序丫*INTT0:PUSHACC;累加器入栈保护PUSHPSW;状态字入栈保护CLRET0;关T0中断允许CLRTR0;关闭定时器T0MOVA,#0B7H;中断响应时间同步修正ADDA,TL0;低8位初值修正MOVTL0,A;重装初

28、值(低8位修正值)MOVA,#3CH;高8位初值修正ADDCA,TH0MOVTH0,A;重装初值(高8位修正值)SETBTR0;开启定时器T0DJNZR4,OUTT00;20次中断到(1S),重赋初值MOVR4,#14HJBSNEWFLAG,INT22DECTIMEMOVA,TIMECJNEA,TIMED1,LOOP11;判断是否小于110SLOOP11:JCLOOP22;120-110MOVSN,#99HMOVEW,#0AAHLJMPOUTT0;120-110LOOP22:MOVA,TIMECJNEA,TIMED2,LOOP33;判断是否小于70SLOOP33:JCLOOP44;110-70

29、MOVSN,#95HMOVEW,#0A6HLJMPOUTT0;110-70LOOP44:MOVA,TIMECJNEA,TIMED3,LOOP55;判断是否小于60SLOOP55:JCLOOP66;70-60MOV20H,SNCPL04HCPL00HMOVSN,20HMOVEW,#0A6HLJMPOUTT0;70-60LOOP66:MOVA,TIMECJNEA,TIMED4,LOOP77;判断是否小于10SLOOP77:JCLOOP88;60-10MOVSN,#66HMOVEW,#0A6HLJMPOUTT0;60-10LOOP88:MOVA,TIMEJZOUT88MOV20H,SNCPL06HC

30、PL02HMOVSN,20HMOV20H,EWCPL02HMOVEW,20HLJMPOUTT0;70-60OUT88:MOVTIME,TIMED0;20初值CPLSNEWFLAGOUTT0:LCALLTUNBCDOUTT00:POPPSW;恢复状态字(出栈)POPACC;恢复累加器SETBET0;开放T0中断RETI;中断返回INT22:DECTIMEMOVA,TIMECJNEA,TIMED1,LOOP111;判断是否小于110SLOOP111:JCLOOP221;120-110MOVEW,#99HMOVSN,#0AAHLJMPOUTT01;120-110LOOP221:MOVA,TIMECJ

31、NEA,TIMED2,LOOP331;判断是否小于70SLOOP331:JCLOOP441;110-70MOVEW,#095HMOVSN,#0A6HLJMPOUTT01;110-70LOOP441:MOVA,TIMECJNEA,TIMED3,LOOP551;判断是否小于60SLOOP551:JCLOOP661;70-60MOV20H,EWCPL04HCPL00HMOVEW,20HMOVSN,#0A6HLJMPOUTT01;70-60LOOP661:MOVA,TIMECJNEA,TIMED4,LOOP771;判断是否小于10SLOOP771:JCLOOP881;60-10MOVEW,#66HMO

32、VSN,#0A6HLJMPOUTT01;60-10LOOP881:MOVA,TIMEJZOUT881MOV20H,EWCPL06HCPL02HMOVEW,20HMOV20H,SNCPL02HMOVSN,20HLJMPOUTT01;70-60OUT881:MOVTIME,TIMED0;120S初值CPLSNEWFLAGOUTT01:LCALLTUNBCDPOPPSW;状态恢复字(出栈)POPACC;恢复累加器SETBRETIET0;开放T0中断;中断返回*显示子程序*;显示数据在70H72H单元内,用3位LED共阳数码管显示,LEDOUT口输出段;码数据,;P3(SCAN)口作扫描控制,每个LE

33、D数码管亮1ms再逐位循环DISPLAY:MOVR1,#70H;指向显示数据首址MOVR5,#0FEH;扫描控制字初值PLAY:MOVA,R5;扫描字放入AMOVSCAN,A;从SCAN口输出MOVA,R1;取显示表地址MOVDPTR,#TAB;取段码表地址MOVCA,A+DPTR;查显示数据对应段码MOVLEDOUT,A;段码放入LEDOUT口LOOP6:LCALLDL1MS;显示1msINCR1;指向卜,地址MOVA,R5;扫描控制字放入AJNBACC.2,ENDOUT;ACC.2=0时,一次显示结束RLA;A中数据循环左移MOVMOVR5,A;LEDOUT,#0FFH放回R5内AJMPPLAY;跳回PLAY循环ENDOUT:MOVLEDOUT,#0FFH;一次显示结束,端口复位MOVSCAN,#0FFH;端口复位RET;二千程序返回TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F

温馨提示

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

评论

0/150

提交评论