交通灯控制系统课程设计论文.docx_第1页
交通灯控制系统课程设计论文.docx_第2页
交通灯控制系统课程设计论文.docx_第3页
交通灯控制系统课程设计论文.docx_第4页
交通灯控制系统课程设计论文.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录1课程设计目的32课程设计题目描述和要求33课程设计报告内容33.1总体设计方案33.2交通灯控制系统的流程图43.2.设计原理分析43.3软(硬)件调试过程及问题54总结5参考文献 5附录1系统完整软件原理图 6附录2系统完整程序 7111课程设计目的(1)通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加深“单片机原理应用”课程的基本知识。 (2)通过交通信号灯控制系统的设计,掌握定时/计数器及中断的使用方法,和模块化的程序编写,最终提高我们的逻辑思维能力。掌握并行多任务。(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。2课程设计题目描述和要求1.用红、绿色发光二极管作信号灯指示灯。2.状态一:南北直行,东西停止;允许南北通行和南北人行道亮绿灯,东西停止和东西人行道亮红灯,同时显示15s倒计时。3.状态二:南北左拐,东西停止; 允许南北左拐亮绿灯,其余亮红灯,同时显示6s倒计时。4. 状态三:东西直行,南北停止;允许东西通行和东西人行道亮绿灯时,南北停止和南北人行道亮红灯,同时显示15s倒计时。5.状态四:东西左拐,南北停止; 允许东西左拐亮绿灯,其余亮红灯,同时显示6s倒计时。6.在每次倒计时小于3s时,数码管闪烁和红绿灯闪烁。7通过按键来设置四种交通灯状态的倒计时时间。3课程设计报告内容3.1总体设计方案3.2交通灯控制系统的流程图3.2.设计原理分析整个系统设计以AT89c51单片机为核心,由键盘模块,数码管显示模块,交通灯模块等组成当倒计时时间小于0时,交通灯状态切换;当1s的时候,倒计时减1;两位数码管4ms动态扫描一次;当倒计时小于4时,交通灯闪烁和数码管闪烁。4ms扫描一次按键,可设置一标志位,在倒计时小于0和倒计时减1之前做判断,当设置键按下时,标志位置为1,状态切换和倒计时减1停止,从而进入倒计时时间的调整。按键模块设置了3个键,分别为设置键(set),加键(up),减键(down)。当设置键按下时,keyflag=1,倒计时和交通灯状态切换停止,交通灯状态调到第一种状态,这时可通过up键和down键来调整倒计时的时间并且储存起来,便于设置完后读取。设置键第二次按下时,交通灯的状态跳到第二种状态,同样通过up键和dowm键调整倒计时的时间。当设置键第五次按下时,keyflag=0,倒计时置为-1,重新开始交通灯状态切换和通过按键设置的倒计时时间。(注意按键的消抖和判断按键是否放开)3.3软(硬)件调试过程及问题软件调试过程:先把每一个要实现的功能,编写成小模块,进行调试,之后在整合起来调试。硬件调试过程:按照开发板的原理图,把线接好,跳线帽该断开的要断开。查看开发板数码管是共阴的,还是共阳的。复制一份程序,直接进行修改,在下载到单片机上。4总结为期一周的单片机课程设计结束了,在老师的讲解下,加深了之前对多任务的理解以及时间片的概念,最重要的是编程思路和逻辑思维,只要思路理清了,仿真过程的问题改下程序就行了,所以说最重要的编程思路,理解自己写的每一条语句,当语法没错误时,仿真没有达到我们想要的效果时,这时就要我们自己去执行一遍程序,去发现其中的一些问题。还有硬件调试的也有很多问题,仿真是理想的状态,而硬件却不是。总之,要软硬件结合才能学到更多。参考文献1 朱定华,戴汝平 单片微机原理与应用 北京:清华大学出版社,2003.08;2 李晓林,苏淑靖,许鸥,牛昱光. 单片机原理与接口技术(第三版). 北京:电子工业出版社,2015.01;3 蔡振江. 单片机原理及应用. 北京:电子工业出版社,2011.08;4 万隆. 单片机原理及应用技术. 北京:清华大学出版社,2010.03;附录1系统完整软件原理图附录2 系统完整程序#include #include #define uchar unsigned char #define uint unsigned int #define LW_dat P3 /定义两位数码管端口 #define JTD_dat P0 /定义交通灯端口 sbit set = P11 ; /按键 sbit up = P12 ; sbit down = P13 ; sbit s1 = P16 ;/定义两位数码管控制端口s1,s2端口 sbit s2 = P17 ; uchar DJS_buffer = 0x3E,6,0x31,5,0xE3,6,0x13,5,0xff ;/交通灯状态切换,倒计时时间 uchar code tab_CA = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 ; /数码管09 CA uchar sec4ms,sec1s,count,mark_0,i,a,p,m; uchar keynum,keyflag,keydisplay; /按键按下后,设定的标志位 char DJS=-1; /倒计时时间 /-void ddelay(uint ms) uint i; uchar j; for(i=0;ims;i+) for(j=0;j250;j+) _nop_(); /一个机器周期,1us _nop_(); /适用于精度高的_nop_(); _nop_(); /-void Timer0_Init(void) /定时器0初始化TMOD=0x01;TH0=(65536-4000)/256;TL0=(65536-4000)%256;EA=1;ET0=1;TR0=1;void Timer0(void) interrupt 1 /进中断TH0=(65536-4000)/256;TL0=(65536-4000)%256;sec4ms=1;/标记count+;if(sec4ms=1)if(count=200) count=0;sec1s=1; /-void JTD() /定义交通灯 if(DJS_bufferi!=0xff) JTD_dat=DJS_bufferi+; / 状态切换 DJS=DJS_bufferi+; /状态切换=倒计时间m+; /交通灯闪烁,状态切换标志位if(m=5) m=1; else i = 0;/-void smg_display() /定义两位数码管 mark_0=mark_0; /标记 s1 = 0;s2 = 0; if(mark_0=0) s1 = 1; s2 = 0;/动态显示 LW_dat= tab_CADJS/10; else s1 = 0; s2 = 1; LW_dat = tab_CADJS%10; void read_key() if(!set)/设置键按下 ddelay(5);/延时5ms if(!set) keynum+; /标志位 if(keynum=6) keynum=1;/返回 keyflag=1; /标志位keyflag置1,倒计时暂停 keydisplay=1; /防止在调节倒计时时间时,倒计时小于3时,交通灯闪烁 while(!set);/判断键是否放开 ddelay(5); while(!set); switch(keynum) case 1: /第一种状态为keynum=1, JTD_dat=DJS_buffera; break;case 2:a=a+2; /第二种状态为keynum=2, JTD_dat=DJS_buffera; break;case 3:a=a+2; JTD_dat=DJS_buffera; /第三种状态为keynum=3, break;case 4:a=a+2; JTD_dat=DJS_buffera;/第四种状态为keynum=4, break;case 5: keyflag=0; /返回倒计时 a=0; /清零 DJS=-1; /按键设置完后,进入交通灯状态切换 i=0; /按键设置完后,交通灯从第一种状态开始 keydisplay=0; /清零,防止在调节倒计时时间时,倒计时小于3时,交通灯闪烁 break; if(keynum!=0)/当设置键按下时才能操作 if(!up)/加键 ddelay(5);/消抖ddelay(5);/消抖 if(!up) while(!up);/按键松开ddelay(5);while(!up); switch(keynum) case 1: DJS+;if(DJS=100) DJS=0;DJS_buffer1=DJS; /存储设定值 break; case 2: DJS+;if(DJS=100) DJS=0;DJS_buffer3=DJS; break ; case 3: DJS+;if(DJS=100) DJS=0;DJS_buffer5=DJS; break ; case 4: DJS+;if(DJS=100) DJS=0;DJS_buffer7=DJS; break ; /以下是减的函数 if(!down) /减键 ddelay(5); if(!down) while(!down);ddelay(5);while(!down); switch(keynum) case 1:DJS-;if(DJS0) DJS=99; DJS_buffer1=DJS; break ; case 2:DJS-;if(DJS0) DJS=99; DJS_buffer3=DJS; break ; case 3:DJS-;if(DJS0) DJS=99; DJS_buffer5=DJS; break ; case 4:DJS-;if(DJS0) DJS=99;DJS_buffer7=DJS; break ; void main() uchar t1,t2; Timer0_Init();/定时器 while(1) if(!keyflag)/标志位keyflag=0,倒计时开始 if(DJS0) JTD(); if(sec1s=1)/P3两位数码管倒计时间隔 sec1s=0 ; DJS- ; if(sec4ms=1) /4ms扫描一次按键和数码管 sec4ms=0 ; smg_display(); read_key(); if(!keydisplay) /标志位,防止在调节倒计时时间时,倒计时小于3时,交通灯闪烁 if(DJS=0) t1+,t2+; if(t1=125) t1=0;JTD_dat=0xFF; /交通灯全灭 if(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论