第一篇:智能交通灯实习小结
小总结
实习期小结
一:学习小总结
在实习的五天时间里,老师给我们讲了很多关于单片机的很多知识,例如:单片机基础知识加强、常见电子元器件的认识、开发环境最小系统搭建、单片机C语言的了解、keil软件的使用、闪烁报警灯设计、数码管结构原理、移位寄存器原理及控制方法、中断系统应用、定时器设计等。又时也给我们穿插一些关于嵌入式的讲座,增进我们与现代社会的接触。每位老师都讲的很好,我也学到了不少知识,对自己的专业前景也有了更深的了解。
二:具体内容分析
1.最小系统的搭建和硬件电路的组成 1)51系列单片机
对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.2)注意事项
a)电烙铁的安全使用。
b)先要观察通用板大小,合理布局,插件,最后焊接。c)烙铁头不能在实验板和引脚接触很长时间,会损坏元件。
3)原理图
小总结
4)应用此电路实现的一些功能:
a)流水灯
b)流水灯和蜂鸣器一起工作 c)4位数码管依次显示 d)数码管计数
e)流水灯蜂鸣器数码管一起工作
5)单片机复位
单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。
6)单片机复位电路如下图:
2、闪烁报警灯的设计 1)闪烁报警灯组成
闪烁报警电路由电源电路、发光器件、输出驱动、单片机控制电路等组成
2)原理分析
发光二极管正极与一个限流电阻串联,电阻另一端连接电源电压+5v,发光二极管负极
小总结
连接单片机P0.x口,当P0.x口为低电平时二极管导通发光,当P0.x口为高电平是不发光,通过程序控制P0.x为0或1来控制发光二极管的亮灭。
3)闪烁报警灯硬件环境搭建
C122pF+5VC222pF+5VX11912MHzU1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617D1D2D3D4D5D6D7D8R1470SW1C320uF1k18R2470XTAL2R34704709RSTR4R5470+5V293031PSENALEEAAT89C52R9R6R***P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7R8470 4)蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
5)蜂鸣器在单片机上的应用
在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。
小总结
6)这里对单片机在蜂鸣器驱动上的设计图
3、数码管结构、原理控制方法,了解蜂鸣器的使用 1)七段数码管
七段数码管是数码管的一种是半导体发光器件,其基本单元是发光二极管。
2)七段数码管应用
数码管是一类价格便宜 使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示 时间、日期、温度等所有可用数字表示的参数的器件。在电器特别是家电领域应用极为广泛,如显示屏、空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
3)数码管结构
小总结
4)4连排8段数码管
5)数字对应数码管显示控制转换字节
(共阴编码)
显示--HGFE,DCBA--编码
0 -- 0011,1111--0x3F;1 -- 0000,0110--0x06;2 -- 0101,1011--0x5B;3 -- 0100,1111--0x4F;4 -- 0110,0110--0x66;5 -- 0110,1101--0x6D;6 -- 0111,1101--0x7D;7 -- 0000,0111--0x07;8 -- 0111,1111--0x7F;9 -- 0110,1111--0x6F;
6)动态显示驱动
是将所有数码管通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显
小总结
示。将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
7)蜂鸣器简介:
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。;蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
a)有源 b)无源
从图a、b外观上看,两种蜂鸣器好像一样,但仔细看,两者的高度略有区别,有源蜂鸣器a,高度为9mm,而无源蜂鸣器b的高度为8mm。如将两种蜂鸣器的引脚都朝上放置时,可以看出有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。
进一步判断有源蜂鸣器和无源蜂鸣器,还可以用万用表电阻档Rxl档测试:用黑表笔接蜂鸣器 “-”引脚,红表笔在另一引脚上来回碰触,如果触发出咔、咔声的且电阻只有8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音的,且电阻在几百欧以上的,是有源蜂鸣器。
有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。
在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。这里对单片机在蜂鸣器驱动上的应用作一下描述。
利用I/O 软件定时翻转电平利用定时器定时翻转电平
比如为2500Hz 的蜂鸣器的驱动,可以知道周期为400μs,这样只需要驱动蜂鸣器的I/O 口每200μs 翻转一次电平就可以产生一个频率为2500Hz,占空比为1/2duty 的方波,再通过三极管放大就可以驱动这个蜂鸣器了。
小总结
4、中断和定时应用 1)中断概念
CPU正 在执行原程序,突然,被意外事情打断,转去执行新程序。CPU执行新程序结束后,又回到原程序中继续执行。这样的过程就叫中断。
2)中断的作用
对突发事故,做出紧急处理。
根据现场随时变化的各种参数、信息,做出实时监控。
CPU与外部设备并行工作,以中断方式相联系,提高工作效率。解决快速CPU与慢速外设之间的矛盾。
在多项外部设备同时提出中断请求情况下,CPU能根据轻重缓急响应外设的中断请求。
3)89C51中断结构及中断控制
小总结
4)89C51中断系统的五个中断源为
① INT0——外部中断0请求,低电平有效。通过 P3.2引脚输入。
② INT1——外部中断1请求,低电平有效。通过 P3.3引脚输入。
③ T0 —— 定时器/计数器0溢出中断请求。
④ T1 —— 定时器/计数器1溢出中断请求。
⑤ TXD/RXD ——串行口中断请求。
每个中断源都对应一个中断请求标志位,他们设置在特殊功能寄存器TCON和SCON中。当这些中断源请求中断时,相应的标志分别由TCON和SCON中的相应位来锁存。
5)工作模式寄存器—TMOD(89H)
TMOD用于控制T0和T1的工作模式,其各位的定义格式如图所示。
工作模式寄存器TMOD的位定义
其中,低4位用于T0。高4位用于T1。
6)M1,M0控制的四种工作模式
M1 M0 工作模式 功能描述 0 0 模式0 13位计数器 0 1 模式1 16位计数器 0 模式2 自动装入8位计数器 1 模式3 定时器0:分成两个8位计数器
定时器1:停止计数
三附录:
小总结
流水灯
#include
for(j=0;j<5;j++)for(k=0;k<256;k++);}
main()
{
int n, D;
while(1)//发光二极管依次显示
{
D=0X01;
P1=~D;
delay();
D=0X03;
P1=~D;
delay();
D=0X07;
P1=~D;
delay();
D=0X0F;
P1=~D;
delay();
D=0X1F;
P1=~D;
delay();
D=0X3F;
P1=~D;
delay();
D=0X7F;
P1=~D;
delay();
D=0X00;
P1=D;
delay();} }
流水灯和蜂鸣器
小总结
#include
} void senddata(unsigned char num){
} void main(){
unsigned i,s,g,b,q,first,second,third,fourth,t;while(1){
for(t=0;t<10000;t++){
g=t%10;//个位 s=(t/10)%10;//十位 b=(t/100)%10;//百位 q=t/1000;//千位 first=SZ[g];//个位数码管 second=SZ[s];//十位数码管 third=SZ[b];//百位数码管 unsigned char i;for(i=0;i<8;i++){
} CLK=0;AB=num&0x01;num>>=1;CLK=1;unsigned char i,j,k;for(i=1;i>0;i--)
for(j=2;j>0;j--)for(k=222;k>0;k--);10
小总结
} 四位计数器
#include
fourth=SZ[q];//千位数码管 for(i=0;i<100;i++)
{
} SG=0;SS=1;SB=1;SQ=1;delay();SG=1;SS=0;SB=1;SQ=1;delay();SG=1;SS=1;SB=0;SQ=1;delay();SG=1;SS=1;SB=1;SQ=0;delay();senddata(first);//个位控制位
senddata(second);//十位控制位
senddata(third);//百位控制位
senddata(fourth);//千位控制位
P1=0X00;delay();fmq=0;delay();fmq=1;delay();} } 11
小总结
sbit SS=P2^3;sbit SB=P2^4;sbit SQ=P2^5;sbit fmq=P3^1;sbit F=P2^7;unsigned char SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){ unsigned char i,j,k;for(i=1;i>0;i--)
for(j=2;j>0;j--)
for(k=222;k>0;k--);} void senddata(unsigned char num){ unsigned char i;for(i=0;i<8;i++){
CLK=0;
AB=num&0x01;
num>>=1;
CLK=1;} } void main(){ unsigned i,s,g,b,q,first,second,third,fourth,t;while(1){
for(t=0;t<10000;t++)
{
g=t%10;
s=(t/10)%10;
b=(t/100)%10;
q=t/1000;
first=SZ[g];
second=SZ[s];
third=SZ[b];
fourth=SZ[q];
//F=~F;
for(i=0;i<100;i++)
{ SG=0;12
小总结
}
} } }
计时器计数
#include
sbit F=P2^7;sbit led1=P1^0;unsigned char SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){ unsigned char i,j,k;for(i=1;i>0;i--)
for(j=2;j>0;j--)
for(k=222;k>0;k--);} void senddata(unsigned int num){ unsigned char i;for(i=0;i<8;i++){
CLK=0;
AB=num&0x01;
num>>=1;
CLK=1;} } void main(){ unsigned num,i,s,g,b,q,first,second,third,fourth,t;TMOD=0X00;TH0=(65536-50000)/256;TL0=(65536-50000)%256;//EA=1;//ET0=1;TR0=1;while(1){ if(TF0==1)
{
num++;if(num==0)
{
i++;
P1=0X00;
delay();
fmq=0;
delay();fmq=1;
小总结
delay();}
TF0=0;//定时器方式0
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;} for(t=0;t<10000;t++){
g=t%10;
s=(t/10)%10;
b=(t/100)%10;
q=t/1000;
first=SZ[g];
second=SZ[s];
third=SZ[b];
fourth=SZ[q];
for(i=0;i<100;i++)
{
SG=0;
SS=1;
SB=1;
SQ=1;
senddata(first);delay();
SG=1;
SS=0;
SB=1;
SQ=1;
senddata(second);
delay();
SG=1;
SS=1;
SB=0;
SQ=1;
senddata(third);delay();
SG=1;
SS=1;
SB=1;SQ=0;
小总结
senddata(fourth);
delay();
}
P1=0X00;
delay();
fmq=0;
delay();
fmq=1;
delay();
}
}
}
闪烁报警 #include
for(j=0;j<5;j++)for(k=0;k<256;k++);} void delay1(){ int i,j,k;for(i=0;i<30;i++)
for(j=0;j<1;j++)for(k=0;k<256;k++);}
main()
{
int n;
while(1){
P1=0XE7;delay();fmq=0;delay();fmq=1;16
小总结
for(n=0;n<20;n++){ P1=0X00;delay1();fmq=0;delay1();fmq=1;delay1();P1=0XFF;delay1();} } } delay();delay();fmq=0;delay();fmq=1;delay();P1=0X00;delay();fmq=0;delay();fmq=1;delay();P1=0XFF;delay();
P1=0XA5;中断实现计数 #include
小总结
{ unsigned char i,j,k;for(i=1;i>0;i--)
for(j=2;j>0;j--)
for(k=222;k>0;k--);} void senddata(unsigned int num){ unsigned char i;for(i=0;i<8;i++){
CLK=0;
AB=num&0x01;
num>>=1;
CLK=1;} } void main(){ unsigned i,s,g,b,q,first,second,third,fourth,t;TMOD=0X00;TH0=(65536-50000)/256;TL0=(65536-50000)%256;//中断请求 EA=1;ET0=1;TR0=1;while(1)//数码管依次计数 {
for(t=0;t<10000;t++)
{ g=t%10;
s=(t/10)%10;
b=(t/100)%10;
q=t/1000;
first=SZ[g];
second=SZ[s];
third=SZ[b];
fourth=SZ[q];
for(i=0;i<100;i++){ SG=0;18
小总结
SS=1;
SB=1;
SQ=1;
senddata(first);delay();
SG=1;
SS=0;
SB=1;
SQ=1;
senddata(second);
delay();
SG=1;
SS=1;
SB=0;
SQ=1;
senddata(third);delay();
SG=1;
SS=1;
SB=1;
SQ=0;
senddata(fourth);
delay();
}
P1=0X00;
delay();
fmq=0;
delay();
fmq=1;
delay();
}
} } void T0_time()interrupt 1 { //定时器
TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;
if(num==20)19
小总结
{
num=0;
} }
第二篇:基于FPGA的智能交通灯
设计题目: 基于FPGA的交通灯控制系统设计
专 业:
学生姓名: 学 号:
起迄日期: 2014.8.22.--2014.9.22.指导教师: 教研室主任:
目录
1.绪论..............................................................1 2.课题研究背景及意义................................................1 3.设计要求..........................................................1 4.设计方案..........................................................1 4.1方案比较....................................错误!未定义书签。4.2 方案说明...................................错误!未定义书签。5.VHDL语言介绍...................................错误!未定义书签。6.系统仿真..........................................................3 6.1 系统电路框图................................................4 6.2设计结果仿真.................................................4 7.心得体会..........................................................5 8.参考文献..........................................................6 7.附件..............................................................6
摘要:针对现实中越来越严重的城市交通拥堵现象,提出了一种城市十字路口交通信号灯控制与FPGA实现的新方法。设计的智能交通控制系统利用对相向车道采用不同步的红绿灯信号控制方法,能够减少交通资源浪费,大幅提高十字路口的车辆通行效率。利用超高速硬件描述语言VHDL设计十字路口交通信号灯控制器,实现主干道和支干道的交通控制功能,并通过Quartus II完成综合、仿真、进行管脚分配、绘出仿真波形及原理图。
关键字:硬件描述语言VHDL;交通信号灯;智能控制
1.绪论
智能的交通灯指挥着人们和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题。在城乡街道的十字交叉路口,为了保证交通秩序和行人的安全,一般在每条街道上各有一组红、黄、绿交通信号灯,其中红灯亮,表示该条道禁止通行;黄灯亮该条道路上未过停车线的停止通行,已过停车线的车辆继续通行;绿灯亮,表示该条道路允许通行。交通灯自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行。实现十字路口交通管理自动化。
DEA技术的发展和应用领域的扩大与深入,在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出,因此本论文研究基于FPGA的交通灯设计。FPGA中有大量实现组合逻辑的资源,可以完成较大规模的组合逻辑电路设计,而其中相当数量的存储电路(触发器)又可完成复杂的时序逻辑电路设计。通过使用各种EDA工具,用原理图或硬件描述语言,可以很方便地将复杂的电路在FPGA中实现。像典型的数字系统分频器,数字钟,数字频率计等等都可用FPGA完成。本文以QuartusII 软件为开发平台,通过VHDL硬件描述语言以及原理图的输入方式来设计交通灯。
2.课题研究背景及意义
随着公路交通运输的发展,交通拥挤、道路阻塞和交通事故频繁发生等问题越来越严重地困扰着世界各大城市。相对于交通运输工具的飞速发展,我国交通配套设施建设明显滞后,道路安全网络、道路标识、交通指挥中心仍然不足。单独从车辆方面或道路方面考虑,均很难有效地解决交通问题。通过采用信息通信技术、电子技术以及其他科学技术把它们联系起来,并实现智能化的交通控制才能解决根本问题,交通信息化需要融合科技力量才能使目前的交通问题得到改善。
在现代文明高速发展的社会,道路的高度发达使得整个社会进步的速度进一步的加快,交通灯的出现是社会发展的必然产物。交通灯在道路事业中占有举足轻重的地位,它直接影响到公路以及市区内的通车质量。所以,智能交通灯的研究具有重大意义。
3.设计要求
主干道绿灯亮支干道红灯亮时间是50秒,接下来黄灯闪烁5秒,此时主干道的绿灯和支干道的红灯继续亮;然后是主干道红灯亮支干道绿灯亮,时间为20秒,再黄灯闪5秒同时主干道的红灯和支干道的绿灯也继续亮。
4.设计方案
首先根据系统的需要进行分析。系统要求主干道绿灯亮支干道红灯亮时间是50秒,接下来黄灯闪烁5秒,此时主干道的绿灯和支干道的红灯继续亮,然后是 主干道红灯亮支干道绿灯亮时间为20秒,再黄灯闪5秒同时主干道的红灯和支干道的绿灯也继续亮。
因此将整个系统分为计时模块和控制模块组成。计时模块中秒模块主要将50MHZ的时钟进行分频得到20ns的时钟信号,再将信号50000000倍得到秒信号。控制模块由交通灯控制模块以及黄灯闪烁模块构成。
Verilog HDL语言介绍 5.1 Verilog HDL特点
Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰地模拟、仿真语义。使用这种语言编写的模型可以方便地使用Verilog仿真器进行验证。Verilog HDL从C语言继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力和扩展模块。
Verilog HDL之所以成为和VHDL并驾齐驱的描述语言,以为它有如下特点:
(1)基本逻辑门,例如and、or和nand等都内置在语言中。
(2)用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
(3)开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。(4)提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
(5)可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。
(6)Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
(7)能够描述层次设计,可使用模块实例结构描述任何层次。设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级。
(8)设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。Verilog HDL不再是某些公司的专有语言而是IEEE标准。人和机器都可阅读Verilog 语言,因此它可作为EDA的工具和设计者之间的交互语言。
5.2Verilog HDL程序基本结构
模块是Verilog HDL的基本描述单位,描述某个设计的功能或结构及与其他模块通信的外部端口。一个模块的基本语法如下:
module module_name//模块名称
(port_list);//输入输出信号列表//说明 reg//寄存器 wire//线网
parameter//参数 input//输入信号 output//输出信号 inout//输入输出信号 function//函数 task//任务 …//语句
Initial statement Always statement Module instantiation// Gate instantiation// UDP instantiation// Continuous assignment// Endmodule 说明部分用于定义不同的项,例如模块描述中使用寄存器和参数、语句定义设计的功能和结构。说明部分和语句可以放置在模块的任何地方,但是变量、寄存器、线网和参数等的说明部分必须在使用前出现。为了使模块描述清晰和具有良好的可读性,最好将所有的说明部分放在语句前。
6.系统仿真
本文的仿真是在QuartuslI上进行的。QuartuslI 是 Altera 提供的 FPGA/CPLD 开发集成环境,Altera 是世界上最大的可编程逻辑器件供应商之一。QimrtiisII在21世纪 初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plusII的更 新换代产品,其界面友好,使用便捷。QuartiisII提供了一种与结构 无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件 编程。
Altera的QuartusII提供了完整的多平台设计环境,能满足各 种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环 境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模 型设计提供了集成综合环境。
QuartusII包括模块化的编辑器。编辑器包括的功能模块有分析 /综合器、适配器、装配器、时序分析器、设计辅助模块、EDA网表 文件生成器、编辑数据接口等。可以通过选择Start Compilation来运行所有的编辑器模块,也可以选择单独运行各个模块。
基于Quartus II的设计流程:
(1)建立工作库文件夹和编辑设计文件(2)创建工程;(3)全程编译工程;(4)时序仿真;(5)引脚锁定;
(6)下载至硬件系统验证。
6.1 系统电路框图
系统整体电路设计采用原理图输入法,将各个模块包括子模块进行连接,得到系统的电路框图如下图所示。
图三 系统整体电路图
6.2设计结果仿真
利用Quartus II软件对本设计的程序进行编译,得到系统的仿真图。
交通灯运行时时序仿真图1
交通灯运行时时序仿真图1
7.心得体会
在这次课程设计中,我再一次的体验到了细心对一个编程者的重要性,和程序的规范性对于程序的重要性,这些平时我们忽略的问题,其实有时候关乎着我们编程的成功与否的。
在verilog语言中,我们必须注意其与C语言的异同,比如格式和变量定义,还有模块的调用,和时钟信号的应用。我觉得需要在以后多加练习,可以对以后的学习和工作带来莫大的帮助。这次的
课程设计相对以前的较难,其实就是对我们的一次考核,也是一次考验,它培养了学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程。然而从理论到实践的转化过程,我在做课程设计的近一个月时间里,有了更进一步的认识和了解,要想学知识要重在实践,要通过不断的实际操作才能更好地学习。
通过这次课程设计,我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能
力。在设计的过程中遇到问题,可以说得是困难重重,遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知解得不够深刻,掌握得不够牢固。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
8.参考文献
(1)程云长.可编程逻辑器件与VHDL语言[M].北京:科学出版社,2005(2)黄智伟.全国大学生电子设计竞赛系统设计[M].北京:北京航空航天大学出版社,2006(3)黄智伟.全国大学生电子设计竞赛电路设计[M].北京:北京航空航天大学出版社,2006(4)黄智伟.全国大学生电子设计竞赛 常用电路模块制作[M].北京:北京航空航天大学出版社,2010(5)黄智伟等.基于NI multisim的电子电路计算机仿真设计与分析[M].北京:电子工业出版社,2007(6)黄智伟.印制电路板(PCB)设计技术与实践[M].北京:电子工业出版社,2009(7)高吉祥等.电子技术基础实验与课程设计[M].北京:电子工业出版社,2002(8)潘松.EDA技术实用教程[M].科学出版社.2005
7.附件 原程序
`timescale 100ms / 1us //程序中的时间单位和仿真精度。module signal_led(clk, rst_n, traffic_signal_master_red, traffic_signal_master_green, traffic_signal_master_yellow, traffic_signal_slave_red, traffic_signal_slave_green, traffic_signal_slave_yellow);input clk;input rst_n;output reg
traffic_signal_master_red;// 交通信号灯主干道红灯
output reg
traffic_signal_master_green;// 交通信号灯主干道绿灯
output reg
traffic_signal_master_yellow;// 交通信号灯主干道黄灯 output reg
traffic_signal_slave_red;// 交通信号灯次干道红灯
output reg
traffic_signal_slave_green;// 交通信号灯次干道绿灯
output reg
traffic_signal_slave_yellow;// 交通信号灯次干道黄灯
reg signal_red_led;reg signal_green_led;reg signal_yellow_led;reg [31:0] traffic_signal_cnt;parameter
LED_ON
= 1'b0;// 1亮
parameter
LED_OFF
= 1'b1;// 0灭
parameter
TIME_CELL
= 32'd50000000;// 时间单元时间 = Time_cell * 20ns(50MHz主频)parameter START = 32'd0;parameter MASTER_GREEN = TIME_CELL * 20;parameter MASTER_YELLOW_1 = TIME_CELL * 20 + TIME_CELL;parameter MASTER_YELLOW_2 = TIME_CELL * 20 + 2 * TIME_CELL;parameter MASTER_YELLOW_3 = TIME_CELL * 20 + 3 * TIME_CELL;parameter MASTER_YELLOW_4 = TIME_CELL * 20 + 4 * TIME_CELL;parameter MASTER_YELLOW_5 = TIME_CELL * 20 + 5 * TIME_CELL;parameter SLAVE_GREEN = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20;parameter SLAVE_YELLOW_1 = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + TIME_CELL;parameter SLAVE_YELLOW_2 = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + 2 * TIME_CELL;parameter SLAVE_YELLOW_3 = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + 3 * TIME_CELL;parameter SLAVE_YELLOW_4 = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + 4 * TIME_CELL;parameter TOTAL_TIME = TIME_CELL * 20 + 5 * TIME_CELL + TIME_CELL * 20 + 5 * TIME_CELL;
//******************************************************************* // 模块名称:时间计数种子 // 功能描述
//******************************************************************* always @(posedge clk or negedge rst_n)begin if(!rst_n)traffic_signal_cnt <= 32'h0;else if(traffic_signal_cnt == TOTAL_TIME)traffic_signal_cnt <= START;else traffic_signal_cnt <= traffic_signal_cnt+1;end //******************************************************************* // 模块名称:LED灯闪烁控制 // 功能描述
//******************************************************************* always @(posedge clk or negedge rst_n)begin if(!rst_n)
begin signal_red_led <= LED_OFF;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end else begin case(traffic_signal_cnt)START
:
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_OFF;end MASTER_GREEN
:
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_ON;end MASTER_YELLOW_1 :
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_OFF;end MASTER_YELLOW_2 :
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_ON;end MASTER_YELLOW_3 :
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_OFF;end MASTER_YELLOW_4 :
begin signal_red_led <= LED_OFF;signal_green_led <= LED_ON;signal_yellow_led <= LED_ON;end MASTER_YELLOW_5 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end SLAVE_GREEN
:
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end SLAVE_YELLOW_1 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_ON;end SLAVE_YELLOW_2 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end SLAVE_YELLOW_3 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_ON;end SLAVE_YELLOW_4 :
begin signal_red_led <= LED_ON;signal_green_led <= LED_OFF;signal_yellow_led <= LED_OFF;end endcase end end //******************************************************************* // 模块名称:主从LED输出 // 功能描述:
//******************************************************************* always @(posedge clk or negedge rst_n)begin if(!rst_n)begin traffic_signal_master_red <= LED_OFF;traffic_signal_master_green <= LED_OFF;traffic_signal_master_yellow <= LED_OFF;traffic_signal_slave_red <= LED_OFF;traffic_signal_slave_green <= LED_OFF;traffic_signal_slave_yellow <= LED_OFF;end else begin traffic_signal_master_red <= signal_red_led;traffic_signal_master_green <= signal_green_led;traffic_signal_master_yellow <= signal_yellow_led;traffic_signal_slave_red <= ~signal_red_led;traffic_signal_slave_green <= ~signal_green_led;traffic_signal_slave_yellow <= signal_yellow_led;end end endmodule
第三篇:智能交通灯控制系统 毕业设计总结
无
锡
职
业
技
术
学
院
毕业设计总结 毕业设计总结
本次毕业设计,我的指导老师是李丽老师,首先,我们进行总体规划,包括控制系统组成、控制系统工作过程、控制系统功能、控制系统技术指标;之后,进行了硬件系统设计,学习单片机原理与接口技术,网上搜索下载AT89C51、数码显示管、点亮LED技术资料,并学习消化,设计硬件控制原理,用Protel绘图软件设计出控制器原理图,并对控制器硬件进行了调试;接着,研究设计六线四相步进电机控制方式和方法;而后,规划出了控制软件结构图,设计出了主控模块程序流程图、各功能模块程序流程图,并逐功能模块编辑、编译、连接、测试控制程序,在编程过程中,我一边学习C51程序设计,一边熟悉Keil C51开发平台,一边编程设计控制程序;最后,对控制程序进行了测试和修改完善。
本次毕业设计创新点一是提出了六线四相步进电机启动加速控制技术方案,二是研究了六线四相步进电机各种运行控制方式。
本次毕业设计体会一是深刻认识到专业理论对指导实践工作的重要性,上学期间,专业理论学的不够扎实,不够深入、不够全面、不懂用途;二是现有的技能不能胜任实际工作,实际动手能力欠缺;三是不知道如何进行课题需求分析、课题总体规划;四是不知道如何进行软件结构设计;五是实际编程经验欠缺,缺少排除故障能力。所以,我们即将毕业的大学生需要与时俱进,克服不足,勤学苦练,迎接挑战,为国争光。
在该课题后续研究设计时,应重视步进电机特性研究,重视控制方法、控制方式研究;增加联网控制功能;增加LCD数据显示功能。
在这篇毕业设计论文即将完成的时候,我突然意识到自己的校园生活即将画上一个句号。当我踏上工作岗位的时候即将面对的是完全不同于之前十几年校园生活的新的旅程。如果说之前的日子是学会如何做人、如何做事、如何认识和理解世界、如何学会感恩,那么,今后的日子,我将真正成为一个有用的人,一个能与别人合作或者独立完成任务的人,一个真正懂得世界、懂得感恩并真正付出的人。
我要感谢我存在的这个世界赋予我的认知和理解,感谢父母给了我机会认识并引导抚育我这个世界,感谢二十几年来成百上千的老师与朋友让我能够在正确的道路上走得更远并且激励我成为一个坚定信念不做让自己后悔事情的人。
“穷则独善其身,达则兼济天下”,古训教导我们不做自私人,懂得尽己所能,知恩图报。一切来之不易,珍惜且能尽其用,算是在自己能力有限的时候对社会,对生活最大的慰藉和回报。今年的二月份,在经历了将近一年的苦苦寻觅之后,我终于遇到了一个适合自己发展的岗位,也终于能够将全部的精力投入到这次毕业设计之中。首先我非常感谢我的导师李老师对我的支持和宽容,因为这次毕设的题目来源于我在生活的灵感,并且有着强烈的愿望,期望它能够成为现实,期望在离开校园之前见证自己所学是有用的学问。李老师在我的毕设过程中给予我鼎力的支持,因而有机会实现这个愿望。同时,在漫长的设计和实践过程中,身边的同学和朋友都给了我很多支持和帮助,这也证明了即便是一个人的任务也需要集体的力量,庆幸自己在离开校园之前学到了很多今后可能及其重要的东西。
回顾自己的学习历程,感觉今天的生活与状态是由一系列的偶然与必然串联成的结果。在这个过程中自己承受了比别人更多的挫折,但也学到了更多的感悟,获得了比别人更大的成就。我体会了人生的正弦曲线,知道很多情况下结果是之前很长时间的累积,很有趣的是,我的这些感悟在大学的专业课学习的时候得到
/ 2
无
锡
职
业
技
术
学
院
毕业设计总结
了理论上描述的一致。因为我的每一次成功的获得都比别人晚了许多,但也都是在最关键的时候比别人得到了更多的收获,也比别人体会到更多的付出后的充实。很庆幸自己在过去岁月中每一次困难抉择中做出的选择,以及在不断地激励中为目标而不断奋斗的坚持。
“来到社会做什么?毕业后做一个怎样的人?”虽然即将毕业,但是这两个问题将常伴左右。第一个问题的答案已经深深写在自己三年大学生活的美好回忆之中,而第二个问题,将是我今后不断反省自我并思考未来的信条。
学无止境,无论每天往返于公司和住所,还是奔走于实验室与宿舍之间,作为一个职员或者学生,无时无刻不在接受新的知识、观点、理念。即便是创造社会价值,也仍需要不断补给养分。于此,作为刚刚走出校园的人,我将牢记于心。
最后,真诚期望每一个已经出现在或是即将出现在我不同人生阶段却是同一条生活轨迹的师长、亲友、战友们,能够始终拥有美好幸福的生活状态、以及一颗热忱于探索未知和真理的心,同时也是对自己未来生活的期冀。
第四篇:基于机器视觉智能交通灯控制系统
机器视觉的论述作业
题
目 :
基于机器视觉智能交通灯控制系统
学院名称 :
电气工程学院
专业班级 :
姓
名 : 学
号 :
时 间 : 绪论.........................................................3 2 基于机器视觉的智能交通灯系统设计.............................3 3 智能交通灯控制策略...........................................5 3.1 模糊控制...............................................5 3.2 智能交通灯模糊控制策略.................................5 3.3 解模糊化算法...........................................6 4 系统硬件设计.................................................6 4.1 摄像头的安装和特性.....................................6 4.2 视频采集模块设计.......................................8 4.3 DSP控制处理模块设计...................................9 4.4 信号灯驱动模块设计.....................................9 4.5 电源模块设计..........................................10 5 系统软件设计及调试..........................................11 5.1 软件总体设计方案......................................11 5.2 视频采集模块的软件设计................................12 5.3 系统调试..............................................13 6 总结........................................................13 7 参考文献........................................................................................................13 绪论
随着社会经济的发展,城市车辆数量迅速增长,交通拥挤日益严重,造成的交通事故和环境污染等负面效应也日益突出。城市交通问题直接制约着城市的建设和经济的增长,与人们的日常生活密切相关。通常交通阻塞大都是由于城市路口实际通行能力不足所造成的,路口交通问题逐步成为经济和社会发展中的重大问题,为此世界大多数国家都在进行智能交通灯控制系统的研究。
本文的目的是对基于机器视觉的智能交通灯控制系统进行了研究。基于机器视觉的智能交通灯控制系统对路口交通灯进行智能控制,根据各相位车流量大小,智能分配红绿灯时间,彻底改变了传统交通灯控制方式的不足。目前由于城市路口交通信号灯的控制策略不理想,导致了路口实际通行能力下降,停车次数比较多,车辆通过路口的延误时间较长,容易造成不必要的拥堵。改善交通灯控制策略,来提高路口的实际通行能力,这是城市交通控制中需要解决的主要问题。自从计算机控制系统应用于交通灯控制以来,硬件设备的不断更新和改进,智能化和集成化成为城市道路交通信号控制系统的研究趋势,而路口交通灯控制系统是智能交通系统中的关键点和突破口。基于机器视觉的智能交通灯系统设计
基于机器视觉的智能交通灯控制系统是由摄像机、视频采集模块、DSP控制处理模块、信号灯驱动模块、电源模块、时钟模块、复位模块和信号灯组等组成,其组成框图如2.1图所示
图2.1系统组成框图
系统中摄像机是用来拍摄路口车辆视频,是路口车流量获取的基础设备,其
拍摄的视频图像质量高低直接影响到系统对交通灯控制的精度。摄像机的选择决定着视频的质量,所以一般要选择稳定性高,分辨率符合系统要求的摄像机。目前摄像机主要分为两种,一种是电荷耦合器件_℃CD图像传感器;一种是互补性氧化金属半导体—CMoS图像传感器。CCD图像传感器是由很多感光单位组成的,其表面受到光线照射时,产生的电荷将由感光单位反映在组件上,所有感光单位产生的电信号组合在一起,就能够形成一幅完整的图画。而CMOS图像传感器的制造技术与工艺和制造普通计算机芯片的技术非常类似,CMOS中同时存在着N级和P级半导体,这两个半导体之间互补效应能够产生的电流信号,能够被处理芯片记录,同时将其解读成影像,形成一幅图画。画。比较CCD和CMOS的结构,ADC(放大兼类比数字信号转换器)的位置和数量是最大的不同。通常CCD摄像头每曝光一次,当快门关闭之后立即进行像素的转移处理,将其每一行中的每一个像素的电信号依次送到“缓冲器"中,再输入到放大器中进行放大,然后串联ADC输出;而CMOS的设计中每个像素旁直接连着ADC,对电信号进行放大同时转换成数字信号。CCD与CMOS的特性比较如下表2-1 表2-1 CCD和CMOS的比较
通过对CCD和CMOS的特性进行比较,以及视频处理系统对视频图像的要求,本文采用CCD摄像机JAB.55 15EB作为视频输入部分的图像传感器。智能交通灯控制策略
3.1 模糊控制
模糊控制是将模糊理论引入控制领域,将人的经验形式化模型化,采用模糊逻辑的近似推理方法,通过计算机系统代替人对被控对象进行有效的实时控制。模糊控制系统是由模糊规则基、模糊推理、模糊化算子和解模糊化算子组成,其组成框图如图3.1所示。
图3.1 模糊控制的组成框图
模糊化是对系统的输入量进行论域变换,将精确量转化成模糊输入信息的过程。由于实际过程中的输入值通常为连续变化的,必须将其范围分成有限个模糊集,并与输入量相对应,然后通过隶属函数求出输入量对各模糊集合的隶属度,将普通变量转化为模糊变量,完成了模糊化工作。
3.2 智能交通灯模糊控制策略
模糊控制过程是将实际检测的当前方向车辆排队长度进行模糊量化处理,映射到输入论域的模糊集合,根据实践经验确定模糊控制规则,进行模糊推理,再经清晰化处理转为绿灯延长时间的精确量,实现交通灯智能控制。通常情况下,在某一方向红灯时间内该车道的车流量在停车线后的排队长度越长而绿灯方向车流量不多,为了保证下一周期车辆通行最大化,就得适当延长下一周期的绿灯时间。反之,当前绿灯方向的车流量较多而当前红灯方向车道的车流量在停车线
后的排队长度较短,就得适当减少下一周期的绿灯时间,以确保路口车辆通行量的最大化。考虑到司机和行人心理承受能力,不至于在其等待过程中产生焦急烦躁的情绪,路口的红绿灯周期不能过长,通常可以设置一个最大绿灯时间,比如120S。如果系统已经执行了最大绿灯过,立即进行相位切换,当前方向绿灯进入黄闪状态,一般设定为3秒,然后执行红灯状态。当路口的车流量较小时,信号周期则比较短,但一般也要设定一个最小绿灯时间,女1:120S,否则车辆和行人由于来不及通过路VI而影响交通安全n时间,不考虑当前方向还有多少辆车等待通过。
3.3 解模糊化算法
通过对被控制量的模糊化,根据模糊控制规则进行推理,做出模糊决策,得到模糊控制的输出量,这个输出量为模糊量,而被控对象最终只能接受精确的控制量,所以必须将输出的模糊量转化为精确的控制量,将其转化为精确量的过程通常称之为解模糊化。也就是从模糊量变为清晰量的过程,即把通过模糊推理得到的输出量的模糊集合,一一映射到输出量的普通集合。解模糊的方法有通常有最大隶属度法、平均最大隶属度法、取中位数法以及加权平均法。系统硬件设计
4.1 摄像头的安装和特性
(1)所采集车辆视频图像质量的高低将直接影响到系统对交通灯控制的精度,而决定视频质量的关键因素在于CCD摄像头的选择和安装。本文采用CCD摄像机JAB-5515EB,可以在室外恶劣环境下全天候工作,其性能如表4-表4-1 JAB-5515EB摄像头的特性
(2)摄像头的安装直接影响到视频采集的过程,而且安装摄像头的位置既要不能对交通产生任何影响,又要满足视频采集模块的需求。图4.1为两相位路口示意图,摄像头的安装位置应在图中A、B、C、D点的上方高于7米为宜。视频图像处理只针对车道,所以可视角度只需满足横向覆盖整个车道,纵向能够覆盖车辆排队信息的长度即可。
图4.1 城市路口示意图
4.2 视频采集模块设计
本设计中的视频采集模块主要分为视频输入和视频处理两个部分,其功能是利用图像传感器将物体的光信号转换成模拟的视频电信号,然后利用视频解码芯片将视频模拟信号转化成数字视频信号输入到DSP的视频处理前端。模拟视频信号主要分为PAL和NTSC两种制式,在将模拟视频信号直接转换成数字信号的时
候,通常需要用到视频解码芯片,本设计中选择TI公司的TVP5150视频解码芯片来主要用来完成模拟视频信号到数字视频信号的转换以及对图像亮度、色度的预处理等。
4.3 DSP控制处理模块设计
DSP控制处理模块作为系统的主控模块,以TMS320DM6437为核心,由视频处理前端、DDR2存储器、EMIF接121电路、以太网接口电路、12C总线和JTAG接口电路组成,其设计框图如图4.2所示
图4.2 DSP控制处理模块设计框图
视频处理前端用来接收TVP5150发送的数字视频信号,DDR2存储器用来存储程序和数据,EMIF接口电路可以外接NAND Flash用于固化程序和数据,以太网接口电路用于DM6437与外接设备之间的通信,I2C总线对TVP5150内部存器进行初始化设置,JTAG接121电路主要用来连接DSP仿真器,进行程序的载和系统的调试与仿真。芯片DM6437用于控制各个外围功能芯片及完成算法处理。
4.4 信号灯驱动模块设计
LED交通信号灯驱动模块设计以LM3407芯片核心,其输入电压范围4.5V-30V,并且能够提供精准的恒定电流输出,本文所需电压为24V,电流为350mA,以驱动高功率发光二极管(LED)。常用LED交通灯的灯盘内LED数量约在100-200个
之间,本文采用119个LED灯通过串并联结合的方式进行连接。每个LED工作电压为3.3V,工作电流为20mA,结合驱动芯片参数和灯盘的规格,采用并联17组,每组串联7个LED灯的方式,对交通信号灯进行驱动。交通灯连接方式如图4.4所示。
图4.4 LED交通灯连接图
4.5 电源模块设计
整个系统的硬件平台采用+5V外接电压进行供电,但是根据各个模块对电源电压需求各有不同,因此对整个硬件平台的供电设计很重要。DM6437内核使用1.05V1.20V两种工作电压,当其工作频率为600MHz/500MHz/400MH时要求供电电压为1.20V,当工作频率为400MHz时要求供电电压为1.05V。设计中的内核工作频率为600MHz,故而采用1.2V的内核供电电压。而系统中TVP5150视频解码芯片的内核和外接的以太网物理层芯片等均是采用1.5V电源进行供电,其他则供电电压为3.3V。在给系统上电的过程中,首先应当确内核电源先上电。关闭电源的时候,同样先进行内核电源的关闭,然后再关闭I/O电源等。若只对CPU内核进行供电,而对周围I/O没有进行供电,则不会对芯片产生任何损害。假如周围的I/O均获得供电而对CPU内核没有进行供电,导致芯片缓冲/驱动部分的晶体管在未知状态下进行工作,对系统会产生一定的损害。电源模块设计功能框
图如图4.5所示。
图4.5 电源模块功能框图 系统软件设计及调试
5.1 软件总体设计方案
基于机器视觉的智能交通灯控制系统的功能主要通过C语言进行软件编程来实现的,其软件设计部分主要包括视频采集模块软件、DSP控制处理模块软件以及交通灯智能控制软件。其软件总体设计框图如图5.1所示。视频采集模块以TVP5150芯片为核心,接收来自摄像头的视频,进行和亮度等预处理,然后将模拟视频信号转换为数字视频信号,其软件设计主要包括TVP5150芯片的配置、芯片的工作过程;DSP控制处理模块要对车辆视频进行图像处理,计算出精确的车流量,根据模糊控制算法智能控制红绿灯时间。DSP控制处理模块软件设计主要包括模块主要寄存器配置、CACHE大小配置及存储器映射、EMIF接口初始化设计
和DSP代码优化原则;交通灯智能控制软件主要通过交通灯智能控制策略,根据车流量大小,对绿灯时间进行自动控制。
图5.1 软件总体设计框图
5.2 视频采集模块的软件设计
视频采集模块开始工作时,首先读取跳线设置,进行视频捕捉参数的更新,然后建立视频输入通道,同时为将要获取的视频信息分配内存缓冲区,再将获取的每一个视频帧发送给视频解码芯片TVP5150。当TVP5150发送结束信号,表示视频采集过程结束。在本文中,CCD摄像头为PAL制式,输入的宽度是704,输入高度是576,帧速是25帧/秒。所以将JPI设置成PAL制式,输入的视频数据像素为704x 576。设计中将帧间间隔设置为25,故最大的帧速是每秒25帧。其每个像素点的大小是2Bit,因此一帧数据大小为792KB。再进行视频输入通道的创建,创建过程是通过DSP/BIOS系统创建视频前端微型驱动的管道对象,采用
扩展的GIO函数FVID-create()来进行创建。
5.3 系统调试
电源、时钟和复位模块属于整个系统的最小系统部分,是硬件电路的基础,所以首先对其进行调试,以保证其正常工作。电源模块的调试主要通过万用表进行测量,当电源电路上电后,测试其输出端口电压是否符合系统的要求,分别为3.3V、1.8V和1.2V。时钟模块在调试过程中采用逻辑分析仪进行观测输时钟频率,确定其是否满足系统所需时钟频率的要求,视频解码芯片TVP5150所需的时钟输入频率为14.31818MHz,CPU核所需的时钟输入为27MHz。复位模块也采用万用表进行测量,当按下复位键输出为低电平有效,否则输出为高电平。总结
本文根据国内外交通灯控制系统的研究现状,分析研究了目前常用的交通灯控制策略,提出了一种基于机器视觉的智能交通灯控制系统的设计方案,将模糊控制理论引入交通灯控制系统中,提出了智能交通灯控制策略。采用了TI公司推出的TMS320C6000系列中性能较高的TMS320DM6437芯片,结合其它外围电路,设计了智能交通灯控制系统的硬件,并进行了相应的软件设计。最后进行了实验和调试。
基于机器视觉的智能交通灯控制系统涉及的领域很多,技术手段较为复杂。由于作者知识有限以及相关条件的限制,有些方面研究不够深入,还有待于进一步改进与完善。参考文献
【1】刘智勇.智能交通控制理论及其应用【M】.北京:科学出版社,2003.
【2】高海军.城市交通信号控制研究[D】.北京:中国科学院自动化研究所,2005.
【3】陈俊.基于DSP的汽车视觉系统研究【D】.武汉:武汉理工大学,2009.
【4】王史春.基于模糊控制算法实现信号灯智能化研究【J】.电子科技.2009 【5】李玉.交通信号灯的模糊控制[D】.辽宁:辽宁科技大学,2008.
第五篇:毕业论文---智能交通灯控制系统设计
目 录
摘 要...........................................................2 第一章 概述.....................................................3 1.1交通灯的发展及现状...........................................3 1.2 单片机说明.................................................3 第二章 智能交通灯的设计原理.....................................6 2.1 智能交通灯的设计框图........................................6 2.2智能交通灯的设计方案及改进措施...............................6 第三章 智能交通灯电路设计.......................................6 3.1控制器的系统框图.............................................7 3.2智能交通灯控制系统电路图.....................错误!未定义书签。3.3工作原理....................................................8 第四章 智能交通灯软件系统设计..................................14 4.1 智能交通灯的软件设计流程图.................................14 4.2 程序源代码.................................................14 第五章 智能交通灯方案的仿真....................................14 小结...........................................................18 致谢词.........................................................18 参考文献.......................................................18 附 录..........................................................21 附录A:智能交通灯控制程序:....................................21
摘 要
本文介绍的是一个基于PROTEUS的智能交通灯控制系统的设计与仿真,系统根据交通十字路口双车道车流量的情况控制交通信号灯按特定的规律变化。
本文首先对智能交通灯的研究意义和智能交通灯的研究现状进行了分析,指出了现状交通灯存在的缺点,并提出了改进方法。智能交通灯控制系统通常要实现自动控制和在紧急情况下能够手动切换信号灯让特殊车辆优先通行。本文还对AT89C51单片机的结构特点和重要引脚功能进行了介绍,同时对智能交通灯控制系统的设计进行了详细的分析。最后利用PROTEUS软件,通过其平台对交通灯控制系统进行了仿真,仿真结果表明系统工作性能良好。
关 键 词:PROTEUS、AT89C51单片机、智能交通灯;
第一章 概述
1.1交通灯的发展及现状
中国车辆数量不断增加,交通管制的工作量越来越大,利用计算机代替人进行高效交通管理是必然的发展趋势,而让计算机控制的交通灯拥有类似人类的感知智能,具有很强的现实意义,比如通过摄像机让交通灯控制系统获得视觉感知功能,就可以代替人类的眼睛,使系统根据所“看到”交通情况自适应改变管制策略,提高了交通管理的自动化水平,使得交通更高效、更顺畅。
目前设计交通灯的方案有很多,有应用CPLD设计实现交通信号灯控制器方法;有应用PLC实现对交通灯控制系统的设计;有应用单片机实现对交通信号灯设计的方法。目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1.两车道的车辆轮流放行时间相同且固定,在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。2.没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。
1.2 单片机说明
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
1.2.1 AT89C51单片机硬件结构
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的单片机芯片,它采用静态CMOS 工艺制造8位微处理器,最高工作频率位24MHZ。AT89C5外形及引脚排列如图1所示:
图1
1.2.2管脚说明
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写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)这是由于上拉的缘故。
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端保持高电平时,此间内部程序存储器。
XTAL1和XTAL2:反向振荡放大器的输入及内部时钟工作电路的输入。
第二章 智能交通灯的设计原理
2.1 智能交通灯的设计框图
2.2智能交通灯的设计方案及改进措施
交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧急转换开关。
针对道路交通拥挤,交叉路口经常出现拥堵的情况利用单片机控制技术提出了软件和硬件设计方案及两点改进措施。
1、根据各道路路口车流量的大小自动调节通行时间。
2、考虑特殊车辆通行情况,设计紧急切换开关。
AT89S51单片机有2计数器,6个中断源,能满足系统的设计要求。用其设计的交通灯也满足了要求,所以本文采用单片机设计交通灯。
第三章 智能交通灯电路设计
根据设计任务和要求,可画出该控制器的原理框图, 为确保十字路口的交通安全,往往都采用交通灯自动控制系统来控制交通信号。其中红灯(R)亮,表示禁止通行;黄灯(Y)亮表示暂停;绿灯(G)亮表示允许通行。
3.1控制器的系统框图如图3所示
图3
3.2智能交通灯控制系统电路图 智能交通灯电路图如图4所示:
图4
交通灯系统由四部分组成:车检测电路,信号灯电路,时间显示电路,紧急转换开关。
3.3工作原理
绿灯的放行时间与车辆通过数量不成正比。比如说20秒内每车道可以通过20辆车,40秒内每车道却可以通过45辆车。因为这有一个起步的问题,还有一个黄灯等待问题。也就是说,绿灯放行时间越长,单位时间通过车辆的数量就越多。我们来计算一下,每车道通行20秒内可以通过20辆车,一个红绿灯循环是40秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要50秒,即50秒内通行的车辆为40辆。通过一辆车的平均时间是1.25秒。如果每次车辆通行的时间改为40秒,40秒内每车道可以通过45辆,一个红绿灯循环是80秒(单交叉路口),加上每次状态转换的黄灯5秒(一个循环要两次转换),即一个红绿黄灯循环要90秒,即90秒内通行的车辆为90辆。通过一辆车的平均时间只需1秒。显然在车辆拥挤的情况下绿灯的通行时间越长,单位时间内通行的车辆越多,可以有效缓解车辆拥堵问题。我设定了绿灯通行时间的上限为40秒。在非拥挤时段绿灯的通行时间的下限为20秒,当交叉路口双方车辆较少时通行时间设为20秒,这样可以大大缩短车辆在红灯面前的等待时间。当交叉路口双方车辆较多时通行时间设为40秒。3.3.1车检测电路
用来判断各方向车辆状况,比如:20秒内可以通过的车辆为20辆,当20秒内南往北方向车辆通过车辆达不到20辆时,判断该方向为少车,当20秒内北往南方向车辆通过车辆也达不到20辆时,判断该方向也为少车,下一次通行仍为20秒,当20秒时间内南往北或北往南任意一个方向通过的车辆达20辆时证明该状态车辆较多,下一次该方向绿灯放行时间改为40秒,当40秒内通过的车辆数达45辆时车辆判断为拥挤,下一次绿灯放行时间改仍为40秒,当40秒车辆上通过车辆达不到45辆时,判断为少车,下次绿灯放行时间改为20秒,依此类推。绿灯下限时间为20秒,上限值为40秒,初始时间为20秒。这样检测,某次可能不准确,但下次肯定能弥补回来,累积计算是很准确的,这就是人们常说的“模糊控制”。因为路上的车不可能突然增多,塞车都有一个累积过程。这样控制可以把不断增多的车辆一步一步消化,虽然最后由于每个路口的绿灯放行时间延长而使等候的时间变长,但比塞车等候的时间短得多。本系统的特点是成本低,控制准确。十字路口车辆通行顺序如图5所示:
图5十字路口车辆通行顺序
由于南往北,北往南时间显示相同,所以只要一个方向多车,下次时间就要加长东往西,西往东也一样,显示时间选择如表1。
表1 显示时间选择
车辆情况
本次该方向通行时间 20秒 20秒 20秒 20秒 20秒 20秒 20秒 20秒
下次该方向通行时间 20秒 40秒 40秒 40秒 20秒 40秒 40秒 40秒
本次该方向通行时
间 40秒 40秒 40秒 40秒 40秒 40秒 40秒 40秒
本次该方向通行时间 20秒 40秒 40秒 40秒 20秒 40秒 40秒 40秒 南往北少车,北往南少车
南往北少车,北往南多车
南往北多车,北往南少车
南往北多车,北往南多车
东往西少车,西往东少车
东往西少车,西往东多车
东往西多车,西往东少车
东往西多车,西往东多车
3.3.2信号灯电路
信号灯用来显示车辆通行状况,下面以一个十字路口为例,说明一个交通灯的四种状态见图6。每个路口的信号的的转换顺序为:绿—>黄—>红 绿灯表示允许通行,黄灯表示禁止通行,但已经驶过安全线的车辆可以继续通行,是绿灯过渡到红灯提示灯。红灯表示禁止通行。绿灯的最短时间为20秒,最长时间为40秒,红红最短时间为25秒,最长时间为45秒,黄灯时间为5秒。
图6交通信号灯运行状态
3.3.3时间显示电路
在交通信号灯的正上方安装一个可以显示绿灯通行时间,红灯等待时间的显示电路,采用数码管显示电路是一种很好的方法。由于东往西方向和西往东方向显示的时间相同,南往北方向和北往南方向显示的时间也相同,所以只需要考虑四位数码管显示电路,其中东西方向两位,南北方向两位,两位数码管可以时间的时间为0-99秒完全可以满足系统的要求,数码管连接方法如图7所示。
图7 数码管连接方法
下面我们用这种方法显示交通灯的时间,南北方向要显示20秒,东西方向要显示25秒,那么我们先给P0口送2的共阴极码即5BH,让第一位2要显示的 位码GND段为低电平,其它三位的控制端都接高电平,那么第一位就显示2,其它三位不亮。让其显示1MS后再给P0口送0的共阴极码即3FH,让第二位要显示0的位码GND段为低电平,其它三位的控制端都接高电平,那么第二位就显示0,其它三位不亮。依此类推分别送完第一位2,第二位0,第三位2,第四位5,每一位点亮1MS一个扫描周期为4MS,一秒时间就要扫描250次其程序如下: MOV R6,#250;显扫描次数 LOOP:
MOV P0,#5BH;送2的共阴极码 CLR P2.0;第一位显示2 ACALL D1MS;延时1MS SETB P2.0;灭第一位
MOV P0,#3FH;送0的共阴极码 CLR P2.1;第二位显示0 ACALL D1MS;延时1MS SETB P2.1;灭第二位
MOV P0,#5BH;送2的共阴极码 CLR P2.2;第三位显示2 ACALL D1MS;延时1MS SETB P2.2;灭第三位
MOV P0,#6DH;送5的共阴极码 CLR P2.3;第四位显示5 ACALL D1MS;延时1MS SETB P2.3;灭第四位
DJNZ R7,LOOP;不够一秒,继续扫描 NEXTNUMBER;到一秒显示下一个数 D1MS:;1MS延时程序
STAT1:MOV R4,#2 MOV R3,#250 DJNZ R3,$ DJNZ R4,STAT1 RET
3.3.4紧急转换开关电路
一般情况下交通灯按照车流量大小合理分配通行时间,按一定规律变化,但考虑紧急车通行车况,设计紧急通行开关,下面简述单片机的中断原理。
1、Mcs—51的中断源
8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序 11 入口地址如表2所示:
表2 中断源程序入口 中断源的服务程序入口地址 中断源 外中断0 定时/计数器0 外中断1 定时/计数器0 串行口中断
2、中断的处理流程
CPU响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般都如下所述:
1)现场保护和现场恢复:
中断是在执行其它任务的过程中转去执行临时的任务,为了在执行完中断服务程序后,回头执行原先的程序时,知道程序原来在何处打断的,各有关寄存器的内容如何,就必须在转入执行中断服务程序前,将这些内容和状态进行备份——即保护现场。中断开始前需将有关寄存器的内容压入堆栈进行保存,以便在恢复原来程序时使用。中断服务程序完成后,继续执行原先的程序,就需把保存的现场内容从堆栈中弹出,恢复积存器和存储单元的原有内容,这就是现场恢复。如果在执行中断服务时不是按上述方法进行现场保护和恢复现场,就会是程序运行紊乱,单片机不能正常工作。
2)中断打开和中断关闭:
在中断处理进行过程中,可能又有新的中断请求到来,这里规定,现场保护和现场恢复的操作是不允许打扰的,否则保护和恢复的过程就可能使数据出错,为此在进行现场保护和现场恢复的过程中,必须关闭总中断,屏蔽其它所有的中断,待这个操作完成后再打开总中断,以便实现中断嵌套。
3)中断服务程序:
既然有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容,一般以子程序的形式出现,所有的中断都要转去执行中断服务程序,进行中断服务。
4)中断返回:
入口地址 0003H 000BH 0013H 001BH 0023H 执行完中断服务程序后,必然要返回,中断返回就是被程序运行从中断服务程序转回到原工作程序上来。在MCS-51单片机中,中断返回是通过一条专门的指令实现的,自然这条指令是中断服务程序的最后一条指令。
5)交通灯中的中断处理流程:(1)现场保护和现场恢复:
有特殊车辆要通过时就要进行中断,在中断之前,先将交通灯中断前情况保护好,当中断执行后再恢复现场,包括信号灯和时间显示电路。
(2)中断打开和中断关闭:
为了使特殊车辆通行按一下打开中断开关就可以打开中断,关闭中断开关就关闭中断。
(3)中断服务程序:
有中断产生,就必然有其具体的需执行的任务,中断服务程序就是执行中断处理的具体内容:即如果南北方向有特殊车辆要求通过,南北方向转换为绿灯,东西方向为红灯;如果东西方向有特殊车辆要求通过,东西方向转换为绿灯,南北方向为红灯。
(4)中断返回:
执行完中断服务程序后,必然要返回,即回交通灯信号回到中断前状态,显示时间也和中断前一样。
第四章 智能交通灯软件系统设计
4.1 智能交通灯的软件设计流程图
智能交通灯的软件设计流程图如图8所示:
图8交通灯的软件设计流程图
4.2 程序源代码
见附录
第五章 智能交通灯方案的仿真
PROTEUS嵌入式系统仿真软件在设计时已经注意到和单片机各种编译程序的整合了,如它可以和Keil ,Wave6000等编译模拟软件结合使用。由于Wave6000使用方便,具备强大的软件仿真和硬件仿真功能。把Proteus和Wave6000结合起来调试硬件就方便多了,这里就是采用“Proteus+Wave6000”的仿真方法,具体步骤如下:
1)首先运行PROTEUS VSM 的ISIS,选择Source→Define Code Generation Tool 菜单项,将出现如图8所示定义代码生成工具对话框。
图9 定义代码生成工具对话框
在Tool下拉列表框中选择代码生成工具,在这一示例中,电路中的微处理器为8051系列单片机,因此选择ASEM51, 单击Browse按钮,选取Wave6000的安装路径。单击OK按钮,结束代码生成工具的定义。
选择Source→Add/Remove Source File 菜单项,将出现Add/Remove Source Code Files对话框,如图10所示:
图10添加/删除源文件对话框
2)在Code Generation Tool 选项区,单击下三角按钮,选择ASEM51工具 单击New按钮,将出现如图11所示对话框。
图11 创建源代码对话框
选择用Wave6000创建好的AA.ASM文件,即完成了文件的创建。就这样当用Wave6000对AA.ASM 文件进行更改时每一次运行PROTEUS VSM 的ISIS对电路进行仿真时Wave6000都会对AA.ASM进行编译,AA.HEX文件也会随时更新。
电路图绘制完成后, 再添加AT89C51 的应用程序。将鼠标移至AT89C51 上, 单击鼠标右键使之处于选中状态, 在该器件上单击左键, 打开如图12所示的对话框。在 Program File 栏添加编译好的十六进制格式的程序文件AA.hex(可以接受3 种格式的文件),给AT89C51输入晶振频率,此处默认为12MHZ,单击OK 按钮完成程序添加工作, 下面就可以进行系统仿真了。单击主界面下方的按钮开始系统仿真。PROTEUS VSM 所进行的是一种交互式仿真, 在仿真进行中可以对各控制按钮、开关等进行操作, 系统对输入的响应会被真实的反映出来如图13。
图12 AT89C51添加程序文件
图13 交通灯仿真界面
小
结
在毕业设计的整个过程中,我深切地体会到:实践是理论运用的最好检验。毕业设计是对我们3年所学知识的一次综合性测试和考验,无论是在动手能力方面还是理论知识的运用能力方面,都使得我有了很大的提高。
经过总结和分析,我意识到在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。本次毕业设计为我的大学生活画上了圆满的句号,为我即将的工作和生活奠定了坚实的基础。
致谢词
在整个毕业设计中,我得到了学校电子实验室的大力支持,为我提供了各种所需的仪器设备。感谢学校为我们安排了本次毕业设计,让我们的理论知识和实际操作经验更加紧密的结合了在一起;同时又拓展了我们的知识面。同时十分感激夏老师对我的悉心指导和帮助,使我能够顺利的完成此次毕业设计。此次毕业设计让我从中受益匪浅,最后再次感谢老师对我的培养和教育!
参考文献
[1] 徐爱钧 《智能化测量控制仪表原理与设计》(第二版)[M].北京:北京航空航天大学出版社,2004年;
[2] 吴金戌、沈庆阳、郭庭吉 《8051单片机实践与应用》[M].北京:清华大学出版社,2002年;
[3] 谢自美 《电子线路设计·实验·测试》(第三版)[M].武汉:华中科技大学出版社,2006年;
[4] 谢维成、杨加国 主编 《单片机原理与应用及C51程序设计》[M].北京:清华大学出版社,2006年;
[5] 杨立、邓振杰、荆淑霞 《微型计算机原理与接口技术》[M].中国铁道出版社,2006年;
[6] 黄智伟 《全国大学生电子设计竞赛技能训练》 [M].北京:北京航空航天大学出版社,2007年 [7] 高峰,《单片微型计算机与接口技术》[M].北京:科学出版社,2003; [8] 华成英、童诗白 主编,《模拟电子技术基础》(第四版)[M].高等教育出版社,2006年.[9] 黄海萍、陈用昌 编 《微机原理与接口技术实验指导》[M].北京:国防工业出版社,2004年
[10] 黄智伟: 《凌阳单片机设计指导》,北京: 北京航空航天大学出版社,2007年
附 录
附录A:智能交通灯控制程序:
ORG 0000H A_BIT EQU 20H;用于存放南北十位数 B_BIT EQU 21H;用于存放南北十位数 C_BIT EQU 22H;用于存放东西十位数 D_BIT EQU 23H;用于存放东西位数
TEMP1 EQU 24H;用于存放第一二南北状态要显示的时间 TEMP2 EQU 25H;用于存放第一二东西状态要显示的时间 TEMP3 EQU 26H;用于存放第三第四南北状态要显示的时间 TEMP4 EQU 27H;用于存放第三第四南北状态要显示的时间 LJMP MAIN ORG 0003H;外部中断0入口 LJMP INT0;跳转到外部0中断 ORG 0013H;外部中断1入口 LJMP INT1;跳转到外部1中断 INT0: MOV A,P1;外部0中断 PUSH ACC MOV A,P2;中断保护 PUSH ACC MOV P1,#0FFH;清除先前状态 MOV P2,#0FFH CLR P1.0 CLR P1.4;南北通行,东西禁止通行 CLR P1.6 CLR P2.3 JNB P3.2 ,$;判断是否还在中断状态 POP ACC MOV P2,A;返回中断前状态 POP ACC MOV P1,ACC RETI;中断返回 INT1:MOV A,P1;外部1中断 PUSH ACC;中断保护 MOV A,P2 PUSH ACC MOV P1,#0FFH;清除先前状态 MOV P2,#0FFH CLR P1.2 CLR P2.1 CLR P1.3;东西通行,南北禁止通行 CLR P1.5 JNB P3.3 ,$;判断是否还在中断状态 POP ACC MOV P2,A;返回中断前状态 POP ACC MOV P1,A RETI;中断返回 MAIN: ORG 0100H;初始情况 MOV P1,#0FFH MOV P2,#0FFH;灭所有灯
MOV TMOD,#55H;计数方式方式1 MOV IE,#85H;开中断 MOV TEMP1,#20;MOV TEMP2,#25 MOV TEMP3,#25 MOV TEMP4,#20 STAR: MOV P1,#0FFH MOV P2,#0FFH;灭所有灯 MOV A,24H;将显示时间送A CJNE A,#20,T40T;判断时间,选初始值
T20T:;南北通行要显示的时间为20的计数器初始值 CLR TF0;清TF0 CLR TF1;清TF1 MOV TH1 ,#0FFH;送20秒时的初始值
MOV TL1 ,#0FCH;在些设计20秒6辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP20;跳到20秒
T40T:;南北通行要显示的时间为40的计数器初始值 CLR TF0;清TF0 CLR TF1;清TF1 MOV TH1,#0FFH;送40秒时的初始值
MOV TL1 ,#0F8H;在些设计40秒8辆为多车 MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP40;跳到40秒 TEMP20:;TEMP1=20情况 SETB TR0;开始计数 SETB TR1 CLR P1.2 CLR P2.1;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#20;南北要显示的时间,MOV TEMP2,#25;东西要显示的时间 STLOP: ACALL DISPLAY1;调用显示
DEC TEMP1;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT;若显示时间不为0保持现在状态 LJMP STAR2;若显示时间为 0跳到第二状态 NEXT: LJMP STLOP STAR2:;状态1 SETB P1.2 CLR P1.1;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05;南北要显示的时间,MOV TEMP2,#05;东西要显示的时间,STLOP2: ACALL DISPLAY1;调用显示
DEC TEMP1;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT2;若显示时间不为0保持现在状态 JB TF1 ,T40;判断南北是否多车 JB TF0 ,T40;判断北南是否多车
MOV TEMP1,#20;少车下次显示时间为20秒 LJMP STAR3;跳到状态3 T40: MOV TEMP1,#40;多车下次显示时间为40秒 LJMP STAR3;若显示时间为 0跳到第三状态 NEXT2:LJMP STLOP2 TEMP40:;TEM=40 程序 SETB TR0;开始计数 SETB TR1 CLR P1.2 CLR P2.1;南北通行,东西禁止通行 CLR P1.3 CLR P1.5 MOV TEMP1,#40;南北要显示的时间,MOV TEMP2,#45;东西要显示的时间 STLOP11: ACALL DISPLAY1;调用显示
DEC TEMP1;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT11;若显示时间不为0保持现在状态 LJMP STAR22;若显示时间为 0跳到第二状态 NEXT11: LJMP STLOP11 STAR22:;状态1 SETB P1.2 CLR P1.1;南北黄灯,东西禁止通行 SETB P1.3 CLR P1.4 MOV TEMP1,#05;南北要显示的时间,MOV TEMP2,#05;东西要显示的时间,STLOP22: ACALL DISPLAY1;调用显示
DEC TEMP1;时间够一秒显示时间减1 DEC TEMP2 MOV A,TEMP1 CJNE A,#0,NEXT22;若显示时间不为0保持现在状态 JB TF1 ,T401;判断是否多车 JB TF0 ,T401 MOV TEMP1,#20;少车下次显示时间为20秒 LJMP STAR3 T401:MOV TEMP1,#40;多车下次显示时间为40秒 LJMP STAR3;若显示时间为 0跳到第三状态 NEXT22:LJMP STLOP22 STAR3: MOV A,26H CJNE A,#25,T40T1;判断时间,选初始值
T20T1:;南北通行要显示的时间为20的计数器初始值 CLR TF0;清溢出位 CLR TF1 MOV TH1 ,#0FFH;给初值 MOV TL1 ,#0FCH MOV TH0 ,#0FFH MOV TL0 ,#0FCH LJMP TEMP320 T40T1:;南北通行要显示的时间为40的计数器初始值 CLR TF0;CLR TF1 MOV TH1,#0FFH;给初值 MOV TL1 ,#0F8H MOV TH0 ,#0FFH MOV TL0 ,#0F8H LJMP TEMP340 TEMP320:;状态三
SETB TR1;南北停止计数 SETB TR0;东西开始计数
SETB P1.1;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#25;南北要显示的时间,MOV TEMP4,#20;东西要显示的时间,STLOP33: ACALL DISPLAY;调用显示
DEC TEMP3;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT33;若显示时间不为0保持现在状态 LJMP STAR34;若显示时间为 0跳到第四状态 NEXT33:LJMP STLOP33 STAR34:;状态四 SETB P2.3 CLR P2.2 SETB P1.6;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05;南北要显示的时间,MOV TEMP4,#05;东西要显示的时间,STLOP34: ACALL DISPLAY;调用显示
DEC TEMP3;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT34;若显示时间不为0保持现在状态 JB TF1 ,T402 JB TF0 ,T402 MOV TEMP3,#25 LJMP STAR T402: MOV TEMP3,#45 LJMP STAR NEXT34: LJMP STLOP34 TEMP340 : SETB TR1;南北停止计数 SETB TR0;东西开始计数
SETB P1.1;东西通行,南北禁止通行 CLR P1.0 SETB P1.1 CLR P1.0 SETB P1.5 CLR P1.6 SETB P2.1 CLR P2.3 MOV TEMP3,#45;南北要显示的时间,MOV TEMP4,#40;东西要显示的时间,STLOP43: ACALL DISPLAY;调用显示
DEC TEMP3;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP4 CJNE A,#0,NEXT43;若显示时间不为0保持现在状态 LJMP STAR44;若显示时间为 0跳到第四状态 NEXT43:LJMP STLOP43 STAR44:;状态四 SETB P2.3 CLR P2.2 SETB P1.6;东西黄灯,南北禁止通行 CLR P1.5 MOV TEMP3,#05;南北要显示的时间,MOV TEMP4,#05;东西要显示的时间,STLOP44: ACALL DISPLAY;调用显示
DEC TEMP3;时间够一秒显示时间减1 DEC TEMP4 MOV A,TEMP3 CJNE A,#0,NEXT44;若显示时间不为0保持现在状态 JB TF1 ,T403 JB TF0 ,T403 MOV TEMP3,#25 LJMP STAR T403: MOV TEMP3,#45 LJMP STAR NEXT44: LJMP STLOP44;显示 DISPLAY1: MOV A,TEMP1;将南北要显示的数存放到A MOV B,#10;B=10 DIV AB;A除以B商存A,余数B MOV B_BIT,A;将A放到20H MOV A_BIT,B;将B放到21H MOV A,TEMP2;将东西要显示的数存放到A MOV B,#10;B=10 DIV AB;A除以B商存A,余数B MOV C_BIT,A;将A放到22H MOV D_BIT,B;将B放到23H MOV DPTR ,#NUMT;MOV R0,#2;R0=2 DPL11: MOV R1,#250;R1=250 DPLOP1: MOV A,A_BIT;将南北要显示的10位数送A MOVC A,@A+DPTR;查表
MOV P0,A;显示南北10位数 CLR P2.7 ACALL D1MS;延时1MS SETB P2.7;灭南北10位数
MOV A,B_BIT;将南北要显示的个位数送A MOVC A,@A+DPTR;查表
MOV P0,A;显示南北个位数 CLR P2.6 ACALL D1MS;延时1MS SETB P2.6;灭南北个位数
MOV A,C_BIT;将东西要显示的10位数送A MOVC A,@A+DPTR;查表
MOV P0,A;显示东西10位数 CLR P2.5 ACALL D1MS;延时1MS SETB P2.5;灭东西10位数
MOV A,D_BIT;将东西要显示的个位数送A MOVC A,@A+DPTR;查表
MOV P0,A;显示东西东西位数 CLR P2.4 ACALL D1MS;延时1MS SETB P2.4;灭东西个位数 DJNZ R1,DPLOP;循环扫描 DJNZ R0,DPL1 RET;;等待1秒返回 显示 DISPLAY: MOV A,TEMP3;将南北要显示的数存放到A MOV B,#10;B=10 DIV AB;A除以B商存A,余数B MOV B_BIT,A;将A放到20H MOV A_BIT,B;将B放到21H MOV A,TEMP4;将东西要显示的数存放到A MOV B,#10;B=10 DIV AB;A除以B商存A,余数B MOV C_BIT,A;将A放到22H MOV D_BIT,B;将B放到23H MOV DPTR ,#NUMT;MOV R0,#2;R0=2 DPL1: MOV R1,#250;R1=250 DPLOP: MOV A,A_BIT;将南北要显示的10位数送A MOVC A,@A+DPTR;查表 MOV P0,A;显示南北10位数 CLR P2.7 ACALL D1MS;延时1MS SETB P2.7;灭南北10位数
MOV A,B_BIT;将南北要显示的个位数送A MOVC A,@A+DPTR;查表
MOV P0,A;显示南北个位数 CLR P2.6 ACALL D1MS;延时1MS SETB P2.6;灭南北个位数
MOV A,C_BIT;将东西要显示的10位数送A MOVC A,@A+DPTR;查表
MOV P0,A;显示东西10位数 CLR P2.5 ACALL D1MS;延时1MS SETB P2.5;灭东西10位数
MOV A,D_BIT;将东西要显示的个位数送A MOVC A,@A+DPTR;查表
MOV P0,A;显示东西东西位数 CLR P2.4 ACALL D1MS;延时1MS SETB P2.4;灭东西个位数 DJNZ R1,DPLOP;循环扫描 DJNZ R0,DPL1 RET;等待1秒返回
D1MS: MOV R7,#250;1MS延时程序 DJNZ R7,$ RET;
1到10对应电路图数码管表
NUMT: DB 7EH,48H,67H,6BH,59H DB 3BH,3FH,68H,7FH,7BH
中英文摘要---目录---引言----研究现状---背景----思路---整体原理---部分电路介绍--程序介绍----总结---------------谢词==参考文献===附件 可以联系我,有程序。仿真,原理图,等
.南北方向绿灯和东西方向绿灯不能同时亮,如果同时亮,则立刻关闭信号灯系统,并报警。同理,东西向绿灯与南北向转弯灯也不能同时亮。
2.南北及南北转弯红灯亮并保持40秒,同时东西绿灯亮,但只保持35秒,到35秒时东西绿灯闪3次(每周期为1秒)后熄灭,继而东西黄灯亮,并保持2秒,到2秒后,东西黄灯灭,东西红灯亮,同时南北红灯熄灭和南北绿灯亮;南北转弯红灯继续亮着。
3.东西及南北转弯红灯亮并保持30秒,同时南北绿灯亮,但只保持25秒,到25秒时南北绿灯闪亮3次(每周期1秒)后熄灭,继而南北黄灯亮,并保持2秒,到2秒后,南北黄灯灭,南北红灯亮,同时南北向转弯红灯灭,绿灯亮。
4.南北向转弯绿灯亮25秒,同时南北向和东西向红灯亮并保持25秒,待南北向转弯绿灯亮25秒后,红灯亮起,东西向红灯灭,绿灯亮,并保持35秒,南北向红灯继续亮着,后接2.中继续循环。
5.各灯能手动控制也能自动转换,并且能周而复始的进行工作。绪论
1.1 道路交通控制的发展背景
随着经济发展,城市化速度加快,机动车辆占有量急剧增加,由此引发出日益严重的交通问题:交通拥挤甚至堵塞,交通事故频繁,空气和噪声污染严重,公共运输系统效率下降等。解决这一问题通常有两种办法,一种是修路造桥,这对道路交通状况的改善是一种最直接的办法,但它需要巨额的投资,且在城市中心区受拆迁的限制,很难实施.另一种是在现有的道路交通条件下,实施交通控制和管理,充分发挥现有道路的通行能力,大量事实已经证明这种方法的有效性。
通常,一个经验丰富的交通警察能在极短的时间内把一个交叉路口的交通阻塞缓解或解除,但他的作用范围往往局限于单个交叉路口。而现代的道路交通非常复杂,常常是几个或几十个甚至是成百上千个路口互相关联,在这种情况下,任何一个经验丰富的交通警察都无能为力了.因此,人们越来越关注把先进的科学技术用于交通管理,从而促进了交通自动控制技术的不断发展。
1.2 道路交通控制的目的和作用
道路交通控制的目的可定义为:在确定的行政规定约束下,采用合适的营运 方法来确保公共和私人运输方式具有最佳的交通运行状态。围绕这一目的研制出的道路交通控制系统,把受控对象看成一个整体,采用对交通流科学地时间分割的方法,最大限度地保证交通流运动的连续性,使受控区域的交通流减少冲突,同时平稳地、有规则地运动。道路交通控制的作用主要表现为以下几个方面:
(1)改善交通秩序,增加交通安全。
(2)减少交通延误,提高经济效益。
(3)降低污染程度,保护生态环境。(4)节省能源和土地消耗。
1.3 我国城市交通特点分析
人、车、路是构成城市交通的三大要素,要探讨我国城市交通特点,必须从分析这三大要素的基本特点着手。
1.3.1 人的交通素质
人是交通的主体,与世界发达国家相比,我国人的社会交通意识还没有真正形成,少数领导部门交通观念淡薄,对城市交通建设在国民经济建设中的重要性认识不足,交通政策时有失误。机动车驾驶员文化水平低,又缺乏系统训练,尤其缺乏心理素质,感知能力和判断能力的培养,因而,对人,车的运动特征不能很好掌握。行人与非机动车驾驶员普遍不懂,甚至漠视交通法规。交通管理人员交通工程和心理学知识贫乏,感知,分析交通信息和处理特发性事件的能力不强。总的来看,我国人的交通素质距离现代化城市交通要求还相差甚远,而交通与人密切相关,城市交通中出现的问题几乎都离不开人的因素,因此,想方设法提高全社会的文化素质,健全交通法规,加强交通宣传教育,增强人的社会交通意识,培养良好的交通习惯,使参与交通的每个人都认识到交通的重要性,自觉顺应交通规律,是建立我国城市交通控制系统,使之有效运行的前提条件。
1.3.2 城市道路状况
路是交通的物质基础,有路才能通车,行人。我国是一个文明古国,许多城市已有上千年的历史,城市布局和道路结构是在漫长的历史进程中逐步形成的,近几年虽然作了些改建和扩建,但毕竟还难以冲破原来的基本格局。我国城市道路普遍存在的弊端是:
(1)路网密度低
(2)交通干道少
(3)路口平面交叉
1.3.3 我国城市交通的特殊性
道路状况与车辆状况的综合作用形成了我国城市交通的特殊性,主要表现是:
城市路网稀,干道少,间距大,市区人口稠密,出行需求集中,迫使车辆集中于少数干道上行驶。至于中小城市,干道特征更为明显,往往只有一两条干道贯穿全市,而其他支路上交通量极小。从流量变化情况来看,除外围过境干道外,都是有一定规律的,高峰小时基本上都集中在几个时段内。
我国城市机动车车种繁杂,从50年代的老式车到80年代的新型车,从大货车到小轿车 30 都在一个平面上行驶,不少城市拖拉机还是一种主要运输工具,前面一辆旧车挡道,尾随的新型车只能跟着爬行,过交叉口时经常出现启动慢的车挡住启动快的车,使交通工程师精心设计的交通配时方案不能很好发挥效益。
1.4 我国城市交通控制策略探讨
本着不盲目照搬现成系统的经验,或一味追求控制策略与原理的新颖性,而是根据我国城市交通的实际情况,从简从易,逐步完善的原则,我国城市交通控制策略宜采取:
(1)根据干道特征明显的特点,系统以线控制为主。
(2)根据干线上交通流有规律可循的特点,系统以定时控制为主。
(3)根据车种混杂和路网稀,路口间距相差悬殊,难以建立精确交通预测模型的特点,系统应加强路口应变能力,强化感应控制功能。
(4)根据机非混合交通特点,系统要处理好自行车交通,常用的方法有: 1)实现自行车与机动车的分离
自行车与机动车的突出矛盾在于混行,要在我国现有道路基础上,开辟出规模庞大的自行车道路网是不现实的,但各城市确有许多小街小巷可利用,对它们进行合理规划,造成自行车专用道,消除或减少自行车与机动车的相互干扰是可能的。
2)增设左转相位
对机动车干扰最大的是 左 转自行车,在自行车高峰时,对左 转自行车流较大的路口增设 左 转相位,时间不需很长便可利用自行车启动,疏散快的特点,使左转自行车基本通过。
3)控制信号分时使用
自行车与机动车高峰出现时间是交错的,在自行车高峰期间,自行车是构成交通流的主体,系统进行信号配时优化时,可优先考虑自行车。
(5)可能的系统结构
确定系统的硬件结构主要是依据系统控制策略要求,系统成本分析和城市的财政承受能力,同时也要受到系统管理维护人员技术水平的制约。纵合考虑,我国城市采用两级控制结构为宜,即由中心计算机和终端——交通信号控制器组成,信号配时方案存于终端中,终端将处理好的检测器数据和交叉口工作状态数据定时传送至中心计算机,中心计算机经优化计算后给出下一个配时方案指令,由交通信号控制器执行。这种结构形式的突出优点是:
1)减少数据传输量,控制中心与终端间只需低容量传输系统即可有效地进行数据通信。
2)主要控制和处理功能由终端——交通信号控制器完成,大大减轻了中心计算机的负担,只要配置功能稍强的微机系统即可建成一个相当规模的控制系统。
按上述设想建立起来的将是一个旨在解决机非混合交通问题,以线控制为主,方案选择型实时自适应城市交通控制系统。
(6)可能出现的动向
1)系统功能的缩小
我国建制市370多个,绝大多数还难以投入足够的资金建立一个功能齐备的控制系统,从几个引进系统的实施情况来看,并不需要,实际上也没有用到这些系统的全部功能,因此,系统发展的一个可能趋势是系统功能的缩小,国外也提出了基本系统的概念,基本系统不以交通应答作为基本设计依据,只是按照一天内划分的时段或根据控制中心的人工干预执行简单的时间表,因而不需车辆检测器和大量的数据处理。功能缩小后的系统不需配置动态地图显示板等外围设备,便于控制中心主机微机化,耗资少,使用方便,对我国大中城市有很吸引力。
2)交通信号控制器微机化、系列化
我国有2000多个县,每个县都有几个城镇,计算机区域控制目前对这些小城市来说是不现实的,以微机为基础的交通信号控制器功能灵活,便于实现无电缆协调控制,必将成为小城市交通控制的主体。大中小城市对信号控制器的使用要求不同,对交通信号控制器的微机化,系列化势在必行。
本论文正是以此为出发点,对单片机控制的交通信号灯模型作了较详尽的介绍。