- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于51单片机的光控LED推荐
光控LED
摘 要
本作品采用光敏电阻采光实现光电转换;采用12位串行ADC MAX144将光电转换后的电压值转换为数字量,转换的数字量经12位串行DACMAX531转换成电压后控制电流控制白光LED的亮度,实现了光控的目的;流过LED的电流值可预置并显示。
系统方案设计与论证
经过分析和论证,此光控LED可分为光电转换、模数转
换、数模转换、电压控制电流及功率放大这几个模块。
1、光电转换方案论证与选择
光敏电阻是利用半导体光电导效应制成的一种特殊电阻器,对光线十分敏感。无光照时呈高阻状态,暗电阻可达MΩ级,当有光照射时,其电阻值迅速减小,亮电阻只有几十至百KΩ。其光强范围宽,灵敏度高,无极性之分使用方便,适用于该自动控制系统中:将光敏电阻与一10KΩ的电阻相连接+5V电压,光照变化可使其电压在+1.7 ~ +4.5V变化,实现从光到电的转换。
2﹑模数转换方案论证
MAX144是一款低功耗,具有较高精度的串行模数转换器,其与单片机之间采用SPI通信,只需要三个口与单片机相连,节省了单片机的引脚资源。输入通道接入光敏电阻两端电压可将其转换成数字量送入单片机处理。
3﹑数模转换方案论证
MAX531是一款低功耗,输出端口输出电压,SPI串行口通信的12位DAC。它可实现将A/D转换后的结果或按键预置的数据转换成模拟量,其分辨率高达Vef/4096,所以电压变电流后可以满足在0~100mA之间步进0.1mA的精度要求。
4、压变流方案及功率放大方案论证与选择
按照白光LED的电流、电压变化规律,一般应用正向电压为3.0-3.6V左右,典型值电压为3.3V,当加于LED两端的正向电压超过3.6V后,正向电压很小的增加,LED的正向电流都有可能会成倍增涨,使LED发光体温升过快,从而加速LED光衰减,使LED的寿命缩短,严重时甚至烧坏LED.也就是若单纯施加一定的顺向电压时,顺向电流会作大范围的变化,因此采用电流驱动方式,是比较理想的LED驱动方式,它能避免LED正向电压的改变而引起电流变动,同时使LED的亮度稳定,缺点是成本较高。
当驱动较多LED不能给它提供足够的电流时,需要运放驱动输出级的BJT来实现电流放大(扩流)后反馈到运放的同相端。
确定的详细的系统框图如图1-1所示。
二﹑电路与程序设计
1﹑光电转换电路设计
如图2-1所示。
2﹑模数转换电路设计
光敏电阻将光转换成电压后,接入MAX144的通道一进行数模转换电路2-1所示。
图2—1
图2—2 模数转换电路
3﹑数模转换电路
单片机受到MAX144模数转换后的数据送给MAX531进行数模转换成电压控制LED的驱动电路,电路如图2—3所示。
图2—3 数模转换电路
4﹑LED的驱动电路
将MAX531经数模转换后的电压变成电流并驱动BJT放大电流,电路如图2—4所示。
图2—4 LED驱动电路
5、程序设计
采用51单片机做主控制器,程序流程图如图2—5所示。
开 始
开 始
初 始 化
模 数 转 换
数 模 转 换
显 示 电 流
结束
是否按下手控键
是否返回
是否按下+键
是否按下-键
数 据 +4
数 据 -4
N
Y
N
Y
Y
Y
Y
N
N
图2—5 程序流程图
附录 详细程序清单
#includereg52.h
#includeintrins.h
#define uchar unsigned char //宏定义
#define uint unsigned int
#define delay4us() {_nop_();_nop_();_nop_();_nop_();}
//输入端口设定
sbit max144_CS=P1^7;
sbit max144_DOUT=P1^6; //定义max144端口,Vref=4.5V
sbit max144_SCLK=P1^5;
sbit key_cut=P3^2; // 切换
sbit key_add=P3^3; // +
sbit key_dec=P3^4; // -
sbit key_back=P3^5; // 返回
//输出端口
sbit LCD_RS=P2^4;
sbit LCD_RW=P2^5; //LCD位申明
sbit LCD_EN=P2^6;
//
sbit max531_DIN = P2^0; //定义max531端口
sbi
文档评论(0)