基于51单片机的LED调光系统.docx
- 文档编号:11531302
- 上传时间:2023-03-18
- 格式:DOCX
- 页数:15
- 大小:114.52KB
基于51单片机的LED调光系统.docx
《基于51单片机的LED调光系统.docx》由会员分享,可在线阅读,更多相关《基于51单片机的LED调光系统.docx(15页珍藏版)》请在冰豆网上搜索。
基于51单片机的LED调光系统
基于STC89C52单片机的LED调光系统
1.系统组成
LED调光系统组成框图如图1.1所示。
图1.1LED调光系统组成框图
2.单元硬件电路的设计
2.1基于MAX1771的升压(Boost)电路
MAX1771是美信公司的电源管理芯片,可以做为升压电路使用,电路结构为Boost电路,如下图2.1所示。
当电压输入电压的范围是5-12V,输出根据
的调节,范围是24-36V。
引脚1输出PWM来控制场效应管IRF3205的导通与截止。
、
和
为反馈电阻,引脚3是电压反馈端,内置1.25V的稳压源。
当输入到3脚的电压高于或低于1.25V时,芯片会自动调节PWM占空比的减小或增大,以得到稳定的输出。
(2.1)
(2.2)
图2.1基于MAX1771的Boost电路原理图
2.2LED驱动电路的设计
LED驱动电路原理图如图2.2所示。
由于Buck电路的驱动比较复杂,故使用如下的电路,
使在场效应管关断后让LED的负极电压升高,使得LED关闭。
当场效应管导通时,LED的负极电压被拉低,使得LED发光。
PWM调节方式使得驱动电路更简单,降低了制造成本,并可以获得较精确的亮度步进调节。
图2.2LED驱动电路原理图
3.软件设计
采用STC89C52单片机输出频率为230Hz的PWM来驱动场效应管IRF3205的开断,其中用独立键盘来实现PWM占空比1%-99%连续可调,步进值为
1%。
同时使用液晶YJD12864C-1对LED的亮度即PWM的占空比进行显示,形成了良好的人机界面。
软件流程图如图3.1所示。
图3.1软件流程图
4.电路原理图及印制板图
⑴单片机及外围电路原理图
图4.1单片机及外围电路原理图
⑵单片机及外围电路印制板底层图
图4.2单片机及外围电路印制板底层图
⑶单片机及外围电路印制板元件布局图
图4.3单片机及外围电路印制板元件布局图
⑷LED驱动电路印制板底层图
图4.4LED驱动电路印制板底层图
⑸LED驱动电路印制板元件布局图
图4.5LED驱动电路印制板元件布局图
⑹升压电路印制板底层图
图4.6升压电路印制板底层图
⑺升压电路印制板元件布局图
图4.7升压电路印制板元件布局图
程序清单
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
#define_Nop()_nop_()
#definenop()_nop_()
#defineV_TH00XFF
#defineV_TL00XF6
#defineV_TMOD0X01
sbitRS=P2^3;//H=data;L="command";
sbitRW=P2^4;//H=read;L="write";
sbitE=P2^5;//inputenable;
sbitPSB=P2^7;//H=并口;L="串口";
sbitRST=P2^6;//ResetSignal低电平有效
sbitbusy=P0^7;//lcdbusybit
#definelcd_data_portP0
voidlcd();
voidinit_sys(void);/*系统初始化函数*/
voidDelay5Ms(void);
unsignedcharZKB1,ZKB2;
ucharnum_to_char_table[]={"0123456789abcdef"};
uchartable0[]={"LED调光系统"};
uchartable1[]={"亮度:
"};
uchartable2[]={"亮度+亮度-复位"};
voidmain(void)
{
init_sys();
ZKB1=80;/*p1.4占空比低电平初始值设定*/
ZKB2=20;/*p1.5占空比低电平初始值设定*/
lcd();
}
/*函数功能:
对系统进行初始化,包括定时器初始化和变量初始化*/
voidinit_sys(void)/*系统初始化函数*/
{
/*定时器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
ET0=1;
EA=1;
}
//延时
voidDelay5Ms(void)
{
unsignedintTempCyc=500;
while(TempCyc--);
}
/*中断函数*/
voidtimer0(void)interrupt1using2
{
staticucharclick=0;/*中断次数计数器变量*/
TH0=V_TH0;/*恢复定时器初始值*/
TL0=V_TL0;
++click;
if(click>=100)click=0;
if(click<=ZKB1)/*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
P1_0=0;
else
P1_0=1;
if(click<=ZKB2)
P1_5=0;
else
P1_5=1;
}
key()
{
if(!
P2_1)//对p1.3,减小占空比;对p1.4,增加占空比
{
Delay5Ms();
if(!
P2_1)
{
ZKB1++;
ZKB2=100-ZKB1;
}
}
if(!
P2_0)//对p1.4,减小占空比;对p1.3,增加占空比
{
Delay5Ms();
if(!
P2_0)
{
ZKB1--;
ZKB2=100-ZKB1;
}
}
if(!
P1_3)//复位
{
Delay5Ms();
if(!
P1_3)
{
ZKB1=80;
ZKB2=20;
}
returnZKB1;
}
/*对占空比值限定范围*/
if(ZKB1>99)ZKB1=99;
if(ZKB1<1)ZKB1=1;
}
voidlcd_delay(ucharms)/*LCD12864延时*/
{
ucharj;
while(ms--){
for(j=0;j<20;j++)
{;}
}
}
voidlcd_busy_wait(void)
{
P0=0xff;
RS=0;
RW=1;
E=1;
while(busy==1);
E=0;
}
voidlcd_command_write(ucharcommand)/*LCD12864命令字写入*/
{
lcd_busy_wait();
RS=0;
RW=0;
E=0;
lcd_data_port=command;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
E=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
E=0;
}
voidlcd_system_reset()/*LCD12864初始化*/
{
RST=1;
PSB=1;
lcd_delay(20);
lcd_command_write(0x30);
lcd_delay(100);
lcd_command_write(0x30);
lcd_delay(50);
lcd_command_write(0x30);
lcd_delay(10);
lcd_command_write(0x01);
lcd_command_write(0x06);
lcd_command_write(0x0c);
lcd_data_port=0xff;/*释放数据端口*/
}
voidlcd_char_write(ucharx_pos,y_pos,lcd_dat)/*LCD12864字符写入*/
{
ucharxy_pos;
if((x_pos>=8)||(y_pos>=4))return;/*X位置超出显示范围退出*/
if(y_pos==0)xy_pos=0x80+x_pos;
elseif(y_pos==1)xy_pos=0x90+x_pos;/*计算转换地址*/
elseif(y_pos==2)xy_pos=0x88+x_pos;
elseif(y_pos==3)xy_pos=0x98+x_pos;
lcd_command_write(xy_pos);
lcd_busy_wait();
RS=1;
RW=0;
lcd_data_port=lcd_dat;
E=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
E=0;
lcd_data_port=0xff;/*释放数据端口*/
}
voidlcd_char_write1(ucharx_pos,y_pos,lcd_datH,lcd_datL)/*LCD12864字写入*/
{
ucharxy_pos;
if((x_pos>=8)||(y_pos>=4))return;/*X位置超出显示范围退出*/
if(y_pos==0)xy_pos=0x80+x_pos;
elseif(y_pos==1)xy_pos=0x90+x_pos;/*计算转换地址*/
elseif(y_pos==2)xy_pos=0x88+x_pos;
elseif(y_pos==3)xy_pos=0x98+x_pos;
lcd_command_write(xy_pos);
lcd_busy_wait();
RS=1;
RW=0;
lcd_data_port=lcd_datH;
E=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
E=0;
lcd_data_port=0xff;/*释放数据端口*/
lcd_busy_wait();
RS=1;
RW=0;
lcd_data_port=lcd_datL;
E=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
E=0;
lcd_data_port=0xff;/*释放数据端口*/
}
/*1MS为单位的延时程序*/
voiddelay_1ms(ucharx)
{
ucharj;
while(x--){
for(j=0;j<10;j++)
{;}
}
}
voidlcd()
{
uchari;
delay_1ms
(1);
lcd_system_reset();/*LCD初始化*/
for(i=0;i<7;i++)lcd_char_write1(i,0,table0[i*2],table0[i*2+1]);
for(i=0;i<4;i++)lcd_char_write1(i,1,table1[i*2],table1[i*2+1]);
for(i=0;i<10;i++)lcd_char_write1(i,3,table2[i*2],table2[i*2+1]);
while
(1)
{
lcd_char_write(3,1,num_to_char_table[(100-ZKB1)/10]);
lcd_char_write(4,1,num_to_char_table[(100-ZKB1)%10]);
key();
//delay_1ms(200);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 LED 调光 系统