网站大量收购独家精品文档,联系QQ:2885784924

基于ATtiny13的无级调光头灯程序.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于ATtiny13的无级调光头灯程序

基于ATtiny13的无级调光手电筒程序 市面上的头灯一般有强光、弱光、爆闪三个挡位,一个按钮来控制开/关和换挡,顺序是:开(强光)-〉弱光-闪烁-关,每次开/关灯需要按三次,非常不方便。 两年前改造的五挡调光头灯一直用的很好,操作简便又人性化。近来比较空闲,突发DIY一个有无级调光功能的头灯想法。于是在网上有哪些信誉好的足球投注网站合适DIY的头灯,有哪些信誉好的足球投注网站原则是散热性能好、能变焦、尽量是装两节18650电池的灯。本人喜欢变焦灯,因为照射范围可调又均匀。第一次购买的灯完全失败,散热极差,为了节省成本居然灯头的重要部件用的是硬塑料,直接丢掉。第二次买的还好,惊喜的是他的控制芯片用的是CX2812,它的引脚与ATTiny13单片机类似,替换控制芯片,稍微改动电路板的布线就可以利用原配的控制板,避免了从头开始做控制板,省去了最繁琐的印刷电路板的制作了。通过ATtiny13a单片机的编程实现了一下功能:1、按一次开灯,再按一次就关灯,解决了按三次关灯的不方便的问题。2、开关灯保留了逐步亮和逐步暗的功能,此功能非常人性化,本人很喜欢。具体实现如下:开灯的时候PWM信号的占空比从0开始逐步加到设定的亮度,关灯时候占空比逐步减到0。3、无级调光:在灯亮状态下按住按钮,LED灯亮度增加或减少,亮度达到100%或10%时闪烁三次来提醒亮度已经达到了全亮或最暗,松开按钮就停止调光,一直按住就循环调光。程序中利用了ATtiny13a的PWM、外部中断(PCINT0)、睡眠、看门狗和EEPROM的读写功能,基本上每一行都加了注释,对于初次接触ATtiny13的人来说应该有帮助。图片1:头灯图片2:头灯控制板(此控制板网上也有卖的)图片3:程序调试电路图图片4:用面包板搭建程序调试电路图片5:基于ATTiny13A的控制板电路图图片6:修改后的ATTiny13A控制板图片7:18650电池下的待机电流为0.26uA。程序编辑和编译工具用了CodeVisionAVR 2.04.4a,烧写工具用了progisp1.72。程序源码:/*********************************************************************** 名称 :LED控制程序* 描述 :无级调光功能,单击开/关,长按无级调光* MCU :ATTiny13A* 晶振 :RC 9.6MHz* 编译环境 :CodeVisionAVR 2.04.4a* 版本 :4.0 KEY用外部中断方式、增加睡眠功能、看门狗,8分频(4.6875KHz)*外部中断服务程序=PCINT0, 无级调光***********************************************************************/#include tiny13a.h#include delay.h#define uchar unsigned char#define uint unsigned int#define KEY PINB.2 //tiny13第7脚,PCINT0中断#define LEDDRV PORTB.0 //tiny13第5脚#define KEY_DOWN 0 //按下按键#define LED_ON 0 //LED 亮#define LED_OFF 1 //LED 灭#define PWM_ON 0xc3 //PWM 启动#define PWM_OFF 0x03 //PWM 关闭#define MIN_VAL 0x1a //最小亮度#define MAX_VAL 0xff //最大亮度#define LONG_KEY 3 //长按键的时间#define ADDRESS 0x01 //保存挡位的地址uchar pwmVal = 0; //亮度值uint keytime = 0; //按键时间bit status = 0; //0为LED ON,1为LED OFFbit fangxiang = 0; //亮度增减方向/*********************************************************************** 描述:eeprom写一个字节数据* 参数:address--地址 data--数据***********************************************************************/void eeprom_write(uchar address,uchar data){ //等待上一次写操作结束 while(EECR(1EEPE)); //设置编程

文档评论(0)

juhui05 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档