




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 基于基于 ATtiny13 的无级调光手电筒程序的无级调光手电筒程序 市面上的头灯一般有强光 弱光 爆闪三个挡位 一个按钮来控制开 关和换挡 顺序 是 开 强光 弱光 闪烁 关 每次开 关灯需要按三次 非常不方便 两年前改造的五挡调光头灯一直用的很好 操作简便又人性化 近来比较空闲 突发 DIY 一个有无级调光功能的头灯想法 于是在网上搜索合适 DIY 的头灯 搜索原则是散热性 能好 能变焦 尽量是装两节 18650 电池的灯 本人喜欢变焦灯 因为照射范围可调又均 匀 第一次购买的灯完全失败 散热极差 为了节省成本居然灯头的重要部件用的是硬塑 料 直接丢掉 第二次买的还好 惊喜的是他的控制芯片用的是 CX2812 它的引脚与 ATTiny13 单片机类似 替换控制芯片 稍微改动电路板的布线就可以利用原配的控制板 避免了从头开始做控制板 省去了最繁琐的印刷电路板的制作了 通过 ATtiny13a 单片机的编程实现了一下功能 1 按一次开灯 再按一次就关灯 解决了按三次关灯的不方便的问题 2 开关灯保留了逐步亮和逐步暗的功能 此功能非常人性化 本人很喜欢 具体实现如下 开灯的时候 PWM 信号的占空比从 0 开始逐步加到设定的亮度 关灯时候占空比逐步减到 0 3 无级调光 在灯亮状态下按住按钮 LED 灯亮度增加或减少 亮度达到 100 或 10 时闪烁三次来提醒亮度已经达到了全亮或最暗 松开按钮就停止调光 一直按住就循环调 光 程序中利用了 ATtiny13a 的 PWM 外部中断 PCINT0 睡眠 看门狗和 EEPROM 的读写 功能 基本上每一行都加了注释 对于初次接触 ATtiny13 的人来说应该有帮助 图片 1 头灯 2 图片 2 头灯控制板 此控制板网上也有卖的 图片 3 程序调试电路图 3 图片 4 用面包板搭建程序调试电路 4 图片 5 基于 ATTiny13A 的控制板电路图 图片 6 修改后的 ATTiny13A 控制板 5 图片 7 18650 电池下的待机电流为 0 26uA 程序编辑和编译工具用了 CodeVisionAVR 2 04 4a 烧写工具用了 progisp1 72 6 程序源码 名称 LED 控制程序 描述 无级调光功能 单击开 关 长按无级调光 MCU ATTiny13A 晶振 RC 9 6MHz 编译环境 CodeVisionAVR 2 04 4a 版本 4 0 KEY 用外部中断方式 增加睡眠功能 看门狗 8 分频 4 6875KHz 外部中断服务程序 PCINT0 无级调光 include include 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 0 xc3 PWM 启动 define PWM OFF 0 x03 PWM 关闭 define MIN VAL 0 x1a 最小亮度 define MAX VAL 0 xff 最大亮度 7 define LONG KEY 3 长按键的时间 define ADDRESS 0 x01 保存挡位的地址 uchar pwmVal 0 亮度值 uint keytime 0 按键时间 bit status 0 0 为 LED ON 1 为 LED OFF bit fangxiang 0 亮度增减方向 描述 eeprom 写一个字节数据 参数 address 地址 data 数据 void eeprom write uchar address uchar data 等待上一次写操作结束 while EECR 设置编程模式 EECR 0 EEPM0 设置地址和数据寄存器 EEAR address EEDR data 置位 EEMPE EECR 1 EEMPE 置位 EEWE 启动写操作 EECR 1 EEPE 描述 eeprom 读一个字节数据 参数 address 地址 uchar eeprom read uchar address 等待上一次写操作结束 while EECR 设置地址寄存器 EEAR address 设置 EERE 以启动读操作 EECR 1 EERE 自数据寄存器返回数据 return EEDR 8 描述 开启看门狗 参数 无 void WDT on void 看门狗设置 asm cli 关闭全局中断 asm WDR 看门狗复位指令 WDR 用来复位看门狗定时器 WDTCR 0 x18 启动时序 WDTCR 1 WDCE 1 WDE WDTCR 0 x28 看门狗定时 4s WDTCR 1 WDP3 1 WDE WDTCR 1 WDP3 1 WDE 看门狗定时 4s asm sei 开启全局中断 描述 关闭看门狗 参数 无 void WDT off void 看门狗设置 asm cli 关闭全局中断 asm WDR 看门狗复位指令 WDR 用来复位看门狗定时器 MCUSR 清除 MCUSR 寄存器中 WDRF 在 WDCE 与 WDE 中写逻辑 1 保持旧预分频器设置防止无意暂停 WDTCR 1 WDCE 1 WDE WDTCR 0 x00 关闭 WDT asm sei 开启全局中断 描述 LED Flicker 闪烁 参数 无 void led flicker uchar data uchar i for i 0 i data i OCR0A 0 x00 delay ms 20 OCR0A pwmVal delay ms 20 9 描述 LED ON 开灯 参数 无 void led on void uchar i TCCR0A PWM ON 开启 PWM for i 0 i MAX VAL TCCR0A PWM OFF LEDDRV LED ON WDT on 启动看门狗 描述 LED OFF 关灯 参数 无 void led off void uchar i TCCR0A PWM ON 开启 PWM for i pwmVal i 0 i OCR0A i 更改占空比 delay us 500 TCCR0A PWM OFF 关闭 PWM LEDDRV LED OFF 10 描述 LED 亮度增加 参数 无 void led zeng void TCCR0A PWM ON 开启 PWM for pwmVal MAX VAL led flicker 3 描述 LED 亮度减少 参数 无 void led jian void TCCR0A PWM ON 开启 PWM for pwmVal MIN VAL pwmVal OCR0A pwmVal 更改占空比 delay ms 2 if pwmVal MIN VAL led flicker 3 描述 定时器中断服务函数 输入 无 interrupt TIM0 OVF void timer0 ovf isr void 名称 外部中断 INT0 服务程序 功能 输入 无 输出 无 11 interrupt EXT INT0 void int0 isr void 名称 中断 PC INT0 服务程序 功能 输入 无 输出 无 interrupt PC INT0 void pc int0 isr void if KEY KEY DOWN 判断是否按下键 KEY 接地 delay ms 5 防抖延时 for keytime 0 KEY KEY DOWN if pwmVal MAX VAL 12 TCCR0A PWM OFF LEDDRV LED ON 短按逻辑处理 if keytime 0 开灯 else if status 1 LED OFF led off 关灯 status status 名称 Main 功能 主函数 输入 无 输出 无 void main void Crystal Oscillator division factor 8 pragma optsize CLKPR 0 x80 CLKPR 0 x03 ifdef OPTIMIZE SIZE pragma optsize endif I O 端口的初始化 DDRB 0 x01 PB 1 输入 PB 0 输出 PORTB 0 x05 PB 1 上拉电阻 PB 0 高电平 PWM 初始化 TCCR0A 0 xC3 占空比相反时 TCCR0A 0 x83 0 COM0A0 TCCR0A 1 COM0A1 0 COM0A0 1 WGM01 1 WGM00 TCCR0A PWM ON 开启 PWM TCCR0B 0 WGM02 0 CS02 1 CS01 0 CS00 8 分频 4 6875KHz OCR0A 0 x00 13 TCNT0 0 x00 T C0 计数寄存器初值 TCCR0A PWM OFF 关闭 PWM 外部中断初始化设置 MCUCR 1 ISC01 0 ISC00 INT0 为下降沿时产生中断请求 GIMSK 1 INT0 允许 INT0 产生中断 GIMSK 1 PCIE 允许 PCINT0 产生中断 PCMSK 1 PCINT2 引脚变化使能 PB 2 第 7 引脚 读取 eeprom 中的亮度档位数据 pwmVal eeprom read ADDRESS 读取 eeprom 里的数据 delay us 100 延时 10us if pwmVal MAX VAL eeprom 无数据的话设为最高档位 pwmVal MAX VAL if pwmVal MAX VAL fangxiang 1 亮度减 else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建省市场监督管理局直属事业单位招聘高层次人才20人模拟试卷附答案详解(黄金题型)
- 2025年甘肃省兰州市肺科医院招聘工作人员14人考前自测高频考点模拟试题及参考答案详解一套
- 2025年上海市城市规划设计研究院招聘高层次专业技术人员考前自测高频考点模拟试题附答案详解(突破训练)
- 2025河南中医药大学人事代理工作人员招聘13人模拟试卷及完整答案详解一套
- 2025广西玉林市北流市大伦镇便民服务中心招聘公益性岗位模拟试卷及一套参考答案详解
- 2025湖南凤凰县直机关事业单位选调40人考前自测高频考点模拟试题及答案详解(典优)
- 2025年甘肃科源电力集团有限公司高校毕业生招聘40人(第三批)考前自测高频考点模拟试题及答案详解(新)
- 2025年滨州邹平怀远学校教师模拟试卷及参考答案详解1套
- 2025湖南郴州飞天山翠江旅游景区多岗招聘考前自测高频考点模拟试题及1套完整答案详解
- 2025年铁总服务有限公司应届高校毕业生招聘考前自测高频考点模拟试题带答案详解
- 2025贵州贵阳市投资控股集团房地产置业有限公司招聘12人考试参考题库及答案解析
- 免疫细胞治疗安全性评价-第1篇-洞察及研究
- 车间师带徒管理办法
- 桥梁工程监理工作实施方案
- 2025年秋期新教材部编人教版一年级上册道德与法治教学计划+进度表
- 服装辅料基础知识培训
- 医院门诊急诊统筹管理方案
- 国家事业单位招聘2025农业农村部国际交流服务中心招聘拟聘用人员笔试历年参考题库附带答案详解
- 2025年AI技术在项目管理中的应用洞察报告
- 胃肠外科医生进修汇报
- 慢病健康宣教课件
评论
0/150
提交评论