单片机控制led灯程序路灯控制程序

| 工艺 | |
当前位置: && &&
.单片机的太阳能路灯控制器设计.
添加:不详
本文介绍基于单片机的太阳能路灯控制器的设计,对12 V和24 V蓄电池可自动识别,可实现对蓄电池的科学管理,指示蓄电池过压、欠压等运行状态,具有两路负载输出,每路负载额定电流可达5 A,两路负载可以随意设置为同时点亮、分时点亮以及单独定时等工作模式,同时具有负载过流、短路保护功能;具有较高的自动化和智能化水平。2硬件电路组成及工作原理2.1系统硬件结构太阳能路灯智能控制器系统硬件结构如图1所示,该系统以STCl2C5410AD单片机为核心,外围电路主要由电压采集电路、负载输出控制与检测电路、LED显示电路及键盘电路等部分组成。电压采集电路包括太阳能电池板和蓄电池电压采集,用于太阳光线强弱的识别以及蓄电池电压的获取。单片机的P3口的两位作为键盘输入口,用于工作模式等参数的设置。2.2 STCl2C5410AD单片机STCl2C5410AD是STCl2系列单片机,采用RISC型CPU内核,兼容普通8051指令集,片内含有10 KB Flash程序存储器,2 KB Flash数据存储器,512 B RAM数据存储器。同时内部还有看门狗(WDT);片内集成MAX810专用复位电路、8通道10位ADC以及4通道:PWM;具有可编程的8级中断源4种优先级,具有在系统编程(ISP)和在应用编程(IAP),片内资源丰富、集成度高、使用方便。STCl2C5410AD对系统的工作进行实施调度,实现外部输入参数的设置、蓄电池及负载的管理、工作状态的指示等。为充分使用片内资源,本文所设置的参数写入Flash数据存储器内。 2.3键盘电路P3.4(TO)接F1键,用于设置状态的识别及参数设置;P3.5(T1)接F2键,用于自检及"加1"功能,根据程序流程,分别实现不同功能。2.4电压采集与电池管理太阳能电池板电压采集用于太阳光线强弱的判断,因而可以作为白天、黄昏的识别信号。同时本系统支持太阳能板反接、反充保护。蓄电池电压采集用于蓄电池工作电压的识别。利用微控制器的PWM功能对蓄电池进行充电管理。若太阳能电池正常充电时蓄电池开路。控制器将关断负载,以保证负载不被损伤,若在夜间或太阳能电池不充电时蓄电池开路,控制器由于自身得不到电力,不会有任何动作。当充电电压高于保护电压(15 V)时,自动关断对蓄电池的充电;此后当电压掉至维护电压(13.2V)时,蓄电池进入浮充状态,当低于维护电压(13.2 V)后浮充关闭,进入均充状态。当蓄电池电压低于保护电压(11 V)时,控制器自动关闭负载开关以保护蓄电池不受损坏。通过PWM充电电路(智能三阶段充电),可使太阳能电池板发挥**功效,提高系统充电效率。本系统支持蓄电池的反接、过充、过放。2.5负载输出控制与检测电路本系统设计了两路负载输出,每路输出均有独立的控制和检测,具有完善的过流、短路保护措施,电路原理如图2所示。设计了两级保护:**级采用了由R7(0.01 Ω康铜丝)以及运放LM358、比较器LM393等器件组成的过流、短路检测电路,配合单片机的A/D转换及外部中断响应来实现负载过流及短路保护,是一种硬件 软件的方式,LM358的输出送PL.7(A/D转换)口,用作过流信号识别,当电流超过额定电流20%并维持30 s以上时,确认为过流;短路电流整定为10 A,响应时间为毫秒数量级。**级采用了电子保险丝保护,当流经电子保险丝的电流骤然增加时,温度随之上升。其电阻大大增加,工作电流大大降低,达到保护电路目的,响应时间为秒数量级,过流撤消或短路恢复后电子保险丝恢复成低阻抗导体,无须任何人为更换或维修。系统采用了两级保护措施后,在长达数小时的负载短路实验后,控制器仍没出现电路烧毁现象。解决了用传统保险丝只能对电路进行一次性保护以及一旦器件烧毁必须人为更换的问题,同短路后需手动复位或断电后重新开启的系统相比,也具有明显的优点。简化了太阳能路灯控制器维护,提高了系统的安全性能。2.6硬件设计过程中的注意事项(1)感应雷保护电路应设计在太阳能电池板引线入口处,保护电路周围4 mm内不能布置其他器件。(2)防止太阳能电池板反接的二极管必须采用快恢复二极管,这种二极管导通内阻小,充电时发热量小,不用散热器也可以连续充电,充电效果好。(3)充电、负载放电电路的印刷线路宽度至少为4 mm~5 mm,线路上用搪锡处理以增加过电流能力,大电流导线从一层过渡到另一层时,要放置3~5个过孔。(4)过流、短路保护电路选用的电流取样电阻要综合考虑电流、功率及热稳定性三个因素。电阻增大则电路效率下降,本系统选用电阻为0.01 Ω,过电流能力在10 A以上的康铜丝作为电流取样电阻,来产生取样电压,取样电压最多不超过0.2 V,故采用运放LM358对其进行放大。(5)器件的布局和PCB的布线采用模块化方式,大电流信号与小电流信号要分离,对放大电路的线路尤其要精心布置。数字地和模拟地分开,注意电源线和地线的布局。3系统软件设计与本设计方案的硬件电路对应的软件程序包括:主程序、定时中断程序、A/D转换子程序、外部中断子程序及键盘处理子程序、充电管理子程序、负载管理子程序。单片机的软件编程以Keil C编译器的WINOOWs集成开发环境μvision2作为开发平台,采用C51**语言编写。3.1软件编程要点(1)本系统采用较少的按键实现了诸多功能,如负载工作模式的设置、双灯同时工作还是分时工作、负载工作时间的设定、自检功能等,为防止误操作采取了一些措施。这种方法实际上是一键多用的一种尝试,还可以推广到更复杂的人机对话的设计。其思路可参见按键处理流程图。(2)键盘在定时中断服务程序中读取,用中断间隔时间实现键盘的去抖,不必编写另外的延时程序,提高了CPU的利用效率。键盘值存入数据缓冲区,在主程序中读数据缓冲区的内容,执行键盘功能散转子程序。(3)环境光线(闪电、礼花燃放)对太阳能电池板的采样电压有明显影响,故在白天、黄昏的识别时。要进行软件延时,一般控制在2~3 min。(4)外部中断为高优先级中断,编制子程序实现负载过流、短路保护时,要充分考虑到负载启动瞬间会产生数倍于额定电流的冲击电流.冲击电流维持时间在3ms~5 ms,应在软件上采取措施,避免短路与负载开启的误判。确定负载过流、短路后,切断负载输出。负载切断后,每隔一段时间,如20 s,应试接通负载开关,当发现过流、短路信号已消除,则恢复负载的输出。否则负载开关仍然保持断开。(5)为保护负载(灯具),蓄电池过放保护恢复时应用软件设置一个回差电压,这样负载开关不会出现颤抖现象,有利于延长灯具的使用寿命。 (6)根据STC12C5410AD的Data Flash的特点,数据写入时必须启动ISP/IAP命令,CPU等待IAP动作定时后,才继续执行程序,要先关断中断(EA)。还应注意数据写入Data Flash存储器,不能跨越扇区。3.2单片机软件编程4 结束语本文所设计的太阳能路灯控制器可适用12 V或24 V工作的光伏系统,可以直接驱动直流节能灯或通过逆变器驱动无极灯等作为照明光源,也可以驱动一些直流低压负载用于城市亮化。控制器的两路负载输出可以用于机动车道和人行道的照明。照明时间和工作模式可以灵活设置。着重解决了如何对蓄电池及负载进行有效管理的问题。提高了太阳能电池板的使用效率,延长了蓄电池的使用寿命,防止因线路问题而造成意外事件的发生。本文所设计的控制器已在江苏S238省道得到应用,具有设计可靠、成本低廉的特点,具有较高的实用价值。
作者:未知 点击:25次
本文标签:.单片机的太阳能路灯控制器设计.
* 由于无法获得联系方式等原因,本网使用的文字及图片的作品报酬未能及时支付,在此深表歉意,请《.单片机的太阳能路灯控制器设计.》相关权利人与机电之家网取得联系。
关于“.单片机的太阳能路灯控制器设计.”的更多资讯
:枣强县昱诚玻璃钢制品厂
&【求购】 &我想了解:...&&
&【求购】 &我想了解:...&&
&【求购】 &我想了解:...&&
&【求购】 &鸡蛋喷码机...&&
&【求购】 &求购 中国...&&
&【求购】 &求购 汽车...&&
&【求购】 &风机启动电...&&
&【求购】 &求购 金刚...&&
VIP公司推荐大虾们,我想要一个单片机控制LED灯由暗到亮的程序 - 单片机/MCU论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
大虾们,我想要一个单片机控制LED灯由暗到亮的程序
14:31:21  
大虾们,我想要一个单片机控制LED灯由暗到亮的程序,三秋
12:56:49  
同求,怎么做?????
13:02:15  
我操,你们这是典型的伸手党啊
13:04:39  
*************************************************************************************************************
*& && && && && && && && && && && &(c) Copyright 2014-, LanWei Company
*& && && && && && && && && && && && && && & All Rights Reserved& && && && && && && && && && && && &&&
* 文件名:main.c
* 描&&述:工程主文件已完成
* 功 能:PWM信号控制灯的亮灭程度OK
* & & & & & & & &&&用定时器0 和 定时器1,模拟PWM(Pulse Width Modulation)
* 作者:MADE BY DA HE TAO
* 版本号:1.0.2()
*************************************************************************************************************
#include&reg52.h&
*描述:数据类型定义
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
*描述:位声明
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit IR_INPUT = P3^3;
*描述:全局变量定义
bit irflag = 0;
uint8 IrCode[4];
uint32 PeriodCnt = 0;//周期计数值
uint8 HighRH = 0;
uint8 HighRL = 0;
uint8 LowRH = 0;
uint8 LowRL = 0;
*描述:函数前置声明
//void delay_ms(uint16 n);
void InitInfrared(void);
void ConfigPWM(uint16 frq,uint8 dc);
uint16 GetHighTime(void);
uint16 GetLowTime(void);
void ClosePWM(void);
void IrCodeAction(void);
*描述:主函数
void main(void)
& & & & EA = 1;
& & & & ENLED = 0;
& & & & ADDR3 = 1;
& & & & ADDR0 = 0;
& & & & ADDR1 = 1;
& & & & ADDR2 = 1;
& & & & InitInfrared();
& & & & while(1)
& & & & & & & & if(irflag)
& & & & & & & & {& & & &
& & & & & & & & & & & & irflag = 0;
& & & & & & & & & & & & IrCodeAction();
& & & & & & & & & & & & & & & &
& & & & & & & & }& & & &
*描述:延时函数
//void delay_ms(uint16 n)
//& & & & uint8 m = 120;
//& & & & while(n--)
//& & & & & & & & while(m--);
void IrCodeAction(void)
& & & & static uint8 a = 0;
& & & & if((IrCode[2] == 0x11) && a == 0)
& & & &&&& & & & ConfigPWM(100,99);
& & & & & & & & a++;& & & &
& & & & else if((IrCode[2] == 0x11) && a == 1)
& & & & & & & & ConfigPWM(100,50);
& & & & & & & & a++;& & & & & & & &
& & & & else if((IrCode[2] == 0x11) && a == 2)
& & & &&&& & & & ConfigPWM(100,1);
& & & & & & & & a++;& & & &
& & & & else if((IrCode[2] == 0x11) && a == 3)
& & & & & & & & ClosePWM();
& & & & & & & & a = 0;& & & & & & & &
*描述:红外初始化函数
void InitInfrared(void)
& & & & IR_INPUT = 1;
& & & & TMOD &= 0X0F;
& & & & TMOD |= 0X10;
& & & & TR1& &= 0;
& & & & ET1& &= 0;
& & & & IT1& &= 1;
& & & & EX1& &= 1;
*描述:PWM配置函数
void ConfigPWM(uint16 frq,uint8 dc)
& & & & uint16 High,L
& & & & PeriodCnt = ( / 12) ///周期计数次数
& & & & High = (PeriodCnt * dc) / 100;//高电平的计数次数
& & & & Low =&&PeriodCnt - H//低电平的计数次数
& & & & HighRH = (65536 - High + 12) / 256;
& & & & HighRL = (65536 - High + 12) % 256;
& & & & LowRH&&= (65536 - Low + 12)&&/ 256;
& & & & LowRL&&= (65536 - Low + 12)&&% 256;
& & & & TMOD &= 0XF0;
& & & & TMOD |= 0X01;
& & & & TH0 = HighRH;
& & & & TL0 = HighRL;& & & &
& & & & TR0 = 1;
& & & & ET0 = 1;
& & & & P0 = 0XFF;& & & & & & & & & & & &
*描述:高电平获取函数
uint16 GetHighTime(void)
& & & & TH1 = 0;
& & & & TL1 = 0;
& & & & TR1 = 1;
& & & & while(IR_INPUT)
& & & & & & & & if(TH1 &= 0X40)
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & }
& & & & TR1 = 0;
& & & & return (TH1 * 256 + TL1);
*描述:低电平获取函数
uint16 GetLowTime(void)
& & & & TH1 = 0;
& & & & TL1 = 0;
& & & & TR1 = 1;
& & & & while(!IR_INPUT)
& & & & & & & & if(TH1 &= 0X40)
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & }
& & & & TR1 = 0;
& & & & return (TH1 * 256 + TL1);
*描述:关闭PWM
void ClosePWM(void)
& & & & TR0 = 0;
& & & & ET0 = 0;
& & & & P0 = 0XFF;
*描述:外部中断1解码函数
void EXINT1_ISR() interrupt 2
& & & & uint8 i,j;
& & & & uint8
& & & & uint16
& & & & time = GetLowTime();
& & & & if((time & 7833) || (time & 8755))
& & & & & & & & IE1 = 0;
& & & & & & & &
& & & & time = GetHighTime();
& & & & if((time & 3866)||(time & 4608))
& & & & & & & & IE1 = 0;
& & & & & & & &
& & & & for(i = 0;i & 4; i++)
& & & & & & & & for(j = 0; j & 8; j++)
& & & & & & & & {
& & & & & & & & & & & & time = GetLowTime();
& & & & & & & & & & & & if((time & 313) || (time & 718))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & IE1 = 0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & time = GetHighTime();
& & & & & & & & & & & & if((time & 313) && (time & 718))/////
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & byt &&= 1;
& & & & & & & & & & & & }
& & & & & & & & & & & & else if((time & 1345) && (time & 1751))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & byt &&= 1;
& & & & & & & & & & & & & & & & byt |= 0x80;
& & & & & & & & & & & & }
& & & & & & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & IE1 = 0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & }
& & & & & & & & IrCode[i] =
& & & & irflag = 1;
& & & & IE1 = 0;
*描述:定时器0中断
void TIM0_IRQ_Handler() interrupt 1
& & & & if(P0 == 0XFF)
& & & & & & & & TH0 = LowRH;
& & & & & & & & TL0 = LowRL;
& & & & & & & & P0 = 0XC0;& & & &
& & & & else if(P0 == 0XC0)
& & & & & & & & TH0 = HighRH;
& & & & & & & & TL0 = HighRL;
& & & & & & & & P0 = 0XFF;& & & &
& & & & }& & & & & & & & & & & &
/******************* (C) COPYRIGHT 2015 蓝为电子科技 *****END OF FILE****/
13:04:51  
*************************************************************************************************************
*& && && && && && && && && && && &(c) Copyright 2014-, LanWei Company
*& && && && && && && && && && && && && && & All Rights Reserved& && && && && && && && && && && && &&&
* 文件名:main.c
* 描&&述:工程主文件已完成
* 功 能:PWM信号控制灯的亮灭程度OK
* & & & & & & & &&&用定时器0 和 定时器1,模拟PWM(Pulse Width Modulation)
* 作者:MADE BY DA HE TAO
* 版本号:1.0.2()
*************************************************************************************************************
#include&reg52.h&
*描述:数据类型定义
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
*描述:位声明
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit IR_INPUT = P3^3;
*描述:全局变量定义
bit irflag = 0;
uint8 IrCode[4];
uint32 PeriodCnt = 0;//周期计数值
uint8 HighRH = 0;
uint8 HighRL = 0;
uint8 LowRH = 0;
uint8 LowRL = 0;
*描述:函数前置声明
//void delay_ms(uint16 n);
void InitInfrared(void);
void ConfigPWM(uint16 frq,uint8 dc);
uint16 GetHighTime(void);
uint16 GetLowTime(void);
void ClosePWM(void);
void IrCodeAction(void);
*描述:主函数
void main(void)
& & & & EA = 1;
& & & & ENLED = 0;
& & & & ADDR3 = 1;
& & & & ADDR0 = 0;
& & & & ADDR1 = 1;
& & & & ADDR2 = 1;
& & & & InitInfrared();
& & & & while(1)
& & & & & & & & if(irflag)
& & & & & & & & {& & & &
& & & & & & & & & & & & irflag = 0;
& & & & & & & & & & & & IrCodeAction();
& & & & & & & & & & & & & & & &
& & & & & & & & }& & & &
*描述:延时函数
//void delay_ms(uint16 n)
//& & & & uint8 m = 120;
//& & & & while(n--)
//& & & & & & & & while(m--);
void IrCodeAction(void)
& & & & static uint8 a = 0;
& & & & if((IrCode[2] == 0x11) && a == 0)
& & & &&&& & & & ConfigPWM(100,99);
& & & & & & & & a++;& & & &
& & & & else if((IrCode[2] == 0x11) && a == 1)
& & & & & & & & ConfigPWM(100,50);
& & & & & & & & a++;& & & & & & & &
& & & & else if((IrCode[2] == 0x11) && a == 2)
& & & &&&& & & & ConfigPWM(100,1);
& & & & & & & & a++;& & & &
& & & & else if((IrCode[2] == 0x11) && a == 3)
& & & & & & & & ClosePWM();
& & & & & & & & a = 0;& & & & & & & &
*描述:红外初始化函数
void InitInfrared(void)
& & & & IR_INPUT = 1;
& & & & TMOD &= 0X0F;
& & & & TMOD |= 0X10;
& & & & TR1& &= 0;
& & & & ET1& &= 0;
& & & & IT1& &= 1;
& & & & EX1& &= 1;
*描述:PWM配置函数
void ConfigPWM(uint16 frq,uint8 dc)
& & & & uint16 High,L
& & & & PeriodCnt = ( / 12) ///周期计数次数
& & & & High = (PeriodCnt * dc) / 100;//高电平的计数次数
& & & & Low =&&PeriodCnt - H//低电平的计数次数
& & & & HighRH = (65536 - High + 12) / 256;
& & & & HighRL = (65536 - High + 12) % 256;
& & & & LowRH&&= (65536 - Low + 12)&&/ 256;
& & & & LowRL&&= (65536 - Low + 12)&&% 256;
& & & & TMOD &= 0XF0;
& & & & TMOD |= 0X01;
& & & & TH0 = HighRH;
& & & & TL0 = HighRL;& & & &
& & & & TR0 = 1;
& & & & ET0 = 1;
& & & & P0 = 0XFF;& & & & & & & & & & & &
*描述:高电平获取函数
uint16 GetHighTime(void)
& & & & TH1 = 0;
& & & & TL1 = 0;
& & & & TR1 = 1;
& & & & while(IR_INPUT)
& & & & & & & & if(TH1 &= 0X40)
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & }
& & & & TR1 = 0;
& & & & return (TH1 * 256 + TL1);
*描述:低电平获取函数
uint16 GetLowTime(void)
& & & & TH1 = 0;
& & & & TL1 = 0;
& & & & TR1 = 1;
& & & & while(!IR_INPUT)
& & & & & & & & if(TH1 &= 0X40)
& & & & & & & & {
& & & & & & & & & & & &
& & & & & & & & }
& & & & TR1 = 0;
& & & & return (TH1 * 256 + TL1);
*描述:关闭PWM
void ClosePWM(void)
& & & & TR0 = 0;
& & & & ET0 = 0;
& & & & P0 = 0XFF;
*描述:外部中断1解码函数
void EXINT1_ISR() interrupt 2
& & & & uint8 i,j;
& & & & uint8
& & & & uint16
& & & & time = GetLowTime();
& & & & if((time & 7833) || (time & 8755))
& & & & & & & & IE1 = 0;
& & & & & & & &
& & & & time = GetHighTime();
& & & & if((time & 3866)||(time & 4608))
& & & & & & & & IE1 = 0;
& & & & & & & &
& & & & for(i = 0;i & 4; i++)
& & & & & & & & for(j = 0; j & 8; j++)
& & & & & & & & {
& & & & & & & & & & & & time = GetLowTime();
& & & & & & & & & & & & if((time & 313) || (time & 718))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & IE1 = 0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & time = GetHighTime();
& & & & & & & & & & & & if((time & 313) && (time & 718))/////
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & byt &&= 1;
& & & & & & & & & & & & }
& & & & & & & & & & & & else if((time & 1345) && (time & 1751))
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & byt &&= 1;
& & & & & & & & & & & & & & & & byt |= 0x80;
& & & & & & & & & & & & }
& & & & & & & & & & & & else
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & IE1 = 0;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & }
& & & & & & & & IrCode[i] =
& & & & irflag = 1;
& & & & IE1 = 0;
*描述:定时器0中断
void TIM0_IRQ_Handler() interrupt 1
& & & & if(P0 == 0XFF)
& & & & & & & & TH0 = LowRH;
& & & & & & & & TL0 = LowRL;
& & & & & & & & P0 = 0XC0;& & & &
& & & & else if(P0 == 0XC0)
& & & & & & & & TH0 = HighRH;
& & & & & & & & TL0 = HighRL;
& & & & & & & & P0 = 0XFF;& & & &
& & & & }& & & & & & & & & & & &
/******************* (C) COPYRIGHT 2015 蓝为电子科技 *****END OF FILE****/
22:01:35  
PWM定频调宽,大体思路是可以实现,具体程序建议自己写写。
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司论文发表、论文指导
周一至周五
9:00&22:00
基于单片机的智能模拟路灯控制系统探讨
  摘 要 中国论文网 /1/view-6275127.htm  随着对能源节约的重视程度不断增加,路灯控制引起了众多关注。本文通过对单片机为控制中心,进行模拟路灯控制系统设计。控制系统包括了光电传感器、液晶显示与恒流源等模块,可以随着环境与效能因素的变化来对控制路灯的开关进行控制。基于单片机为核心的智能路灯控制系统具有可靠性高的特点,实用性非常强,可以在城市路灯控制系统中发挥重要的作用。   【关键词】单片机 智能模拟路灯 控制系统 恒流源   本文提出一种针对路灯的智能控制系统,通过基于单片机的模拟系统可以实现根据环境与光线因素来对路灯进行有效控制的方案,以节约能源,避免浪费。   1 智能模拟路灯控制系统功能需求   在道路环境的实际监测中发现,即使在白天,依然能够出现由于天气原因导致的光线迅速变暗的情况,甚至会影响到行车与行人的正常出行,这就需要一种系统能够根据暗光线因素开启某段路灯,以满足行车与行人需求。在凌晨到天亮的时间内,道路上的车流与行人较少,可以通过智能系统对路灯进行关闭,一旦有车辆或行人通行,可以触发智能系统的开关,开启某段道路的路灯开关,在车辆或行人离开此段道路时,路灯自动关闭。这些实际需求均需要通过智能控制系统实现,节约能源与人力控制成本。   由此可见,智能控制系统需要具有时钟功能,能够对路灯的开关时间进行设定与显示,并对支路的开灯与关灯进行控制,可以根据环境明暗变化进行开关灯,可以根据效能情况自动调节路灯的开关与亮度。对单个个体通行时,能够根据个体移动情况进行相应长度路段的路灯开启与关闭。系统的支路控制器可以对每一支单独的路灯进行开关时间控制。另外,当路灯出现异常故障时,系统可以自动发出报警,以便及时维修,减少人力检查成本。   2 基于单片机的智能模拟路灯控制系统电路   基于对车辆通行时路灯的自动开启与延迟关闭、亮度控制需求,该控制系统设计中需要有位置检测方案。通过光电对管完成车辆的位置检测,在马路的两侧装置对射式的光电对管,车辆或行人通过时,将会触发光电对管,满足系统的设计要求。该系统采用时钟芯片DS1302产品,增加主电源与备电源双重保护方案,利用编程实现报警电路的设计,降低系统设计成本。系统通过对发光二极管的电流监测来对电路是否正常进行判断。系统利用了八位共阴极LED数码管进行显示,外接驱动电路,每片74HC240驱动4个LED数码管。本系统的控制核心为STC89C52单片机,该芯片具有执行速度快、抗干扰能力强的优点。该控制系统利用光敏电阻构成的感光电路。   基于STC89C52单片机的智能模拟路灯控制系统电路采用可控流源调节输出电流来对调光。利用三极管放大电路调节功率三极管的基极电流,以实现对输出电流的调节,从而改变LED的发光亮度。智能模拟路灯控制系统电路采JHD12864作为显示器,通过串行接口的方式与单片机进行通信,串并行通信方式选择端PSB接地。显示电路模块能够显示时钟,对开关LED的时间进行显示以及故障灯的地址等。   3 控制系统软件设计   该智能模拟路灯控制系统电路采用模块化设计,执行效率极高。软件系统包括支路控制器与单元控制器部分。支路控制器包括显示模块程序、按键程序模分支控制模块、自动光亮度调节模块等,单元控制器由按键模块、显示模块与调压模块组成。程序主流程为以下过程:首先进行系统的初始化,LCD显示时钟,系统对环境的明暗进行检测,对移动的个体进行检测,当信号检测完成后,单片机将会接受到来自终端的信号,并进行处理,之后对路灯进行控制,以此进行循环。LCD显示器对路灯的开关时间进行累计,发现路灯不亮时,系统的控制器将会对信号进行检测并发出报警,LCD显示器会对故障地址进行显示。如图1所示。   4 智能模拟路灯控制系统调试   基于单片机的智能模拟路灯控制系统测试主要包括三方面的测试:首先进行交通情况自动调节测试,测试结果可以表明自动调节两个灯的开关;其二是对开关灯定时测试;其三是环境明暗变化自动开关测试,测试结果表明,当环境变暗时,自动开启路灯,环境变亮时,将会自动关闭。   5 结语   基于单片机的智能模拟路灯控制系统可以实现自主设定显示开关灯的时间,来对整条支路按时开关灯进行控制,根据光线明暗变化与交通实际情况进行灯光自动调节,当路灯出现故障时,支路控制器发出警报。该系统相对简单,成本较低,性价比高,具有较高的现实意义。   参考文献   [1]李军.基于单片机的模拟路灯控制系统[J].工业控制计算机,6-117.   [2]黄果,王平均,林尔敏.基于AT89S52单片机的模拟路灯控制系统[J].哈尔滨职业技术学院学报,6-117.   [3]王皑,佘丹妮.基于单片机的模拟路灯控制系统设计[J].仪表技术,-48.   [4]陈静,周雷,吕广才,赵安邦.一种模拟路灯控制系统设计[J].现代电子技术,6-188.   [5]刘赏.路灯智能控制算法研究与系统模拟[D].西安石油大学,2011.   作者单位   河南大学民生学院 河南省开封市 475000
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。}

我要回帖

更多关于 单片机控制蜂鸣器程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信