交通灯设计单片机汇编.docx
《交通灯设计单片机汇编.docx》由会员分享,可在线阅读,更多相关《交通灯设计单片机汇编.docx(63页珍藏版)》请在冰豆网上搜索。
交通灯设计单片机汇编
太原理工大学现代科技学院
单片机原理与接口技术课程设计
设计名称交通灯控制器
专业班级信息13-1班
学号2013100000
姓名
指导教师武娟萍
太原理工大学现代科技学院
专业班级
信息13-1班
学生姓名
00
课程名称
“单片机原理与应用技术”课程设计
设计名称
交通灯控制器
设计周数
1.5周
指导教师
武娟萍
设计
任务
主要
设计
参数
设计一个以单片机为核心的交通灯控制器
设计参数要求:
(1)系统包括人行道直行、左转、右转以及基本交通灯功能。
交叉道路上的车辆交替通行时间为25S,黄灯亮5S且每秒闪亮1次。
(2)系统除基本交通灯功能外,还具备倒计时、时间设置、紧迫环境处置以及根据具体环境手动节制等功能。
设计内容
设计要求
(1)通过查阅手册和有关文献资料,掌握独立分析和解决实际问题的能力。
(2)通过实际电路方案的设计分析比较、设计计算、元件选取、仿真、安装调试等环节,掌握实用电路的分析方法和工程设计方法。
(3)熟悉常用仪器设备的使用方法,掌握实验调试方法,提高动手能力。
主要参考
资料
1.单片机原理与接口技术,李晓林等,电子工业出版社,2015。
学生提交
归档文件
课程设计说明书1份
课程设计任务书
注:
1.课程设计完成后,学生提交的归档文件应按照:
封面—任务书—说明书—图纸的顺序进行装订上交(大张图纸不必装订)
2.可根据实际内容需要续表,但应保持原格式不变。
指导教师签名:
日期:
2016.06.30
专业班级信息13-1班学号2013100000姓名00成绩
交通灯控制器
一、前言
1.1选题背景
19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。
其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。
后来,英国伦敦议会大厦前经常发生马车轧人的事故,于是人们受到红绿装启发,1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造。
那时的交通灯只有红、绿两色,后来经改良后,再增加一盏黄色的灯,红灯表示停止,黄灯表示准备,绿灯则表示通行。
中国最早的马路红绿灯,是于1928年出现在上海的英租界。
道路交通信号灯是交通安全产品中的一个类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。
适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。
近年来,随着我国国民经济的快速发展,我国机动车辆发展迅速,而城镇道路建设由于历史等各种原因相对滞后,交通拥挤和堵塞现象时常出现。
如何利用当今计算机和自动控制技术,有效地疏导交通,提高城镇交通路口的通行能力,减少交通事故是很值得研究的一个课题。
1.2设计意义
社会发展至今,全球人类将近有73亿人,中国人有13亿之多,在当今的城市,一块较小的地方容纳了大量的人、大量的汽车,那么如何有效的管理人们和汽车的出行方式才能合理的利用资源呢?
在我国各大城市的交叉路口,随处可见交通信号灯,也就是说交通信号灯的使用量非常大,而且如何用一块尽可能的小的芯片来实现更全、更多的功能,具有很大的现实意义。
总之,交通网络是城市的动脉,象征着一个城市的工业文明水平。
交通关系着人们对于财产,安全和时间相关的利益。
具有优良科学的交通控制技术对资源物流和人们出行都是十分有价值的,保证交通线路的畅通安全,才能保证出行舒畅,物流准时到位,甚至是生命通道的延伸。
1.3设计内容
基于整个交通控制系统的发展情况,本设计主要进行如下方面的研究:
用智能,集成,且功能强大的单片机芯片AT89C51为控制中心,设计出一套十字路口的交通控制系统,以指挥十字路口的实时通行状态。
本设计的工作:
确定系统交通控制的总体设计,其中包括交通信号灯的亮灭基本控制,左转、右转、直行、人行道控制、交通灯倒计时,交通灯手动调节和设置时间、交通灯紧迫环境处置惩罚(包括110、119、120通过、凌晨时间黄灯闪烁等)、分时段控制调整交通信号灯的点亮时间以及具体环境手动节制等功能。
2、设计目的和要求
2.1课程设计目的
课程设计时单片机原理与接口技术课程集中实践环节的主要内容之一,可以使学生达到对单片机系统组成、编程、调试和绘图设计等基本技能训练。
学生通过选作的课题,可以进一步熟悉单片机应用系统的开发过程,软、硬件设计的工作内容、方法、步骤。
培养学生理论联系实际,提高分析问题、解决问题的能力和实际动手能力,以及正确应用单片机解决工业控制、工业检测等领域具体问题的能力。
2.2课程设计要求
(1)通过查阅手册和有关文献资料,掌握独立分析和解决实际问题的能力。
(2)通过实际电路方案的设计分析比较、设计计算、元件选取、仿真、安装调试等环节,掌握实用电路的分析方法和工程设计方法。
(3)熟悉常用仪器设备的使用方法,掌握实验调试方法,提高动手能力。
三、设计硬件电路及其相关介绍
3.1AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
3.1.1AT89C51简介
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图所示。
3.1.2AT89C51管脚功能介绍
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,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)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
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端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
3.1.3AT89C51复位电路
复位实单片机的初始化操作。
单片机系统再上电启动运行时,都需要先复位。
其作用是使CPU和系统中其他部件都处于一个初始的状态,并从这个状态开始工作,因而,复位实一个很重要的操作方式。
但单片机本身是不能自动复位的,必须配合相应的外部复位电路才能实现。
单片机的复位方式有上电自动复位和上电加按键手动复位两种。
图1图2
(1)上电自动复位
上电自动复位实利用电容器的充电实现。
AT89C51单片机的上电自动复位电路如图1所示,在时钟电路工作后,再RST端连续给出两个机器周期的高电平就可以完成复位操作。
图中给出了复位电路参数。
(2)上电加按键手动复位
AT89C51单片机的上电加手动按键复位电路如图2所示,当复位按键按下后,复位端通过51Ω的小电阻与+5V电源接通,电容迅速放电,使RST引脚为高电平;当复位按键弹起后,+5V的电源通过2KΩ电阻对22UF电容重新充电,RST引脚端出现复位正脉冲。
其持续时间取决于RC电路的时间常数。
本设计中采用这种复位方式(protues的ISIS仿真中若复位无效,降低电阻试试)。
3.1.4时钟电路
单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲是由单片机控制器中的时序电路发出的。
单片机的时序就是CPU再执行指令时所需控制信号的时间顺序。
为了保证各部件间的同步工作,单片机内部电路应该再唯一的时钟信号下严格地按时序进行工作。
AT89C51单片机内部有一个高增益反向放大器,用于构成震荡器,但是要形成时钟脉冲,外部还需要附加电路。
AT89C51的时序有以下两种。
图3图4
(1)内部时钟方式
利用芯片内部的震荡器,然后再引脚XTAL1和XTAL2两端跨接晶体震荡器,就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。
外接晶体振荡器时,C4和C5的值选择再30PF左右,C4和C5对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.2~12MHZ之间选择,为减小寄生电容,更好的保证震荡器稳定、可靠的工作,震荡器和电容应尽可能安装得与单片机引脚XTAL1和XTAL2靠近,单片机内部时钟电路如图3所示(本次设计中采用内部时钟方式)。
(2)外部时钟方式
此方式是将外部震荡脉冲接入XTAL1或XTAL2.HMOS和CHMOS单片机接入方式不同,单片机HMOS型外部时钟电路如图4所示。
3.274LS47
74LS47是BCD-7段数码管译码器驱动器,74LS47的功能用于将BCD码转化成数码块中的数字,通过它来进行解码,可以直接把数字转换为数码管的数字,从而简化了程序,节约了单片机的IO开销。
因此是一个非常好的芯片!
3.2.174LS47管脚图和真值表
74LS47是BCD-7段数码管译码器/驱动器,74LS47的功能用于将BCD码转化成数码块中的数字,通过它解码,可以直接把数字转换为数码管的显示数字。
74LS47为低电平作用.
管脚图如图5所示:
图5
真值表如下:
DCBA
abcdefg
说明
0
X
1
XXXX
0000000
试灯
X
X
0
XXXX
1111111
熄灭
1
0
0
0000
1111111
灭零
1
0
0
0000
0000001
0
1
X
1
0001
1001111
1
1
X
1
0010
0010010
2
1
X
1
0011
0000110
3
1
X
1
0100
1001100
4
1
X
1
0101
0100100
5
1
X
1
0110
1100000
6
1
X
1
0111
0001111
7
1
X
1
1000
0000000
8
1
X
1
1001
0001100
9
3.2.2引脚功能
(1)LT:
试灯输入,是为了检查数码管各段是否能正常发光而设置的。
当LT=0时,无论输入A3,A2,A1,A0为何种状态,译码器输出均为低电平,也就是七段将全亮,若驱动的数码管正常,是显示8。
(2)BI:
灭灯输入,是为控制多位数码显示的灭灯所设置的。
当BI(—)=0时,不论LT和输入A3,A2,A1,A0为何种状态,译码器输出均为高电平,使共阳极数码管熄灭。
(3)RBI:
灭零输入,它是为使不希望显示的0熄灭而设定的。
当对每一位A3=A2=A1=A0=0时,本应显示0,但是在RBI=0作用下,使译码器输出全为高电平。
其结果和加入灭灯信号的结果一样,将0熄灭。
(3)RBO:
灭零输出,它和灭灯输入BI(—)共用一端,两者配合使用,可以实现多位数码显示的灭零控制。
3.2.3实用电路连接
图6
如图6所示为74LS47的实用电路,本设计中也采用类似设计,通过51单片机的任何一个输出管脚,提供四根线连入译码端,三个使能控制端均接电源或者如上图所示接法,再通过输出一根位选信息来选中相应的数码管,通过51软件输出就可实现数码管的正常显示。
也可采用动态扫描的方法,由四根管脚控制2个LED灯的显示,通过2个管脚实现位选信息。
3.374LS139
74LS139为两个2线-4线译码器,共有54/74S139和54/74LS139两种线路结构型式
3.3.174LS139管脚
A、B译码地址输入端G1、G2选通端(低电平有效)
B、Y0~Y3译码输出端(低电平有效)
管脚图和实物图如图7所示
图7
3.3.274LS139真值表
输入
输出
G
B
A
Y0
Y1
Y2
Y3
1
X
X
1
1
1
1
0
0
0
0
1
1
1
0
0
1
1
0
1
1
0
1
0
1
1
0
1
0
1
1
1
1
1
0
本设计中是为了你补AT89C51输出管脚不够的问题,通过74LS139实现管脚的功能复
3.4设计中用到的其他器件
3.4.1RESPACK-7
RESPACK-7是一种七脚电阻排。
其中一个引脚是公共端,其余六个引脚对公共引脚的电阻值是相等的。
这种电阻排大都用来做集成电路的上拉电阻,占用面积小,使用方便,而且一致性好。
Protues中器件图如图8所示:
图8
3.4.2反向器7405
7405具有反相器的功能,将输入1转变为0或者将输入为1转变为0,设计中引入7405的目的是为了解决0与1的转换问题。
Protues中器件如图9所示。
3.4.3TRAFFICLIGHTS
此元件模仿的实现实中的交通灯,具有三个管脚,分别控制红、黄、绿三个颜色的亮灭,高电平有效,设计中采用它来代表交通灯。
Protues中器件如图10所示
图9图10
3.4.47SEG-MPX2-CA
7SEG-MPX2-CA是共阳极数码管,此元件是集成两个LED显示管的元件,设计中用它来实现倒计时,通过管脚1和2进行位选,ABCDEFG为显示的7段,DP为小数点显示,设计中没有用到。
Protues中器件如图11所示。
图11图12
3.4.5BUTTON
BUTTON为protues中的仿真模拟按钮,具有按钮和开关的功能,当鼠标单击悬帽时,相当于按钮,点一下则按下去又弹起,当点击右侧的红色圈圈时,按钮按下不弹起。
使用起来很方便。
Protues中器件如图12所示。
四、设计总体方案
4.1课程设计总体思路
交通灯分红、黄、绿三种,十字路口右转一般与直行同步,本设计中也同步,人行横道的交通灯控制与南北向、东西向直行方向相同,本设计中直行交通灯包含了人行横道控制的功能,所以设计中不再画出人行横道。
见图13
南
北
图13
上图中东西向跟南北向相同,均由3个交通信号和一个双显示数码构成,其中一个信号灯的功能是实现南北向的左转弯控制显示器(如南面紧挨灯的一个),另外两个一个是控制南北向直行通过的功能(附带人行横道控制的功能),再一个与直通行信号灯同步,为右转控制信号灯。
显示管为集成双显示,通过1、2进行位选输出倒计时信号的十位和个位。
4.1.1路口状态设置
设计各个路口状态如下:
状态
1
2
3
4
5
6
时间
25S
3S
2S
15S
3S
2S
南北
绿
黄
红
红
红
红
南北左转
红
红
红
绿
黄
红
东西
红
红
红
红
红
红
东西左转
红
红
红
红
红
红
状态
7
8
9
10
11
12
时间
25S
3S
2S
15S
3S
2S
南北
红
红
红
红
红
红
南北左转
红
红
红
红
红
红
东西
绿
黄
红
红
红
红
东西左转
红
红
红
绿
黄
红
说明:
1.考虑实际情况,将5S的黄灯闪烁,改为3S黄灯闪烁,2秒红灯。
2.状态1-3:
当南北道为绿灯,此道车辆、行人通行。
时间为25秒;东西方向为红灯,此道车辆行人禁止通行。
当南北方向为黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换。
当南北方向为红灯,其他方向也实红灯,东南西北车辆行人不得通过。
3.状态4-6:
当南北方向为红灯,南北左转为绿灯,车辆可以左转弯,行人禁止通行;东西方向为红灯,此道车辆行人禁止通行。
当南北左转方向为黄灯闪烁3秒,警示车辆绿灯状态即将切换。
当南北左转为红灯,其他方向也实红灯,东南西北车辆行人不得通过。
4.状态7-9:
当东西道为绿灯,此道车辆、行人通行。
时间为25秒;南北方向为红灯,此道车辆行人禁止通行。
当东西方向为黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换。
当东西方向为红灯,其他方向也实红灯,东南西北车辆行人不得通过。
5.状态10-11:
当东西方向为红灯,东西左转为绿灯,车辆可以左转弯,行人禁止通行;南北方向为红灯,此道车辆行人禁止通行。
当东西左转方向为黄灯闪烁3秒,警示车辆绿灯状态即将切换。
当东西左转为红灯,其他方向也实红灯,东南西北车辆行人不得通过。
6.表内时间可根据实际情况改变初值。
4.1.2实现主程序状态功能的流程图
每三个状态的执行过程:
计算红灯的时间公式为:
红灯时间=反方向绿灯时间+反向左转绿灯时间+2x黄灯等待状态
4.1.3主程序汇编
主程序程序为:
START:
MOV30H,40H;南北绿灯直通行时间
MOV31H,41H;南北向左转绿灯时间
MOV32H,42H;东西绿灯直通行时间
MOV33H,43H;东西左转向绿灯时间
MOVR0,30H;南北向绿灯时间写入
MOVA,30H;计算东西向红灯时间
ADDA,#10;两次黄灯等待时间共10S
ADDA,31H;加上南北左转向绿灯时间
MOVR2,A;东西方向红灯写入
MOVR7,#25;延时使用
MOVR6,#15;黄灯闪烁使用
MOVR5,#10;黄灯闪烁使用
LOOP1:
SETBP3.4;P3.4置1,第二功能要求
MOVP1,#0FFH;交通灯全灭
SETBP3.0;P3.0置1以便检查输入
MOVP1,#01H;南北绿灯亮;其余红灯亮
LCALLXIANSHI;调用显示程序
DJNZR7,LOOP1;1S显示结束
MOVR7,#25;重新赋值循环变量
DECR2;东西方向时间减一
DJNZR0,LOOP1;南北时间减一,并做循环变量
MOVR0,#3;南北方向黄灯显示
LOOP2:
MOVP1,#0FFH;交通灯灭
MOVP1,#03H;东西向红灯,南北直通灭
LOOP11:
CLRP1.0;南北黄灯灭
LCALLXIANSHI;调用显示程序相当于延时40ms
DJNZR5,LOOP11;南北黄灯灭400ms
LOOP22:
SETBP1.0;南北黄灯亮
LCALLXIANSHI;调用显示程序相当于延时40ms
DJNZR6,LOOP22;南北黄灯亮600ms
DECR2;东西向时间减一
MOVR5,#10;重置循环变量
MOVR6,#15
DJNZR0,LOOP2;南北向黄灯时间减一,并做循环变量
MOVR0,#2;全部红灯2S
LOOP5:
MOVP1,#00H;四路红灯亮起
LCALLXIANSHI;调用显示程序第二作用延时40ms
DJNZR7,LOOP5;1s显示
MOVR7,#25;重新赋值循环变量
DECR2;东西方向时间减一
DJNZR0,LOOP5;南北方向时间减一并且做循环变量
MOVR0,31H;南北左转时间写入
LOOP3:
MOVP1,#0FFH;交通灯灭
MOVP1,#04H;南北向左转向绿灯亮,其他红灯
LCALLXIAN