交通信号灯控制系统设计报告.docx
- 文档编号:13549107
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:21
- 大小:165.05KB
交通信号灯控制系统设计报告.docx
《交通信号灯控制系统设计报告.docx》由会员分享,可在线阅读,更多相关《交通信号灯控制系统设计报告.docx(21页珍藏版)》请在冰点文库上搜索。
交通信号灯控制系统设计报告
微机应用系统课程设计报告
(交通信号灯控制系统)
课程小组成员:
1.姓名:
xxxx班级:
xxxxxxxxxx,学号:
xxxxxxxxxx
评语:
成绩:
2.姓名:
xxxx班级:
xxxxxxxxxx,学号:
xxxxxxxxxx
评语:
成绩:
3.姓名:
xxxx班级:
xxxxxxxxxx,学号:
xxxxxxxxxx
评语:
成绩:
一、课题内容及要求:
1.实验内容:
✧设计一个交通信号灯控制系统,要求:
✧初始状态为两个方向的红灯全亮,时间6秒。
✧主干道绿灯亮,支干道红灯亮,主干道通车,时间为20秒。
✧主干道黄灯闪烁,支干道红灯亮,时间为6秒。
✧主干道红灯亮,支干道绿灯亮,支干道通车,时间为15秒。
✧主干道红灯亮,支干道黄灯闪烁,时间为6秒。
✧循环显示。
✧通过按键输入时间,使主干道和支干道通车时间一样。
✧画出硬件连接电路图,说明各个控制信号的作用。
✧画出程序流程图,编写程序,硬件连接调试,直至正确。
✧编写课程设计报告。
2.实验要求
编程实现功能,并撰写课程设计报告一份。
二、硬件设计
1、硬件原理框图:
2、设计电路:
设计电路主要由四部分组成,一是P1口与十二个发光二极管连接电路,二是P0口、部分P2口和部分P3口与8255连接电路,三是8255的PA口、PB口与四个两位数码管的连接电路,四是8255的PC口与矩阵键盘的连接电路。
3、交通灯电路:
设计中采用发光二极管作为交通灯来使用,单片机的I/O接口直接和交通灯(发光二极管)连接。
在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,受单片机P1.0~P1.5控制。
单片机的I/O接口与交通灯电路的具体连接方式为:
P1.0~P1.2分别接东西方向的红、黄、绿共6个放光二极管,P1.3~P1.5分别接南北方向的红、黄、绿共6个发光二极管。
12个发光二极管采用了共阴极的连接方式,因此I/O口输出高电平时,与之相连的发光二极管会亮,I/O口输出低电平时,相应的发光二极管会灭。
交通灯电路如下图所示
4、倒计时显示电路:
该显示装置选用双位数码管来显示交通灯转换的剩余时间,根据控制要求,每个路口需要1个数码管,这样四个路口就要求4个数码管。
我们可以选用共阴型数码管。
四个路口倒计时显示被置在同一时刻显示不同的数字。
电路如下图
5、按键模块:
按键模块主要利用经过8255扩展之后的PC口来控制的。
当有按键被按下时,PC口会产生低电平,按下不同键会调用相应的子程序,根据不同的按键进行相应的处理
6、仿真电路及效果图:
(1)仿真电路:
(2)仿真效果:
7、主要元件清单:
名称
件数
参数
选择理由
电阻
13
220Ω
限流,以免烧坏数码管
发光二极管
12
3色
便于仿真显示
AT89C51
1
低电压,高性能八位微处理器
2位共阴数码管
4
常用数字显示,便于仿真
开关
17
单片机复位及键盘
排阻
1
RESPACK-8
驱动数码管
排针、排线
若干
便于连接电路
晶振
1
12MHz
为单片机工作提供时钟脉冲信号
瓷片电容
2
27pF
防止单片机自激
电解电容
1
10uF
8255A
1
扩展并口
三、软件设计
1、主程序流程图:
2、系统程序设计
系统工作原理:
(1)主程序:
本设计系统以单片机为控制核心,连接成最小系统。
按键设置模块产生信号输入,信号灯状态模块显示通行状态,LED倒计时模块模块接受信号并输出。
单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。
在此过程中系统一直查询是否有时间调节服务。
(2)按键程序:
按键采用查询方式进行处理,当某个键按下时,单片机确认外设已“准备好”,然后进行相应处理,
(3)显示程序:
显示主要包括数码管的时间显示和交通灯的交通状态显示,本设计包含六种正常交通状态。
3、程序源代码:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#definePACXBYTE[0x7fff]
#definePAXBYTE[0x7cff]
#definePBXBYTE[0x7dff]
#definePCXBYTE[0x7eff]
#definestate06
#definestate120
#definestate26
#definestate30
#definestate46
#defineKEYPPC//定义按键连接到PC口
//定义数码管字形0~15、a~f
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x5f,0x7c,0x58,0x5e,0x7b,0x71};
chardisp=0x3f;//声明七段显示初值为小数点
ucharscan[4]={0xef,0xdf,0xbf,0x7f};//显示器几件判断扫描码
sbitred_a=P1^0;
sbityellow_a=P1^1;
sbitgreen_a=P1^2;
sbitred_b=P1^3;
sbityellow_b=P1^4;
sbitgreen_b=P1^5;
ucharflash_count=0,operation_type=0;
//延时
voiddelay_ms(ucharx)
{
ucharh;
while(x--)
{for(h=0;h<120;h++);}//延时1ms
}
//灯状态子程序?
voidtraffic_light_0(ucharx)
{
uchari,n;
red_a=0;yellow_a=1;green_a=1;//东西通行
red_b=0;yellow_b=1;green_b=1;//南北通行
for(i=x;i>0;i--)
{
for(n=1000;n>0;n--)
{
PB=0x0a;
PA=table[i/10];//十位
delay_ms
(2);
PB=0x05;
PA=table[i%10];//个位
delay_ms
(2);
}
}
}
voidtraffic_light_1(ucharx)
{
uchari,n;
red_a=1;yellow_a=1;green_a=0;//东西通行
red_b=0;yellow_b=1;green_b=1;//南北通行
for(i=x;i>0;i--)
{
for(n=500;n>0;n--)
{
PB=0x0e;
PA=table[i/10];
delay_ms
(1);
PB=0x0d;
PA=table[i%10];//主东西
delay_ms
(1);
PB=0x0b;
PA=table[(i+6)/10];
delay_ms
(1);
PB=0xf7;
PA=table[(i+6)%10];//支南北
delay_ms
(1);
}
}
}
voidtraffic_light_2(ucharx)
{
uchari,n;
for(i=x;i>0;i--)
{
yellow_a=~yellow_a;
green_a=1;
for(n=1000;n>0;n--)
{
PB=0x0a;
PA=table[i/10];
delay_ms
(2);
PB=0x05;
PA=table[i%10];
delay_ms
(2);
}
flash_count++;
if(flash_count==6)break;//闪烁3次
}
flash_count=0;
}
voidtraffic_light_3(ucharx)
{
uchari,n;
red_a=0;yellow_a=1;green_a=1;//东西通行
red_b=1;yellow_b=1;green_b=0;//南北通行
if(x==0)
{
for(i=15;i>0;i--)
{
for(n=250;n>0;n--)
{
PB=0x0e;
PA=table[(i+6)/10];
delay_ms
(1);
PB=0x0d;
PA=table[(i+6)%10];//主东西
delay_ms
(1);
PB=0x0b;
PA=table[i/10];
delay_ms
(1);
PB=0xf7;
PA=table[i%10];//支南北
delay_ms
(1);
}
}
}
else
{
for(i=x;i>0;i--)
{
for(n=248;n>0;n--)
{
PB=0x0e;
PA=table[(i+6)/10];
delay_ms
(1);
PB=0x0d;
PA=table[(i+6)%10];//主东西
delay_ms
(1);
PB=0x0b;
PA=table[i/10];
delay_ms
(1);
PB=0xf7;
PA=table[i%10];//支南北
delay_ms
(1);
}
}
}
}
voidtraffic_light_4(ucharx)
{
uchari,n;
for(i=x;i>0;i--)
{
yellow_b=~yellow_b;
green_b=1;
for(n=1000;n>0;n--)
{
PB=0x0a;
PA=table[i/10];
delay_ms
(2);
PB=0x05;
PA=table[i%10];
delay_ms
(2);
}
flash_count++;
if(flash_count==6)break;//闪烁3次
}
flash_count=0;
}
///*键扫描函数*/
//扫描4x4键盘几4个七段显示器函数
//PC口接入键盘PC口高4位做输出低4位做输入
ucharscanner()//扫描函数开始
{
ucharcol,row;//声明变量(col列,row行)
ucharrowkey,kcode;//声明变量(rowkey行键值,kcode按键码)
delay_ms
(2);//消除键盘抖动
for(col=0;col<4;col++)//for循环,扫描第col列
{
KEYP=scan[col];//高4位输出扫描信号,低4位输入行值
PA=disp;//输出数字
rowkey=~KEYP&0x0f;//读入KEYP低4位,再清除高4位求出行键值
if(rowkey!
=0)//若有按键按下
{
if(rowkey==0x01)
row=0;//若第0行被按下
elseif(rowkey==0x02)
row=1;//若第1行被按下
elseif(rowkey==0x04)
row=2;//若第2行被按下
elseif(rowkey==0x08)
row=3;//若第3行被按下
kcode=4*col+row;//算出按键号码
disp=table[kcode];//将键值编码后写入最右侧
while(rowkey!
=0)
rowkey=~KEYP&0x0f;//在读入行键值
}
delay_ms(4);
}
returnkcode;
}
//通过按键使交通灯?
状态切换
voidtraffic_light()
{
ucharkey,key0,key1;
uchari,m[2];
key=scanner();
if(key==14)
while
(1)
{
switch(operation_type)
{
case0:
//东西红灯(主干道),南北红灯(支干道)))
traffic_light_0(state0);
operation_type=1;
break;
case1:
//东西绿灯,南北红灯
traffic_light_1(state1);
operation_type=2;
break;
case2:
//东西黄闪,绿灯灭
traffic_light_2(state2);
operation_type=3;
break;
case3:
//东西红灯,南北绿灯
traffic_light_3(state3);
operation_type=4;
break;
case4:
//南北黄闪,
traffic_light_4(state4);
operation_type=1;
break;
}
}
elseif(key==15)
{
//delay_ms(1000);
while(scanner()==15);
for(i=0;i<1;i++)
{
key0=scanner();
while(!
key0)
key0=scanner();
delay_ms(1000);
m[i]=key0;
while(scanner()==key0);
}
key1=m[0]*10+m[1];
while
(1)
{
switch(operation_type)
{
case0:
//东西红灯(主干道),南北红灯(支干道))
traffic_light_0(state0);
operation_type=1;
break;
case1:
//东西绿灯,南北红灯
traffic_light_1(state1);
operation_type=2;
break;
case2:
//东西黄闪,绿灯灭
traffic_light_2(state2);
operation_type=3;
break;
case3:
//东西红灯,南北绿灯
traffic_light_3(key1);
operation_type=4;
break;
case4:
//南北黄闪,
traffic_light_4(state4);
operation_type=1;
break;
}
}
}
}
//主程序
voidmain()
{
PAC=0x81;
while
(1)
traffic_light();
}
4、调试与运行:
(1)按照硬件连接图,东西方向,P1.0接红灯,P1.1接黄灯,P1.2接绿灯;南北方向,P1.3接红灯,P1.4接黄灯,P1.5接绿灯。
(2)参考大量资料后,在实验模拟电路板分阶段模拟(LED显示和数码管倒计时)
(3)用proteus和keil相关软件模拟,调试程序和修改电路。
(4)在仿真成功后又在实验板上模拟,确定毫无问题开始电路板焊接
(5)将电路板焊接好后,再进行检查、修改电路,直至功能正常实现。
四、课设心得
XXXX:
通过两个星期的交通灯课程设计,我对单片机相关知识有了更深的了解。
对于管脚及相关的数码管,有了更进一步的巩固和了解,尤其是I/O口的实用及编程,相当于重新细细温习了一遍。
特别对protues软件画电路图及仿真的过程,我几乎是从零开始学习并使用的。
说到这里,得感谢小组里同学们的帮助,同时也幸好大家都很团结,让我有更多的热情将这些东西变成自己的。
这次课程设计的任务是通过单片机的I/O口来控制交通灯。
主要完成两大项任务,第一就是硬件连接图;第二是编写相应的程序来实现硬件功能。
看似简单,实际上需要过硬的知识作为基础,平时看看书考试那样的过程,是难以完成这样的任务的。
这次设计过程中,遇到了很多棘手的问题,很多东西,动起手来束手无策,大多都只得先通过查阅资料或者参考别人做类似课题,才能自己动手设计画图,编程调试。
过程中还错误不少,关于编程我们小组成员有各自想法,有喜欢汇编的也有喜欢C的,大家在自己喜欢的方向深入研究学到很多知识。
还有就是protues软件仿真原来及整个过程,虽然并不太难,但是我还是通过这次才真正弄明白的。
这次课程设计之后,关于单片机的知识我有了更深入的了解,但更多是让我知道了知识的欠缺,很多环节,都是慢慢翻书或者查找资料才能完成。
这也让我明白了,在以后的学习中,应更注重知识的应用,更注重实质的掌握。
当然这次课程设计,提高了我的知识应用能力和和实践能力,同时提高了我独立思考、独立完成任务的能力。
当然组队之间的相互讨论,也加强了大家的合作精神和团结能力,这对以后的学习和工作也都有重要意义。
XXXX:
经过此次课程设计,我自我感觉收获颇丰,不仅学会了硬件仿真,而且对硬件的连接与焊接有了更进一步的熟悉。
因为是第一次用单片机设计一个实用的设备,所以根据自己的实际,我们最终确定做交通信号灯控制系统。
课题确定后,我们就各自先找关于交通灯课程设计的资料,然后汇总。
可以说我们组是谁有理就听谁的,很是民主。
接下来就是分工了,XXXX主要搞软件,XXXX写报告,而我焊电路,偶尔也客串“软件指导”,在这段时间我们都各司其职,向着共同的目标前进。
我们的团队合作精神在最后这几天表现得尤为明显,以至于我们的硬件和软件第一次融合就成功了,这跟我们严谨的作风和细致的操作是分不开的。
当然在焊接电路的时候,我也遇到了问题,比如按钮那四个引脚是如何连接的,当时没有万用表,所以问了同学,问了后才知道当按钮按下时对角的接通,而相对的引脚是本来就连着的。
还有数码管的引脚,也是问了同学并且查阅了相关资料,才知道如何使用万用表检测一个数码管是共阴极的还是共阳极的。
操作起来也挺简单的,先把万用表拨到二极管那一档,如果用红表笔接触一个引脚,黑表笔接触其他的引脚,同时当接触一个引脚,数码管有相应的位亮,说明这个数码管是共阳极的,与此相反就是共阴极的。
课程设计之前感觉那些东西挺简单的,可当自己亲身实践后才发现真没有想的那么容易。
真不知道,如果没有图书馆那些可借的与此课程设计相关的书籍,和那么方便的网络资源,我们还会不会做出这个来。
俗话说,熟能生巧,所以以后我要做更多的设计,以便于熟悉更多的设计技巧。
我相信在不久的将来我会设计出自己的产品。
XXXX:
通过这次单片机的学习和课程设计,我才真正的认识到,知识只有在实际生活中得到运用,它才是有意义的。
好多的问题其实很简单,但想要找到问题存在的地方就比较麻烦了。
同时我们还要学习其他同学做事认真细心的优点,并且要大胆的尝试,不要总停留在理论上,只有试了,才知道对否。
在实践中磨练并成长才是最重要的。
做课程设计就是将从课本上学到的知识应用于实际中,微机应用系统课程设计就是很好的实践。
在交通灯控制系统设计中,就充分的体现了同学们动手能力的强弱和对课本知识的掌握程度。
在整个过程中,我认为最重要的是设计过程,它不仅让我们加深了对理论的理解,也使我们对知识有了更深的认识,对书上知识的应用也有了更进一步的直观了解,同时也是对以往所学有了一次小小的总结与回顾。
其次,在插线接线的过程中,我们不仅要心灵手巧,更要细心耐心,有条理有目的的按顺序连线,不能遍地撒网,没有目的性,否则再插线还没连完的时候就头晕眼花了。
最后的调试更是一次考验。
我们不仅要找错误,更要知道错误的原因,这不仅要求我们掌握设计原理,更要求理解设计原理。
每一个错误的原因是什么,错在哪里,怎样改正,我们都必须一一弄清楚。
在处理所遇到问题的过程中有成功也有失败,但这确实加强了我们的动手能力,最终我们大家还是体会到了成功的喜悦。
在这次的设计过程中,我更深深的体会到了理解知识的重要性,如果你不能真正理解你所学到的东西,你就不能去改正错误,不能去实际运用。
因此,在今后的学习中不能仅仅局限于知道了某种理论,而关键在于要真正的理解掌握并能实际运用这种知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通 信号灯 控制系统 设计 报告