《单片机课程设计-基于单片机的交通灯的设计(16页).doc》由会员分享,可在线阅读,更多相关《单片机课程设计-基于单片机的交通灯的设计(16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-单片机课程设计-基于单片机的交通灯的设计-第 12 页单片机课程设计题 目 基于单片机的交通灯设计 目 录1 课程设计的目的12 课程设计的任务与要求13 实验论证及总体方案框图13.1 实验过程13.2 理论论证14 设计原理及功能说明25各板块原理说明35.1最小系统AT89C52模块35.2显示模块功能46系统的操作说明56.1对实物进行安装与焊接56.3焊接工具介绍及材料66.5焊接的注意事项77 调试及故障分析78总结8参考文献11附录1 :总体电路原理图12附录2:实物图13附录3:元件清单14附录4: 源程序12摘 要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动
2、传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多,在学习了单片机的有关知识之后,运用相关知识来设计完成交通信号灯。我对单片机很感兴趣,所以在听了老师给我们讲解单片机相关知识以后,我自己课后查找资料, 不断学习单片机方面的知识。这次课设给了我学以致用的机会,我利用自己学的单片机知识,做了一个基于单片机的模拟交通灯控制的设计。1 课程设计
3、的目的(1)学习基本理论在实践中综合运用的初步经验,掌握基于单片机的交通灯电路设计的基本方法,设计步骤,培养综合设计与调试能力。(2)通过单片机课程设计,熟练掌握汇编语言或C语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。(3)通过交通信号灯控制系统的设计,掌握定时/计数器及中断的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。(4)学习掌握keil软件的使用。2 课程设计的任务与要求(1)用单片机STC89C52设计一个交通灯系统,并用数码管显示时间,LED指示通行;(2)利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。1、东西绿
4、灯亮,南北红灯亮2、东西黄灯亮南北红灯亮3、东西红灯亮,南北绿灯亮 4东西红灯亮,南北黄灯亮;(3)电路供电电源5v。3 实验论证及总体方案框图3.1 实验过程(1)根据所确定的原理图,列出所需元器件。(2)元器件的检测。(3)安装与焊接。(4)分析与调试。3.2 理论论证利用MCS-51内部的定时器/计数器进行,配合软件延时实现倒计时。在工作之前必须通过软件设定它的工作方式,即对寄存器TMOD中每位进行设定。显示模块分别是码管显示和LED显示,数码管倒计时显示可以提醒驾驶员在信号灯颜色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方
5、式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的一种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。通过两种显示结合,是本设计更合理可靠。图3-1单片机交通灯结构图4 设计原理及功能说明当接通5v电源后,按下电源开关,数码管显示“15”,同时,东西方向绿灯亮,南北方向红灯亮,数码管开始倒计,当数码管倒计时15秒完成后,数码管显示“5”,同时,东西方向黄灯亮,南北方向红灯亮,数码管开始倒计,当数码管倒计时5秒完成后,方向切换,显示相反。数码管显示“15”,同时,东西方向红灯亮,南北方向绿灯亮,数
6、码管开始倒计,当数码管倒计时15秒完成后,数码管显示“5”,同时,东西方向红灯亮,南北方向黄灯亮,数码管开始倒计,当数码管倒计时5秒完成,即一个循环完成。原理图如下:图4-1 原理图5各模块原理说明5.1最小系统STC89C52RC模块1.STTC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。2.关于5
7、2单片机最小系统原理说明:5V电源:给系统供电。晶振:给单片机运行提供脉冲。EA接高电平:表示运行内部程序存储器下载的程序。图5-1 最小系统主要管脚说明:VCC(40脚):供电电压GND(20脚):接地。 RST:复位输入。/EA/VPP(31脚):当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。只选用偏外存储器,否则单片机上电或复位后选用片内程序存储器。XTAL1(19脚):反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2(18脚):来自反向振荡器的输出。5.2显示模块功能显示模块分别是数码管显示和LED显示,数码管倒计时显示可以
8、提醒驾驶员在信号灯颜色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的一种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择 。通过两种显示结合,是本设计更合理可靠。如图所示:图5-2显示模块功能图6系统的操作说明6.1对实物进行安装与焊接按仿真图在电路板上进行元器件的排列与插装。以合理、美观为标准,其中色环电阻器、二极管采用水平安装,电解电容、发光二极管采用立式安装。按工艺要求对元器件进行焊
9、接,焊接时使元器件紧贴电路板,不要出现虚焊。焊接插头线,并对其进行固定。6.2系统操作1.接好电路中的电源供电线、驱动电路开关与负载供电线。2.检查好电路板中没有短路现象、电源供电线、驱动电路开关与负载供电线、负载供电线都接好后通电使用。3.电路安装好后,通电即可正常使用。6.3焊接工具介绍电烙铁是焊接电子元器件的重要工具,直接影响着焊接的质量。电烙铁从结构上分为外热式和内热式两种。常用的有75W、45W、25W、20W等。选择电烙铁要根据焊接任务的不同,选用不同功率的电烙铁。一般焊接半导体元器件选用20W电烙铁即可。新的电烙铁使用前要进行“上锡”。首先将烙铁头弄干净,然后把电烙铁通电加热,预
10、热一会儿之后将烙铁头粘上松香,再用烙铁头将焊锡丝熔化,将烙铁头上薄薄的镀上一层锡。6.4焊接的手法焊接的手法为左手食指中指夹住焊锡丝,右手拿住电烙铁,烙铁头随着锡丝走。手工焊接的握电烙铁的方法,有正握、反握及握笔式三种。焊接元器件及维修电路板时以握笔式比较方便。焊接时切忌要注意安全。正确的焊接方法是:准备施焊、加热焊件、加焊锡、去焊锡和去烙铁。准备施焊:准备好焊锡丝,预热好电烙铁。 加热焊件:将烙铁头接触到焊接点,使被焊引线和焊盘加热。 加焊锡:当焊件加热到一定温度后,放上焊锡丝,焊锡丝能够立即沾附到被焊件上。去焊锡:当熔化一定量的焊锡后,将焊锡丝移开。去烙铁:当焊锡丝安全湿润焊点后,朝大约4
11、5度方向迅速移开电烙铁。6.5焊接的注意事项对焊件要先进行表面处理:一般焊件表面都被氧化,需要表面处理,去除表面污垢,氧化膜等等,采用机械刮磨或酒精清洗。 对元件引脚进行镀锡:对导线、引脚的焊接部位要进行焊锡润滑,也称上锡。焊料量的控制:焊点的焊锡量要适量,不可过多或过少。 焊点的质量:焊接质量的好坏以焊点圆滑,光亮为好。7 电路图及仿真设计 图7-1 东西方向通行,南北方向禁止图7-2 黄灯闪烁,东西方向禁止,南北方向禁止 图7-3 南北方向通行,东西方向禁止8体会与建议在本次课程设计中,重新巩固了单片机理论课时,感觉到的内容很多,知识点很杂、很繁琐。通过自己的努力也更进一步掌握了单片机的内
12、容构造和工作原理,以及接外部电路的情况。当然光有理论知识那只是“纸上谈兵”,还需实际动手去实践。真正把所学的用到日常生活中,理论联系实际,做出实物模型。这次单片机课程设计,我们设计的是简易十字路口交通灯设计,通过这次课程设计我感觉到要想做成功,必须花时间多做准备,查阅大量资料,每个过程都很繁琐,都要认真地分析每一步每一个模块要实现大的功能,然后分步进行编写调试,最后整合成在一起。在这次课程设计中,让我感到过程决定结果,细节觉得成败。过程很艰难,每个细节都要认真的分析。通过本次课程设计,我们要对所做的事情有耐性,在编程的时候有困难,也可能变得不一定成功,所以要经过多次调试,分析,改正,反复去做;
13、认真虚心求教老师和同学。在本次课程设计中,遇到最难的问题是倒计时这个模块。从一位静态LED显示开始调试,到2位动态LED显示调试,遇到很多困难。一位一位的静态显示,都可以,用动态显示方法的时候,就出现乱码,之后一条一条指令的测试,知道没出错为止。这时又有问题了,十位先显示个位要显示的数再显示十位要显示的数,经过反复的调试和老师的帮助下,发现我们把段选和位选分开了(有两个子程序来写)。程序经过更改后,继续调试,又发现2个数码管只是移位的在显示,可且间隔时间很长(这是由延时时间太长引起的)。设置延时时间很短的时候,就发现显示很快(很容易会发生交通意外),经过同学的帮助下,查处我们的定时有问题,在同
14、学的帮助下,重新编写和调试定时,最后成功了。在本次课程设计中,我们用汇编语言编写,觉得汇编语言很复杂很麻烦,能用的寄存器少,每个参数都要放在寄存器里,很繁琐,而且格式是固定的,编写出来的程序很长。在这次课程设计中,经历了多次失败的洗礼,我明白在以后学习和实践中,我要努力掌握知识,多动手,多思考,以免在以后的学习工作中犯同样的错误。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,虽然说时间只有一周 ,而且很忙碌,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。一次次的讨论学习与修改,对实验数据的更正,不断调整实验方案,对每
15、一个细节的认真把握,最终焊接的电路图与仿真模拟都是一次性完成,非常让人高兴。合作的力量是巨大的,上网查资料,与身边的学霸们相互请教,纵然有困难,相信也是没有什么问题是不能解决的,感谢他们的帮助。参考文献1江晓安.董秀峰.数字电子技术(第三版)西安:西安电子科技大学出版社,20082李建忠.单片机原理及应用.西安电子科技大学出版社,20083徐爱钧.8051单片机实践教程.北京电子工业出版社,20054楼然苗,李光飞.51系列单片机设计实例.北京航空航天大学出版社,20065全国大学生电子设计竞赛组委会.北京:北京理工大学出版社,2004年8月. 6王守中,聂元铭. 51单片机开发入门与典型实例
16、. 北京:人民邮电出版社,20097钟富昭,张晨. 8051单片机典型模块设计与应用. 北京:人民邮电出版社,20078胡学海. 单片机及应用系统设计. 北京:北京电子工业出版社,2001附录1 :总体电路原理图附录2 :实物图附录3 :元件清单序号名称型号数量1单片机STC89C5212双位数码管共阳极13LED灯红黄绿124电阻220欧85电阻4.7k26电阻1k127三极管PNP28电容22pf29晶振11.0592110电解电容10uf111按键普通1附录4: 源程序#include /我们对51单片机编程,要引用头函数#includesbitled_A=P35; /数码管位sbitl
17、ed_B=P34; /数码管位/*led指示灯引脚定义*/sbitdx_R=P20;sbitdx_Y=P21;sbitdx_G=P22;sbitnb_R=P23;sbitnb_Y=P24;sbitnb_G=P25;bit flag=0;sbitkey_stop=P33;char N=25; /初始时间是25char tab_disp=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/共阳极码表/*延时子函数*/void delay(int t )while(t-);/*显示子函数*/void display(char dat)led_A=1;
18、 /先位灭显led_A=P1=0XFF; /再段灭显P1=tab_dispdat/10; /赋显示的数if(dat/10)led_B=0;delay(1000);/延时led_B=1; /段灭显位灭显led_B=P1=0XFF;P1=tab_dispdat%10; /赋显示的数led_A=0;delay(1000); /延时/这个是循环显示60遍显示的函数void deal(char m)int t=30;while(t-)display(m); /循环显示60遍显示的函数void KEY()unsigned char save;if(key_stop=0)delay(20);if(key_s
19、top=0)flag=1;save=P0;P0=0x84;while(key_stop=0);while(flag=1)if(key_stop=0)delay(50);if(key_stop=0)flag=0;P0=save;while(key_stop=0);/*主函数*/void main(void)unsigned char i;while(1)N=15; /初始时间是25dx_R=0;dx_Y=1;dx_G=1;/指示灯0是亮,1是灭nb_R=1;nb_Y=1;nb_G=0;/指示灯0是亮,1是灭for(i=N;i0;i-) /一秒一秒的减deal(i);deal(i); N=5; /
20、初始时间是25dx_R=0;dx_Y=1;dx_G=1;/指示灯0是亮,1是灭nb_R=1;nb_Y=0;nb_G=1;/指示灯0是亮,1是灭for(i=N;i0;i-) /一秒一秒的减deal(i);nb_Y=1;deal(i);nb_Y=0;N=15;dx_R=1;dx_Y=1;dx_G=0;/指示灯0是亮,1是灭nb_R=0;nb_Y=1;nb_G=1;/指示灯0是亮,1是灭 for(i=N;i0;i-) /一秒一秒的减deal(i);deal(i); N=5; /初始时间是25dx_R=1;dx_Y=0;dx_G=1;/指示灯0是亮,1是灭nb_R=0;nb_Y=1;nb_G=1;/指示灯0是亮,1是灭for(i=N;i0;i-) /一秒一秒的减deal(i);dx_Y=1;deal(i);dx_Y=0;