单片机综合课程设计报告交通灯控制器.doc

上传人:文库蛋蛋多 文档编号:4144526 上传时间:2023-04-07 格式:DOC 页数:22 大小:481.50KB
返回 下载 相关 举报
单片机综合课程设计报告交通灯控制器.doc_第1页
第1页 / 共22页
单片机综合课程设计报告交通灯控制器.doc_第2页
第2页 / 共22页
单片机综合课程设计报告交通灯控制器.doc_第3页
第3页 / 共22页
单片机综合课程设计报告交通灯控制器.doc_第4页
第4页 / 共22页
单片机综合课程设计报告交通灯控制器.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机综合课程设计报告交通灯控制器.doc》由会员分享,可在线阅读,更多相关《单片机综合课程设计报告交通灯控制器.doc(22页珍藏版)》请在三一办公上搜索。

1、江西理工大学 单片机综合课程设计报告设计题目: 交通灯控制器设 计 者: 学 号: 班 级: 指导老师: 设计报告电路设计软件设计平时分总评格式(5)内容(15)原理图(15)板子外观(15)程序(15)调试情况(15)(20)完成时间: 2010年7月目 录第1章 MCS-51单片机概述11.1 引言11.2单片机概述11.3芯片简介1第2章 交通灯控制器22. 1设计目的32.2设计要求32.3设计方案3第3章 交通灯控制器设计43.1交通灯控制器硬件设计43.1.1材料选用4 3.1.2交通灯硬件电路连接图43.1.3数码管的连接53.2 控制器的软件设计63.2.1主程序63.2.2第

2、一状态程序63.2.3第二状态程序73.2.4第三状态程序83.2.5第四状态程序93.2.6第五状态程序103.2.7每秒钟的设定10附录11致谢18参考文献19第1章 MCS-51单片机概述1.1引言当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示

3、“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、

4、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。1.2单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机

5、由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。1.3芯片简介单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续

6、产品16位的MCS-96系列单片机则采用普林斯顿结构。下图是MCS-51系列单片机的内部结构示意图 图2 图1-1 MCS-51结构框图MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。 图1-2 MCS-51的引脚图第2章 交通灯控制器2.1设计目的(1)掌握单片机定时 ,计数器的编程应用。(2)通过对交通灯控制程序的编写与调试,掌握中断程序的结构(3)进一步熟练使用开发系统的各种调试方法。2

7、.2设计要求东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。2.3设计方案设东西道比南北道的车流量大,指示灯燃亮的方案如表2-13 30S3S2 25S3S东西道绿灯亮黄灯闪红灯亮红灯亮南北道红灯亮红灯亮绿灯亮黄灯闪 表2-1 指示灯燃亮图(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。时间为25秒。(2)黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换。 (3)当东西方向

8、为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为30秒。 东西方向车流大 通行时间长。(4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。系统状态流程图:东西南北红灯全亮东西红灯南北绿灯东西亮绿灯南北亮红灯东西绿-黄灯南北红灯东西红灯南北绿-黄灯 图2-1 系统状态流程图第3章 交通灯控制器设计系统总框图如下:键盘设置时间参数51单片机系统处理红外对管检测信号输入红灯报警及记录车流量显示时间倒计时交通灯 图3-1系统总框图3.1交通灯控制器硬件设计3.1.1材料选用:选用设备89V51单片机一片选用设备:89v51弹片机一片,共阴极的

9、两位七段数码管一个,发光二极管红黄绿灯各四个,开关键盘、连线若干。3.1.2 交通灯硬件电路连接图 图3-2 硬件电路连接图3.1.3 数码管的连接 LED 灯的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点量而显示不同的字形。P0.0P2.6P2.5P2.0P2.1P2.3P2.7P2.4P2.2P0.1a1b1c1d1g1e1f1dp1 图3-3 7段数码管引脚连接图 控制2管亮 控制1管亮 g2亮 d1亮 f2亮 dp1亮 a2亮 e1亮b2亮 c1亮c2 亮 b1 亮 e2亮 a1 亮 dp2亮 f1 亮 d2 亮 g1 亮3.2控制器的软件设计开始东西南北方向红灯全部亮

10、5秒东西方向通行30秒,南北方向亮红灯黄灯闪烁3秒南北方向通行25秒,东西方向亮红灯灯黄灯闪烁3秒结束复位 图3-4 程序流程图3.2.1主程序:void main()P0=0XFF;P1=0xFF; P2=0xFF;EA=1;/打开外部中断EX0=1;/允许外部中断0中断IT0=0;/INT0为沿触发方式 init1(); while(1) init2();/第2个状态 init3(); /第3个状态 init4(); /第4个状态 init5();/第5个状态 3.2.2第一状态程序void init1()/第一个状态:东西、南北方向均亮红灯5S uint temp;temp=6;/变量赋

11、初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)RED_DONGXI=0; /第一个状态东西、南北均亮红灯5S RED_NANBEI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;YELLOW_DONGXI=1;YELLOW_NANBEI=1;if(aa=10)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增/delay(10);if(temp250)/定时100Stemp=6;/变量清0break;shi=tem

12、p%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);3.2.3第二状态程序void init2()/第二个状态:东西亮绿灯30S、南北亮红灯uint temp;temp=31;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1) RED_DONGXI=1;RED_NANBEI=0;GREEN_DONGXI=0; GREEN_NANBEI=1;YELLOW_DONGXI=1;/第二个状态:东西亮绿灯30S、南北亮红灯

13、YELLOW_NANBEI=1;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增if(temp=4)/定时100Stemp=30;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位display(ge,shi);3.2.4第三状态程序void init3() /第三个状态:东西绿灯闪3次转亮黄灯、南北亮红灯3S uint temp;temp=4;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=

14、1;/开定时器0while(1)RED_NANBEI=0;GREEN_DONGXI=1;/YELLOW_DONGXI=YELLOW_DONGXI;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增YELLOW_DONGXI=YELLOW_DONGXI;if(temp200)/定时100Stemp=4;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);3.2.5第四状态程序void init4()/第四个状态:东西亮红灯、南北亮绿灯25S uint temp;temp=2

15、6;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)RED_DONGXI=0; RED_NANBEI=1;YELLOW_DONGXI=1;/第一个状态东西、南北均亮红灯5S GREEN_NANBEI=0;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增if(temp=4)/定时100Stemp=25;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 displ

16、ay(ge,shi);3.2.6第五状态程序void init5()/第五个状态:东西亮红灯、南北绿灯闪3次转亮黄灯3S uint temp;temp=4;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)RED_NANBEI=1;RED_DONGXI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;/YELLOW_NANBEI=YELLOW_NANBEI;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-

17、;/变量自增 YELLOW_NANBEI=YELLOW_NANBEI;if(temp200)/定时100Stemp=4;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);3.2.7每秒钟的设定利用MCS-51内部定时器产生溢出中断来确定1秒的时间,采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减,然后判断它是否为零。为零表示1秒已到可以返回到输出时间显示程序。附录: 程序源代码#i

18、nclude/头文件#include/头文件#define uchar unsigned char/宏定义#define uint unsigned int/宏定义sbit RED_DONGXI = P10;sbit YELLOW_DONGXI = P11;sbit GREEN_DONGXI = P12;sbit RED_NANBEI = P13;sbit YELLOW_NANBEI = P14;sbit GREEN_NANBEI = P15; uint aa, bai,shi,ge,bb; /定义变量/*数码管显示0-9*/uint code table=0x3f,0x06,0x5b,0x4

19、f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*子函数声明*/void delay(uint z);void delay0(uint z);/void init(uint a);void display(uint shi,uint ge);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();/* 主函数*/void main()P0=0XFF;P1=0xFF;

20、 P2=0xFF;EA=1;/打开外部中断EX0=1;/允许外部中断0中断IT0=0;/INT0为沿触发方式 init1(); while(1) init2();/第2个状态 init3(); /第3个状态 init4(); /第4个状态 init5();/第5个状态 void init1()/第一个状态:东西、南北方向均亮红灯5S uint temp;temp=6;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)RED_DONGXI=0; /第一个状态

21、东西、南北均亮红灯5S RED_NANBEI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;YELLOW_DONGXI=1;YELLOW_NANBEI=1;if(aa=10)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增/delay(10);if(temp250)/定时100Stemp=6;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi); void init2()/第二个状态:东西亮绿灯30S、南北亮红灯uint temp;temp=31;/变量赋初值TMOD=0

22、x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1) RED_DONGXI=1;RED_NANBEI=0;GREEN_DONGXI=0; GREEN_NANBEI=1;YELLOW_DONGXI=1;/第二个状态:东西亮绿灯30S、南北亮红灯 YELLOW_NANBEI=1;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增if(temp=4)/定时100Stemp=30;/变量清0break;shi=temp%100/10;/显示十位

23、ge=temp%10;/显示个位display(ge,shi);void init3() /第三个状态:东西绿灯闪3次转亮黄灯、南北亮红灯3S uint temp;temp=4;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)RED_NANBEI=0;GREEN_DONGXI=1;/YELLOW_DONGXI=YELLOW_DONGXI;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增YELLOW_DONG

24、XI=YELLOW_DONGXI;if(temp200)/定时100Stemp=4;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);void init4()/第四个状态:东西亮红灯、南北亮绿灯25S uint temp;temp=26;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断TR0=1;/开定时器0while(1)RED_DONGXI=0; RED_NANBEI=1;YELLOW_DONGXI=1;/第一

25、个状态东西、南北均亮红灯5S GREEN_NANBEI=0;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增if(temp=4)/定时100Stemp=25;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);void init5()/第五个状态:东西亮红灯、南北绿灯闪3次转亮黄灯3S uint temp;temp=4;/变量赋初值TMOD=0x01;/定时器0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开外部中断ET0=1;/开定时中断T

26、R0=1;/开定时器0while(1)RED_NANBEI=1;RED_DONGXI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;/YELLOW_NANBEI=YELLOW_NANBEI;if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0temp-;/变量自增 YELLOW_NANBEI=YELLOW_NANBEI;if(temp200)/定时100Stemp=4;/变量清0break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位 display(ge,shi);/*显示子函数*/void display(uint sh

27、i,uint ge)P0=0xfd;P2=tableshi;/显示十位delay0(5);P0=0xfe;P2=tablege;/显示个位delay0(5);void xint0() interrupt 0 /外部中断0,这里用2是INT1的优先级为0LED_ON();void LED_ON()/外部中断0显示子程序RED_NANBEI=0;RED_DONGXI=0;GREEN_NANBEI=1;GREEN_DONGXI=1; YELLOW_NANBEI=1;YELLOW_DONGXI=1;delay(2);return ;/*定时中断子函数*/void xtimer0() interrupt

28、 1TH0=0x4c;TL0=0x00;aa+;/*延时子函数*/void delay0(uint z)uint i,j;for(i=0;iz;i+)for(j=0;j0;j-) for(i=1250;i0;i-) for(k=180;k0;k-); 致谢本系统就是充分利用了89C51芯片的I/O引脚。系统统采用MSC-51系列单片机为中心器件来设计交通灯控制器,实现了能根据实际车流量设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩3秒时黄灯闪烁警示;绿灯时间可检测车流量并可通过双位数码管显示。系统不足之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流

29、量情况所定,如果有需要可以设计扩充原系统来实现 。感谢这次设计中,帮助过我的老师们,他们高尚的品德、严谨的学风、一丝不苟的工作态度、孜孜不倦的工作精神和对科学真理的执著追求使我终生受益。同时也感谢这次设计中帮助过我的同学们,帮我解决了很多问题。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。参考文献1张毅坤. 单片微型计算机原理及应用,西安电子科技大学出版社 1998 2余锡存 曹国华.单片机原理及接口技术M.陕西:西安电子科技大学出版社,2000.73雷丽文 等.微机原理与接口技术M.北京:电子工业出版社,1997.24 潘永雄.新编单片机原理与应用,西安电子科技大学出版社 2007.2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号