绝对实用基于51单片机及数字电路的两种智能交通灯仿真与设计.docx
《绝对实用基于51单片机及数字电路的两种智能交通灯仿真与设计.docx》由会员分享,可在线阅读,更多相关《绝对实用基于51单片机及数字电路的两种智能交通灯仿真与设计.docx(8页珍藏版)》请在冰点文库上搜索。
绝对实用基于51单片机及数字电路的两种智能交通灯仿真与设计
(绝对实用)基于51单片机及数字电路的两种智能交通灯仿真与设计
附件二:
□指定类别□可选类别
西南交通大学电气工程学院实验竞赛月活动
实验报告(作品)
工作名称:
智能交通信号灯设计、仿真与实践专业:
电气工程及其自动化团队成员姓名:
教员:
在XXXX,完成这项工作的起止时间是4月13日至5月10日
三月XXXX
35-1
首先,话题的由来
目前,交通灯安装在各种道路交叉口,并已成为最常见和最有效的交通工具分流手段。
这项技术出现在19世纪。
1858年,以燃煤气体为光源的红色和蓝色机械扳手型信号灯被安装在英国伦敦的主要街道上,以引导马车通过。
1868年,英国机械工程师奈特在伦敦威斯敏斯特议会大厦前的广场上安装了世界上最早的气体交通灯。
它由红色和绿色旋转方形玻璃灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,警察受伤,这一事件被取消。
电动交通灯出现在美国。
交通灯由红色、绿色和黄三圆形投影仪组成,1914年安装在纽约市第五大街的一座高塔上。
红灯表示“停止”,绿灯表示“通过”。
信号灯的出现使交通得到有效控制,对缓解交通流量、提高道路通行能力、减少交通事故有明显效果。
绿灯是交通信号。
面对绿灯的车辆可以直走、左转和右转,除非另一个标志禁止特定的转弯。
左转和右转的车辆必须优先考虑在路口合法行驶的车辆和通过人行横道的行人。
红灯是禁止通行的信号。
面对红灯的车辆必须在十字路口停在停车线后面。
黄灯是一个警告信号。
面对黄灯的车辆不能越过停车线,但是当它们离停车线太近而不能安全停车时,它们可以进入十字路口。
二、课题的目的和意义
为了让行人更方便、更安全地通过交叉口,使车辆交通有序、规范,有必要设计更加完善、人性化、标准化的交通信号灯,以保证行人和车辆的安全通行,减少社会公共财富的损失。
为了让交通更方便,在实现交通灯基本功能的前提下,我们增加了一个蜂鸣器,不仅可以给行人提示,还可以引导盲人安全通过路口,蜂鸣器的声音还可以让司机保持警惕,大大提高了路口的交通安全。
我们设计的由单片机控制的交通灯是以交通灯为基础的,同时也增加了个性元素。
三、人员分工
林子春:
实现交通灯电路的模拟,编写和修改程序,绘制和制作印刷电路板;于:
实物的制作与连接,程序的编写与修改;王靖元:
最终报告的编写,程序的编写和修改。
四、实验原理和预期结果
35-2
在本次实验中,我们团队利用单片机和数字电路两种仿真方法,设计了一种更加合理的交通灯方案。
我们还对传统交通灯进行了适当的改进,使其更适合今天复杂多变的交通环境。
(一)基于单片机原理的智能交通灯
计算机模拟与实践
1.单片机简介
单片机是一种集成电路芯片,它采用超大规模集成电路技术,集成了中央处理器随机存取存储器、只读存储器、各种输入输出端口和中断系统、定时器等功能。
(它还可以包括显示驱动电路、脉宽调制电路、模拟多路复用器、模数转换器等。
)
如电路)集成到一块硅片上,形成一个小而完善的计算机系统。
AT89C51是一款低电压、高性能的CMOS8位微处理器,具有4K字节的闪存(FPEROM-Flash可编程和可擦只读存储器),俗称单片机。
AT89CXXXX增加了Cortex和DSP系列处理器,并继续增加其他系列的处理器型号。
在编译方面,它也支持IAR、Keil、MPLAB和其他编译器。
KeilC51是美国Keil软件公司生产的51系列兼容微控制器的C语言软件开发系统。
与汇编语言相比,C语言在功能、结构、可读性和可维护性方面具有明显的优势,易于学习和使用。
Keil提供了一个完整的开发计划,包括C编译器、宏汇编、连接器、库管理和一个强大的模拟调试器等。
这些部分通过集成开发环境(uVision)进行组合。
Keil软件需要WIN98、NT、WIN2000、WINXP、WIN7和其他操作系统。
如果你用C语言编程,凯尔几乎是你唯一的选择。
即使你不使用C语言,只使用汇编语言进行编程,它易于使用的集成环境和强大的软件模拟和调试工具将使你事半功倍。
Keil3C51和Proteus联合调谐;
35-5
这是本次设计模拟的核心。
在所有仿真软件和编译器中,只有在proteus和KeilC51之间才能用C语言编译8051、AVR等系列单片机程序。
十六进制文件和Proteus单片机模块完美协调。
需要在调试中使用右图所示的驱动程序,并且需要设置Proteus来启动远程调试功能。
在Keil的目标选项“目标1”选项中,“调试”中的“ProteusVSM模拟器”列可以通过修改Tools.int目录进行调试,从而实现与Proteus的联合仿真。
3.仿真电路的功能实现
在Proteus中,AT89c51单片机的仿真电路省略了复位电路、晶体振荡器和一些固定接口的连接。
经过多次修改,仿真电路图如下:
工作模式:
(1)正常显示:
?
南北灯为红色,从24秒开始倒计时;东西变绿了,倒计时20秒后开始?
事情倒数到0,绿灯熄灭,黄灯亮3秒,然后倒数
?
东西红灯亮着,从31秒开始倒数。
南北绿灯亮,从25秒开始倒数?
南北倒计时至0,绿灯关闭,黄灯亮5秒,倒计时
35-6
35-7
35-8
(2)信号灯时间调节按钮功能:
?
设置:
按1调整东西方向的绿灯显示时间。
按2调整东西黄灯的时间;按3调整南北绿色
灯时间;按4调整南北黄灯的时间。
调整时间时,数码管以每秒3次的频率闪烁,红灯时间=绿灯时间+黄灯时间+1?
加:
时间+1,长按+10?
时间-1,长按-10
(3)紧急中断功能
?
SW1关闭:
在正常显示状态和时间调整状态下关闭,所有定时停止,数码管熄灭,东、西、北、南信号灯都点亮红灯。
?
SW1关闭:
数码管点亮,从中断时间开始持续计时,信号灯继续点亮红灯,缓冲倒计时结束后返回正常信号灯显示。
35-9
4、单片机源程序:
#包含\
无符号字符数[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数字0~9
无符号字符ctrl[]={0x7e,0xf5};//0xfa(P3_0和P3_2为0,即高阶有效)0xf5(P3_1和P3_3为0,即低阶有效)//Modify:
:
0xfe(P3_7为1)
未签名chardisEW[2];//记录东西向高低值无符号字符disSN[2];//记录南北高低值无符号charv;无符号字符cnt_ctr无符号intscdEW,scdSN。
无符号整型cntSN,cntEW无符号电荷cntP3_4、cntP3_5、CntP3_6;
无符号intcnt_num、cnt_key、cnt_flash、keyMemory
intgreenEW=20,yellowEW=3,greenSN=25,YelloWsn=5;
//延迟函数,a是1毫秒的延迟voiddelay_ms(无符号inta){inti;而(a-){I=70;而(I-);}}
//设置红、绿、黄灯秒无效设置秒(void){while(P3_4==0);cntP3_4+;//标志设置键按下开关的次数(CntP3_4){情况1:
Cntew=5;P1=0xf7;休息;案例2:
Cntew=1;P1=0xef;休息;案例3:
35-10
cntSN=1;P1=0xFe;休息;案例4:
碳纳米管=3;P1=0xfd;休息;案例5:
碳纳米管=5;cntSN=5;CNT_num=0;cntp3_4=0;休息;}}
//秒加1
voidaddSecond(void){while(P3_5==0);CNT_key=0;//记录长键(cntp3_4)的参数清除开关{case1:
if(键记忆!
=greenEW+10)//判断按键是否增加了10,如果没有增加,秒数将增加1,如果增加了10,则增加1{greenEW++;}if(GReenew==90){GReenew=0;}scdEW=绿色新;scdSN=绿色+黄色+1;休息;案例2:
if(Yellow++9){Yellow=0;}scdEW=黄色。
休息;案例3:
35-11
if(keyMemory!
=GReenS+10){GReenS++;}if(GReenS==90){GReenS=0;}ScDew=GReenS+YellowsN+1;scdSN=greenSN。
休息;案例4:
if(YellowSn+==9){YellowSn=0;}scdSN=yellowSN休息;}}
//秒减1
空亚秒(空){while(P3_6==0);CNT_key=0;//记录长键(cntp3_4)的参数清除开关{case1:
if(键记忆!
=绿色-10)//判断密钥是否减少了10;否则,秒数将减少1;如果减少了10,则不会减少1{GREENEW-;}if(GReenew==-1){GReenew=89;}scdEW=绿色新;scdSN=绿色+黄色+1;休息;案例2:
if(YelloW-==0){
35-12
黄色=9;}scdEW=黄色。
休息;案例3:
if(keyMemory!
=GReenS-10){GReenS-;}if(GReenS==-1){GReenS=89;}ScDew=GReenS+YellowsN+1;scdSN=greenSN。
休息;案例4:
if(YellowSn-==0){YellowSn=9;}scdSN=yellowSN休息;}}
//正常显示秒void(void){cnt_num++;if(CNT_CTR==10){CNT_CTR=0;P3=0xff;P3=[五世];P2=[·迪塞夫·[五世]];//显示东西秒P0=数字[·迪斯恩·[五]];//显示南北方向的秒数(v++==1){V=0;}}}
35-13
//闪烁显示秒无效dsp闪烁(无效)
cnt_flash++;
if(CNT_flash35-14
}如果(v++==1){
v=0;}}}
//长按+10秒voidadd_10s(void){CNT_key=0;开关(cntP3_4){情况1:
绿色新=绿色新+10;//长秒加10if(绿色新值>=90){绿色新值=0;}按键记忆=绿色+10;//keyMemory用于标记秒数增加了10秒。
scdSN=绿色+黄色+1;休息;案例3:
GReenS=GReenS+10;if(GReen>=90){GReen=0;}KeyMemory=GReenS+10;scDew=GReenS+YellowSn+1;scdSN=greenSN。
休息;}}
//长按减10秒voidsub_10s(void){CNT_key=0;开关(cntP3_4)
35-15岁
{案例1:
GreenEw=GreenEw-10;//长减10秒,如果(绿色新值//T0中断
voidt0(void)中断1{cnt_ctr++;if(CntP3_4==0){display();//正常显示秒}if(cntP3_4!
=0){DSPfrash();//闪烁秒}if(cnt_num==4000){
CNT_num=0;if(scdEW-==0){cntEW++;//东-西秒减少到0,标志位加1}中频(单路DSN-==0)
35-16
{cntSN++;//南北方向的秒数减少到0,标志位增加1}}switch(cntew){case1:
scdew=yellow;//东西黄灯亮,表示黄灯秒P1_3=1;P1_4=0;P1_5=1;cntEW++;//为了防止程序在这里被阻塞,它被改为2中断;案例3:
//避免碳纳米管为2scdEW=绿色+黄色+1;//东西向红灯亮,表示红灯秒P1_3=1;P1_4=1;P1_5=0;cntEW++;//为了防止程序在这里阻塞,它是4中断。
案例5:
//避免碳纳米管为4scdEW=绿色。
//东西绿灯亮,显示绿灯秒P1_3=0;P1_4=1;P1_5=1;cntEW=0;休息;}开关(cntSN){案例1:
SCDsn=GReenS;//南北绿灯亮,表示绿灯秒P1_0=0;P1_1=1;P1_2=1;cntSN++;//为了防止程序在这里被阻塞,它被改为2中断;案例3:
//避免cntSN为2scdsn=yellossn。
//南北黄灯亮,表示黄灯秒P1_0=1;P1_1=0;P1_2=1;cntSN++;//为了防止程序在这里阻塞,它是4中断。
35-17
情况5:
//避免cntSN为4scdSN=绿色+黄色+1;//南北红灯亮,显示红灯秒P1_0=1;P1_1=1;P1_2=0;cntSN=0;休息;}if(P3_5==0){if(CNT_key+==4000){add_10s();//长按数码管并增加10秒}}中频(P3_6==0){中频(CNT_KEY+==4000){SUB_10S();//长时间按数码管可减少10秒}}
disEW[0]=ScDeW/10;disew[1]=scdew;disSN[0]=SCdsn/10;dissn[1]=scdsn;}
//主要功能
voidmain(void){TMOD=0x02;//将定时器0设置为工作模式2TH0=0x06TL0=0x06//初始化8位定时器(256-6)*40000=1sEA=1;//允许的总中断ET0=1;//T0中断允许TR0=1;//开T0中断EX0=1;//修盖:
:
打开外部中断P1=0xF3;//东西绿灯,南北红灯P3_4=1;scdEW=绿色。
//设置东西显示秒scdSN=绿色+黄色+1;//设置南北显示秒,同时
(1)
35-18岁
{if(P3_4==0){延迟_毫秒(15);if(P3_4==0){SetSecond();//设置红、绿、黄灯秒}}否则如果(P3_5==0){延迟_毫秒(15);if(P3_5==0){AddSecond();}}否则如果(P3_6==0){延迟_毫秒(15);if(P3_6==0){亚秒();}}keyMemory=200//将任何值赋给keyMemory,以防止长时间按下加号10或减号10后出现正常的加减操作}}
作废按钮0()中断0//紧急中断按钮{P1_2=0;P1_5=0;P1_3=1;P1_0=1;P2=0;P0=0;}
5.实物的生产
35-19
35-20
图1.14.7CL002BCD码解码显示
表1.14.3CL002逻辑菜单
综合解码显示的接线图如图1.14.9所示(一位显示)
35-31
输出印刷电路板和印刷电路板图并整理和美化后,得到以下结果:
35-32
35-33
35-34
35-35