版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 接口技术课程设计报告现代交通灯设计 学院(系): 机械与电子工程学院专业年级: 电子信息工程10级1班学生姓名: 学 号: 指导教师: 郭文川完成日期: 2013年7月05日- 1 -现代交通灯设计摘 要随着现代交通事业的发展,越来越多的私家车走进寻常百姓家,因此道路的负载强度越来越大,各大城市发生经常性的堵车事件,走路要比开车快已经成了不争的事实,然而传统的交通灯只有红,绿,黄三种颜色,不仅无法方便司机在高度紧张下对路况的判断,因此发生交通事故的可能性大大升高,因此我们需要带倒计时功能,而且可以显示各个通行方向的交通灯,为了设计一款这样的符合现代需求的交通灯,本设计基于单片机,用8255a
2、扩展接口带左转、直行、右转三种通行绿灯,具有倒计时功能,当按下夜间行驶按钮时,所有方向黄灯闪烁,灯第二次按下夜间行驶按钮时,恢复正常行驶,当按下紧急按钮时,所有方向红灯亮,当第二次按下夜间行驶按钮时,恢复正常行驶,并可由管理人员修改倒计时的时间。关键词:现代交通灯 ;introductionwith the development of modern transport, more and more private cars come into the common peoples home, so the load of road become more and more serious,
3、the frequent traffic jams in major cities happened everyday, you can walk faster than driving, which has become an indisputable fact, but the traditional traffic light only have red, green, yellow, which not only cant convenient the driver to see road conditions under high tension, thus it greatly i
4、ncrease the possibility of traffic accident, so we need to invite a traffic light with the countdown function, and can display the traffic directions of traffic lights, in order to design a modern traffic lights whitch can match the demand of need, this design based on single chip microcomputer 89c5
5、1, and extension interface with 8255a to show turn left, go straight, turn right three passage of the green, with the countdown function, when driving at night , all direction yellow lights flashing,when night driving button press at the second time,the display will returns to normal, when press the
6、 emergency button, all direction turns red, when driving at night button a second time, back to normal, and can modify the countdown time by management personnel.keyword; modern traffic lights目 录1设计目的与要求- 1 -1.1 设计目的- 1 -1.2 设计要求- 1 -2系统硬件设计- 2 -2.1 总体设计方案- 2 -2.2 硬件设计- 3 -3系统软件设计- 6 -3.1 程序框图- 6-3.
7、2 各模块程序设计-7 -4仿真与调试- 9-4.1 各种情况下运行结果- 9-4.2 proteus整体仿真电路图- 11-4.3 pcb电路板- 12 -5总结-13 -5.1 遇到的问题- 13-5.2 心得- 14-参考文献- 15 -附录 c语言源程序- 16 -设计目的和要求1 设计目的与要求1.1. 设计目的单片机课程设计作为独立的教学环节,是集中实践性环节系列之一,是学习完单片机原理与接口技术课程后,并在相关课程设计基础上进行的一次综合性练习。单片机课程设计过程中,学生通过查阅资料,接口设计,程序设计,安装调试等环节,完成一个基于mcs-51系列单片机,涉及多种资源应用,并且有
8、综合功能的小应用系统设计。使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路,电子元器件等方面的知识进一步加深认识,同时在软件编程,调试,相关仪器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。使学生增进对单片机的感性认识,加深对单片机理论方面的理解,加深单片机的内部功能模块的应用,如定时器/计数器,中断,片内外存储器,i/o接口,串行口等。使学生了解和掌握单片机应用系统的软硬件设计过程,方法及实现,强化单片机应用电路的设计与分析能力。不仅提高学生在单片机应用方面的实践技能和科学作风,培育学生综合运用理论知识解决问题的能力,还提高了我们在论文撰写方面的能力,为以后
9、的毕业论文的奠定一定的基础。1.2. 设计要求(1)设计一款带左转、直行、右转三种通行绿灯,参见实物效果图。(2)带紧急按钮功能,当紧急按钮按下时,所有方向均亮红灯。(3)夜间运行模式按钮,按下时,所有方向黄灯闪烁。(4)可显示倒计时功能(此处我采用倒计时十秒显示)。(5)可由管理人员修改红绿灯等待间隔时间。- 5 -现代交通灯设计2 系统硬件设计2.1 总体设计方案图1总体设计方案框图本设计基于单片机进行开发:1) 用p1口对7seg-mpx2-ca-blue的段选;2) 用p3.0和p3.1实现对7seg-mpx2-ca-blue;3) 由于单片机自带接口的紧缺,因此需要扩展接口,用p0和
10、p1口接8255a对单片机扩展输出口,8255pa和8255pb分别接matrix-8x8-green的上下八个输入端,实现动态扫描箭头显示,8255pc的第三位连接74ls138,产生时能信号,对三个matrix-8x8-green进行片选,8255pc7可以在接口很紧缺的情况下,控制在中断条件下红灯的点亮,因为此时不进行片选。4) p3.2控制外部中断0,实现紧急情况时红灯的亮灭;5) p3.3控制外部中断1,实现夜间行驶时黄灯的闪烁和熄灭;6) p3.4控制定时器0,实现倒计时7) p3.5控制红灯的点亮与熄灭。系统硬件设计2.2 硬件设计2.2.1 点阵显示电路电路图2 点整显示电路通
11、过8255a的pa口和pb口输出,使点阵扫描显示, 然而matrix-8x8-green缺少位选信号,所以无法对其进行片选,我巧妙的用了三块74ls373对其上下进行连接,通过pc口对锁存器的片选从而对matrix-8x8-green片选,除此之外,还能使扫描更稳定。2.2.2 倒计时电路倒计时电路如图3所示,十字路口交通灯一般倒计时在六十秒之内,所以只采用两段共阳极数码7seg-mpx2-ca-blue进行显示,数码管有十个输入端,a-g是控制显示0-9的输入管,只要输入合适的数据,只能及时的显示,dp是是否显示小数点,当某位接低电平时,表示所在位的数码管被点亮,接高电平的数码管通过锁存器对
12、p1过来的数据进行锁存,锁存器的使能端接地,ale端接单片机的晶振ale,从而实现显示功能。图3倒计时电路图4 控制电路2.2.3 控制电路:night按钮和单片机的p3.3口相连,按钮按下,跳入中断,黄灯闪烁,进入夜间行车状态,当night再次按下时,跳出中断,黄灯熄灭,进入日间行车状态,emergency按钮和单片机的p3.2口相连,按下时,跳入中断,红灯点亮,倒计时,和箭头显示都关闭,进入紧急状态,当红灯再次按下时,跳出中断,关闭红灯,继续中断前的工作状态。2.2.4 复位电路复位是单片微机的初始化操作,其主要功能是把pc初始化为0000h,使单片微机从0000h单元开始执行程序。除进入
13、系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动,也可以通过监视定时器来强迫复位。rst引脚是复位信号的输入端。复位电路在这里采用的是上电+按钮复位电路形式,具体连接电路如图复位是单片微机的初始化操作,其主要功能是把pc初始化为0000h,使单片微机从0000h单元开始执行程序。除进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,可以按复位键以重新启动,也可以通过监视定时器来强迫复位。rst引脚是复位信号的输入端。复位电路在这里采用的是上电+按钮复位电路形式,具体连接电路如图5所示:图5 复位电路模
14、块2.2.5 时钟电路时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。为达到振荡周期是12mhz的要求,这里要采用12mhz的晶振,另外有两个22p的电容,两晶振引脚分别连到xtal1和xtal2振荡脉冲输入引脚。具体连接如图6所示。图6 时钟电路模块3 系统软件设计3.1 程序框图系统软件由主程序和子程序组成,主程序主要是对程序的初始化,子程序包括定时中断,延时,点阵显示,倒计时等各个模块,图7是主要的程序框图。图7软件程序框图系统软件设计
15、3.2 各模块程序设计3.2.1 点阵箭头显示:void arrow() /箭头函数 for(arrow_j=0;arrow_j4;arrow_j+) /扫描显示 pa8255=tab_1arrow_j; pb8255=tab_2arrow_j; delay(2)3.2.2 倒计时程序:void t0_time() interrupt 1 /定时中断服务程序 th0=15536/256; /设置定时起点 tl0=15536%256; num+; if(num=10) /满一秒则变换 num=0; temp-; if(temp+1=0) if(pc82552) pc8255=pc8255+1;
16、else pc8255=0x00; temp=10; 3.2.3 夜间行驶中断函数设计:void inter0( ) interrupt 2 /外部中断1 delay(2000);- 7 -现代交通灯设计 while(y=1) /为了第二次按下按钮跳出中断 led_3=1; for (i_inter=0; i_inter150;i_inter+)/倒计时和点阵程序 p1=0xff; /不是整体赋值,所以先屏蔽原值 led_1=1; led_2=0; p1=tableshi; delay(15); if(i_inter=75) led_3=0; p1=0xff; led_1=0; led_2=1
17、; p1=tablege; delay(15); arrow_1(); /箭头函数2 pa8255=0xff; pb8255=0xff; temp-; if(temp+1=0) if(pc82552) pc8255=pc8255+1; else pc8255=0x00; temp=10; shi=temp/10; ge=temp%10;if(led_5=0) y=0; 系统软件设计3.2.4 紧急情况中断函数设计:void inter1() interrupt 0 delay(1000); k=pa8255; m=pc8255; while(x=1) /目的是在第二次按下按钮时跳出中断 pc8
18、255=0xff; pa8255=0x00; p1=0xff;if(led_4=0) delay(100);if(led_4=0)x=0; while(led_4=0); pa8255=k; pc8255=m;4 硬件仿真与调试4.1 各种情况下显示结果 当在proteus里面按下开始仿真按钮时,系统开始仿真,红灯和黄灯都不亮,显示十秒倒计时,倒计时满了切换箭头的方向,依次方向循环往复,直到等待中断的到来,图8,图9,图10为各方向行驶时的显示图8 正常行驶右行- 9 -现代交通灯设计图9 正常行驶左行图10正常行驶前行当按下紧急情况按钮是只亮红灯,其他模块都不亮,如图11所示,当再一次按下按
19、钮时,恢复到紧急按钮按下那一刻之前的显示,即恢复到正常行驶模式。图1紧急情况图2恢复中断前显示当按下夜间行驶按钮按钮时,进入到夜间行驶模式,所有方向黄灯闪烁,如图13所示,且不进行倒计时显示,当再次按下此按钮时,恢复到按下按钮那一刻之前的的显示,进入到正常行驶模式。- 13 -硬件仿真与调试图13 夜间行驶图14 正常行驶前行4.2 proteus总体仿真结果图15 proteus仿真总体电路图总体电路图包括显示电路,点阵电路,接口扩展电路,控制电路等,结果如图15所示。- 11 -总结4.3 pcb电路板经过一个上午的设计,画出了原理图,然后画出了各个元件的pcb封装,花了一个下午的时间把全
20、部结果完成,有一点欠缺的地方就是线是自动布的所以看上去有点乱图18 pcb电路板- 13 -5 总结5.1 遇到的问题:问题1:显示不出完美的箭头。解决方案:把扫描速度调到最慢,发现方法是对的,是按照编程想象的速度进行扫描,因此我加了一个锁存器,接的是单片机晶振,但是结果虽然比刚刚好了但是箭头上面还是有一两个点在闪烁,对于追求完美的我来说,肯定是不满意的,因此我把锁存器的晶振换成了一个外部晶振,经过慢慢的调其晶振频率,果然可以显示出一个完美的箭头。问题2:8255a的扩展后pa,pb,pc不能输出数据。解决方案:百度了很久,查了很多的资料,都没有能够解决问题,接口地址都设置都是对的,控制口设置
21、也是对的,所以百思不得其解,第二天在郭老师的帮助下,把工程下的删除以后,结果就可以运行了。问题:在扩展两片8255a没能成功的情况下,接口不够用,找不到一个口控制红灯,所有接口都被利用了。解决办法:用pc7控制,因为此时跳入中断,暂时不用进行对点阵的片选,从而实现了一口两用的功能,只需要在跳出中断以后,对口重新复制即可。问题用p3.0和p3.1口对两段数码管进行位选,由于不是对p3.1口整体赋值,数码管不能正常显示,。解决办法:首先分析问题产生的原因,由于是分别赋值,尽管单片机的执行速度很快,但是还是有几微秒的差异,所以不能及时的显示,然后要达到整体赋值的位选功能,只能先的数码管的输入值赋值为
22、oxff,先让其灭了,然后对p3.0和p3.1口进行赋值,赋值以后再输入要显示的数据,这样就可以完美解决问题。问题:当执行夜晚行驶中断程序时,不能实现倒计时。解决办法:由于单片机是单线程的微型计算机,所以一次只能执行一条服务,所以只能在中断服务程序里面添加计时功能程序,很显然用定时器进行计时已经不可能,因此通过在单片机里面加一段延时计时程序,从而成功解决问题,瑕疵就是定时没有那么准而已。为题:当解决完问题以后,箭头已经没法正常显示,因为问题中用的是延时,而箭头用到的是扫描,因此这两个是完全矛盾的问题。解决办法:重新定义一个箭头函数,只进行一次扫描,把次箭头函数放到问题中延时的循环里面去,从而解
23、决了问题。问题:为了二次按按钮的时候跳出中断,用goto命令无法跳出到中断的入口。解决办法:把中断的死循环while(1)里面用一个参数代替,当中端口检测到下降沿到来时,只需要把参数置为假就能解决问题。问题:点阵没有使能端,所以如果想只用pa和pb口对其控制的话,没法对其进行选择。解决办法:在输入端接一个锁存器,用锁存器的使能端当做点阵的使能端,从而现代交通灯设计解决了问题。5.2 心得:此次课程设计,遇到了各种各样的问题,但是只要正视它,就能把其解决,也许要花一个下午,或者一个晚上的时间,但是这无疑是一种思维的锻炼,耐力的升华。自我感觉这次实验的难点在于在执行夜间行驶中断的时候要同时计时,而
24、且要扫描显示箭头,如果采用原来方案时,无疑会相互矛盾,因此只能另辟蹊径,当我解决问题的时候,才发现夜间行驶不需要显示箭头,而且不需要倒计时,花了三分之二的时间解决的问题,结果付之东流,但是确实还是学到了一点东西的,只能这样来安慰自己了,不过通过此方法还是帮助了几个同样遇到执行中断还要倒计时的同学。同时此次课程设计的编程让我感觉程序不是编出来的,而是调出来的,写一点调一点,调通为止,虽然经过几天的编写,程序是写出来了,但是有欠缺的地方是,程序的执行效率很低,虽然是可以实现,但是有些的方的想法是很不明智的,比如说在行外部中断时,不能进行计时,所以采用延时,而这个地方的延时我是一个数字一个数字的套出
25、来,感觉延迟时间差不多一秒就算完成了。参考文献参考文献1 郭文川.单片机原理与接口技术.中国农业出版社,20072 郭天祥.新概念51单片机c语言教程.电子工业出版社,20093 潘永雄.新编单片机原理及应用.西安电子科技大学出版社,20084 杜洋.爱上单片机.人民邮电出版社,20125 蒋力培.单片机微机系统实用教程.机械工业出版社,20076 牛昱光.单片机原理与接口技术.电子工业出版社,20087 张毅刚,彭喜元.新编mcs-51单片机应用设计,20098 高卫东.51单片机原理与实践.北京航空航天大学出版社,2011- 15 -现代交通灯设计附录:#include#include#i
26、nclude#define com8255 xbyte0x70ff /定义并设置控制口的地址#define pa8255 xbyte0x70fc/定义并设置pa口地址#define pb8255 xbyte0x70fd /定义并设置pb口地址#define pc8255 xbyte0x70fe /定义并设置pc口地址#define uchar unsigned char#define uint unsigned intuint shi,ge,num;int temp=10;uint arrow_j,arrow_j_1;uint i_inter;uint t=4,x=1,y=1,k,m;ucha
27、r code tab_1=0x18,0x30,0x60,0xff; /arrowuchar code tab_2=0x7e,0xbd,0xdb,0xe7; /arrowunsigned char code tab_3=0xff,0x3c,0x7e;/circleunsigned char code tab_4=0xff,0xbd,0xc3;/circleuchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x80,0x90;/共阳极0-9字形代码sbit led_1=p30;sbit led_2=p31;sbit led_3=p35
28、;sbit led_5=p33;sbit led_4=p32;void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=10;y0;y-);void delay_1(unsigned int x) /延时函数int i;while(x-) for(i=0;i227;i+);void arrow() /点阵箭头显示函数- 19 -附录 for(arrow_j=0;arrow_j4;arrow_j+) pa8255=tab_1arrow_j; pb8255=tab_2arrow_j; delay(2); void arrow_1()/点阵箭头显示函数 fo
29、r(arrow_j_1=0;arrow_j_14;arrow_j_1+) pa8255=tab_1arrow_j_1; pb8255=tab_2arrow_j_1; delay(1); main() com8255=0x80; led_3=0; num=0; pc8255=0x00; it1=1; ex1=1; it0=1; ex0=1; px1=1;/设置中断的优先级 px0=1; tmod=0x01; th0=15536/256; /设置定时起点 tl0=15536%256; ea=1; et0=1; tr0=1; while(1) /等待中断- 17 -现代交通灯设计 x=1; y=1; shi=temp/10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 减振器振动力学课程设计
- 食品分析课程设计实验
- 记分牌课程设计
- 课程设计论文模板app
- 水利工程项目审计质量保障制度
- 养老院物资采购流程及制度
- 2024年小学教职工代表大会制度样本(二篇)
- 园艺材料购销合同
- 珠宝购买合同样本
- 葡萄酒购销合作合同
- 北京市2024年中考英语真题【附参考答案】
- 标准吞咽功能评定量表
- 储能电站运维合同范本
- (正式版)SHT 3533-2024 石油化工给水排水管道工程施工及验收规范
- TZZB2483-2021食品包装用耐蒸煮、高阻隔塑料复合膜、袋
- 四川省项目建设工作咨询3000以下收费标准
- 论《城南旧事》的叙事艺术
- (本范本为邀请从事经贸活动的香港邀请函样本,仅供参考)
- 海航集团空中乘务员招聘报名表
- 赵氏家谱字辈
- 胃癌临床路径(2021年版)
评论
0/150
提交评论