基于单片机的路灯控制系统设计精品.docx
《基于单片机的路灯控制系统设计精品.docx》由会员分享,可在线阅读,更多相关《基于单片机的路灯控制系统设计精品.docx(23页珍藏版)》请在冰豆网上搜索。
基于单片机的路灯控制系统设计精品
通信工程方向
综合设计
基于单片机的路灯控制系统设计
学生学号
学生姓名
学院名称
专业名称
电子信息科学与技术
指导教师
2013年
12月
12日
摘要
随着社会需求和单片机应用领域的不断扩展,各类智能产品、控制系统都是以单片机技术为核心来进行开发设计的。
本系统采用MSC-51系列单片机AT89C51和相关的光电检测设备设计智能路灯控制器,实现了能根据实际光线条件通过8051芯片的P1口控制路灯开关的功能。
本设计是以光敏电阻对于外界光线强弱的感应能力为基础进行的路灯自动化控制系统设计。
当光线强度弱到一定程度的时候,路灯就会自动灭掉;当光线强到一定程度的时候,路灯就会自动开启。
关键词路灯自动化;光控;单片机
目录
1绪论..............................................................1
2本课程设计的方案..................................................2
2.1所需的软硬件..................................................2
2.2工作原理......................................................2
2.2.1主要模块..................................................2
2.2.2系统框图..................................................2
2.3设计采取的方案................................................3
3主要电路模块的实现................................................4
3.1光敏电阻感应模块与AD/DA转换模块...............................4
3.2IIC总线模块...................................................4
3.3LED灯与数码管显示模块.........................................5
3.4单片机最小系统模块.............................................7
4系统电路图........................................................8
5系统的软件设计...................................................10
6设计过程中遇到的主要问题以及解决办法.............................14
7心得体会.............。
。
.........................................15
结论...............................................................16
参考文献...........................................................17
附录...............................................................18
1绪论
随着夜晚的来临,城市里华灯初上,人们消除了白天的繁忙,漫步穿行于城市的街道上。
在那霓虹漫彩的灯光下,一个个孩子欢快的玩耍着,一对对男女漫步于小道里、花园中,一辆辆汽车奔驰于公路上。
路灯已经成为一个城市的照明系统不可分割更无可替代的一部分,在城市照明中发挥着举足轻重的作用,而其所依靠的就是路灯自动控制系统。
本系统实用性强、操作简单,而且所用的路灯采用LED灯。
众所周知,LED是目前最为节能的发光元件,通过采用LED发光可以节省大量的电能,而且LED发光柔和,亮度适中,对环境无污染,已经广泛的应用于各种照明场合。
因此,智能光控节能路灯必将在未来得到广泛的应用。
但当前大多采用的是定时的路灯自动化控制系统。
其通常都是采用全夜式开启路灯的自动化控制系统。
但因为夏天跟冬天因为天亮与天黑的时差颇大,使得夏天晚上过早的路灯就开启,早上又过晚的关闭。
且世界奇观这么多,偶尔总会出现点极端的天气状况,会造成白天天过黑、夜晚又如白昼般亮的情况(如日全食等),而路灯又不会自动开启或者关闭,这就使得交通事故的发生概率增大,路灯在这种情况下失去了其应有的价值和意义也造成能源的白白浪费。
而且现在路灯已经全球基本普及,大到世界有名的大城市,小到小城镇、小乡村都已经有了路灯,可想而知世界能源在这块的浪费上是多么的巨大。
光控路灯不仅可以解决这类问题,还可以使路灯在有需要的时候自动开启或者关闭,避免了路灯在不需要的时候自动开启或者关闭。
大大的避免了能源不必要的浪费,对于地球环保和能源的节约,可以起到巨大的作用。
光控路灯如果可以普及化,不仅可以为城市省下了一大笔的开支,使其可以将节省下的资金投资到更有意义的地方去,使得城市可以更好、更快的发展。
对于世界来说,更是可以取得巨大的节约能源效果,对于绿色地球的实现做出巨大的贡献。
路灯自动化的控制方式有很多,本系统采用STC89C51和七段数码管显示器、LED灯等相关的光电检测、控制、显示设备,来设计智能光控路灯自动化系统。
实现能根据外界光线条件通过IIC总线模块、AD/DA转换模块等的处理实现控制路灯的自动化开启或者关闭功能。
本设计是以光敏电阻对于外界光线强弱的感应能力为基础进行的路灯自动化控制系统设计。
当光线强度弱到一定程度的时候,路灯就会自动灭掉;当光线强到一定程度的时候,路灯就会自动开启。
本设计以当外界光线强度弱到使光敏电阻阻值大于等于200欧的时候,LED灯会自动开启;小于200欧的时候,自动关闭。
2本课程设计的方案
2.1所需的软硬件
Proteus软件、keil软件、Protel软件、CH341SER驱动软件、STC_ISP_V478烧写软件、单片机STC89C52、PCF8591元件、AT24C02元件、74HC573元件、光敏电阻、发光二极管、七段数码管、电阻、排阻、电容、极性电容、11.0592M晶振、电源、学习用的AT89C52硬件板、开关等。
2.2工作原理
本设计是以光敏电阻可以根据外界光线的强度而改变自身阻值的特性(光线越强,阻值越小;光线越弱,阻值越大)为基础设计的光控路灯自动化控制系统。
其原理是利用光敏电阻感受外界光线强度并体现在自身阻值的变化上,然后根据这一阻值的大小来判断外界的光线亮度情况,然后根据所得数据判断LED是该亮起还是该灭掉。
2.2.1主要模块构成
1、光敏电阻感应模块
2、AD/DA转换模块
3、IIC总线模块
4、LED灯模块
5、数码管显示模块
6、单片机最小化系统模块
其流程为:
光敏电阻读取外界光线的强度,通过ADC转换为数据编码传输给单片机,单片机接收、处理、输出数据使得七段数码管显示出数据(当前光敏电阻的阻值)。
执行中断,判断该光线的强度是否达到设定的要求(这里设定光敏电阻阻值大于、等于200时,LED灯亮;小于200时,LED灯灭),若达到则LED灯亮起;若达不到则LED灯灭掉。
2.2.2系统框图
图2-1系统框图
2.3方案设计与论证
路灯是城市照明工程的主要组成部分,在夜晚,路灯的照明起到非常重要的作用。
但是路灯在起着重要作用的同时,也在消耗着大量的能源。
为了节约能源,路灯控制系统需要采取一定的节能措施,比如说在没有人和车经过时自动关闭路灯,就可以收到明显的节能效果。
因而,方便和节能就是本设计的要点。
方案一:
采用简单逻辑电路组合成控制系统。
可以就系统的各个部分在系统工作时的状态画出时序图,转化为真值表进行逻辑运算,设计出逻辑电路来控制系统的运行。
此方案由纯硬件实现,设计复杂,系统庞大,多级门电路的串联造成的时延对系统的稳定产生不利的影响,而且难以对数据进行复杂的处理。
方案二:
以单片机控制系统为主,辅以少量的必要的逻辑电路。
可以利用有限的控制线和数据/地址总线,简化系统的硬件设计,并充分发挥数量不多的数字逻辑器件的作用,实现了整个题目的基本要求部分。
同时可以用软件实现系统的功能和对数据进行各种后期处理,改善人机界面。
综合考虑,本设计采用方案二,采用STC89C51单片机控制系统的运行。
3主要电路模块的实现
3.1光敏电阻感应模块与AD/DA转换模块
所谓的AD/DA转换就是模数/数模转换,该设计中我们涉及到的是ADC(模数转换)。
PCF8591是具有IIC总线接口的8位A/D及D/A的转换器,具有4路A/D输入、1路A/D输出。
其引脚:
1、ANI0~ANI3为模拟信号输入端,不用时接地。
2、SDA为IIC总线数据输入输出端
3、SCL为IIC总线时钟输入端
4、VREF为基准电压输入端
其原理为:
光敏电阻通过感应外界的光线强度获得数据,通过PCF8591的ANI0端口(数据输入端口)输入数据,进行ADC(模数转换)将感应数据转换成数字数据。
AD/DA模块和光敏电阻感应模块仿真图如下:
图3-1AD/DA转换模块与光敏电阻感应模块
3.2IIC总线模块
随着大规模集成电路技术的发展,一个系统所需要的组件越来越多,所以各组成部分之间便需要总线来实现组件之间数据的传输、控制。
而IIC总线具有简单、有效、高性能优点。
可以大大简化系统的硬件设计。
因此得到广泛应用。
因为AT24C02拥有存储芯片,且可重复擦除数百万次和重复读写的能力。
因此在这里我们便采用AT24C02来实现IIC总线的EEPROM功能。
用它来存储数据并控制数据的输出与接收,实现IIC总线的双向串口通信功能。
其引脚:
1、SDA为串行数据输入输出端,是一个双向漏极开路结构的引脚,这里作为IIC总线数据输入输出端。
2、SCL为串行移位时钟控制端,这里作为IIC总线时钟输入。
写入数据时,上升沿有效;读出数据时,下降沿有效。
IIC总线仿真图如下:
图3-2IIC总线模块
3.3LED灯与数码管显示模块
这里我们应用了74HC573,它包含八路D型透明锁存器。
适用于面向总线的三态输出。
所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。
利用74HC573的锁存功能,使其LE端口接单片机。
利用单片机编程控制锁存数据的输入延迟时间,以此来达到控制LED灯亮与灭和七段数码管显示数值的稳定。
使得LED灯和七段数码管不会一直亮灭亮灭的闪。
其引脚:
1、当LE为高电平时,数据从Dn输入到锁存器;
2、当LE为低电平时,锁存器存储D输入上的信息一段就绪时间直到LE的下降沿来临。
3、当OE为低电平时,8个锁存器的内容可被正常输出;
4、当OE为高电平时,输出进入高阻态。
LED灯模块和七段数码管模块仿真图如下:
图3-3七段数码管显示模块
图3-4LED灯显示模块
3.4单片机最小系统模块
最小系统是51单片机的最基本的组成部分,51单片机的引脚虽然只有四十,但它有很多的扩展功能,根据相应的课题设计要求可以设计相应的外围电路。
编写出相应的控制程序便可以跟外围电路很好的组合成功能复杂的系统。
其引脚:
1、18,19脚为单片机的晶振引脚;外接11.0592MHz的晶振,晶振外围还有2个22pF的起振电容,可以使单片机更好的起振。
2、9脚为单片机的复位引脚;当复位引脚出现连续两个机器周期的高点平时,单片机复位。
3、31引脚为/EA引脚;当/EA接高电平时读取内部储存数据,当内部存储器读取完成后,单片机自动读取外部存储器;当/EA接低电平是,单片机只读取外部存储器,
单片机仿真图如下:
图3-5单片机最小系统模块
4系统电路图
该设计是将上述的六个模块拼接一起组成一个系统体系,以实现设计所需要的功能及光控路灯自动化控制系统。
单个模块其功能相对会比较简单、单一,但将一些模块合理的串接起来就可以实现复杂的功能。
当然也可以实现该设计所需的功能。
其连接方式:
1、光敏电阻通过感应外界的光线强度,将其转换成模拟信号,利用PCF8591的AIN0模拟信号输入端,将模拟数据输入到PCF8591。
2、PCF8591对数据进行ADC转换(模数转化)将模拟信号转换成数据信号。
并根据单片机对SCL(IIC总线时钟输入端)高低电平的控制,利用SDA(IIC总线数据输入输出端)将数据传输至IIC总线的缓存元件AT24C02使其行使EEPROM功能。
3、根据单片机传输给AT24C02的SCL(串行移位时钟控制端)端口的高低电平信号来执行数据的写入或者读出。
写入数据时,上升沿有效;读出数据时,下降沿有效。
利用AT24C02的SDA端来进行数据的双向串口通信。
4、AT24C02在SCL为下降沿的时候通过SDA端将缓存的数据传输给单片机。
5、74H573的LE端口接单片机的端口,利用单片机对LE的输入电平进行控制。
当LE为高电平时,数据从Dn输入到锁存器;当LE为低电平时,锁存器存储D输入上的信息一段就绪时间直到LE的下降沿来临。
实现对LED灯模块跟七段数码管显示模块的延时时间控制,防止一闪一闪的。
6、单片机通过处理数据,判断LED灯模块该亮还是该灭,并输出数据到LED灯模块和七段数码管模块所连接的74HC573的Dn端口。
7、单片机通过对SCL和LE端口电平的输入来控制各模块间数据的传输、接收。
其模块连接流程图:
图4-1模块连接流程
电路总图如下:
图4-2电路总图
5系统的软件设计
启动该程序,接收光敏电阻传输进来的模拟数据,启动ADC转换程序将模拟数据转换成数字数据,并启动IIC总线控制程序将数据缓存到AT24C02中,利用单片机编程对数据进行处理和传输的控制,使得整个系统可以很好的相互协调运行。
以达到实现光控路灯自动化控制系统所需要的功能的实现。
对于IIC总线,、AD/DA转换程序主要利用的是对PCF8591和AT24C02的SDA、SCL端口的输入电平来实现程序的启动和关闭,以此达到控制数据的输出和输入的功能;通过对74HC573的LE端口电平的输入控制,来达到LED灯和七段数码管显示时间的延迟,防止其一闪一闪的。
详细步骤:
启动该程序,光敏电阻感应外界光线的强度并转换成模拟信号,经过PCF8591的AIN0数据输入端口输入到PCF8591里面,经过ADC转换成数据总线。
当SDA端口由从高到低一次跳变,IIC通信开始。
SDA将出具传输到AT24C02里面缓存起来。
当SDA由低到高的一次跳变,IIC通信结束。
将SDA接单片机的P3.2端口,SCL接单片机的P3.3端口。
利用单片机的编程控制P3.2和P3.3端口高低电平的输入就可以控制ADC转换的数据输出延迟时间和IIC总线缓存区的数据输入单片机中或者单片机反馈的数据输入到缓存区里面。
单片机的P0端口接的是74HC573,这是一个八路透明锁存器。
其端口LE接单片机的P1.0跟P1.1,利用单片机的编程来控制P1.0跟P1.1端口高低电平的输出,以控制74HC573的数据传输到LED灯跟七段数码管的延迟时间,防止LED灯和七段数码管的闪动。
当数据显示在数码管中后,中断程序启动,执行判断程序。
判断当百位〉=2的时候LED灯亮起来;判断〈2的时候LED灯就灭掉。
程序中还用到了数据的动态读取与发送程序,使得七段数码管的数值可以随着光敏电阻的感应数据一起不断的变化。
还有延迟函数,可以设定显示函数的延迟时间。
还有IIC总线的启动、结束程序。
还有数据的发送接收函数与显示函数。
具体程序设计见附录:
Keil程序。
本系统的软件执行流程图如下:
图5-1软件执行流程
启动总线程序
voidStart()
{
SDA=1;//时钟保持高,数据线从高到低一次跳变,I2C通信开始
SCL=1;
Delay(0);
SDA=0;
Delay(0);
SCL=0;
}
结束总线程序
voidStop()
{
SDA=0;//时钟保持高,数据线从低到高一次跳变,I2C通信停止
SCL=1;
Delay(0);
SDA=1;
Delay(0);
SCL=0;
}
延时函数程序
voidDelay(uintz)//延时函数延时1ms
{
ucharx,y;
for(x=0;xfor(y=0;y<120;y++);
}
显示程序
voidDisplay(unsignedcharFirstBit,unsignedcharNum)
{
staticuchari=0;
P0=0x00;//数码管消隐
a=1;
P0=0x00;
Delay(0);
a=0;
P0=0x00;
b=1;
P0=Weima[i+FirstBit];
Delay(0);
b=0;
P0=0x00;
a=1;
P0=tempdata[i];
Delay(0);
a=0;
i++;
if(i==Num)//缓存数据
i=0;
}
6设计过程中遇到的主要问题以及解决办法
由于要设计本课题所需要用到的知识有很多都是没有教过的,所有使用的一些元器件也是完全没接触过的型号。
因此在实验中遇到不少的问题:
1、要实现本课题所需要的内容需要用到好多脑子里几乎没半点概念的知识;
2、对于所需要使用到的模块不了解,如AD/DA转换、IIC总线等;
3、对于原理图多需要用到的芯片不会用,如PCF8591、AT24C02、光敏电阻等;
4、对于原理图跟程序之间,各模块如何连接使其成为一个系统不了解。
解决办法:
1、花了的一段时间自学那些没教过的知识,AD/DA转换、IIC总线的应用等,并知道要实现这些功能多需要用到的元器件。
2、花了几天时间全面地查询、了解所需要用到的元器件其原理及怎样应用。
3、花了几天的时间将上面查询到的资料“消化”掉,以便开始课程设计的开始动工设计。
4、资料理解完之后,对于整个系统的构成已经有一个大体的理念了,可以开始动手设计了。
7心得体会
经过这一次的综合设计,让我了解到我的知识是那么的稀少、那么的浅薄。
单片机的时间那么大,我现在所学的,连皮毛都还算不上。
需要多多的努力学习,想要基础的掌握单片机,光靠课堂的学习是不够的,课后仍需要自学许许多多的知识所以想要成为单片机精英,需要付出比现在多好几倍的努力才能达到。
这次的设计,让我更加熟悉了单片机需要用到的Proteus仿真软件、Keil程序编写软件、CH341SER驱动软件、STC_ISP_V478烧写软件的功能和使用方法;也让我学习到了好几种电子元器件的使用方法和原理。
收获颇丰。
在整个设计过程中,我遇到了大量的问题。
比如说,所要用到的元器件找不到、编程有错误等。
但是在老师及同学们的无私帮助下,这些问题都得到了及时的解决。
同时,我要特别感谢我的论文指导老师潘老师,他从开始选题的时候就开始对我进行不懈的指导,帮我剖析论文的结构及设计思路,给予我大量的参考资料。
同时,不断地检查我们的论文进度,督促我们更好更快的完成。
在我遇到问题时,也会及时的给予指导,用生动的比喻和到位的剖析为我排忧解难。
在此,向潘老师表示最诚挚的谢意。
总而言之,本次毕业设计我收获颇多。
不仅学会了两款新的软件protues和KEILC51,也了解了单片机的一些工作原理及常见的用途。
最重要的,本次设计教会了我一种解决问题的方法,这对我以后的工作及学习绝对是大有帮助。
结论
随着社会的发展,路灯已经全球化。
几乎只要有人群的地方就会有路灯。
而用于控制路灯的自动化控制系统因为世界有这个需求,所以也出现了好多利用不同外部因素来实现路灯的自动化控制系统,用来控制路灯的自动亮起或者自动关闭。
当前大多数地方采用的都是定时的路灯自动化控制系统,晚上路灯一整夜都开启着,白天全天关闭着。
但因为夏天跟冬天因为天亮与天黑的时差颇大,使得夏天晚上过早的路灯就开启,早上又过晚的关闭。
且世界奇观这么多,偶尔总会出现点极端的天气状况,会造成白天天过黑、夜晚又如白昼般亮的情况(如日全食等),而路灯又不会自动开启或者关闭,使得一个路灯每年都得应为这个原因而白白浪费了多少能源。
而世界路灯总量又是多么的庞大,那每年世界在路灯这块的能源浪费上课想而知是一个多么庞大的天文数字啊。
光控路灯比时控路灯明显的先进实用、灵活性上更是远远的超越时控路灯。
未来必然会成为世界路灯自动化控制系统的主流。
本设计采用的是利用单片机进行的光控路灯自动化控制系统设计。
但本设计所利用的元器件等原材料并不属于极强耐用型,且设计不够完善,无法随需要而进行修改自己的所想要的光线强度设定其值,高于等于该值就亮;低于就灭。
因此此设计并不适合于现实中大规模的应用。
需要修改一下使用的元器件,改为使用寿命高的元器件进行设计,并添加设定极限值功能和防瞬间强光灯也会亮的防“虚强光”功能——添加个感应强光的设定时间值即可,强光保持一定时间灯才会灭;反之也一样,弱光保持一定时间灯才会亮。
利用修改后的系统就可以在现实中进行大规模的应用。
参考文献
[1]张义和等.例说51单片机(C语言版)(第3版).北京:
人民邮电出版社,2010
[2]彭伟.单片机C语言程序设计实训100例——基于8051+Proteus仿真.北京:
电子工业出版社,2009
[3]李健,蒋全胜,任灵芝.智能路灯控制系统设计[J].工业控制计算机.2010年,第六期
[4]胡斌.元器件及实用电路[M].电子工业出版社,2007-7
[5]冯育长等编著.单片机系统设计与实例分析[M].西安电子科技大学出版,2007
[6]孙敏.数字电路系统[J].电力系统通信.2011年,第三期
[7]何立民.单片机与嵌入式系统应用[J].2002年,第5期:
P5-8
[8]张毅刚,彭喜元,彭宇编著.单片机原理及应用[M].高等教育出版社,2010.5
[9]周荷琴,吴秀清编著.微型计算机原理与接口技术[M].中国科学技术大学出版社,2008.6
[10]查兵,崔浩.单片机原理[J].中国高新技术.2011年,第一期
[11]马忠梅,张凯.单片机C语言应用程序设计[M].北京航空航天出版社,2003年11月第三版
[12]雷思孝,冯育长.单片机系统设计及工程应用[M].西安电子科技大学出版社,2005年5月第一版
[13]江晓安,董秀峰,杨颂华.数字电子技术[M].西安电子科技大学出版社,2002年5月第二版
附录
附录1
图1符合条件,LED灯亮起
图2未达到条件,LED灯灭
附录2
Keil程序:
#include
#defineucharunsignedchar
#defineuintunsignedint
unsignedchardispcount;
sbita=P1^0;//段控制
sbitb=P1^1;//位控制
sbitLeDen=P1^2;//LED灯控制端
sbitLine=P