基于单片机的交通灯设计.docx
《基于单片机的交通灯设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通灯设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于单片机的交通灯设计
单片机课程设计
课题:
交通信号钟的设计
系别:
电气与信息工程学院
专业:
电气工程及其自动化
姓名:
hx
学号:
091411
hncj
2014年01月01日
成绩评定·
一、指导教师评语
二、评分
课程设计成绩评定
成绩:
(五级制)
指导教师签字年月日
目录
一、设计目的1
二、设计要求1
三、总体方案1
四、各部分电路设计3
4.1单片机模块3
4.2红绿灯模块4
4.3时间显示模块5
4.4强制通行模块6
4.5复位模块6
五、整体电路图7
六、程序8
七、设计总结13
参考文献14
一、设计目的
1)、增进对单片机的感性认识,加深对单片机理论方面的理解;
2)、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、A/D、D/A、串行口通讯等;
3)、了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。
二、设计要求
1)、设计一个十字路口的交通灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间为25秒;
2)、要求黄灯先亮5秒,才能变换运行车道;
3)、黄灯亮时,要求每秒钟闪亮一次;
三、总体方案
目前交通信号钟的设计方案有很多,主要有以下两种:
1)、应用PLC实现对交通信号钟的设计;
2)、应用单片机实现对交通信号钟的设计。
由于应用单片机进行设计不但可以满足设计要求,而且具有结构简单、可靠性高、成本低等特点,所以本设计使用单片机作为核心原件辅以其他元器件来进行交通信号钟的设计。
在本设计中,不仅实现了课程设计所要求的基本功能,而且在基础功能的上进行了改进,增加了以下功能:
1)、红绿灯时间显示的功能;
2)、人行道红绿灯控制的功能;
3)、特殊情况下的强制通行的功能;
根据设计要求分析后得知,此次设计中可设60S为一个周期,在一周期中可分为以下四种状态,如下表所示,其中“0”表示点亮,“1”表示关断,“X”表示状态不定即闪烁状态。
表3.1运行状态表
时间T
东西方向
人行道
东西方向
车行道
南北方向
人行道
南北方向
车行道
红
绿
绿
黄
红
红
绿
绿
黄
红
60≥T>35
1
0
0
1
1
0
1
1
1
0
35≥T>30
1
X
1
X
1
0
1
1
1
0
30≥T>5
0
1
1
1
0
1
0
0
1
1
5≥T>0
0
1
1
1
0
1
X
1
X
1
当出现强制通行状态时,状态如下表所示:
表3.2强制通行状态表
强制通行方向
东西方向
人行道
东西方向
车行道
南北方向
人行道
南北方向
车行道
红
绿
绿
黄
红
红
绿
绿
黄
红
东西方向
1
0
0
1
1
0
1
1
1
0
南北方向
0
1
1
1
0
1
0
0
1
1
STC89C52单片机共有4个8位通用I/O口,根据设计,单片机各I/O口与元器件连线如下表所示:
表3.3单片机P0口连线表
P0口
0
1
2
3
4
5
6
7
数码管
东西方向段选A
东西方向段选B
东西方向段选C
东西方向段选D
东西方向段选E
东西方向段选F
东西方向段选G
位选1
表3.4单片机P1口连线表
P1口
0
1
2
3
4
5
6
7
红绿灯
南北方向车行道红
南北方向人行道红
南北方向车行道黄
南北方向车行道绿
东西方向人行道红
东西方向人行道红
东西方向车行道黄
东西方向车行道绿
南北方向人行道绿
东西方向人行道绿
表3.5单片机P2口连线表
P2口
0
1
2
3
4
5
6
7
数码管
南北方向段选A
南北方向段选B
南北方向段选C
南北方向段选D
南北方向段选E
南北方向段选F
南北方向段选G
位选2
表3.6单片机P3口连线表
P3口
0
1
2
3
4
5
6
7
东西方向强制通行键
南北方向强制通行键
四、各部分电路设计
4.1单片机模块
STC89C52是STC公司生产的一种使用MCS-51内核的低功耗、高性能CMOS8位微控制器。
STC89C52可以为众多嵌入式控制应用系统提供高效、灵活的解决方案。
它的主要特性如下:
1)、指令代码完全兼容传统8051单片机;
2)、工作电压:
5.5V~3.3V/3.8V~2.0V;
3)、工作频率范围:
0~40MHz;
4)、用户应用程序空间为8K字节;
5)、片上集成512字节RAM;
6)、通用I/O口(32个),P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻;
7)、无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序;
8)、共3个16位定时器/计数器。
即定时器T0、T1、T2;
9)、外部中断4路,下降沿中断或低电平触发电路;
10)、工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)。
(a)常见封装形式(b)最小系统
图4.1STC89C52
4.2红绿灯模块
本设计采用有红、黄、绿LED组成的红绿灯电路。
其中三个红绿灯为车道红绿灯,两个为人行道红绿灯。
各LED均采用采用共阳极的接法。
查阅相关资料发现各颜色LED的工作电流电压范围稍有差异,为简便起见在此设计中取串联电阻为200欧姆。
此数值可基本保证各色LED均正常工作。
图4.2红绿灯模块
4.3时间显示模块
此部分电路采用两位八段数码管(共阴)进行数字显示。
数码管价格便宜,使用简单。
通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。
图4.3时间显示模块
4.4强制通行模块
此部分电路是通过按键强制改变红绿灯的通行状况,由两个微动开关分别实现东西、南北方向的强制通行。
4.5复位模块
此设计中的复位模块采用按键电平复位电路。
图4.4复位模块
五、整体电路图
图5.1整体电路
六、程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitFEW=P3^3;//强制东西通行
sbitFSN=P3^4;//强制南北通行
ucharTH,TL;//定义初值
ucharSN=30,EW=25,NN=60;//设置时间
uintT,ii,SL;//1S定时循环次数,动态显示位选控制,闪亮控制
ucharcodeDisCode[]
={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴码
ucharDisbuff0[2];
ucharDisbuff1[2];
voidinit()//4ms定时器
{
TMOD=0x01;
TH=(65536-4000)/256,
TL=(65536-4000)%256;
TH0=TH;//赋初值
TL0=TL;
EA=1;//开中断
ET0=1;
TR0=1;
}
voidNUMEW()//东西时间计算
{
Disbuff1[0]=EW/10;//十位
Disbuff1[1]=EW%10;//个位
}
voidNUMSN()//南北时间计算
{
Disbuff0[0]=SN/10;//十位
Disbuff0[1]=SN%10;//个位
}
voidDisplay()//数码管动态显示
{
ucharii;
if(ii==0)//数码管第二位显示
{
P0=0x80;
P2=0x80;
P2=DisCode[Disbuff0[0]]|0x80;
P0=DisCode[Disbuff1[0]]&0x7f;
}
else//数码管第一位显示
{
P0=0x80;
P2=0x80;
P2=DisCode[Disbuff0[1]]&0x7f;
P0=DisCode[Disbuff1[1]]|0x80;
}
ii=~ii;//取反,位选控制
}
voidLIGHT()//红绿灯常亮
{
if(NN==60)//东西通行
{
SN=30;
EW=25;
P1=0x5E;
}
if(EW==0&&NN==35)//东西闪烁5S赋值
{
EW=5;
}
if(NN==30)//重新赋值
{
SN=25;
EW=30;
P1=0xB3;
}
if(SN==0&&NN==5)//南北闪烁5S赋值
{
SN=5;
}
}
voidBEAM()//闪亮
{
if(NN<=35&&NN>30)
{
if(SL)
{
P1=0x6E;
}
elseP1=0xFE;
}
if(NN<=5)
{
if(SL)
{
P1=0xB5;
}
elseP1=0xF7;
}
}
voidFORCE()//强制通行
{
if(FEW==0)//强制东西通行键按下
{
TR0=0;//关中断
P0=0x3f;//显示时间置0
P2=0x3f;
P1=0x5e;//东西绿灯,南北红灯
while(~FEW);//强制东西通行键抬起
TR0=1;//开中断
}
if(FSN==0)//强制南北通行键按下
{
TR0=0;//关中断
P0=0x3f;//显示时间置0
P2=0x3f;
P1=0xb3;//南北绿灯,东西红灯
while(~FSN);//强制东西通行键抬起
TR0=1;//开中断
}
}
voidmain()//主函数
{
init();//4MS定时器
while
(1)//检测强制通行键
{
FORCE();
}
}
voidtimer0()interrupt1//中断服务程序
{
TH0=TH;//重新赋值
TL0=TL;
T++;
if(T==250)//250次循环构成1S
{
T=0;
SL=~SL;
LIGHT();//红绿灯常亮
EW--;
SN--;
NN--;
if(NN==0)//重新赋值
{
NN=60;
}
}
NUMEW();//东西数字计算
NUMSN();//南北数字计算
Display();//显示
BEAM();//闪亮
}
七、设计总结
短短一周的课程设计结束了,虽然名义上的课程设计仅仅一周时间,但是为了这个课程设计我大概准备了一个月的时间。
回想刚拿到课程设计题目时的迷茫,到准备过程中对硬件设计多次修改,对软件部分的测试与完善,心中感慨颇多。
交通灯,一个生活中很常见的事物,没想到在实际的设计中包含着这么多知识,既有软件编写方面的,又有硬件选择、电路焊接方面的。
句法结构、程序结构错不得,元器件的引脚功能、电阻电容大小错不得,电路板的连线与焊接更是一点也马虎不得。
作为一名大三的学生,我觉课程设计是一项十分有意义的教学安排。
在已度过的近三年的大学生活里我们在课堂上掌握的多是一些理论,这些理论和现实是有很大差距的。
而通过这次课程设计我的收获和认识颇多,首先,我再一次的加深巩固了对已有的知识的理解及认识,在实际设计中才发现书本上理论性的东西与在实际运用中的还是有一定的出入,所以有些问题不但要深入地理解,而且要在实践中不断地更正曾有的错误思维。
其次,在这次课程设计中,第一次将课本知识运用到了实物设计中去,无论是搜集、整理材料,还是设计电路进行仿真,或者是进行最后电路的焊接,对我来讲都是一种锻炼,培养了我们理论与实际问题相结合的能力以及自学、查阅搜集资料的能力。
最后,这此课程设计使我明白了自己与将来工作所需技能之间的差距,明确了日后的学习目的。
这对今后的学习大有裨益。
在这次课程设计里,从课设选题到搜集资料,到敲定方案,到各个单元的设计及反复修改,再到整体电路的整合,无不凝聚着老师的亲切关怀和悉心指导,更有同班同学热心帮助。
可以这样说如果没有老师和同学的帮助我不可能顺利地完成这次课程设计,在这里对他们表示深深的谢意。
参考文献
[1]张毅刚、彭喜元.单片机原理及应用.北京:
高等教育出版社,2009
[2]郭天祥.51单片机C语言教程.北京:
电子工业出版社,2009
[3]杨恢先.单片机原理及应用.北京:
人民邮电出版社,2006
[4]张毅刚.单片机原理及应用.北京:
高等教育出版社,2008年5月