模拟交通灯设计报告毕业设计Word格式文档下载.docx
《模拟交通灯设计报告毕业设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《模拟交通灯设计报告毕业设计Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
再按一次解除东西紧急通行状态。
按压“南北紧急键”,则南北方向绿灯,东西方向红灯;
再按一次后解除南北紧急通状态。
c)按压“东西转向键”,则东西转向灯开;
按压“南北转向键”,则南北转向灯开。
3)交通灯显示状态
东西方向(简称A方向)
南北方向(简称B方向)
状态说明
红灯
黄灯
绿灯
转向
灭
亮
A方向通行,B方向禁行
闪烁
A方向警告,B方向禁行
A方向左转
A方向禁行,B方向通行
A方向禁行,B方向警告
B方向左转
3.总体设计方案框图
二、方案原理
采用单片机STC89C52的I/O口P1口通过锁存器控制共阴极数码管,,在十字路口的四组红、黄、绿交通灯及转向灯中,由单片机P0口管脚分别控制,由于交通灯为发光二极管且阳极通过限流电阻和电源正极连接,因此I/O口输出低电平时,与之相连的灯会亮,并通过数码管显示时间倒计时。
紧急情况的工作模式转换由人工控制
计时是利用单片机内部的一个T0定时器/计数器来实现,它的处理过程如下:
首先设定单片机内部的一个定时器/计数器工作于定时方式,先对它的定时进行校准,校准为50ms,之后以20个定时溢出为标准为1s进行计时同时根据条件语句与循环语句对数码管的计时及LED的燃亮进行调控。
本系统共用4个两位数码管,数码管显示的信息用8个内存单元存放,这8个内存单元称为显示缓冲区。
在本系统中数码管显示采用软件译码动态显示。
在存储器中首先建立一张显示信息的字段码表,显示时,先从显示缓冲区中取出显示的信息,然后通过查表程序在字段码表中查出所显示的信息的字段码,从P1口输出,同时在P2口将对应的位选码输出选中显示的数码管,就能在相应的数码管上显示显示缓冲区的内容。
三、硬件设计
1.单片机最小系统
89C52单片机是硬件电路最核心的部分,时钟电路晶振使用11.0592HZ
2.电源电路设计
电源使用自制+5V直流稳压电源
3.数码管显示电路
数码管采用两位共阴极数码管,东西南北各一个
4.LED交通灯电路
东西南北各三个红黄绿LED模拟交通灯,外加一个转向灯
四、软件设计
1.程序流程图
2.程序清单
#include<
reg52.h>
sbitkey1=P2^0;
sbitkey2=P2^1;
sbitkey3=P2^2;
sbitkey4=P2^3;
sbitkey5=P2^4;
unsignedcharcodetable[]={
0x3f,0x0c,0x76,
0x5e,0x4d,0x5b,
0x7b,0x0e,0x7f,0x5f};
voiddelayms(unsignedintx);
voiddisplay(unsignedcharx,unsignedchary,unsignedchara,unsignedcharb);
voidkeyscan();
unsignedcharkeycts,num1,num11,num22,ge1,shi1,ge2,shi2;
charnum60=60;
voidmain()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
while
(1)
{
if(TR0==0)
{
if(keycts==1)
P0=0xbe;
elseif(keycts==2)
P0=0xee;
elseif(keycts==3)
P0=0xbb;
elseif(keycts==4)
P0=0x3e;
else
P0=0xb6;
}
else
{
if(num60-40>
0)
{
num11=num60-30;
num22=num60-35;
}
elseif(num60-35>
{
num11=num60-30;
num22=num60-35;
if(num1<
=10)
P0=0xde;
else
P0=0xfe;
}
elseif(num60-30>
{
num22=num60-30;
P0=0x3e;
}
elseif(num60-10>
{
num11=num60-5;
num22=num60;
P0=0xbb;
}
elseif(num60-5>
{
num11=num60-5;
num22=num60;
if(num1<
P0=0xbd;
else
P0=0xbf;
}
else
num11=num60;
P0=0xb6;
}
shi1=num11/10;
ge1=num11%10;
shi2=num22/10;
ge2=num22%10;
display(shi1,ge1,shi2,ge2);
keyscan();
}
}
voiddisplay(unsignedcharx,unsignedchary,unsignedchara,unsignedcharb)
P1=table[x];
P3=0xfe;
delayms
(1);
P1=table[y];
P3=0xfd;
P1=table[a];
P3=0xfb;
P1=table[b];
P3=0xf7;
voiddelayms(unsignedintx)
unsignedinti,j;
for(i=x;
i>
0;
i--)
for(j=110;
j>
j--);
voidT0_time()interrupt1
num1++;
if(num1==20)
{
num1=0;
num60--;
if(num60==0)
num60=60;
voidkeyscan()
if(key1==0)
delayms(10);
if(key1==0)
while(!
key1);
TR0=~TR0;
keycts=1;
if(key2==0)
if(key2==0)
key2);
keycts=2;
if(key3==0)
delayms(10);
if(key3==0)
key3);
keycts=3;
if(key4==0)
if(key4==0)
key4);
keycts=4;
if(key5==0)
if(key5==0)
key5);
keycts=5;
五、总结
我们对本次制作的作品还是比较满意的,经过两周的设计、分析和焊接,我们做出了所需要的东西,终于圆满地完成此次比赛的作品。
虽然在这个过程中也遇到一些困难,但通过与同学的交流和自己查资料,我们对电子设计有了更深的体会。
通过本次比赛我们感觉到自己对各种元器件的功能特性不是很熟悉,在用到所需元件时都要进行查阅,在今后不仅要增加自己的理论学习,还要进一步提高自己的动手能力,全面地提高自己的电子设计的能力。
在这次比赛中,我们要感谢芯空科协给我们提供的机会,在此期间,我们不仅学到了许多新的知识,而且也开阔了视野,提高了自己的动手能力。
最后,我还要感谢帮助过我的学长,他们也为我们解决了不少我们不太明白的设计上的难题。
六、参考文献
【1】郭天祥《新概念51单片机C语言教程》电子工业出版社,2011
【2】杨欣,莱·
诺克斯,王玉凤,刘湘黔《电子设计从零开始(第二版)》清华大学出版社,2010
【3】谭浩强《C程序设计(第三版)》清华大学出版社,2005
附件:
模拟交通灯器件清单
名称
规格
数量
单片机
STC89C52
1
单片机插座
40引脚
锁存器
74HC573
锁存器插座
20引脚
晶振
11.0592MHZ
按键
6
数码管
两位共阴极
4
发光二极管
红、黄、绿
16
变压器
220V~6V
杜邦线
若干
二极管
1N4007
电解电容
1000μF
2
瓷介电容
0.1μF
3
30pF
电阻
10k
4.7k
1k
350Ω
9
排阻
焊锡丝