模拟交通信号灯1.docx
《模拟交通信号灯1.docx》由会员分享,可在线阅读,更多相关《模拟交通信号灯1.docx(11页珍藏版)》请在冰豆网上搜索。
模拟交通信号灯1
工程技术综合实践
项目设计报告
项目:
模拟交通信号灯
A-3
西安理工大学工程训练中心
2012年6月10日
一概述
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本系统采用单片机AT89S51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。
系统除基本的交通灯功能外,还具有倒计时等功能,较好的模拟实现了十字路口可能出现的状况。
软件上采用汇编语言编程,主要编写了主程序,LED数码管显示程序,中断程序延时程序等。
经过整机调试,实现了对十字路口交通灯的模拟
二总体设计
通过控制单片机P1口管脚输出高低电平,实现红绿黄灯交替点亮和熄灭,并且用4只数码管显示十字路口两个方向的剩余时间,P0口为位选,P2口段选。
系统的工作符合一般交通灯控制要求。
交通灯控制系统设计
主要由单片机系统,发光二极管,数码管组成。
系统可以完成交通灯的基本功能。
系统除了基本功能外,还可以完成倒计时数字显示,使得功能在视觉效果上有更好的控制。
三、电路图及设计文件
1.灯控制电路设计
观察图可以看出:
六组发光二极管(南北,东西各一组红、一组绿、一组黄)通过单片机P1口的高低电平控制。
用510欧姆的排阻起分压作用,让二极管正常发光。
图2LED显示部分
2.倒计时显示电路设计
前面已经分析过相向的灯的状态和倒计时都是相同的,所以为了节省,采用两组四个数码管作为倒计时显示,用三极管驱动数码管
图3数码管显示部分
3.单片机最小系统
单片机最小系统包括晶振和复位系统,晶振连接方式采用片内时钟振荡方式,在单片机18、19脚外接石英晶体和振荡电容,电容值为30p,复位系统接在单片机第九管脚,主要用来完成单片机的复位初始化操作。
图4单片机最小系统
2.2逻辑原理图
由于12个LED来实现红黄绿灯状态;采用两组二个数码管作为倒计时的显示;
图5电路原理图
2.3PCB板设计:
用ProtelDXP生成的PCB图如下:
图6PCB图
3.程序设计
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineC8279XBYTE[0x5FFF]
#defineD8279XBYTE[0x5EFF]
ucharcodenum[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
ucharshu,shu1,t,aa,bb,keys,num1;
bitflag_nbshan,flag_dxshan;
sbitbeep=P2^0;
sbitdx_red=P1^0;//东西红灯
sbitdx_yellow=P1^1;//东西黄灯
sbitdx_green=P1^2;//东西绿灯
sbitnb_red=P1^3;//南北红灯
sbitnb_yellow=P1^4;//南北黄灯
sbitnb_green=P1^5;//南北绿灯
sbitVD1=P1^0;
sbitVD2=P1^1;
sbitVD3=P1^2;
sbitVD4=P1^3;
sbitVD5=P1^4;
sbitVD6=P1^5;
voiddelay(uintz);
voidinit();
voiddisplay();//显示程序
voidcontrol();//控制程序
voidanjianx(uintn);
voidmain()
{
init();
while
(1)
{
control();
}
}
voidinit()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
EX1=1;
IT1=0;//低电平触发
EX0=1;
IT0=0;
C8279=0;//8279的工作方式
C8279=0x2f;//频率
C8279=0xdc;//清除
C8279=0x90;//写RAM
t=0;
}
voidtime()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==10)
{
t=0;
display();
aa++;//标志500ms
if(flag_nbshan==1)VD6=~VD6;//南北绿灯闪的标志
if(flag_dxshan==1)VD3=~VD3;//东西绿灯闪的标志
if(aa==2)
{
aa=0;
num1++;//标志1s
if(shu!
=0)shu--;
}
}
}
voidcontrol()//过程控制程序
{
switch(bb)
{
case0:
shu=30;shu1=27;P1=0xde;while(num1while(num1>27&&num1<=30)flag_nbshan=1;//东西红灯亮,南北绿灯闪
flag_dxshan=0;num1=0;bb=1;break;
case1:
shu=5;shu1=5;P1=0xee;flag_nbshan=0;//东西红灯亮,南北黄灯亮
while(num1case2:
shu=30;shu1=27;P1=0xf3;while(num1while(num1>27&&num1<=30)flag_dxshan=1;//南北红灯亮,东西绿灯闪
flag_nbshan=0;num1=0;bb=3;break;
case3:
shu=5;shu1=5;P1=0xf5;flag_dxshan=0;//南北红灯亮,东西黄灯亮
while(num1}
}
voidzhongduan0()interrupt0
{
P1=0xfc;//东西紧急通行
}
voidzhongduan1()interrupt2
{
P1=0xde;//南北紧急通行
}
voiddisplay()//显示程序
{
C8279=0x87;D8279=num[shu/10];
C8279=0x86;D8279=num[shu%10];
}
三.元器件清单
元器件清单如下表所示:
序号
名称
规格
型号
单位
数量
单价
(元)
1
单片机
直插式
AT89S51
个
1
15
2
IC锁紧座
40P
DIP40
个
1
8
3
晶振
12MHz
49S
个
1
0.5
4
电阻
10K1K
个
7
0.1
5
数码管
0.36英寸
红色共阳
个
4
1
6
按键
6*6*5
个
1
0.5
7
锁存器
DIP20
74HC573
个
1
7
8
排阻
DIP-9
510欧
个
1
1
9
自锁开关
5.8mm*5.8mm
个
1
0.5
10
三极管
NPN
C9013
个
4
0.5
11
LED
Ф5
红黄绿
个
各4
0.6
12
瓷片电容
30P
个
2
0.5
13
电解电容
25v10uf
个
1
0.2
表4元器件清单
总花费:
52.4元
四、测试、数据及结果分析
1.状态灯显示测试
当电路连接完毕后,将写好的测试程序刷写到芯片内,分别给P1口送高电平和低电平,通电即可检测。
检测结果:
交通灯过程如下
1.东西红灯亮,南北绿灯亮,数码管显示30减到0,当最后三秒时,南北绿灯闪烁
2.东西红灯亮,南北绿灯亮5s,数码管数从5减到0
3.南北红灯亮,东西绿灯亮,数码管显示30减到0,当最后三秒时,东西绿灯闪烁
4.南北红灯亮,东西绿灯亮5s,数码管数从5减到0
5.紧急通行:
东西紧急通行时,东西绿灯亮,南北红灯亮。
南北紧急通行时,南北绿灯亮,东西红灯亮。
六总结
经过十五周的努力后,我们通过团结合作终于完成了模拟交通信号灯的项目,从对单片机一窍不通开始,慢慢学习对单片机有了一定的了解和掌握。
我们的项目用单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。
但是在我们设计和调试的过程中还存在一些问题,数码管的部分还不能按照要求实现倒计时,主要原因是硬件设计时没有考虑周到,导致数码管不能按照程序要求变化。