单片机智能交通灯的课程设计.docx
《单片机智能交通灯的课程设计.docx》由会员分享,可在线阅读,更多相关《单片机智能交通灯的课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
单片机智能交通灯的课程设计
本科生课程设计
题目名称
专业
班级
学生姓名
联系方式
年月
目录
课程设计任务书3
1总体介绍4
1.1芯片简介4
1.2技术指标5
1.3设计指标5
2系统硬件电路的设计6
2.1AT89C5X单片机内部结构及引脚6
2.2单片机的特点与应用8
2.3主控制系统8
3软件设计流程及描述8
3.1软件设计8
3.2LED数码管的原理9
3.3主程序的设计思路10
3.4程序设计思路10
3.4.1每秒钟的设定10
4硬件调试与软件仿真13
4.1调试与仿真14
4.1.1硬件的调试14
4.2软件的调试与仿真17
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
智能交通灯控制系统设计
一、设计要求:
1.用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。
2.A、B两车道交叉组成十字路口,A是主车道,B是支道。
正常情况下,A、B两车道轮流放行,A放行50s,B放行30s,各含5s警告时间。
3.交通繁忙时,该系统应有手受控开关缓解交通拥挤状况,其中一车道放行期间,另一车道繁忙,可通过开关获得15s放行时间。
4.有紧急车辆通过时,另需一开关设置两车道均禁止通行20s。
二、主要功能模块:
智能交通灯控制系统主要功能模块包括电源电路、单片机主控电路、按键控制电路和道路显示电路组成。
根据具体情况选择合适型号的单片机,发光二极管,开关等硬件设备进行设计。
三、要求完成的主要任务:
1.根据功能要求完成硬件电路设计,提供硬件电路图。
2.使用汇编或者C语言完成软件部分设计,实现相应功能。
要求程序加注释并提供软件流程图。
3.使用Proteus软件进行系统仿真,并提供仿真截图,测试数据,误差分析。
四、时间安排:
2012.3.26~2012.4.8收集资料,确定设计方案
2012.4.9~2012.5.27系统设计
2012.5.28~2012.6.10撰写课程设计论文及提交
指导教师签名:
年月日
1总体介绍
1.1芯片简介
AT89C5X芯片简介,AT89C51是AT89C5X系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
AT89C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
AT89C51内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
AT89C51共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
AT89C51有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
AT89C51共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
AT89C51内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
AT89C51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
AT89C51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但AT89C51单片机需外置振荡电容。
1.2技术指标
用AT89C51单片机设计一个智能交通灯控制系统,使其能模仿城市十字路口交通灯的功能,并满足特殊的控制要求。
每条道路上各配有一组红、黄、绿交通信号灯,其中红灯亮,表示该道路禁止通行;黄灯亮表示警告,该道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯表示该道路允许通行。
该电路自动控制十字路口两组红、黄、绿交通灯的状态转换,实现十字路口自动化。
交通等示意图如图1-1所示
1.3设计指标
智能交通灯控制系统设计
1、设计要求
(1)用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。
(2)A、B两车道交叉组成十字路口,A是主车道,B是支道。
正常情况下,A、B两车道轮流放行,A放行50s,B放行30s,各含5s警告时间。
(3)交通繁忙时,该系统应有手受控开关缓解交通拥挤状况,其中一车道放行期间,另一车道繁忙,可通过开关获得15s放行时间。
(4)有紧急车辆通过时,另需一开关设置两车道均禁止通行20s。
2、主要功能模块
智能交通灯控制系统主要功能模块包括电源电路、单片机主控电路、按键控制电路和道路显示电路组成。
根据具体情况选择合适型号的单片机,发光二极管,开关等硬件设备进行设计。
2系统硬件电路的设计
2.1AT89C5X单片机内部结构及引脚
在AT89C5X系列单片机中,有2个系列:
子51系列和52子系列。
每个系列有若干种型号。
51系列有AT89C51、8751和8031。
我们以AT89C5X系列单片机的典型型号AT89C51为例来介绍其结构和功能。
AT89C5X的内部结构框图2-1如下:
分析上图,并按其功能部件划分可以看出,AT89C5X系列单片机是由8大部分组成的,分别为:
一个8位中央处理器CPU(又成为微处理器)、128个字节的片内数据存储器RAM、4KB的片内程序存储器ROM或EPROM、18个特殊功能寄存器SFR、4个8位并行输入输出I/O接口、1个串行I/O接口,完成单片机与其他微机之间的串行通信、2个定时器/计数器T0、T1、一个具有5个中断源,2个可编程优先级的中断系统。
它可以接收外部中断申请、定时器/计数器中断申请和串行口终端申请。
AT89C5X系统的引脚说明:
AT89C5X系列单片机中的8031、AT89C51及8751均采用40Pin封装的双列直接DIP结构,图二是它们的引脚配置,40个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
8951的复位方式可以自动复位,也可以是手动复位。
除此之外,RESET是复用引脚,Vcc掉电其间,此引脚可以接备用电源,以保证单片机内部RAM的数据不丢失。
在编程时,EA/Vpp脚还需加上21V的编程电压。
AT89C51的引脚图如图2-2所示
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:
整个EPROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦除操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
2.2单片机的特点与应用
单片机的特点:
控制功能强、抗干扰性强,可靠性高,工作温度范围宽、开发周期短,性价比高,易于产品化。
单片机的应用领域:
智能化仪表、实时工业控制、机电一体化产品、智能接口、办公自动化、商业营销、家用电器。
2.3主控制系统
一个完整的交通灯控制系统相当于一个简单的单片机系统。
该系统有交通灯设置电路、单片机、显示电路、复位电路和震荡电路等构成。
单片机是集成的IC芯片,只需根据实际设计要求选型。
其他部分都需要根据应用要求和性能指标自行设计。
硬件电路图23页所示
2.3.3紧急状况模块的设计
当特种车辆到来时能自动关闭所有绿灯,所有交通灯显示20s红色,让特种车通过。
设计中采用外部中断的方式作为特种车通行的状况,使用外部中断0来影为响特种车的通行要求。
当有特种车辆通过时,按下K1键,低电平连接到外部中断引脚P3.2,是系统进入中断过程,在中断服务程序中,使交通灯显示20s红色。
某方向上车辆过多,可以使用键控制东西或南北方向通行,另一方向禁行。
按下控制键使车辆多的一方加15s的绿灯时间。
连接到外部中断引脚P3.3,是系统进入中断过程,在中断服务程序中,另一车道繁忙,可通过开关获得15s放行时间。
3软件设计流程及描述
3.1软件设计
先了解实际交通灯的变化规律,假设一个十字路口为东西南北走向。
初始状态1为东西红灯,南北绿黄灯;然后转状态1,东西绿黄灯通车,南北红灯。
,南北仍然红灯,最后回到状态1,不断循环。
通过外部寻找的方式,将数据送至P1,P1口接交通灯,通过对P1口的赋值,实现对交通灯的控制。
数码显示的个位和十位的数据通过P1及P2口传送,p2.0=0,南北数码管十位亮,p2.1=0,南北数码管个位亮p2.2=0,东西数码管十位亮,p2.3=0,东西数码管个位亮
3.2LED数码管的原理
共阳极数码管——>内部8个LED的阳极连接在一起作为公共引出端;只有在公共端接高电平时,该数码管才会亮。
共阴极数码管——>内部8个LED的阴极连接在一起作为公共引出端;只有在公共端接低电平时,该数码管才会亮。
表一LED数码管字形编码表
3.3主程序的设计思路
程序的设计流程图反映了系统的设计思路,此交通灯控制器的程序流程图如图3-1所示
3.4程序设计思路
3.4.1每秒钟的设定
延时方法可以有两种一种是利用MCS-51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。
我们采用在T0中断计数定时5毫秒(预装初值
),这样每当T0到5毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。
在中断服务子程序中,CPU先使软件计数器加1,然后判断它是否为200。
为200表示1秒已到可以返回到输出时间显示程序。
其程序流程图如图3-2所示
图3-2
3.4.2外部中断控制
当有紧急情况发生时按下K1键,进而产生外部中断,改变程序入口控制值,则四个路红灯禁行其程序流程图如图3-3所示
图3-3
处理紧急情况有某方向上车辆过多可以使用K2产生外部中断控制东西或南北方向通行,另一方向禁行。
该程序的流程图如图3-4所示
否
是
4硬件调试与软件仿真
4.1调试与仿真
软件调试:
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
4.1.1硬件的调试
其中上下为南北路,左右为东西路。
图4-1南北为红灯亮,东西绿灯亮
图4-2警告时5s东西黄灯闪烁
图4-3东西红灯亮30s,南北绿灯亮30s
图4-4警告时5s南北黄灯闪烁
图4-5紧急车辆通过时,东西南北红灯均亮20s
图4-6当南北车道繁忙时,再让南北加15s的绿灯时间
图4-7繁忙加时后交通灯的情况
4.2软件的调试与仿真
COUNTEQU30H;T0中断计数
SNLEDDATAEQU31H;存储南北数码管显示的数据
SNCOLORFLAGEQU32H;=1时南北绿黄灯亮,=2时南北红灯亮
SNLEDDATAINITEQU33H;存储南北各颜色灯的初始时间
EWLEDDATAEQU34H;存储东西数码管显示的数据
EWCOLORFLAGEQU35H;=1时东西红灯亮,=2时东西绿黄灯亮
EWLEDDATAINITEQU36H;存储东西各颜色灯的初始时间
ORG0000H
lJMPMAIN
ORG0003H
LJMPEXINT0
ORG000BH
lJMPINTT0
ORG0013H
LJMPEXINT1
ORG0100H
;主函数**************************************
MAIN:
CALLINIT
START:
MOVA,COUNT
CJNEA,#200,NOT1S;没到1秒跳转
MOVCOUNT,#00;1秒时间到
DECSNLEDDATA
MOVA,SNLEDDATA
JNZCHECKEWLEDDATA
MOVSNLEDDATA,SNLEDDATAINIT
INCSNCOLORFLAG
MOVA,SNCOLORFLAG
CJNEA,#03,CHECKEWLEDDATA
MOVSNCOLORFLAG,#01
CHECKEWLEDDATA:
DECEWLEDDATA
MOVA,EWLEDDATA
JNZTIMENOTOVER
MOVEWLEDDATA,EWLEDDATAINIT
INCEWCOLORFLAG
MOVA,EWCOLORFLAG
CJNEA,#03,TIMENOTOVER
MOVEWCOLORFLAG,#01
TIMENOTOVER:
NOT1S:
CALLEWCOLORCHECK
CALLSNCOLORCHECK
CALLDISPLAY
JMPSTART
;*********************************************
;初始化函数***********************************
INIT:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#0eCH
MOVTL0,#078H
MOVCOUNT,#00H
MOVSNLEDDATAINIT,#30
MOVEWLEDDATAINIT,#30
MOVSNLEDDATA,SNLEDDATAINIT
MOVEWLEDDATA,EWLEDDATAINIT
SETBTR0;开定时器0
SETBET0;允许定时器0中断
SETBEX0;允许外部0中断
SETBEX1;允许外部1中断
SETBIT0;外部中断0下降沿触发
SETBIT1;外部中断1下降沿触发
SETBEA;开总中断
MOVP2,#0feH
MOVSNCOLORFLAG,#01;初始化南北灯为1
MOVEWCOLORFLAG,#01;初始化东西灯为1
RET
;*****************************************
;外部中断0***********************************
EXINT0:
PUSHACC
PUSHPSW
MOVA,P0
PUSHACC
MOVA,P1
PUSHACC
MOVA,P2
PUSHACC
CLREX1
MOVA,#24H
MOVP1,A
MOVEWLEDDATA,#20
MOVSNLEDDATA,#20
MOVA,SNLEDDATA
SETB,EX1
POPACC
MOVP2,A
POPACC
MOVP1,A
POPACC
MOVP0,A
POPPSW
POPACC
RETI
;外部中断1***********************************
EXINT1:
PUSHACC
PUSHPSW
MOVA,P0
PUSHACC
MOVA,P1
PUSHACC
MOVA,P2
PUSHACC
CLREX0
MOVA,#15
ADDA,SNLEDDATA
MOVSNLEDDATA,A
MOVA,#15
ADDA,EWLEDDATA
MOVEWLEDDATA,A
SETBEX0
POPACC
MOVP2,A
POPACC
MOVP1,A
POPACC
MOVP0,A
POPPSW
POPACC
RETI
;T0中断函数*******************************
INTT0:
PUSHACC
PUSHPSW
MOVTH0,#0ecH;#0ech
MOVTL0,#078H;#078h
MOVA,P2
RLA
CJNEA,#11101111B,NOT5
MOVA,#0feH;p2.0=0,南北数码管十位亮,p2.1=0,南北数码管个位亮
NOT5:
MOVP2,A;p2.2=0,东西数码管十位亮,p2.3=0,东西数码管个位亮
INCCOUNT
POPPSW
POPACC
RETI
;****************************************
;南北红绿黄灯控制**************************
SNCOLORCHECK:
PUSHACC
PUSHB
PUSHPSW
SNGREEN:
MOVA,SNCOLORFLAG
CJNEA,#01,SNRED
MOVSNLEDDATAINIT,#50;南北红灯时间50s
MOVA,snLEDDATA
SUBBA,#06;比较时间于6的大小
JNCHERE;小于6时黄灯闪烁
NOP
NOP
NOP
CPLP1.1
CLRP1.0
CLRP1.2
CLRCY
JMPCOLORCHECKOUT
HERE:
CLRP1.2
CLRP1.1
SETBP1.0
JMPCOLORCHECKOUT
SNRED:
MOVsnLEDDATAINIT,#30;设置南北红灯亮时间
CLRP1.1
CLRP1.0
SETBP1.2
COLORCHECKOUT:
POPPSW
POPB
POPACC
RET
;******************************************************
;东西红绿黄灯控制**************************************
EWCOLORCHECK:
PUSHACC
PUSHB
PUSHPSW
EWRED:
MOVA,ewCOLORFLAG
CJNEA,#01,EWGREEN
MOVEWLEDDATAINIT,#50;设置东西绿灯亮时间
CLRP1.3
CLRP1.4
SETBP1.5
JMPCOLORCHECKOUT
EWGREEN:
MOVA,EWCOLORFLAG
MOVEWLEDDATAINIT,#30
MOVA,EWLEDDATA
SUBBA,#06
JNCLOOP2
CPLP1.4
CLRP1.3
CLRP1.5
NOP
NOP
NOP
CLRCY
JMPCOLORCHECKOUT
LOOP2:
CLRP1.4
CLRP1.5
SETBP1.3
JMPCOLORCHECKOUT
;************************************************************
;数码管显示**************************************************
DISPLAY:
PUSHACC
PUSHPSW
PUSHB
MOVA,SNLEDDATA
MOVB,#10
DIVAB
MOVR0,B
MOVR1,A
MOVA,EWLEDDATA
MOVB,#10
DIVAB
MOVR2,B
MOVR3,A
MOVDPTR,#TABLE
MOVA,P2
DISPSNH:
CJNEA,#0feH,DISPSNL
MOVA,R1
MOVCA,@A+DPTR
MOVP0,A
JMPDISPOUT
DISPSNL:
CJNEA,#0fdH,DISPEWH
MOVA,R0
MOVCA,@A+DPTR
MOVP0,A
JMPDISPOUT
DISPEWH:
CJNEA,#0fbH,DISPEWL
MOVA,R3
MOVCA,@A+DPTR
MOVP0,A
JMPDISPOUT
DISPEWL:
CJNEA,#0f7H,DISPOUT
MOVA,R2
MOVCA,@A+DPTR
MOVP0,A
DISPOUT:
POPB
POPPSW
POPACC
RET
;**************************************************
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;0123456789