ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:64.40KB ,
资源ID:26170473      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26170473.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机交通灯控制课程设计报告书.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机交通灯控制课程设计报告书.docx

1、单片机交通灯控制课程设计报告书单片机交通灯控制课程设计:院系:物理与电气工程学院专业:电气工程及其自动化班级:学号:指导教师:志富2014年3月15日基本要求利用单片机的定时器产生秒信号,控制十字路口的红、绿、黄灯交替点亮和熄灭,并且用4只LED数码管显示十字路口两个方向的剩余时间。要求能用按键设置两个方向的通行时间(绿、红等点亮的时间)和暂缓通行时间(黄灯点亮的时间)。系统的工作应符合一般交通灯控制的要求。 设计简介交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有

2、明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 本设计系统由单片机I/O口系统、交通灯状态显示系统、复位电路等几大部分组成。系统具有基本的交通灯功能,较好的模拟实现了十字路口可能出现的状况。 本设计系统利用单片机的工作原理设计一个十字路口交通信号灯,要求东、西、南、北四个方向各有红黄绿色三个灯,当东西方向亮绿灯时,南北方向红灯亮起;反之,如果南北方向亮绿灯,同时东西方向亮绿灯;绿灯亮时车辆行驶,红灯亮时车

3、辆停止。即在同一时间保证只有两个对应方向的车辆可以行驶。 本设计系统软件上采用Keil uVision3、Proteus。使用C51编程,主要编写了主程序、中断子程序、延时子程序、数码管显示子程序、交通控制子程序、矩阵键盘子程序。 本设计系统经过整机调试,实现了对十字路口交通灯运作与设置的模拟。系统简要分析本设计系统单片机89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强、成本较低。本设计就是采用单片机模拟十字路口交通灯的各种状态显示。利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成3 十字路口,在每个入口处设置红、绿、黄三色信号灯,

4、数码管显示剩余时间。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯,8 管共阴极数码管显示剩余时间,矩阵键盘用来设置交通灯的显示时间和状态。硬件原理图源程序#include#define uchar unsigned char#define uint unsigned intuchar code table= /共阴极数码管码表0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0xC9,0xFF,0x40;/设置码,测试码,不计

5、时码void delay(uint x);/延时函数void display(uchar,uchar,uchar,uchar); /数码管显示函数void mkeys(); /键盘函数void traffic(); /交通灯函数uchar num,num1,num2, /1南北 2东西shi1,ge1,shi2,ge2,value1,value2,/南北 绿灯时间 黄灯时间value3,value4,/东西 绿灯时间 黄灯时间count1,count2,flag1,flag2; /南北标记 东西标记void main() TMOD=0x01; TH0=(65536-45872)/256; TL

6、0=(65536-45872)%256; EA=1; ET0=1; TR0=1; /*初状态*/ value1=15; /南北 黄绿灯默认值 value2=5; value3=10; /东西 黄绿灯默认值 value4=5; num1=value1; /南北数码管先绿灯时间 num2=value2+value1;/东西红灯时间 shi1=num1/10; ge1=num1%10; shi2=num2/10; ge2=num2%10; P1=0x41;/初始状态:东西红灯 南北绿灯 20 15 while(1) if(num=20) /定时器1s num=0; num1-; num2-; tra

7、ffic(); shi1=num1/10; ge1=num1%10; shi2=num2/10; ge2=num2%10; mkeys(); display(shi1,ge1,shi2,ge2); void traffic() /红绿灯主控制程序 if(num1=0) count1+; if(count1=1) P1=0x42;/东西红灯 南北黄灯 5 5 num1=value2; if(count1=2) num1=value3+value4;/东西绿灯 南北红灯 10 15 P1=0x14; if(count1=3) P1=0x41;/ 东西黄灯 南北红灯 5 5 num1=value4;

8、 count1=0; if(num2=0) count2+; if(count2=1) /P1=0x14;/东西绿灯 南北红灯 num2=value3; if(count2=2) P1=0x24;/东西黄灯 南北红灯 num2=value4; if(count2=3) num2=value1+value2; /东西红灯 南北绿灯 num1=value1; count2=0; void display(uchar shi1,uchar ge1,uchar shi2,uchar ge2) /数码管显示子函数 uchar temp; temp=P2; P2=0xfe; P0=tableshi1; d

9、elay(5); P2=0xfd; P0=tablege1; delay(5); P2=0xfb; P0=tableshi2; delay(5); P2=0xf7; P0=tablege2; delay(5); void delay(uint x)/延时子函数 uint i,j; for(i=x;i0;i-) for(j=110;j0;j-);void mkeys() /4*4矩阵键盘功能子函数 uchar temp,key; P3=0xfe;/第一行线 temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&

10、0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key=0; break; case 0xde: key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; if(key=0) /按键1:暂停 TR0=TR0; /定时器取反 flag1=flag1;/南北能够设置标志 0有效 flag2=flag2;/东西能够设置标志 if(key=1&flag1=0) /按键2:设置时间按钮 TR

11、0=0; P1=0x44;/禁止东南西北车辆 全为红灯 可以设置 shi1=ge1=shi2=ge2=16; if(key=2&flag2=0)/按键3:设置完成 重启 TR0=1; num=0; /定时器 初始化 P1=0x41; /重新开始初状态 num1=value1; /南北数码管先绿灯时间 num2=value2+value1;/东西红灯时间 shi1=num1/10; ge1=num1%10; shi2=num2/10; ge2=num2%10; if(key=3&P1=0x44) /按键4:测试交通灯各个设备的好坏 P1=0xff; delay(1000); P1=P1; shi

12、1=ge1=shi2=ge2=17; P1=0x44; P3=0xfd;/第二行线 temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xed: key=0; break; case 0xdd: key=1; break; case 0xbd: key=2; break; case 0x7d: key=3; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; if

13、(key=0&P1=0x44) /按键5:设置南北绿灯时间+ num1=value1; if(num2!=159) /保证交通合理,红灯最大值计时159s,绿灯不再增加 num1+; value1=num1; shi1=num1/10; ge1=num1%10; num2=value1+value2;/显示东西红灯时间 shi2=num2/10; ge2=num2%10; if(key=1&P1=0x44) /按键6:设置南北黄灯时间+ num1=value2; if(num2!=159) num1+; value2=num1; shi1=num1/10; ge1=num1%10; num2=

14、value1+value2;/显示东西红灯时间 shi2=num2/10; ge2=num2%10; if(key=2&P1=0x44&value13) /按键7:设置南北绿灯时间- 保证交通合理,绿灯最小值计时3s,绿灯不再减少 num1=value1; num1-; value1=num1; shi1=num1/10; ge1=num1%10; num2=value1+value2;/显示东西红灯时间 shi2=num2/10; ge2=num2%10; if(key=3&P1=0x44&value23) /按键8:设置南北黄灯时间- num1=value2; num1-; value2=

15、num1; shi1=num1/10; ge1=num1%10; num2=value1+value2;/显示东西红灯时间 shi2=num2/10; ge2=num2%10; /| P3=0xfb;/第三行线 temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xeb: key=0; break; case 0xdb: key=1; break; case 0xbb: key=2; break; case 0

16、x7b: key=3; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; if(key=0&P1=0x44) /按键9:设置东西绿灯时间+ num2=value3; if(num1!=159) num2+; value3=num2; shi2=num2/10; ge2=num2%10; num1=value3+value4;/显示南北红灯时间 shi1=num1/10; ge1=num1%10; if(key=1&P1=0x44) /按键10:设置东西黄灯时间+ num2=value4; if(num1!=159) num2+; value4=

17、num2; shi2=num2/10; ge2=num2%10; num1=value3+value4;/显示南北红灯时间 shi1=num1/10; ge1=num1%10; if(key=2&P1=0x44&value33) /按键11:设置东西绿灯时间- num2=value3; num2-; value3=num2; shi2=num2/10; ge2=num2%10; num1=value3+value4;/显示南北红灯时间 shi1=num1/10; ge1=num1%10; if(key=3&P1=0x44&value43) /按键12:设置东西黄灯时间- num2=value4

18、; num2-; value4=num2; shi2=num2/10; ge2=num2%10; num1=value3+value4;/显示南北红灯时间 shi1=num1/10; ge1=num1%10; P3=0xf7;/第四行线 2未用 temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) temp=P3; switch(temp) case 0xe7: key=0; break; case 0xd7: key=1; break; case 0xb7: key

19、=2; break; case 0x77: key=3; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; if(key=0&P1=0x44) /按键13:南北紧急情况:南北绿灯常亮 东西红灯常亮 P1=0x41; shi1=ge1=shi2=ge2=18; if(key=1&P1=0x44) /按键14:东西紧急情况:东西绿灯常亮 南北红灯常亮 P1=0x14; shi1=ge1=shi2=ge2=18; if(key=2&P1=0x44)/按键15: if(key=3&P1=0x44)/按键16: void T0_time() interr

20、upt 1 /定时器T0 中断子程序 TH0=(65536-45872)/256; TL0=(65536-45872)%256; num+;设计总结通过这次课程设计,使我掌握了交通灯控制的基本思想与原理,学习到了一些有用的专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,电路图的绘制以及在常用编程设计思路技巧的掌握方面都向前迈了一大步。而且本次课程设计是分五人小组设计模式,增强了我的团队意识,以及团队之间共同商量问题,解决问题的能力。本次课程设计的过程是艰辛的,不过收获却是很大的。 在设计过程中,会出现了一些问题,但都是常见的小问题,如:在代码中中

21、英文符号转换问题,输入字母出错,程序语法错误,代码维护困难等;在调试过程中出现异常,显示效果不是理想的效果。不过经过调试修改,代码模块化,小组成员的共同商量与检查这些问题都一一解决,程序顺利完成,并实现了预期的功能。 综合课程设计让我们把课堂上学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和认识。在此,由于自身能力有限,在课程设计中碰到了很多的问题,我们通过查阅相关书籍、资料以及小组成员之间的交流、已经老师的耐性指导把困难统统克服。 由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在我们设计和调试的过程中,也发现了一些问题,不过设计也有很多不足之处,譬如红灯和绿灯的切换还不够迅速,红绿灯规则不效率还不是很高,键盘效率不太高等等,这需要在实践中进一步完善,希望在今后的学习中学习更多新知识然后得以完善。 当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,在今后的学习和工作中设计出更好的作品!同时感谢老师和同学的耐心指点,使我能够顺利的完成本次任务。参考文献【1】 全利 主编 单片机原理及接口技术 第二版【2】 郭天祥 主编 新概念C51单片机C语言教程【3】 XX文献交通灯控制原理图

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1