《毕业设计(论文)基于单片机的模拟路灯控制系统.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的模拟路灯控制系统.doc(23页珍藏版)》请在三一办公上搜索。
1、摘要设计并制作一套模拟路灯控制系统。本系统以单片机STC89C52RC为控制核心,由显示模块、键盘控制模块、感应传输模块等模块构成。本系统根据单片机内的定时/计数器功能,加上74LS138译码器对时间的位数显示,可以实现时间的定时和显示,并以此来实现对路灯的开关时间的控制并能分别独立控制每只路灯的开灯和关灯时间。同时还能依据光敏电阻对环境明暗变化程度来自动开灯关灯。根据反射式光电传感器ST168,对交通情况自动调节灯亮状态。关键词:单片机;译码器;光敏电阻;反射式光电传感器、目录摘要绪言1 硬件设计说明1.1方案设计1.2 系统实现原理说明2 软件设计说明2.1 软件总框架2.2 软件说明3
2、调试说明3.1 调试设备说明3.2 调试方法说明4 产品相关信息 5 总结致谢参考文献附录1绪言单片机的出现至今已经有30多年的历史了,单片机嵌入式技术也经历了几个发展阶段。进入20世纪90年代后,以计算机和软件为核心的数字化技术取得了迅猛发展,不仅广泛渗透到社会经济、军事、交通、通信等相关行业,而且还深入到家电、娱乐、艺术、社会文化等各个领域,并掀起了数字化技术革命。 进入二十一世纪,特别是中国加入WTO后,面对着国际大舞台,更加突出了科学技术是第一生产力的重要性来, 尤其在近几年来,在控制领域方面,从自动化到智能化的发展,从考虑实用性、高端性到性价比上,都体现出了科学技术的拓展状况来。本系
3、统突出了在实现自动、实用的基本功能下,更反应出了智能化的特点来。应用单片机的信息处理功能和传感器的检测信息变化的功能,对一个对象的控制。在对路灯亮灭状况的控制时,也对其进行了对实时交通变化控制的设计。在体现出了实用性、准确性和灵敏性的同时,在对能源节约的方面上,也就突出了本系统的一个重要的特点。1 硬件设计说明1.1方案设计1.1.1 理论分析 根据设计要求,本系统从设计思维方式采用从上到下,由总体扩展到局部,所以有很多子模块构成。设计目标主要包括:单片机控制模块电路、键盘显示电路、电源变换电路、自动检测环境电路、自动检测物体位移电路。如图1.1所示: 图1.1模拟路灯控制系统总体框架 本系统
4、的工作原理是:电源分别向其他四个模块供电,单片机控制其他四个模块,另外三个模块之间没有联系。各个模块在接通情况下,如图1.2所示,通过键盘控制设计调节系统的时间并显示出来,同时传给单片机一个信号,在通过单片机传出信号驱动路灯控制开关点亮或关闭路灯。当周围环境(主要是光线的强弱)发生变化时,通过光敏电阻的阻值变化改变输入单片机信号的大小,经过单片机主控系统传出信号点亮路灯。通过反射式非接触传感器,此传感器的布置如图1.3所示,如果路上有物体通过,反射式非接触式光电传感器就能检测到信号,此信号同样传给单片机,单片机判断分析后传出信号点亮路灯。以上是控制路灯的工作原理说明。为了人能够更好更方便的控制
5、本系统,所以接了显示、键盘电路,此电路以6个数码管分别显示时间的小时、分钟和秒,键盘作为输入输出、调节等功能用。以上单片机控制功能由程序完成。图1.2 路灯控制系统示意图图1.3 路灯布置示意图(单位:cm)1.1.2 设计方案论证与器件选择检测物体移动电路方案一:使用 CCD 传感器来采集路面信息.使用 CCD 传感器,优点是可以获取大量的图像信息,可以全面完整的掌握路径信息,可以进行较远距离的预测和识别图像复杂的路面,而且抗干扰能力强。缺点是 CCD 传感器需要有大量图像处理的工作,需要进行大量数据的存储和计算.实现起来工作量较大,相当繁琐。方案二:使用光电传感器来采集路面信息.使用红外传
6、感器,优点是结构简明,实现方便,成本低廉,免去了繁复的图像处理工作,反应灵敏,响应时间低,便于近距离路面情况的检测。但红外传感器的缺点是,它所获取的信息完全,只能对路面情况作简单的黑白判别,检测距离有限。 综上所述:由于系统只检测有物体(人或者车)经过,所以采用方案二。检测环境变化电路方案一:采用可见光线CMOS传感器P0188,优点是稳定性好,线性好,一致性好,可见光敏感;缺点是成本过高。方案二:采用一般的光敏电阻,优点是成本低,应用广泛,缺点是低照度反应差,稳定性不好。综上所述:由于本系统光线检测精度要求不高,所以选择方案二。1.2系统实现原理说明 1.2.1硬件说明1、单片机主控模块 本
7、次系统采用单片机STC89C52RC,性能特点:加密性强,低功耗,价格实惠,高速可靠,ESD可靠性高,抗干扰性能优良;参数描述:工作频率(080MHZ),工作电压为,FLASH存储器大小,RAM大小BYTE,双列直槽式封装,40个引脚,外部晶振频率40HZ,商业版。外围电路有:一个复位开关,一个12MHZ的晶振,一个电源接口,为了使用方便,我们安装了单片机芯片底座,在此模块的PCB板上设计安装了两排插针,每一排20引脚,分别接单片机的引脚。显示、键盘电路接口 在本系统中,因为要显示小时、分钟、秒三组数,而每显示一组数要两个数码管,一共要6个数码管,所以显示电路接口多,单片机接口资源有限,所以在
8、显示接口问题上,采用译码器,具体接法是在单片机的P2口上,用一个74LS138译码器分别从单片机的P(2.0、2.1、2.2)三个接口引出,这就是位选,这样就可以显示时间(时、分、秒);从单片机的P(1.0、1.1、1.2、1.3、1.4、1.5、1.6)引出,另一端接数码管的引脚,用于数码显示的断选。再把键盘上选择四个按键来控制时间,把它们编号为K1、K2、K3、K4,用K1键来开启或关闭实时时钟,K2键作为选择所要调节的时间是小时、分或秒,K3键作为在调节时间时改变具体数据,K4键用于开启或关闭调控调节时间功能。如图1.4所示。图1.4 按键、显示接口电路原理图2、物体位移检测电路在此电路
9、设计中,根据反射式红外光电传感器的工作原理,对道路上物体的有无和移动进行检测。光电传感器是通过把光强度的变化转换成电信号的变化来实现控制的。光电传感器在一般情况下,有三部分构成,它们分为:发送器(一般为发光二极管)、接收器(一般为光电二极管)和检测电路。本电路采用ST168光电传感器,它是由高发射功率红外光电二极管和高灵敏度光电晶体管组成,工作原理是由红外光电二极管发出红外光线,当有物体近距离通过时,物体作为反射面把红外光线反射回来,光电晶体管接收信号并传出。本电路由一个ST168传感器和一个电压比较器组成,电压比较器的作用是对传感器输出的信号进行整形,之后才能传到单片机里进行处理。如图1.3
10、所示,需要这样的模块3块,一块放到S点,一块放到B点,另一块放S点,在测试过程中,我们采用次小车作为移动物体,把此模块按到路的中部,为了让现象能更加的明显,可以在小车底部贴一条反光纸(卷烟包装纸)。如图1.5所示。图1.5 物体移动检测电路原理图图1.6 反射式红外传感器ST1683、环境变化检测电路在此电路中,主要应用光敏电阻对光线明暗变化其阻值相应变化,从而改变电信号的大小,把此信号传给单片机,单片机根据设定程序输出相应的信号。光敏电阻器(photovaristor)又叫光感电阻,是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。本
11、系统采用环氧树脂封装的CDS光敏电阻。如图6所示。、图1.7 环境变化检测电路原理图图1.8 光敏电阻4、电源电路由于系统中需要不同电压值的电源,所以要设计一个适合与本系统要求的电源,从一个220V的电源接出,通过变压器变压后,由二极管整流桥整流,再分别由7809和7805两种稳压管稳压后输出供给系统,7805支路输出的电压为5V,供给单片机,7809支路输出的电压为9V,供给路灯。这里需要说明,由于调试论证时的相关设备是自制,如模拟的路和路灯,形状大小如图3所示,路灯采用0.1A的发光二极管,每10个串联组成一个路灯,本次实验设置两个路灯,每个路灯安培值为1A,所以路灯电源也由此电源供给。图
12、7显示路灯,图8显示电源原理图。图1.9 实验路灯原理图图1.10 电源电路原理图2 软件设计说明 2.1 软件总框架图2.1 本系统程序设计流程图 2.2软件说明 2.2.1 软件流程 本系统软件由一个主函数和多个子函数构成,在主函数中进行复位定义及调用子函数定义,子函数根据不同模块不同功能进行编写。程序编写在软件keil uVision2集成开发环境下进。这里,由于C语言的方便,所以采用C语言编写程序,没有有汇编语言编写。mian()函数调用了库函数scanf和printf,分别是输入输出函数,C51本身没有输入输出功能,输入输出是通过函数调用来实现的,Keil 51提供的输入输出库函数是
13、通过89C52单片机的串口来实现输入输出的,因此在调用库函数scanf和printf之前,必须先对89C52单片机的串口进行初始化:“TMOD=0x02;TH0=0x06;TL0=0x06;TR0=1;ET0=1;EX0=1;EX1=1;EA=1”。程序中数码管的启动与显示采用查表方式,用无符号字符型定义。在预处理命令下,先说明两个量:宏定义的无符号整型和无符号字符型,用位定义的方式对89C52单片机的P3(07)口进行定义,用数组的方式编写P1口的8位。这些是本次编写程序的基础。根据流程框图,按部就班的编写和调试。对程序进一步了解,请看附录1。(在这里提是错误的,流程图不对,周四中午到我办公
14、室找我,1点左右) 2.2.2 软件设计注意事项 由于本系统的控制功能全部由单片机程序完成,程序的准确与完整关系到系统的性能,所以程序设计要求高。这里提供一些方法与技巧。、模块化编程。各个模块具有一定的独立性和可移植性,可以很容易的查找程序错误或者漏洞,修改程序时不会影响到其他模块的实现。、优化程序。任何一个编写员都要明白,利用简短的程序实现复杂的功能是我们的目标及要求,这样能充分利用单片机内部有限的资源,提高程序运行的效率。、提高程序的可读性。在编写程序过程中,注释必不可少,养成良好的编程习惯,程序逻辑清晰。3 调试说明 3.1 调试设备说明根据设计理念,以模块为调试对象,先对各个模块进行调
15、试,在子模块的功能都能调试成功以后,再组成大的系统进行调试。调试过程中,所用到的工具有万用表、DZX-4敦煌试验台、导线和电阻若干,用导线把各个子模块连接起来,用下载模块STC-ISP-V39把程序下载到单片机STC89C52RC中,根据题目设计要求,第一步,完成设定、显示开关灯时间,并控制整条支路按时开灯和关灯,调试结果时间显示良好,并能够调整时间的多少。在试验台上,调试检测物体移动模块,通过调整滑动变阻器的阻值大小,使光电传感器感应传出的信号明显稳定的传输给单片机。同样的方式检测环境变化检测模块。用万用表检测电源输出电压的大小。最后在自制的道路和路灯装置中检测本系统。3.2 调试方法说明
16、在硬件调试方面,此系统每一块都有相应的指示灯,用来检测相应模块的好坏,这也是在信息获取途径中,对传感器的检验,使信息能够准确无误的采取。单片机最小系统的检测,主要是对各个输入输出(I/O)口的高低电平的检测,这儿直接用万用表测量。 在软件调试方面,主要是在下载模块STC-ISP-V39和Keil 51中进行。特别是在Keil 51中,总体方法还是一个模块一个模块的进行,一条语句一条语句的进行。在程序单步运行或者全部运行的过程中,打开peripherals窗口中的相应的I/O口,每运行一步看I/O口相应位有没有变化。最终把正确的程序下载到单片机模块里,在单片机与电脑通讯过程中,我使用的是232接
17、口,电脑设置为COM1口。经测试得到很好的效果。4 系统相关信息当今人类面临最大的危机就是能源危机,人们在寻找新能源的同时,也在考虑如何有效利用好现有资源的问题。在可持续发展战略的实施中,节约能源是一个很好的举措,合理的、有效的利用资源是我们每一个人都应该考虑的问题,我们今后发展的过程中都应该这么做。即在合理有效利用资源的同时又要很好的得到发展。此系统功能应用空间比较广,在城市中,在公共场合、道路旁的很多路灯由于缺少科学系统的管理,造成了许多浪费,本系统可以解决大中小城市中对路灯照明管理难的问题,能够非常方便可靠的控制路灯,随时都能对路灯的开关、明暗进行调整,从而达到需要路灯亮时它就亮,要它灭
18、时它就灭。这样即能够在方便满足我们生活的同时,又可以有效的利用好资源。在使用本系统时,应该给路灯一个恒流源,这样可以使路灯寿命延长。由于单片机的工作电压只有5V,所以在选择变压器时要注意相关问题。5 总结 通过这么长的时间的努力设计制作,终于圆满完成了设计相关内容,得到预期效果。通过本次设计,对控制系统有了更深的了解,对控制系统的应用熟练度有了明显的提高。特别是以单片机为核心,采用模块组合方式,对对象进行控制,用传感器对对象信息的采集与传输的方法技巧,有了很多的心得体会。对于每一个I/O口的使用,特别是在制作过程中遇到的很多小问题,及对于这些小问题的处理,例如:在硬件制作中,焊接过程难免会遇到
19、很多电路问题,那么对于这些问题的排查;有些单片机的某些I/O口的电压降幅度不够大,从而引起的所控制的对象(发光二极管)无法工作,这就要用万用表测量,从而换I/O口或者换单片机;同样,在软件编写过程中,写程序我用的是C语言编程,而不是汇编语言,确实感到C语言的方便之处,除了语法的判断以外,还有对于功能的实现,在调试过程中,也掌握了许多调试技巧。当然,人无完人,在设计的过程中,不免有些地方考虑不太周全,此系统还存在一些问题,还需要不断地改进,以求完美。6 致谢 毕业论文暂告收尾,这也意味着我在武汉交通职业学院三年的学习生活既将结束。回首既往,自己一生最宝贵的时光能于这样的校园之中,能在众多学富五车
20、、才华横溢的老师们的熏陶下度过,实是荣幸之极。在这三年的时间里,我在学习上和思想上都受益非浅。这除了自身努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。在这次毕业设计制作当中,得到学院的各级领导、老师的关心和支持,在电子信息工程系相关领导老师的配合下,特别是在张桂红老师的耐心细心的指导帮助下,成品制作中,从框架的设计、结构的布局,软硬件的修改,到最终功能的实现;论文的写作中,从内容到格式,从标题到标点,结构的布局到最终的论文定稿;其中的每一步,她都净心教导。在此,感谢各位领导老师,感谢张桂红老师,感谢你们为我们所做的。谢谢! 参考文献1 周立功等编. 增强型80C51单片机速成与实
21、践 .北京:北京航天航空大学出版社,2004.2 张桂红. 单片机原理与应用 .福州:福建科学技术出版社,2007.3 宋文绪,杨帆 .自动检测技术(3版) .北京:高等教育出版社,2008.4 邱寄帆 .Protel 99SE印制电路板设计与仿真 .北京:人民邮电出版社,2006.5 刘同法,陈忠平.单片机基础与最小系统实践. 北京:北京航空航天大学出版社,2007.6附录1此系统的程序预览:#include#define uchar unsigned char /*宏定义无符号字符型*/#define uint unsigned int /*宏定义无符号整型*/uint second,mi
22、nite,hour;uchar time8=0;/ 数组说明uchar h1,h2,m,m1,m2,c,k;uchar table= 0x3f,0x06,0x5b,0x4f, /0 1 2 30x66,0x6d,0x7d,0x07, /4 5 6 70x7f,0x6f /8 9;sbit deng1=P35;sbit deng2=P36;sbit key0=P37;sbit key1=P32;sbit key2=P31;sbit key3=P30;sbit h_w=P33;sbit g_d=P34;void ludeng();void key();void anjian();void hong
23、wai();void guangdian();void delay(uint z);void init();void display(second,minite,hour); /*显示程序说明*/*主函数*/void main() init(); /*初始化子程序*/ while(1)key();anjian();hongwai();guangdian();ludeng();display(second,minite,hour);/*串口初始化程序*/void init() EA=1; /*开总中断*/ ET0=1; /*开定时器0中断*/ TR0=1; /*启动定时器0*/TH0=(6553
24、6-50000)/256; /*启动计数器*/TL0=(65536-50000)%256;second=0;minite=0; hour=0; /*延时子程序*/void delay(uint z) uint x,y;for(x=110;x0;x-)for(y=z;y0;y-);/*键盘控制子程序*/void key() if(key3=0) delay(50); if(key3=0) minite+; if(minite=60) minite=0; if(key2=0) delay(50); if(key2=0) hour+; if(hour=24) hour=0; /*显示子程序*/voi
25、d display(second0,minite0,hour0)uchar i;time3=second0%10 ; time2=second0/10 ; time1=minite0%10 ; time0=minite0/10 ; time7=hour0%10 ; time6=hour0/10 ; for(i=0;i8;i+)P1= tabletimei; P2=i;delay(1);P1=0x00; /*时钟运行子程序*/void timer0() interrupt 1 /*定时器/计数器0中断服务*/uchar t;TH0=(65536-50000)/256;TL0=(65536-500
26、00)%256;t+;if(t=200) t=0;second+;if(second=60)second=0;minite+;if(minite=60)minite=0;hour+;if(hour=24)hour=0;/*时钟调试子程序*/void anjian()while(!key0)delay(50);if(key1=0)delay(50);if(key1=0)c+;if(c=3) c=0;time5=c;switch(c) case 1: if(key3=0) delay(50);if(key3=0)m1+;if(m1=60)m1=0; if(key2=0) delay(50);if(
27、key2=0)h1+;if(h1=24)h1=0;display(second,m1,h1);break;case 2: if(key3=0) delay(50);if(key3=0)m2+;if(m2=60)m2=0; if(key2=0) delay(50);if(key2=0)h2+;if(h2=24)h2=0;display(second,m2,h2);break;default:; /*路灯定时子程序*/void ludeng() if(hour=h1&minite=m1)deng1=0;deng2=0;if(hour=h2&minite=m2)deng1=1;deng2=1;/*检测环境变换子程序*/void guangdian()while(!g_d)deng1=0;deng2=0;delay(100);deng1=1;deng2=1;/*检测物体移动子程序*/void hongwai() while(!h_w)k+;if(k=3)k=0;switch(k) case 1:deng1=0;deng2=1;break;case 2:deng1=1;deng2=0;break;default:deng1=1;deng2=1;指导教师意见指导教师(签名及时间):答辩意见答辩小组组长(签名及时间):成绩评定毕业设计(论文)成绩答辩成绩总评成绩