张云鹏Word文档下载推荐.docx
《张云鹏Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《张云鹏Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
目录
1概述............................................................41.1交通灯的重要作用.............................................4
1.2该交通灯的系统特点...........................................4
2系统总体方案及硬件设计..........................................5
2.1设计功能.....................................................5
2.2交通灯控制系统各部分硬件组成..................................5
2.2.1复位部分...................................5
2.2.2时钟电路部分...........................................5
2.2.3路口指示灯部分.........................................6
2.2.4显示部分...............................................6
2.3原器件清单..................................................7
3软件设计.........................................................8
3.1交通灯控制系统软件流程图及程序分析.............................8
3.2路口指示灯部分
..............................................8
3.3显示部分......................................................9
4Proteus软件仿真.................................................10
5课程设计体会.....................................................14
参考文献
附1:
源程序代码
1概述
1.1
能方便的对交通灯进行控制,使交通更和谐
1.2
该交通灯系统的特点
本系统结构简单,操作方便;
可实现自动控制,具有一定的智能性;
对优化城市交通具有一定的意义。
本设计将各任务进行细分包装,使各任务保持相对独立;
能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。
2系统总体方案及硬件设计
2.1
设计功能
1.完成交通灯的基本功能,结合实际情况,控制红、黄、绿交通灯的亮和灭.其工作流程是:
绿、黄、红分时间段开通,循环往复,计时电路以秒为单位作倒计时,计数为0时进行切换,计时时间可由LED数码管显示(需符合交通规则);
2.红、黄、绿交通灯的亮和灭的时间可调节;
3.若有交通异常情况,可以通过按键处理目前的紧急状态;
4.采用LED数码管显示红或绿交通信号灯亮的剩余时间;
5.通过按键设定红和绿交通信号灯亮一次的总时间;
6.控制东西方向和南北方向的红、黄、绿交通灯的亮和灭;
7.夜间控制功能,按键进入夜间模式,黄灯闪亮;
8.控制系统的原理图和接线图采用PROTEL,PROTEUS等专用绘图软件绘制
2.2
交通灯控制系统各部分硬件组成
2.2.1
复位部分
复位电路采用上电+按钮电平复位是上电复位与按钮复位的组合,当振荡频率是6MHz时,电容C取22uf,
取1K,Rs取200左右。
上电瞬间复位端(RST/Vpd)的电位与Vcc
相同,随着充电电路电流的减少,RST/Vpd的电位下降,最后为0V,当按钮按下后,电源Vcc通过电阻R,施加在单片机复位端RST/Vpd上实现复位,电路连接图如图2.3.1:
图2.2.1复位电路
2.2.2
时钟电路部分
本系统采用内部时钟产生方式:
在和两端跨接陶瓷谐振器,与内部反相器构成稳定的自
激振荡器采。
晶振采用12MHz的振荡频率和两个30Pf瓷片电容C1、C2,两个电阻对频率有微调作用。
其电路如图(3)
图2.2.2时钟电路
2.2.3
路口指示灯部分
采用红黄绿三种颜色的发光二极管共12个分为4组代表路口的交通灯(电路图中用两组示意).其中每两组控制一个路口,具体时序如表2.2.3
表2.2.3代表路口的交通灯
2.2.4显示部分
采用四位一体共阴数码管,分别显示南北和东西灯的剩余时间.片选部分和数码段显示部分,分别接单片机管脚的P2口和P0口,具体的共阴数码管管脚分布位置见图2.2.4
图2.2.4显示部分
2.3元器件清单
3软件设计
3.1
交通灯控制系统软件流程图及程序分析
3.1.1
主程序流程图及程序模设计
该交通信号灯控制系统的四中工作状态如图4.1所示(南北方向的交通灯为例):
(1)东西方向车道红灯亮,南北方向车道绿灯亮。
表示东西方向车道上的车辆禁止通行,南北方向车道允许通行。
绿灯亮足规定的时间隔时,控制器发出状态信号,转到下一工作状态。
(2)东西方向车道红灯亮,南北方向车道黄灯闪亮。
表示南北方向车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,东西方向车道禁止通行。
黄灯闪亮足规定时间间隔时,控制器发出状态转换信号,转到下一工作状态。
(3)东西方向车道绿灯亮,南北方向车道红灯亮。
表示东西方向车道允许通行,南北方向车道上的车辆禁止通行,绿灯亮足规定的时间间隔时,控制器发出状态转换信号,转到下一工作状态。
(4)东西方向车道黄灯闪亮,南北方向车道红灯亮。
表示南北方向车道禁止通行,东西方向车道上位过限停车线的车辆停止通行,已过停车线的车辆继续通行。
黄灯闪亮足规定的时间间隔时,控制器发出状态转换信号,系统又转换到第
(1)种工作状态。
3.1.2
INT0中断服务程序流程图及程序模设计
INT0与K2连接,另一端与地连接。
按下K2,东西南北四个方向全红,也就是说,东西南北四个通道都不能通车,这是紧急情况,但救护车等特殊车辆可以通过。
K0与AT89C52的25管脚相连。
K1与P2.5相接,K3与P2.6相接,K2与P3.2相接。
在按下K2的前提下,按
按下K0,如果3秒中之内没有按键,则交通灯恢复正常
其中4E.0H单元存放3s钟控制标志位,4F.0H单元存放1s控制标志位;
4D.0单元存放0.5秒控制标志位
60H和61H单元分别存放产生1s和3s的中断次数,当它们单元中的值为零时,分别表示1s和3s到,对4E.0H单元和4F.0H单元进行置1,62H单元用于产生0.5秒
由于采用工作模式1,所以每次中断后,一定在中断程序中重装记数初值.
3.2
用P1端口作为输出端口,用P1.0到P1.5端口分别控制东西和南北两组灯的状态低电平点亮,具体端口功能如下:
P1.0控制东西红灯的亮灭
P1.1控制东西绿灯的亮灭
P1.2控制东西黄灯的亮灭
P1.3控制南北红灯的亮灭
P1.4控制南北绿灯的亮灭
P1.5控制南北黄灯的亮灭
具体的程序我们以点亮东西红灯东南北绿灯为例:
MOV
P1,
#0EEH
其余部分根据硬件不同而修改#0EEH的值
3.3
显示部分
四位一体共阴数码管的片选部分由P2.0到P2.3提供,码段部分由P0.0到P0.6控制.
其中P2.0控制东西剩余时间的十位数的显示,P2.1控制东西剩余时间的个位数的显示,P2.2控制南北剩余时间的十位数的显示,P2.3控制南北剩余时间的个位数的显示.低电平选中.
P0.0到P0.7控制分别控制点亮数码段的A段到H段,通过查共阴极数码段码表,将它们的数值送到P0口,与P2.0到P2.3口结合,可以显示不同方向不同位数的各个数值.
例如,显示东西剩余时间的十位程序如下:
P2,#0FEH
选择十位程序
P0,A
向P0口送段码的程序
4Proteus软件仿真
图4.1错误情况
图4.2.1东西通车南北禁行
图4.2.2南北通车东西禁行
图4.2.3交通灯仿真
5课程设计体会
该交通灯系统是以单片机89C52芯片为核心部件,实现了能根据实际车流量通过89C51芯片设置及控制红、绿灯燃亮时间来进行交通控制。
本次课程设计使我对单片机的工作原理有了更深刻的认识,例如对复位电路、晶振电路的理解。
我深刻的理解到单片机的价值在于灵活运用它的IO端口以及其千变万化的程序。
本设计中我们用IO端口驱动数码管以及引接外部开关。
掌握了许多在以前学习中混淆不清的知识点。
仿真实验,不仅锻炼了自己的动手能力,而且真正作到了理论联系实际的重要性,体会到了其中失败与成功的滋味,收益匪浅。
同时在焊接单片机电路板时使我在制作上更加的熟练,经过不断的试验二极管终于我的灯亮了,当我看到我亲手制作的板子亮时,我的心中非常激动。
同时,我也认识到自己的知识不足,例如,有时不能正确认识、合理使用中断程序,这将是我以后努力提高的方面
参考文献
[1].《单片机原理与应用技术》余发山主编中国矿大出版社
2007
[2].《微型计算机控制技术》赖寿宏主编
机械工业出版社
2002
[3].《单片机原理及应用》丁元杰主编机械工业出版社
2001
[4].《单片机中级教程》张迎春主编
北京航空航天出版社
2004
[5].《基于单片机的交通信号控制系统》欧伟民湖南大学学报
2002
附一源程序代码
#include<
stc10.h>
key.h>
#defineucharunsignedchar
#defineuintunsignedint
unsignedcharcodeDuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedcharcodeweima[]={0x0e,0x0d,0x0b,0x07};
/*sbitRED_A=P2^0;
//东西向指示灯
sbitYELLOW_A=P2^2;
sbitGREEN_A=P2^1;
sbitRED_B=P2^3;
//南北向指示灯
sbitYELLOW_B=P2^5;
sbitGREEN_B=P2^4;
sbitRED_C=P2^6;
sbitYELLOW_C=P3^2;
sbitGREEN_C=P2^7;
sbitRED_D=P3^3;
sbitYELLOW_D=P3^5;
sbitGREEN_D=P3^4;
*/
//延时倍数,闪烁次数,操作类型
ucharTime_Count=0,Flash_Count=0,Operation_Type=1;
//定时器0中断函数
voidT0_INT()interrupt1
{
TL0=-50000/256;
TH0=-50000%256;
switch(Operation_Type)
{
case1:
//东西向绿灯与南北向红灯亮5s
RED_A=1;
YELLOW_A=1;
GREEN_A=0;
RED_B=0;
YELLOW_B=1;
GREEN_B=1;
RED_C=1;
YELLOW_C=1;
GREEN_C=0;
RED_D=0;
YELLOW_D=1;
GREEN_D=1;
if(++Time_Count!
=100)return;
//5s(100*50ms)切换
Time_Count=0;
Operation_Type=2;
break;
case2:
//东西向黄灯开始闪烁,绿灯关闭
=8)return;
YELLOW_A=~YELLOW_A;
GREEN_A=1;
YELLOW_C=~YELLOW_C;
GREEN_C=1;
if(++Flash_Count!
=10)return;
//闪烁
Flash_Count=0;
Operation_Type=3;
case3:
//东西向红灯与南北向绿灯亮5s
RED_A=0;
RED_B=1;
GREEN_B=0;
RED_C=0;
RED_D=1;
GREEN_D=0;
Operation_Type=4;
case4:
//南北向黄灯开始闪烁,绿灯关闭
YELLOW_B=~YELLOW_B;
YELLOW_D=~YELLOW_D;
Operation_Type=1;
}
}
//主程序
voidmain()
TMOD=0x01;
//T0方式1
IE=0x82;
TR0=1;
initIO();
while
(1)
{scankey();
P0=weima[3];
P1=DuanMa[Time_Count/20];
};
附二系统原理图