用单片机实现交通信号灯控制.docx
《用单片机实现交通信号灯控制.docx》由会员分享,可在线阅读,更多相关《用单片机实现交通信号灯控制.docx(57页珍藏版)》请在冰豆网上搜索。
用单片机实现交通信号灯控制
用单片机实现交通信号灯控制
摘要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
本系统由单片机系统、键盘、交通灯示演系统组成。
系统包括左转、右转、以及基本的交通灯的功能。
系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮,时间以及根据具体情况手动控制等功能。
本系统硬件电路实现简单而且稳定,交通信号灯模拟控制系统设计利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并且用LED数码管显示时间。
用89S51做输出口,控制发光二极管燃灭,模拟交通灯管理。
本系统若能用LCD作显示器就大大增强了其使用性。
关键词:
89S51单片机,交通灯,计时,显示
USESINGLE-CHIPCONTROLTRAFFICLIGHTS
ABSTRACT
Inrecentyears,withtherapiddevelopmentofscienceandtechnology,theapplicationofSCMistokeepatthesametime,traditionalcontroltestingupdateonCrescentbenefits.Inreal-timedetectionandautomaticcontrolsystemofsingle-chipapplications,oftenasasingle-chipcorecomponenttouseonlysingle-chipisnotenoughknowledge,butalsothespecifichardwarestructureandapplicationofobject-specificcharacteristicssoftware,tobeimproved.
Thesystemconsistsofsingle-chipmicrocomputersystem,keyboard,trafficlightsthatmysystem.System,includingleftturn,rightturn,aswellasthebasicfunctionoftrafficlights.Trafficlightssysteminadditiontobasicfunctions,alsohasacountdown,thetimesetting,emergencyhandling,attimestoadjustthelightsignal,accordingtothespecificcircumstancesoftimeandmanualcontrolfunctions.
Hardwarecircuitofthesystemsimpleandstablesimulationoftrafficsignalcontrolsystemdesignusingsingle-chiptimertiming,sothatthetrafficlightsatthecrossroadsandturnoutlightandLEDdigitaldisplaywithtime.89S51dowithoutput,controlburningoutlight-emittingdiodestosimulatethemanagementoftrafficlights.IfthesystemusedfordisplayontheLCDgreatlyenhanceitsusability.
Keywords:
89S51Single-chip,trafficlights,timetoshow
前 言1
第1章单片机2
1.1单片机的概述2
1.1.1MCS-51单片机的内部结构2
1.1.2MCS-51单片机引脚及功能4
1.1.3MCS-51指令系统简介6
1.2单片机的选择8
1.3堆栈介绍12
第2章系统设计要求与方案分析14
2.1设计要求14
2.2方案论证14
2.2.1电源提供方案14
2.2.2显示界面方案15
2.2.3LED连接方案15
2.2.4输入方案16
2.3理论分析与计算16
第3章硬件电路设计18
3.1灯控制电路设计18
3.2LED显示系统18
3.2.1LED显示器的显示方法及其与单片机的接口18
3.2.274LS164简介20
3.3晶阵介绍21
3.4电源设计22
3.5按键原理23
3.5.1按键的消抖原理23
3.5.2矩阵键盘工作原理25
第4章程序设计与流程图28
4.1中断服务程序模块29
4.2显示程序模块30
谢辞33
参考文献34
附 录A35
附 录B41
外文资料翻译42
前 言
随着社会经济的发展,城市交通问题越来越引起人们的关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。
在大、中城市,十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。
交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞。
目前,有一种“自动控制”控制交通灯的方法。
利用事先编制好的程序输入单片机,再利用单片机的定时、查询、中断功能;能够根据十字路口两个方向上车辆动态状况,采用查询的方式,根据具体情况,自动给予时间通行,其中利用中断方式来处理特殊情况。
这样既方便驾驶员、路人,同时还可以紧急处理一些紧急实况。
同样具有红、黄、绿灯的显示功能,为驾驶员、路人“照明”。
第1章单片机
1.1单片机的概述
单片机(single-chipmicrocomputer)是把微型计算机主要部分集成在一块芯片上的单芯片微型计算机。
单片机的芯片上集成了中央处理单元CPU,只读存储器ROM,定时/计数器,并行和串行输入/输出接口等。
由于单片机的高度集成化,缩短了系统内部的信号传送距离,优化了结构配置,大大提高了系统的可靠新性及运行速度,同时它的指令系统又很适合于工业控制要求,所以单片机在工业控制及设备控制中得到广泛的应用。
1976年,Intel公司提出了MCS-48系列8位单片机。
在80年代,Intel公司对MCS-48作了改进,推出了一种新的单片机系列MCS-51。
它增强了MCS-48的结构和性能,执行速度也较48系列快得多。
1984年Intel公司又推出了MCS-96系列的高档16位单片机以适应不断发展的高新技术要求。
由于集成工艺水平的提高,单片机的寻址范围不断扩大,片内ROM增加,以致有可能将BASIC等高级语言固化在片内,并增加A/D转换功能。
此外目前的发展趋势还致力于把一些专用的I/O功能集成在单片机内,使单片机的功能得到极大的提高。
由于单片机性能优越,引起了从事计算机及工业控制技术人员的浓厚兴趣。
可以预料,单片机可以向高性能方向发展,其应用范围也将日益扩大。
MCS-51系统是目前8位微型计算机中性能价格比最佳,在电机控制方面用得较多单片机系列。
下面以MCS-51为例说明单片机的基本原理和应用情况。
1.1.1MCS-51单片机的内部结构
8051单片机的内部基本结构如下:
(1)8位CPU,片内振荡器;
(2)4K字节片内ROM,128字节的片内RAM;
(3)21个特殊功能寄存器;
(4)32根I/O口;
(5)2个16位的定时器/计数器;
(6)一个全双工串行口;
(7)5个中断源,2个中断优先级;
(8)可寻址各64K的片外程序、数据存储器空间。
下面介绍MCS-51各个部分的结构特点。
1.存储器
对MCS-51系列(8031和8032除外)而言,有4个物理上相互独立的存储器空间:
即内、外程序存储器和内、外数据存储器。
(1)程序存储器
程序存储器是用于存放程序及表格常数的,8051片内、片外程序存储器是同一编址的,若单片机的
端接“1”,则片内程序存储器占用0000H~0FFFH的最低4K字节。
若
端接“0”,则片外程序存储器可以从0000H开始编址。
在程序存储器中,有六个单元具有特定的含义:
0000H:
单片机复位后,PC=0000H,即程序从0000H开始执行指令。
0003H:
外部中断0入口处。
000BH:
定时器0溢出中断入口地址。
0013H:
外部中断1入口地址。
001BH:
定时器1溢出中断入口地址。
0023H:
串行口中断入口地址。
(2)数据存储器
数据存储器是用于存放运算的中间结果、数据暂存以及数据缓冲等,它由读写存储器RAM组成,片内为256字节,片外最大可扩展为64K。
8051单片机,其片内数据存储器最大可寻址256个单元,低128字节(00H~7FH)为真正的用户RAM区,高128字节(80H~FFH)为特殊功能寄存器(SFR)区。
在低128字节中,32个工作寄存器占用了00H~1FH单元,分为四组,每组有8个通用工作寄存器(R0~R7)组成。
通过对PSW中RS1和RS2的设置,选用其中一组工作寄存器。
工作寄存器后的16字节单元(20H~2FH),可用位寻址方式访问其各位。
这128个位地址为00H~7FH。
2、特殊功能寄存器
特殊功能寄存器有21个,它们的功能如下:
(1)累加器又称ACC。
(2)B寄存器用于乘法和除法操作。
对于乘除法以外的其他指令,可作为一个暂存器使用。
(3)堆栈指令SP堆栈指针为8位,能位于片内RAM128字节的任何单元。
当8051复位时,堆栈指针初始化为07H。
(4)数据指针DPTR是一个16位寄存器,由高8位字节DPH和低8位字节DPL组成。
它的功能是存放16位地址。
(5)程序状态字PSW程序状态字寄存器是一个8位的寄存器,启用被定义的有七位,其定义如下:
符号位置名称及定义
CYPSW-7进位标志
ACPSW-6辅助进位(半进位)标志
F0PSW-5用户标志(用户可使用的通用伟)
RS1PSW-4寄存器组选择控制位1
RS0PSW-3寄存器组选择控制位0
OVPSW-2溢出标志
PPSW-0奇偶标志
(6)TMOD用于定义定时器/计数器工作方式。
(7)TCON用于控制定时器运行状态。
(8)TH0定时器/计数器0(高位字节)。
(9)TL0定时器/计数器0(低位字节)。
(10)TH1定时器/计数器1(高位字节)。
(11)TL1定时器/计数器1(低位字节)。
(12)IP中断优先级寄存器。
可通过对相应位置1,设定五个中断源之一位高优先级。
(13)IE中断允许寄存器。
通过对相应的清0或置1,禁止或允许相应中断请求中端。
8051提供5个中断源,既INT0、INT1、定时器0、定时器1和串行口。
1.1.2MCS-51单片机引脚及功能
1、主电源引脚
(1)Vss接地。
(2)Vcc接+5V。
2、时钟电路引脚
(1)XTAL1振荡器的高增益放大器输入,接晶振或外部源。
(2)XTAL2振荡器的放大器输出,或接收外振荡器信号。
3、控制信号引脚
(1)
/Vpp低电平时,8051执行外程序存储器的指令。
高电平时,当PC小于4K时,8051至行片内ROM/EPROM;当PC大于4K时,8051至行片外程序存储器。
(2)RST/Vpd从低到高(约3V)的跳变使8051复位。
若Vcc降到低于规定值,而Vpd在规定值(约为5V)内,则Vpd将为RAM提供备用电源。
(3)ALE地质锁存信号输出端。
在访问外程序存储器时,锁存低位地址字节。
在进行EPROM编程时,接收编程脉冲输入。
(4)
程序存储器允许输出信号。
访问内程序存储器时,不激发
。
4、输入/输出口引脚
8051单片机有4个双向的8位输入/输出端口,分别为P0口、P1口、P2口、P3口。
四个并行口提供了32根I/O线。
每个口由一个锁存器(特殊功寄存器P0到P3)、一个输出驱动器和一个输入缓冲器组成。
P0口和P2口的输出驱动器以及P0口的输入缓冲器用于访问外部寄存器。
此时,P0口分别输出外部低位地址、读/写数据,而输P2口出外部寄存器高地址。
P3口的每一根线可执行第二功能:
如表1-1所示:
表1-1P3口的第二功能
口线
功能
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD(串行输入口)
TXD(串行输出口)
INT0(外部中断0输入口)
INT1(外部中断1输入口)
T0(定时器0外部输入口)
T1(定时器1外部输入口)
WR(写选通输出口)
RD(读宣统输出口)
1.1.3MCS-51指令系统简介
指令系统简介
8051的指令系统按功能可以分为数据传送、算术操作、逻辑操作和控制转移四大类。
以下分别介绍这几类指令。
(1)数据传送数据传送指令可分为通用的、累加器专用的和目标地址用的三种。
(a)通用的传送
MOV执行第二操作数到第一操作数的位、字节和字的传送。
PUSH把SP寄存器加1,然后从第二操作数传送一个字节到当前SP寻址
的堆栈单元中。
POP把有SP寄存器寻址的堆栈单元中传送一个字节到第一操作数,然后把
SP减1。
(b)累加器专用传送
XCH第二操作数的字节与A累加器的字节交换。
MOVX外部数据存储器和A累加器之间传送一个字节。
外部抵制可由DPTR寄存器(16位)或R1、R0(各8位)来指定。
MOVC从程序集存器传送一个字节到A寄存器中。
(c)目标地址传送
MOVDPTR,#data把16位数立即装入一对目的寄存器DPH和DPL中。
(2)算术操作
ADD执行A累加器与第二操作数之间的加法,结果送回A累加器中。
DA(BCD加法的十进位法调整)对两个2位十进制操作数的二进制加法结果进行调整。
由DA所形成的压缩十进制数之间和回送到A累加器中。
如果BCD结果大于99则进位标志位置位,否则清0。
SUBB(连借位减)执行从第一操作数(累加器)中间去第二操作数,如果C标志位置位则再减1,把结果回送到A寄存器。
MUL执行A累加器与B寄存器的无符号乘法。
双字节乘法的高位字接送B
寄存器,低位字节送A累加器。
如果乘积的高位字节为0则OV清零,若非0
则OV置位。
C清零,AC保持不变。
DIV执行A累加器与B寄存器的无符号数除法,把商送到累加器A,余数送到B寄存器。
若除数为0,则累加器A和寄存器B内容不定,并置位OV,否则OV清0。
C清零,AC保持不变。
(3)操作数逻辑操作
(a)单操作数逻辑操作
CLR用于A累加器和C进位标志或任何直接寻址位清0。
SETBC进位标志或任何直接寻址的位置1。
CPL把A累加器中的操作数取反,并把结果回送到A累加器中,不影响标志位;或者将C进位标志或任何直接寻址位取反。
RL,RLC,RR,RRC,SWAP能对A累加器执行五种循环为操作:
RL(左移4位)。
对于RLC和RRC,C标志与最后移出的位相同。
SWAP把A累加器高半字节与低半字节的内容交换。
(b)双操作数逻辑操作
ANL对两个操作数(位或字节)执行按为逻辑“与”操作,并把结果回送到第一个操作数中。
ORL对两个操作数(字节)执行按位逻辑“或”操作,并把结果回送到第一个操作数中。
XRL对两个操作数(字节)执行按位逻辑“异或”操作并把结果回送到第一个操作数中。
(4)控制转移控制转移分为无条件转移、调用和返回,条件转移和终端等几种方式。
(a)无条件调用、返回和转移
RET转移控制到前一次调用操作时保存在堆栈中的地址,一般ACALL或LCALL所调用的子程序结束语句。
JMPA+DPTR间接转移指令。
把累加器A的无符号内容与数据指针的16位数据相加,然后把结果送到程序计数器。
这样转移的实际目的可以是程序储存空间中的任何单元。
这种间接转移对程序中实现N路散转很方便。
(b)有条件转移
JZ如果累加器A为0则执行一次转移。
JNZ如果是累加器A不为0,则执行一次转移。
JC如果仅为标志Cy为1,则执行转移。
JNC如果仅为标志Cy为0,则执行转移。
JB如果直接寻址位为1,则执行转移。
CJNE把第一操作数以第二操作数相比较,如果不相等,则执行转移。
DJNE把操作数减1,结果送回源操作数的地址中,若不为0则转移。
使用条件指令可有效地把RAM单元用作程序循环计数器。
(c)中断
通过内部或外部终端方法可执行程序的转移。
所有的中断通过把程序计数器进栈,然后转向位于程序存储器绝对地址3、11、19、27或35号单元来执行转移。
RETI中断指令。
控制转移方式与RET相同,此外它还重新允许现行优先级中断。
1.2单片机的选择
1.2.1AT89S51的选择与性能简介
MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。
有些文献甚至也将8051泛指MCS-51系列单片机,8051是早期的最典型的代表作,由于MCS-51单片机影响极深远,许多公司都推出了兼容系列单片机,就是说MCS-51内核实际上已经成为一个8位单片机的标准。
其他的公司的51单片机产品都是和MCS-51内核兼容的产品而以。
同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51,PHILIPS(菲利浦),和WINBOND(华邦)等,我们常说的已经停产的89C51指的是ATMEL公司的AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash(程序存储器的内容至少可以改写1000次)存储器取带了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。
不过在市场化方面,89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。
89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel目前公司已经停产AT89C51,将用AT89S51代替。
89S51在工艺上进行了改进,89S51采用0.35新工艺,成本降低,而且将功能提升,增加了竞争力。
89SXX可以像下兼容89CXX等51系列芯片。
同时,Atmel不再接受89CXX的定单,大家在市场上见到的89C51实际都是Atmel前期生产的巨量库存而以。
如果市场需要,Atmel当然也可以再恢复生产AT89C51。
89S51相对于89C51增加的新功能包括:
新增加很多功能,性能有了较大提升,价格基本不变,甚至比89C51更低!
ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。
是一个强大易用的功能。
最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。
具有双工UART串行通道。
内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。
双数据指示器。
电源关闭标识。
全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。
兼容性方面:
向下完全兼容51全部字系列产品。
比如8051、89C51等等早期MCS-51兼容产品。
也就是说所有教科书、网络教程上的程序(不论教科书上采用的单片机是8051还是89C51还是MCS-51等等),在89S51上一样可以照常运行,这就是所谓的向下兼容。
比较结果:
就如同INTEL的P3向P4升级一样,虽然都可以跑Windows98,不过速度是不同的。
从AT89C51升级到AT89S51,也是同理。
和S51比起来,C51就要逊色一些,实际应用市场方面技术的进步是永远向前的。
1.2.2AT89S51的性能简介
89S51是MCS-51系列单片机的典型产品,我们就这一代表性的机型进行系统的讲解。
89S51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明,如图1-1所示单片机的内部结构示意图。
图1-1单片机内部结构示意图
1、中央处理器
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
2、数据存储器(RAM)
89S51内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
3、程序存储器(ROM)
89S51共有4KB掩膜ROM,最大可扩展64K字节,用于存放用户程序,原始数据或表格。
4、定时/计数器:
89