基于51单片机的智能交通灯课程设计.docx
- 文档编号:29122665
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:29
- 大小:185.59KB
基于51单片机的智能交通灯课程设计.docx
《基于51单片机的智能交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的智能交通灯课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于51单片机的智能交通灯课程设计
摘要
近年来随着科技的飞速发展,一个以微电子技术、计算机技术和通信技术为先导的信息革命正在蓬勃发展。
计算机技术作为三者之一,怎样与实际应用更有效的结合并发挥其作用。
单片机作为计算机技术的一个分支,正在不断的应用到实际生活中,同时带动传统控制检测的更新.在实时检测和自动控制的应用系统中,单片机往往是作为一个核心部件使用,针对具体应用对象的特点,配以其它器件来加以完善.
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现交通的井然秩序呢?
靠的是交通信号灯的自动指挥系统,来实现交通的井然有序。
交通信号灯控制方式很多.本系统采用美国ATMEL公司生产的单片机AT80S51,以及其它芯片来设计交通灯控制。
实现了通过AT89S51芯片的P1口设置红、绿灯点亮的功能,输出设置显示时间.交通灯的点亮采用发光二极管实现,时间的显示采用七段数码管实现。
单片机系统采用的直流供电。
关键词:
AT89S51单片机;智能交通灯控制系统;
基于51单片机智能交通灯设计
1系统硬件设计
1.180C51单片机引脚图及引脚功能介绍
80C51系列中,用CHMOS工艺制造的单片机都采用双列直插式(DIP)40脚封装,引脚信号完全相同。
图1—1为引脚图
图1—180C51引脚图
这40根引脚大致可分为:
电源(VCC、VSS、VPP、VPD)、时钟(XTAL1、XTAL2)、I/O口(P0~P3)、地址总线(P0口、P2口)和控制总线(ALE、RST、
、
、
)等几部分。
它们的功能简述如下:
1.电源
Vcc(引脚号40),芯片电源,接+5V;Vss(引脚号20),电源接地端。
2.时钟
XTAL1(引脚号18)内部振荡电路反相放大器的输入端,是外接晶振的一个引脚。
当采用外部振荡器时,此引脚接地。
XTAL2(引脚号19)内部振荡器的反相放大器输出端,是外接晶振的另一端。
当采用外部振荡器时,此引脚接外部振荡源。
3.控制总线
(1)ALE/
(引脚号30):
正常操作时为ALE功能(允许地址锁存),用来把地址的低字节锁存到外部锁存器.ALE引脚以不变的频率(振荡器频率的1/6)周
期性地发出正脉冲信号。
因此,它可用作对外输出的时钟信号或用于定时。
但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或输出电
流)8个LSTTL电路.在8751单片机EPROM编程期间,此引脚接编程脉冲(
功能).
(2)
(引脚号29):
外部程序存储器读选通信号。
在从外部程序存储器取指令(或数据)期间,
在每个机器周期内两次有效。
可以
驱动8个LSTTL电路。
(3)RST/VPD(引脚号9):
复位信号输入端.振荡器工作时,该引脚上持续2个机器周期的高电平可实现复位操作。
此引脚还可接上备用电源。
在Vcc掉电期间,
由
向内部RAM提供电源,以保持内部RAM中的数据.
(4)
/Vpp(引脚号31):
为内部程序存储器和外部程序存储器的选择端。
当
为高电平时,访问内部程序存储器(PC值小于4K);当
为低
电平时,访问外部程序存储器。
对于87C51单片机,在EPROM编程期间,此端为21V编程电源输入端.
4。
I/O线
(1)P0口(引脚号32~39):
单片机的双向数据总线和低8位地址总线。
在访问外部存储器时实现分时操作,先用作地址总线,在ALE信号的下降沿,地址被锁存;
然后用作为数据总线。
它也可以用作双向输入/输出口。
P0口能驱动8个LSTTL负载.
(2)P1口(引脚号1~8):
准双向输入/输出口,它能驱动4个LSTTL负载。
(3)P2口(引脚号21~28):
准双向输入/输出口。
在访问外部存储器时,用作高8位地址总线。
P2口能驱动4个LSTTL负载。
(4)P3口(引脚号10~17):
准双向输入/输出口,它能驱动4个LSTTL负载。
P3口的每一引脚还有另外一种功能:
P3.0——RXD:
串行口输入端
P3.1-—TXD:
串行口输出端
P3.2—-
:
外部中断0中断请求输入端
P3。
3-—
:
外部中断1中断请求输入端
P3。
4-—T0:
定时器/计数器0外部输入端
P3.5-—T1:
定时器/计数器1外部输入端
P3。
6——
:
外部数据存储器写选通信号
P3.7-—
:
外部数据存储器读选通信号
1。
274LS245引脚图及功能
74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据.它的功能引脚图如图1—2所示.
图1—274LS245引脚图
74LS245还具有双向三态功能,既可以输出,也可以输入数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)
DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。
由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连.P0口与74LS245输入端相连,E端接地,保证数据线畅通。
8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0。
1→D1).
1。
3八段LED数码管
LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点.LED数码管的结构简单,分为七段和八段两种形式,也有共阳和共阴之分。
以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示dP,即点),每个发光二极管的阳极连在一起,如图1—3所示。
这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制.为方便起见,本文主要讨论共阳八段LED数码显示管,其他类形的显示管与其类似。
图1—3八段共阳管示意图
LED灯的显示原理:
通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如dp,g,f,e,d,c,b,a全亮显示为8,采用共阳极连接驱动代码,代码表如表1所示.
表1驱动代码表
显示数值
dp,g,f,e,d,c,b,a
驱动代码
0
11010000
C0H
1
11111001
F9H
2
10100100
A4H
3
10110000
B0H
4
10011001
99H
5
10010010
92H
6
10000010
82H
7
11111000
F8H
8
10000000
80H
9
10010000
90H
相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。
LED8段数码管的设置为每个方位上的一对2为显示器。
四个方位上总共用4个LED接在单片机的IO口上.虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。
1。
4硬件系统总控制电路
本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。
其具体的硬件电路总原理图如图1—4所示。
其中P0用于送显四片LED数码管,P2用于控制红绿黄发光二极管,P1。
0,P1。
1,与P1.1和P1.2对数码管进行片选,P3口为紧急情况处理按键,既根据车流量控制红绿黄发光二极管通断时间。
系统上电或手动复位之后,系统先显示状态灯及LED数码管,将状态码值送显P2口,将要显示的时间值的个位和十位分别送显P0口,在此同时用软件方法计时1秒,到达1s就要将时间值减1,刷新LED数码管。
时间到达一个状态所要全部时间,则要进行下一状态判断及衔接,并装入次状态的相应状态码值以及时间值,
当然,还要开启三个外部中断,其一为全部路口紧急情况处理中断,一旦信号有效,即按键为低电平时进入中断服务子程序,东西南北路口的状态禁止通行。
其二为东西方向或南北方向禁止通行,一旦信号有效将进入相应中断服务子程序,某一方向状态禁止通行。
其三为通行时间调整中断,若按键有效,进入相应的中断子程序,对时间进行调整,可延长或减少某一路段的通行时间,此后再按确定键则中断结束返回。
图1-4控制系统总原理图
1.5各模块控制电路
1.5.1交通灯控制电路
这里我们采用发光二极管作为交通灯来使用,单片机的I/O接口直接和交通灯(发光二极管)连接。
在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,控制受单片机P2。
1~P2。
6控制。
单片机的I/O接口与交通灯电路的具体连接方式为:
P2.1~P2。
3分别接东西方向的红、黄、绿共6个放光二极管,P2。
4~P2.6分别接南北方向的红、黄、绿共6个发光二极管。
12个发光二极管采用了共阴极的连接方式,因此I/O口输出高电平时,与之相连的发光二极管会亮,I/O口输出低电平是,相应的发光二极管会灭。
初始东西绿灯亮,南北红灯亮,东西路口车通行,时隔20s,黄灯闪烁5次。
之后,南北绿灯亮,东西红灯亮,方向开始通车,时隔20s,南北黄灯闪烁5次,然后又切换成东西方向通车,如此重复.
当某一方向发生交通意外或者需要停止方向通行是,这一方向亮红灯。
处理完之后,按下确定键,重新按上述方式工作。
当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。
当事故处理完毕,按下确定键,重新按上述方式工作。
当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态.交通灯电路如图1-5所示.
图1—5交通灯电路
1。
5.2倒计时显示电路
倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止"和“通过”两者间作出合适的选择。
驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。
倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择。
四个路口的计时显示都是由P0口控制,又P1口的P1.0~P1。
2片选这些显示管,而东西两个方向的显示时间一样,南北方向时间也一样,片选信号能控制东西也南北显示不同的时间.当某一方向为绿灯时,在绿灯倒计时结束后会再显示一个5S的倒计时,以供黄灯显示使用。
显示管连接图如图1—5所示。
在单片机与显示器之间加了一个8*4.7k的排阻与一个74LS245芯片,排阻的作用是上拉电阻,防止电流过高烧掉显示管,起到保护显示管的作用,其连接图如图1-6所示。
74LS245的作用是驱动显示管点亮。
其连接图如图1—7所示。
图1-5显示管连接图
图1—6排阻连接图
图1—774LS245驱动芯片连接图
1.5。
3紧急通行电路
该电路为紧急情况和根据车流量调节红绿灯时间长度控制电路。
通过单片机的P3.1~P3.7口的七个接口来控制。
在紧急情况下,需要停止所有方向上的车的行驶,按下P3。
1接口上的开关,接低电平,使其发生作用,发出令所有路口的红灯点亮的脉冲,禁止所有车辆通行。
当需要禁止东西方向或者南北方向通行时,按下P3。
2或者P3.3可以使其方向上的红灯亮起,禁止该方向车辆通行,而另一方向上则绿灯常量,车辆通行.例如,按下P3。
2上的开关,此时南北方向上的红灯常亮,而东西方向上绿灯常亮,这就起到了南北禁止东西通行的效果,按下P3.3上的开关则与之相反。
有时候某个方向上的车流量比较大,另一个方向上的车流量比较少,这就需要调整通行时间,P3。
5是加时间端口,P3。
6为减时间端口,按下一次开关则会增加或者减少1S,P3.7接的是切换方向开关,按下开关可以切换方向时间的调整,例如现在切换开关是东西方向,而东西方向车流量比较少,南北方向车流量比较大,这就需要增加南北方向通行时间,减少东西方向通行时间。
首先通过P3。
6口减少东西方向通行时间,然后按下切换方向键,这就切换到了南北方向时间调整状态,这是按下P3.5,可以增加通行时间。
P3。
4为确定键,也可以称之为复位键,要解除禁止时,按下确认键就可回到正常工作状态,当时间调整结束后,也可以通过确认键回到工作状态。
控制电路图如图1—8所示.
图1-6按键电路控制电路图
1。
5。
4声音警示装置
当发生紧急情况需要全面停止通行时,需要声音警示装置来提醒车辆,这个警示装置由P3。
0口控制,其电路图如图1—7所示。
图1—7声音警示控制电路
2系统程序设计
2.1主程序流程图
图2-1主程序路程图
2。
2显示子程序流程图
图2—2显示子程序流程图
3心得体会
这次课程设计,我们小组做的智能交通等控制系统。
如往常每一次实训,我获得了很大的收获。
首先,我要说说我学到的团队精神,这次课设需要多人协作完成,我有幸找到三位认真负责且乐于交流讨论的队友。
这次选交通灯为题目来做课设一是经验不足,二是信心不足。
通过这次课设,我既积累了经验,也获取了信心,今后会找寻机会再做一些与拖动相关的电子设计,因为我们自动化专业和电机是息息相关的,很大程度研究的是电机的拖动问题。
通过这两周的单片机课程设计,我们运用所学的知识,利用单片机控制原理设计了一个交通灯控制系统,我们对单片机有了更深的体会。
我们了解和掌握了一些简单的编程思想和对I/O口的使用。
这次课设通过单片机的I/O口来控制交通灯。
实现一些具体的功能和对特殊情况的处理.
通过这次的实践,我们对单片机的I/O口的使用的条件有更深的理解,对单片机的各个管脚功能的理解也加深了,以及在常用编程设计思路技巧,特别是汇编语言的掌握方面都能向前迈了一大步。
这次的课程设计让我们把单片机的理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论是实践的基础,实践有着能检验理论的正确性,让我们受益非浅,对我们以后参加工作或者继续学习将会产生巨大的帮助和影响。
在课设过程中遇到的硬件和软件问题都通过询问老师、同学和去图书馆、上网得到了解决。
参考文献
[1]陈大钦电子技术基础实验[M].北京:
高等教育出版社2004
[2]陈梓城电子技术实训[M].北京:
机械工业出版社2003
[3]吴黎明单片机原理及应用技术[M].北京:
科学出版社2003
[4]李学海标准80C51单片机基础教程[M].北京:
北京航空航天大学出版社2006
[5]刘乐善微型计算机接口技术及应用[M]。
北京:
华中科技大学出版社2004
[6]陈炳权曾庆六EDA技术实用教程[M].北京:
湘潭大学出版社2010
[7]先锋工作室.单片机程序实例[M]。
北京:
清华大学出版社,2002.
[8]李伯成。
基于MCS—51单片机的嵌入式系统的设计[M].北京:
电子工业出版社,2004.
[9]吴洪潭,肖艳萍,赵伟国.单片机原理及应用系统设计[M]。
北京:
国防工业出版社,2005.
[10]吴黎明,王桂棠,洪添胜,等。
单片机原理及应用技术[M]。
北京:
科学出版社,2005。
附录源程序
#include #defineucharunsignedchar #defineuintunsignedint uchardatabuf[4]; uchardatasec_dx=20;//东西数默认 uchardatasec_nb=30;//南北默认值 uchardataset_timedx=20; uchardataset_timenb=30; intn; uchardatacountt0;//定时器0中断次数 //定义5组开关 sbitk4=P3^7;//切换方向 sbitk1=P3^5;//时间加 sbitk2=P3^6;//时间减 sbitk3=P3^4;//确认 sbitk5=P3^1;//禁止 //P3^2//只允许东西方向通行,中断0 //P3^3//只允许南北方向通行,中断1 sbitYellow_nb=P2^5;//南北黄灯标志 sbitYellow_dx=P2^2;//东西黄灯标志 sbitGreen_nb=P2^4; sbitGreen_dx=P2^1; sbitBuzz=P3^0; bitBuzzer_Indicate; bittime=0;//灯状态循环标志 bitset=1;//调时方向切换键标志 ucharcodetable[11]={//共阴极字型码 0x3f,//--0 0x06,//——1 0x5b,//——2 0x4f,//—-3 0x66,//——4 0x6d,//——5 0x7d,//—-6 0x07,//——7 0x7f,//--8 0x6f,//—-9 0x00//—-NULL }; //函数的声明部分 voiddelay(intms);//延时子程序 voidkey();//按键扫描子程序 voidkey_to1();//键处理子程序 voidkey_to2(); voidkey_to3(); voiddisplay();//显示子程序 voidlogo();//开机LOGO voidBuzzer(); //主程序 voidmain() { TMOD=0X11;//定时器设置 TH0=0X3C;//定时器0置初值0.05S TL0=0XB0; EA=1;//开总中断 ET0=1;//定时器0中断开启 TR0=1;//启动定时0 EX0=1;//开外部中断0 EX1=1;//开外部中断1 logo(); P2=0Xc3;//开始默认状态,东西绿灯,南北黄灯 sec_nb=sec_dx+5;//默认南北通行时间比东西多5秒 while (1) { key();//调用按键扫描程序 display();//调用显示程序 Buzzer(); } } //函数的定义部分 voidkey()//按键扫描子程序 { if(k1! =1)//时间加按下时 { delay(10);//延时消抖 if(k1! =1) { while(k1! =1)//当按键未弹起时,一直执行 { key_to1();//调用按键1功能 for(n=0;n〈40;n++)//调用40次显示,用于延时 {display();} } } } if(k2! =1)//当K2按键按下时 { delay(10);//延时消抖 if(k2! =1) { while(k2! =1)//按键按下未弹起时一直执行 { key_to2();//调用key2功能 for(n=0;n〈40;n++)//调用40次显示,用于延时 {display();} } } } if(k3! =1)//当K3(确认)键按下时 { TR0=1;//启动定时器 Buzzer_Indicate=0; sec_nb=set_timenb;//从中断回复,仍显示设置过的数值 sec_dx=set_timedx;//显示设置过的时间 if(set==1)//时间倒时到0时 { //P2=0X99;//东西红灯,南北绿灯 sec_nb=sec_dx+5;//回到初值 } else { //P2=0xC3;//东西绿灯,南北红灯 sec_dx=sec_nb+5; } } if(k4! =1)//当K4(切换)键按下 { delay(5);//延时消抖 if(k4! =1) { while(k4! =1); set=! set;//取反set标志位,以切换调节方向 } } if(k5! =1)//当K5(禁止)键按下时 { delay(5);//延时消抖 if(k5! =1) { while(k5! =1) key_to3(); } } } voiddisplay()//显示子程序 { buf[1]=sec_dx/10;//第1位东西秒十位 buf[2]=sec_dx%10;//第2位东西秒个位 buf[3]=sec_nb/10;//第3位南北秒十位 buf[0]=sec_nb%10;//第4位南北秒个位 P1=0xff;//初始灯为灭的 P0=0x00; P1=0xfe;//片选LED1 P0=table[buf[1]];//送东西时间十位的数码管编码 delay (1);//延时 P1=0xff;//关显示 P0=0x00; P1=0xfd;//片选LED2 P0=table[buf[2]]; delay (1); P1=0xff; P0=0x00; P1=0Xfb;//片选LED3 P0=table[buf[3]]; delay (1); P1=0xff; P0=0x00; P1=0Xf7; P0=table[buf[0]];//片选LED4 delay (1); } voidtime0(void)interrupt1using1//定时中断子程序 { TH0=0X3C;//重赋初值 TL0=0XB0; TR0=1;//重新启动定时器 countt0++;//软件计数加1 if(countt0==20)//定时器中断次数=20时(即1秒时) {countt0=0;//清零计数器 sec_dx——;//东西时间减1 s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 智能 交通灯 课程设计