第一范文网 - 专业文章范例文档资料分享平台

基于C51单片机和PWM调光的LED台灯设计

来源:用户分享 时间:2025/6/16 7:40:09 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

2、主要程序

<1>按键扫描

不断扫描按键判断是手动控制和自动控制。程序代码:

void keyscan() {

ad(); if(key==1)

//key4松开,a恒为0 ,通过读c的值确定b的值

{

if(c<0.40) last=0;

else if((c>=0.40)&&(c<2.0)) last=2;

else if((c>=2.0)&&(c<3.0)) last=5;

else if((c>=3.0)&&(c<4.0)) last=7; else

last=10;

}

if(key==0)

//key4按下, { if(key1==0)

{ delayms(10); //去抖

if(key1==0)

last=1; } if(key2==0) { delayms(10);

if(key2==0)

last=6; } if(key3==0)

{ delayms(10);

if(key3==0)

last=10; }

}

}

手动控制 9

<2>AD转换

定时器1产生CLK信号,定时时间为2us,亦即CLK周期为0.4us。程地址为011, 即IN3口输入。利用公式getdata*1.0/255*VREV+对数字量进行变化。程序代码如下:

void ad() { }

ST=0;//关闭转换 OE=0;//关闭输出 ST=1;//开启转换 ST=0;//关闭转换 P34=1;//选择通道0 P35=1;

P36=0;

while(EOC==0);//判断是否转换结束:是则执行以下语句,否则等待 OE=1;//开启数据输出允许

getdata=P0;//将数据取走,存放在变量getdata中

OE=0;//关闭输出

c=getdata*1.0/255*4.85;//电压值转换,5V作为参考电压,分成256

<3>PWM调节

定时器0控制PWM周期和占空比。程序代码如下: void into(void) interrupt 1 { TH0=(65536-500)/256; TL0=(65536-500)%6;

count++; if(count>CIRCLE)

{

count=1; }

if(count<=last) pwm=0; //占空比,使用反相器应为1 else pwm=1;

10

四、总结

基于C51单片机和PWM调光的LED台灯以STC89C51作为主控芯片,设置了手动控制和自动控制。在手动控制时,分为三档,输出不同的PWM占空比实现了对光度的手动调节。在自动控制时,通过ADC0809模拟-数字转换芯片不断检验光敏电阻的电压来间接测量感应光度,将电压和预设的阈值进行对比,调整PWM的占空比实现了对光度的自动调节。该LED台灯电路简单,很大程度上节省电能,延长LED灯寿命,适宜阅读。

同时,在本次课程设计中,主要有以下体会:

1、对LED的驱动有进一步的了解,明白了如何对LED进行规定电流驱动,并通过输出不同的占空比来调节LED的亮度,从而对LED的耗电进行相应的管理;

2、进一步掌握了AD转换原理以及相关芯片的应用,通过ADC0809对外界的模拟量进行转换。

3、培养了自己的团队意识,能够比较好的和队员就项目进行及时的沟通,在分工和整合方面做的不错。

11

附录1:作品照片

12

搜索更多关于: 基于C51单片机和PWM调光的LED台灯设计 的文档
基于C51单片机和PWM调光的LED台灯设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3seqy09ccj0h1ll029s3_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top