欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于51单片机的光控LED.doc

    • 资源ID:28098456       资源大小:66.04KB        全文页数:15页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于51单片机的光控LED.doc

    . . . 光控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,所以电压变电流后可以满足在0100mA之间步进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所示。图21图22 模数转换电路3数模转换电路单片机受到MAX144模数转换后的数据送给MAX531进行数模转换成电压控制LED的驱动电路,电路如图23所示。图23 数模转换电路4LED的驱动电路将MAX531经数模转换后的电压变成电流并驱动BJT放大电流,电路如图24所示。 图24 LED驱动电路5、程序设计采用51单片机做主控制器,程序流程图如图25所示。开 始 初 始 化模 数 转 换数 模 转 换 显 示 电 流结束是否按下手控键是否返回是否按下+键是否按下-键数 据 +4数 据 -4NYNYYYYNN图25 程序流程图 附录 详细程序清单#include<reg52.h>#include<intrins.h>#define uchar unsigned char /宏定义#define uint unsigned int#define delay4us() _nop_();_nop_();_nop_();_nop_();/输入端口设定sbit max144_CS=P17; sbit max144_DOUT=P16; /定义max144端口,Vref=4.5Vsbit max144_SCLK=P15;sbit key_cut=P32; / 切换sbit key_add=P33; / +sbit key_dec=P34; / - sbit key_back=P35; /返回/输出端口sbit LCD_RS=P24;sbit LCD_RW=P25; /LCD位申明sbit LCD_EN=P26;/sbit max531_DIN = P20; /定义max531端口sbit max531_CLR = P21;sbit max531_SCLK = P22; sbit max531_CS = P23;uint I='0','0','0'/数据分解为电流XX.Xuchar code Dsp_Title = "Current I:"uchar Current_I_Dsp_Buffer = "I- . mA"uint Data,result;bit sign;/延时void delay(int ms) uchar i;while(ms-)for(i=0;i<250;i+) delay4us();/LCD忙检查bit busy_check() bit result;LCD_RS=0;LCD_RW=1;LCD_EN=1;delay4us();result=(bit)(P0&0x80);LCD_EN=0;return result;Data=result;/LCD写指令void write_(uchar )while(busy_check();LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=;delay4us();LCD_EN=1;delay4us();LCD_EN=0;/LCD写数据void write_data(uchar dat)while(busy_check();LCD_RS=1;LCD_RW=0;LCD_EN=0;P0=dat;delay4us();LCD_EN=1;delay4us();LCD_EN=0;/设置显示位置void set_pos(uchar pos)write_(pos | 0x80 );/LCD初始化void init()write_(0x38);delay(5);write_(0x0c);delay(5);write_(0x06);delay(5);write_(0x01);delay(5);/显示void dsp(uchar addr,uchar s)uchar i;set_pos(addr);for(i=0;i<10;i+)write_data(si);/将模数转换后得到的结果分解存入缓冲void convert_to_I() /最大值为4000,对应于100mA,4000/100=40I2=(Data/40)/10+'0'/十位数I1=(Data/40)%10+'0'/个位?I0=0+'0'/小数位/读取A/D转换结果void read_144_convert_Data() uchar i,j;max144_SCLK=0;max144_CS=1;max144_CS=0;_nop_();_nop_();for(i=0;i<16;i+) max144_SCLK=1;j=max144_DOUT;Data<<=1;Data|=j;max144_SCLK=0;max144_CS=1;Data&=0X0FFF;void read_keycontrol_data()Data=Data;if(!key_add)delay(8);if(!key_add)while(!key_add);if(Data<0xFA0)Data=Data+40;else if(!key_dec)delay(8);if(!key_dec)while(key_dec);if(Data>0x07)Data=Data-8;else if(!key_back)delay(8);if(!key_back)while(!key_back);sign=0;/将A/D转换后的结果或按键输入的数值送入MAX531进行D/A转换void send_Data_to_531()uchar i;max531_CLR=1; max531_CS=0;i=12;while ( i- )max531_SCLK = 0;max531_DIN = (bit)(Data & 0x0800);Data <<= 1;max531_SCLK = 1;max531_CS=1; /主程序void main()init();while(1)if(!key_cut)delay(8);if(!key_cut)while(!key_cut);sign=1;Data=0x7D0;while(sign)read_keycontrol_data();convert_to_I(); /数据转换Current_I_Dsp_Buffer2=I2;Current_I_Dsp_Buffer3=I1; Current_I_Dsp_Buffer5=I0;dsp(0x00,Dsp_Title);dsp(0x40,Current_I_Dsp_Buffer);send_Data_to_531(); read_144_convert_Data();convert_to_I(); /数据转换Current_I_Dsp_Buffer2=I2;Current_I_Dsp_Buffer3=I1; /分解存入显示缓冲Current_I_Dsp_Buffer5=I0;dsp(0x00,Dsp_Title);/显示标题dsp(0x40,Current_I_Dsp_Buffer);send_Data_to_531();15 / 15

    注意事项

    本文(基于51单片机的光控LED.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开