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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

交通信号灯控制系统设计报告.docx

1、交通信号灯控制系统设计报告 微机应用系统课程设计报告( 交通信号灯控制系统 )课程小组成员:1.姓名:xxxx 班级:xxxxxxxxxx, 学号:xxxxxxxxxx 评语: 成绩: 2.姓名:xxxx 班级:xxxxxxxxxx, 学号:xxxxxxxxxx 评语: 成绩: 3.姓名:xxxx 班级:xxxxxxxxxx, 学号:xxxxxxxxxx 评语: 成绩: 一、课题内容及要求:1. 实验内容:设计一个交通信号灯控制系统,要求:初始状态为两个方向的红灯全亮,时间6秒。主干道绿灯亮,支干道红灯亮,主干道通车,时间为20秒。主干道黄灯闪烁,支干道红灯亮,时间为6秒。主干道红灯亮,支干道

2、绿灯亮,支干道通车,时间为15秒。主干道红灯亮,支干道黄灯闪烁,时间为6秒。循环显示。通过按键输入时间,使主干道和支干道通车时间一样。画出硬件连接电路图,说明各个控制信号的作用。画出程序流程图,编写程序,硬件连接调试,直至正确。编写课程设计报告。2. 实验要求编程实现功能,并撰写课程设计报告一份。二、硬件设计 1、硬件原理框图:2、设计电路: 设计电路主要由四部分组成,一是P1口与十二个发光二极管连接电路,二是P0口、部分P2口和部分P3口与8255连接电路,三是8255的PA口、PB口与四个两位数码管的连接电路,四是8255的PC口与矩阵键盘的连接电路。3、交通灯电路: 设计中采用发光二极管

3、作为交通灯来使用,单片机的I/O接口直接和交通灯(发光二极管)连接。在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,受单片机P1.0P1.5控制。单片机的I/O接口与交通灯电路的具体连接方式为:P1.0P1.2分别接东西方向的红、黄、绿共6个放光二极管,P1.3P1.5分别接南北方向的红、黄、绿共6个发光二极管。12个发光二极管采用了共阴极的连接方式,因此I/O口输出高电平时,与之相连的发光二极管会亮,I/O口输出低电平时,相应的发光二极管会灭。交通灯电路如下图所示 4、倒计时显示电路:该显示装置选用双位数码管来显示交通灯

4、转换的剩余时间,根据控制要求,每个路口需要1个数码管,这样四个路口就要求4个数码管。我们可以选用共阴型数码管。四个路口倒计时显示被置在同一时刻显示不同的数字。电路如下图5、按键模块:按键模块主要利用经过8255扩展之后的PC口来控制的。当有按键被按下时,PC口会产生低电平,按下不同键会调用相应的子程序,根据不同的按键进行相应的处理6、仿真电路及效果图:(1)仿真电路:(2)仿真效果:7、主要元件清单: 名称 件数 参数 选择理由 电阻13220限流,以免烧坏数码管 发光二极管123色便于仿真显示 AT89C511低电压,高性能八位微处理器2位共阴数码管4常用数字显示,便于仿真 开关17单片机复

5、位及键盘 排阻1RESPACK-8驱动数码管排针、排线若干 便于连接电路 晶振112MHz 为单片机工作提供时钟脉冲信号 瓷片电容227pF防止单片机自激电解电容110uF8255A1 扩展并口三、软件设计1、主程序流程图: 2、系统程序设计系统工作原理:(1)主程序:本设计系统以单片机为控制核心,连接成最小系统。按键设置模块产生信号输入,信号灯状态模块显示通行状态,LED倒计时模块模块接受信号并输出。单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。在此过程中系统一直查询是否有时间调节服务。(2)按键程序:按键采用查询方式进行处理,

6、当某个键按下时,单片机确认外设已“准备好”,然后进行相应处理,(3)显示程序:显示主要包括数码管的时间显示和交通灯的交通状态显示,本设计包含六种正常交通状态。3、程序源代码: #include #include #define uchar unsigned char #define uint unsigned int #define PAC XBYTE0x7fff #define PA XBYTE0x7cff #define PB XBYTE0x7dff #define PC XBYTE0x7eff #define state0 6 #define state1 20 #define stat

7、e2 6 #define state3 0 #define state4 6 #define KEYP PC /定义按键连接到PC口 /定义数码管字形015、af uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x5f,0x7c,0x58,0x5e,0x7b,0x71; char disp=0x3f; /声明七段显示初值为小数点 uchar scan4=0xef,0xdf,0xbf,0x7f; /显示器几件判断扫描码 sbit red_a=P10; sbit yellow_a=P11; sbit gree

8、n_a=P12; sbit red_b=P13; sbit yellow_b=P14; sbit green_b=P15; uchar flash_count=0,operation_type=0; /延时 void delay_ms(uchar x) uchar h; while(x-) for(h=0;h0;i-) for(n=1000;n0;n-) PB=0x0a; PA=tablei/10; /十位 delay_ms(2); PB=0x05; PA=tablei%10;/个位 delay_ms(2); void traffic_light_1(uchar x) uchar i,n; r

9、ed_a=1;yellow_a=1;green_a=0; /东西 通行 red_b=0;yellow_b=1;green_b=1; /南北 通行 for(i=x;i0;i-) for(n=500;n0;n-) PB=0x0e; PA=tablei/10; delay_ms(1); PB=0x0d; PA=tablei%10;/主东西 delay_ms(1); PB=0x0b; PA=table(i+6)/10; delay_ms(1); PB=0xf7; PA=table(i+6)%10; /支南北 delay_ms(1); void traffic_light_2(uchar x) ucha

10、r i,n; for(i=x;i0;i-) yellow_a=yellow_a; green_a=1; for(n=1000;n0;n-) PB=0x0a; PA=tablei/10; delay_ms(2); PB=0x05; PA=tablei%10; delay_ms(2); flash_count+; if(flash_count=6)break;/闪烁3次 flash_count=0; void traffic_light_3(uchar x) uchar i,n; red_a=0;yellow_a=1;green_a=1; /东西通行 red_b=1;yellow_b=1;gree

11、n_b=0; /南北通行 if(x=0) for(i=15;i0;i-) for(n=250;n0;n-) PB=0x0e; PA=table(i+6)/10; delay_ms(1); PB=0x0d; PA=table(i+6)%10;/主东西 delay_ms(1); PB=0x0b; PA=tablei/10; delay_ms(1); PB=0xf7; PA=tablei%10; /支南北 delay_ms(1); else for(i=x;i0;i-) for(n=248;n0;n-) PB=0x0e; PA=table(i+6)/10; delay_ms(1); PB=0x0d;

12、 PA=table(i+6)%10;/主东西 delay_ms(1); PB=0x0b; PA=tablei/10; delay_ms(1); PB=0xf7; PA=tablei%10; /支南北 delay_ms(1); void traffic_light_4(uchar x) uchar i,n; for(i=x;i0;i-) yellow_b=yellow_b; green_b=1; for(n=1000;n0;n-) PB=0x0a; PA=tablei/10; delay_ms(2); PB=0x05; PA=tablei%10; delay_ms(2); flash_count

13、+; if(flash_count=6)break;/闪烁3次 flash_count=0; / /* 键扫描函数 */ /扫描4x4键盘几4个七段显示器函数 /PC口接入键盘 PC口高4位做输出低4位做输入uchar scanner() /扫描函数开始 uchar col,row; /声明变量(col列,row行) uchar rowkey,kcode; /声明变量(rowkey行键值,kcode按键码) delay_ms(2); /消除键盘抖动 for(col=0;col4;col+) /for循环,扫描第col列 KEYP=scancol; /高4位输出扫描信号,低4位输入行值 PA=d

14、isp; /输出数字 rowkey=KEYP&0x0f; /读入KEYP低4位,再清除高4位求出行键值 if(rowkey!=0) /若有按键按下 if(rowkey=0x01) row=0; /若第0行被按下 else if(rowkey=0x02) row=1; /若第1行被按下 else if(rowkey=0x04) row=2; /若第2行被按下 else if(rowkey=0x08) row=3; /若第3行被按下 kcode=4*col+row; /算出按键号码 disp=tablekcode; /将键值编码后写入最右侧 while(rowkey!=0) rowkey=KEYP

15、&0x0f; /在读入行键值 delay_ms(4); return kcode; /通过按键使交通灯?状态切换 void traffic_light() uchar key,key0,key1; uchar i,m2; key=scanner(); if(key=14) while(1) switch(operation_type) case 0:/东西红灯(主干道),南北红灯(支干道)) traffic_light_0(state0); operation_type=1; break; case 1:/东西绿灯,南北红灯 traffic_light_1(state1); operation

16、_type=2; break; case 2:/东西黄闪,绿灯灭 traffic_light_2(state2); operation_type=3; break; case 3:/东西红灯,南北绿灯 traffic_light_3(state3); operation_type=4; break; case 4:/南北黄闪, traffic_light_4(state4); operation_type=1; break; else if(key=15) /delay_ms(1000); while(scanner()=15); for(i=0;i1;i+) key0=scanner();

17、while(!key0) key0=scanner(); delay_ms(1000); mi=key0; while(scanner()=key0); key1=m0*10+m1; while(1) switch(operation_type) case 0:/东西红灯(主干道),南北红灯(支干道) ) traffic_light_0(state0); operation_type=1; break; case 1:/东西绿灯,南北红灯 traffic_light_1(state1); operation_type=2; break; case 2:/东西黄闪,绿灯灭 traffic_lig

18、ht_2(state2); operation_type=3; break; case 3:/东西红灯,南北绿灯 traffic_light_3(key1); operation_type=4; break; case 4:/南北黄闪, traffic_light_4(state4); operation_type=1; break; /主程序 void main() PAC=0x81; while(1) traffic_light(); 4、调试与运行:(1)按照硬件连接图,东西方向,P1.0接红灯,P1.1接黄灯,P1.2接绿灯;南北方向,P1.3接红灯,P1.4接黄灯,P1.5接绿灯。(

19、2)参考大量资料后,在实验模拟电路板分阶段模拟(LED显示和数码管倒计时)(3)用proteus和keil相关软件模拟,调试程序和修改电路。(4)在仿真成功后又在实验板上模拟,确定毫无问题开始电路板焊接(5)将电路板焊接好后,再进行检查、修改电路,直至功能正常实现。四、课设心得 XXXX:通过两个星期的交通灯课程设计,我对单片机相关知识有了更深的了解。对于管脚及相关的数码管,有了更进一步的巩固和了解,尤其是I/O口的实用及编程,相当于重新细细温习了一遍。特别对protues软件画电路图及仿真的过程,我几乎是从零开始学习并使用的。说到这里,得感谢小组里同学们的帮助,同时也幸好大家都很团结,让我有

20、更多的热情将这些东西变成自己的。这次课程设计的任务是通过单片机的I/O口来控制交通灯。主要完成两大项任务,第一就是硬件连接图;第二是编写相应的程序来实现硬件功能。看似简单,实际上需要过硬的知识作为基础,平时看看书考试那样的过程,是难以完成这样的任务的。这次设计过程中,遇到了很多棘手的问题,很多东西,动起手来束手无策,大多都只得先通过查阅资料或者参考别人做类似课题,才能自己动手设计画图,编程调试。过程中还错误不少,关于编程我们小组成员有各自想法,有喜欢汇编的也有喜欢C的,大家在自己喜欢的方向深入研究学到很多知识。还有就是protues软件仿真原来及整个过程,虽然并不太难,但是我还是通过这次才真正

21、弄明白的。这次课程设计之后,关于单片机的知识我有了更深入的了解,但更多是让我知道了知识的欠缺,很多环节,都是慢慢翻书或者查找资料才能完成。这也让我明白了,在以后的学习中,应更注重知识的应用,更注重实质的掌握。当然这次课程设计,提高了我的知识应用能力和和实践能力,同时提高了我独立思考、独立完成任务的能力。当然组队之间的相互讨论,也加强了大家的合作精神和团结能力,这对以后的学习和工作也都有重要意义。XXXX:经过此次课程设计,我自我感觉收获颇丰,不仅学会了硬件仿真,而且对硬件的连接与焊接有了更进一步的熟悉。因为是第一次用单片机设计一个实用的设备,所以根据自己的实际,我们最终确定做交通信号灯控制系统

22、。课题确定后,我们就各自先找关于交通灯课程设计的资料,然后汇总。可以说我们组是谁有理就听谁的,很是民主。接下来就是分工了,XXXX主要搞软件,XXXX写报告,而我焊电路,偶尔也客串“软件指导”,在这段时间我们都各司其职,向着共同的目标前进。我们的团队合作精神在最后这几天表现得尤为明显,以至于我们的硬件和软件第一次融合就成功了,这跟我们严谨的作风和细致的操作是分不开的。当然在焊接电路的时候,我也遇到了问题,比如按钮那四个引脚是如何连接的,当时没有万用表,所以问了同学,问了后才知道当按钮按下时对角的接通,而相对的引脚是本来就连着的。还有数码管的引脚,也是问了同学并且查阅了相关资料,才知道如何使用万

23、用表检测一个数码管是共阴极的还是共阳极的。操作起来也挺简单的,先把万用表拨到二极管那一档,如果用红表笔接触一个引脚,黑表笔接触其他的引脚,同时当接触一个引脚,数码管有相应的位亮,说明这个数码管是共阳极的,与此相反就是共阴极的。课程设计之前感觉那些东西挺简单的,可当自己亲身实践后才发现真没有想的那么容易。真不知道,如果没有图书馆那些可借的与此课程设计相关的书籍,和那么方便的网络资源,我们还会不会做出这个来。俗话说,熟能生巧,所以以后我要做更多的设计,以便于熟悉更多的设计技巧。我相信在不久的将来我会设计出自己的产品。XXXX:通过这次单片机的学习和课程设计,我才真正的认识到,知识只有在实际生活中得

24、到运用,它才是有意义的。好多的问题其实很简单,但想要找到问题存在的地方就比较麻烦了。同时我们还要学习其他同学做事认真细心的优点,并且要大胆的尝试,不要总停留在理论上,只有试了,才知道对否。在实践中磨练并成长才是最重要的。做课程设计就是将从课本上学到的知识应用于实际中,微机应用系统课程设计就是很好的实践。在交通灯控制系统设计中,就充分的体现了同学们动手能力的强弱和对课本知识的掌握程度。在整个过程中,我认为最重要的是设计过程,它不仅让我们加深了对理论的理解,也使我们对知识有了更深的认识,对书上知识的应用也有了更进一步的直观了解,同时也是对以往所学有了一次小小的总结与回顾。其次,在插线接线的过程中,

25、我们不仅要心灵手巧,更要细心耐心,有条理有目的的按顺序连线,不能遍地撒网,没有目的性,否则再插线还没连完的时候就头晕眼花了。最后的调试更是一次考验。我们不仅要找错误,更要知道错误的原因,这不仅要求我们掌握设计原理,更要求理解设计原理。每一个错误的原因是什么,错在哪里,怎样改正,我们都必须一一弄清楚。在处理所遇到问题的过程中有成功也有失败,但这确实加强了我们的动手能力,最终我们大家还是体会到了成功的喜悦。在这次的设计过程中,我更深深的体会到了理解知识的重要性,如果你不能真正理解你所学到的东西,你就不能去改正错误,不能去实际运用。因此,在今后的学习中不能仅仅局限于知道了某种理论,而关键在于要真正的理解掌握并能实际运用这种知识。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2