基于51单片机的交通灯毕业设计.docx
《基于51单片机的交通灯毕业设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的交通灯毕业设计.docx(10页珍藏版)》请在冰豆网上搜索。
基于51单片机的交通灯毕业设计
摘要
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本系统采用单片机AT89S52为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
本设计就是采用单片机模拟十字路口交通灯的各种状态显示以与倒计时时间。
关键字:
AT89S52交通灯
1设计任务和内容
1.1设计任务
设计交通灯。
要求甲车道和乙车道两条交叉道路上的车辆交替运行(以红绿灯指示),每次通行时间设为0—30秒(可预置);变更车道以前,黄灯先亮5秒钟,黄灯亮时,要求每秒钟闪亮一次;两个车道均以减计数方式显示时间。
1.2设计内容
(1)设计并绘制硬件电路图
(2)制作PCB并焊接好元器件
(3)编写程序并将调试好的程序固化到单片机中
1.3交通管理的方案设计
甲、乙两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯。
红灯亮禁止通行,绿灯亮允许通行。
黄灯闪亮提示人们注意绿、红灯的状态即将切换。
指示灯燃亮的方案如表1。
倒计时
30S
5S
30S
5S
……
甲道
红灯亮
红灯亮
绿灯亮
黄灯闪亮
……
乙道
绿灯亮
黄灯闪亮
红灯亮
红灯亮
……
表1
2硬件设计
使用AT89S52制作的单片机进行设计,5V直流稳压电源供电,采用数码管显示时间,红,绿,黄灯交替显示的方案,
2.1整体设计方框图
整个设计以AT89S52单片机为核心,由数码管显示,红,绿,黄灯显示,复位电路组成。
硬件模块如图1。
图1
芯片简介
AT89S52芯片简介
其引DIP封装的脚图如图2:
图2
主要性能
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器[1]、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
2.2电路模块
2.2.1数码管显示模块
数码管显示使用动态显示方式,是指一位一位地轮流点亮每个数码管的二极管[2],即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效。
红绿灯显示模块
本实验有四种状态:
状态1,乙绿灯亮,甲红灯亮,此时P2.0口[3]的高低电平为0x8f。
状态2,乙黄灯亮,甲红灯亮,此时P2.0口的高低电平为0xaf。
状态3,乙红灯亮,甲绿灯亮,此时P2.0口的高低电平为0xd8。
状态4,乙红灯亮,甲黄灯亮,此时P2.0口的高低电平为0xdb。
再采用显示子程序与延时子程序可使红绿灯灯按照要求点亮。
2.3复位电路
复位方式有多种,本设计采用按键复位。
接线图如图3。
图3
2.4晶振电路
晶振电路原理图如图4:
图4
选取原则:
传统做法,但能够实现所需,即最简单也最是实用。
电容选取30pF,晶振为12MHz[4]。
3软件设计
3.1软件流程图如图5
4心得体会
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程,以与在常用编程设计C语言的掌握方面都能向前迈了一大步。
本次课程设计的过程是艰辛的,不过收获却是很大的。
在设计过程中,会出现了一些问题,但都是常见的小问题,如:
代码中双引号的使用并不是在英语书写状态下,输入字母出错等,在调试时出现异常,不过这些都是经常性错误,经过调试修改都一一解决,程序顺利完成,并实现了其功能。
综合课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识。
在此,由于自身能力有限,在课程设计中碰到了很多的问题,我通过查阅相关书籍、资料以与和周围同学交流,还初步学回了proteus[5]的基本操作。
由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。
但是在我们设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则的效率还不是很高等等,这需要在实践中进一步完善。
当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我。
附录Ⅰ参考文献
[1]伍时和.数字电子技术基础.:
清华大学,2009
[2]吴友宇.模拟电子技术基础.:
清华大学,2009
[3]李朝青.单片机原理与接口技术.四川:
电子科技大学,2005
[4]蔡朝洋.单片机控制实习与专题制作,:
电子工业,2004
[5]赵广林.电路设计与制版,:
人民邮电,2005
附录Ⅱ程序设计
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitg1=P2^7;
sbity1=P2^6;
sbitr1=P2^5;
sbitr2=P2^4;
sbity2=P2^3;
sbitg2=P2^2;
uinttt,t1,t2;
uinta,b,c,d,m,k,p1,p2,l,Y1,Y2;
uintt[3]={35,30,5};
ucharcodes[4][10]={{0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9},
{0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9},
{0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9},
{0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79}};
voiddelay(uintn)
{uinti,j;
for(i=0;ifor(j=0;j<100;j++);
}
voiddis(void)
{a=t1%10;
P0=s[0][a];delay(5);
b=t1/10;
P0=s[1][b];delay(5);
c=t2%10;
P0=s[2][c];delay(5);
d=t2/10;
P0=s[3][d];delay(5);
}
voidmain()
{
t1=35;t2=30;p1=1;p2=2;r1=0;g2=0;g1=1;y1=1;y2=1;r2=1;Y1=1;Y2=1;
tt=0;
EA=1;//开总中断
ET0=1;//开定时器0中断
TMOD=0x01;//设置定时器0为工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;//启动定时器0
EX0=1;//开外部中断0
IT0=1;
EX1=1;//开外部中断1
IT1=1;
while
(1)
l=Y1;Y1=g1;g1=r1;r1=l;}
if(t2==0)
{t2=t[p2];
p2++;
if(p2==3)p2=0;
l=Y2;Y2=g2;g2=r2;r2=l;}
if(Y1==0)
if(tt<10)
y1=0;
elsey1=1;
if(Y2==0)
if(tt<10)
y2=0;
elsey2=1;
}
voidexter0()interrupt0
{
t[0]=t[0]+5;t[1]=t[1]+5;
}
voidexter1()interrupt2
{dis();
}}
voidtime0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==20)
{tt=0;t1--;t2--;}
if(t1==0)
{t1=t[p1];
p1++;
if(p1==3)p1=0;
{
t[0]=t[0]-5;t[1]=t[1]-5;
}
附录Ⅲ电路设计总图