


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、这是以前看一网友做的小玩意,看到现在有人发LED灯的电路就拿出来给需要的 参考一下。电路功能:单锂3WLE恒流驱动,3.0V-4.2V全程恒流,最大可输出700mA实际 可达 1000mA)四种档位模式:1三档调光+暴闪+慢闪+SOS信标;2. 三档调光+暴闪+SOS;3. 二档调光;4. 六档调光+暴闪+慢闪+SOS信标;有记忆功能;只有一个电源开关控制,关机关电源,完全不耗电电池过放保护,电压低于3V进入应急模式自动切换到30 mA,电压低于2.7V进入休眠模式。GND问LI小僅用开机笹狈|是否记忆功艇吋岐OluF,便用关机程测農费记忆収1uF(原文件名:3454.jpg)引用图片有两种不
2、同的代码,开机记忆或关机记忆Chip typeClock freque ncyMemory modelExternal SRAM sizeATti ny134.800000 MHzTi ny0Data Stack size:16四组档位模式,关闭2秒记忆#defi neDEBUG2#defi nedebug#i nclude#include #define CHANGE_WAITING 62#define MAX_CURRENT 920#define VOLTAGE_LIMIT_TO_30mA 5233 /5233=3.2V 4812=3.0V#define VOLTAGE_OUT_OFF 4
3、331 /4331=2.7V#define VOLTAGE_CHANGE 1000 / 定义开机后是否变 换档位的电压值,如大于此值则变换档位,否则用上次关机时的档位#define K1 318682 / 由于 3454 在压控恒流模式工作时输出电流会随电池电压降低而升高, 为了做到真正的 恒流,引入 K1、 K2 根据电池电压对控制电压进行修正。#define K2 341#define XINGBIAO 3#define MAX_DANGWEI 9#define ADEN ADCSRA.7#define ADSC ADCSRA.6#define EN_30mA PORTB.5#define
4、EN_PWMPORTB.1#defineWDCE 4#defineWDE 3eepromunsignedcharnull;eepromunsignedcharcircle=2;flashunsigned chartime_set3181,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, o frash/ ba16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, / flash4,8,4,8,4,25,12,8,12,8,12,25,4,8,4,8,4,50 / so s亮(0.5 秒)-暗(1 秒) - 亮( 0.5
5、秒) - 暗( 1秒) - 亮( 0.5 秒)- 暗(3.5 秒)-亮(1.5 秒)- 暗(1秒) - 亮( 1.5 秒)-暗(1 秒)- 亮(1.5 秒)-暗(3.5 秒) - 亮( 0.5 秒)-暗(1 秒) - 亮(0.5 秒)- 暗(1 秒) - 亮( 0.5 秒) - 暗( 3.5 秒);flash unsigned int i_setMAX_DANGWEI+1=920,700,700,50, /xingbiao920,700,480,348,135,20;bit flashing_on_off;bit adc_busy;bit check_change_circle;unsigne
6、d char temp;unsigned char lower_times;unsigned char time_flash,frash_count;/ Watchdog timeout interrupt service routine interrupt WDT void wdt_timeout_isr(void) if( temp!=XINGBIAO)time_flash+;WDTCR|=0x40;if( temptime_settempfrash_count) time_flash=0;frash_count+;if(frash_count17)frash_count=0; flash
7、ing_on_off=1;elseflashing_on_off=flashing_on_off;#ifndef DEBUG2/ ADC interrupt service routineinterrupt ADC_INT void adc_isr(void)unsigned int adc_result;adc_result=10*ADCW;if(check_change_circle=1)check_change_circle=0;if(adc_resultVOLTAGE_CHANGE)temp+;switch (PINB&0x18)case 0x08: /PB4 接地,三档调光+暴闪+慢
8、闪+SOS信标if(temp4)temp+;break;case 0x10: /PB3 接地 , 三档调光+暴闪+SOS temp+;break;case 0x00:/PB3 、PB4 接地 ,二档调光temp=temp=5?7:4;break;default:break;/ 没有连接,六档调光 +暴闪+慢闪+SOS信标if(tempMAX_DANGWEI)temp=0; circle=temp;if(adc_resultVOLTAGE_OUT_OFF)EN_PWM=0;#ifndef debugEN_30mA=0;#endif elseif(adc_result10)TCCR0B=0x00;
9、EN_PWM=0;#ifndef debugEN_30mA=flashing_on_off; #endifelselower_times=0;EN_PWM=flashing_on_off;#ifndef debugEN_30mA=0;long)K2*i_sett#endifOCR0A=(unsigned char)(K1-(unsigned emp)/(adc_result);adc_busy=0;#endifroutine/ Timer 0 output compare A interrupt service interrupt TIM0_COMPA void timer0_compa_is
10、r(void) if(adc_busy=0) ADSC=1; adc_busy=1; void main(void) #pragma optsize-#ifdef _OPTIMIZE_SIZE_#pragma optsize+#endif /PORTB=0x19;/DDRB=0x23;flashing_on_off=1;lower_times=0; time_flash=0; frash_count=0; #asm(sei) temp=circle;TIMSK0=0x04;DIDR0=0x0F;ADMUX=0x41;ADCSRA=0x8D;#pragma optsize-WDTCR|= (1W
11、DCE) | (1WDE); WDTCR=0x41; /64ms#ifdef _OPTIMIZE_SIZE_#pragma optsize+#endifOCR0A=200;TCCR0A=0x83;TCCR0B=0x01;check_change_circle=1;ADSC=1;adc_busy=1;while(check_change_circle=1)Jdelay_ms(1);while (1)if(temp=XINGBIAO)EN_30mA=1;delay_ms(50);EN_30mA=0;#pragma optsize-WDTCR|= (1WDCE) | (1WDE);WDTCR=0x6
12、0; /4s#ifdef _OPTIMIZE_SIZE_#pragma optsize+#endifMCUCR=0x20;#asm(sleep);#asm(NOP);Chip typeClock frequencyMemory model External SRAM size: ATtiny13 4.800000 MHz : Tiny0Data Stack size : 16四组档位模式,两秒连续内按开关换档,点亮超过 2 秒记忆当前档,/#define DEBUG2/#define debug#include #include #define CHANGE_WAITING 62#define
13、 MAX_CURRENT 920#define VOLTAGE_LIMIT_TO_30mA 5233 /5233=3.2V 4812=3.0V#define VOLTAGE_OUT_OFF 4331 /4331=2.7V#define K1 333167 / 由于 3454 在压控恒流模式工作时输出 电流会随电池电压降低而升高,为了做到真正的恒流,引入K1、K2 根据电池电压对控制电压进行修正。#define K2 292#define XINGBIAO 3#define MAX_DANGWEI 9#define ADEN ADCSRA.7#define ADSC ADCSRA.6#defin
14、e EN_30mA PORTB.5#defineEN_PWMPORTB.1#defineWDCE 4#defineWDE 3eepromunsignedcharnull;eepromunsignedcharchange_needed=0;eepromunsignedcharcircle=2;flashunsigned chartime_set318=/ ba1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, o frash16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, / flash4,8,4,8,4,25,1
15、2,8,12,8,12,25,4,8,4,8,4,50 / so s亮(0.5 秒)-暗(1 秒) - 亮( 0.5 秒) - 暗( 1秒) - 亮( 0.5 秒)- 暗(3.5 秒)-亮(1.5 秒)- 暗(1秒) - 亮( 1.5 秒)-暗(1 秒)- 亮(1.5 秒)-暗(3.5 秒) - 亮( 0.5 秒)-暗(1 秒) - 亮(0.5 秒)- 暗(1 秒) - 亮( 0.5 秒) - 暗( 3.5 秒);flash unsigned int i_setMAX_DANGWEI+1=650,650,650,50, /xingbiao1000,750,520,350,180,50;bit
16、flashing_on_off;bit adc_busy;unsigned char temp;unsigned char time,lower_times;unsigned char time_flash,frash_count;routine/ Watchdog timeout interrupt service interrupt WDT void wdt_timeout_isr(void) if( temp!=XINGBIAO)time_flash+;WDTCR|=0x40; if(timeCHANGE_WAITING)time+;elseif(change_needed!=0) ch
17、ange_needed=0;if( temptime_settempfrash_count)time_flash=0;frash_count+; if(frash_count17)frash_count=0;flashing_on_off=1;elseflashing_on_off=flashing_on_off;#ifndef DEBUG2/ ADC interrupt service routineinterrupt ADC_INT void adc_isr(void)unsigned int adc_result;adc_result=10*ADCW;if(adc_resultVOLTA
18、GE_OUT_OFF)EN_PWM=0;#ifndef debugEN_30mA=0;#endifelse if(adc_result10)TCCR0B=0x00;EN_PWM=0;#ifndef debug EN_30mA=flashing_on_off; #endif else lower_times=0;EN_PWM=flashing_on_off;#ifndef debugEN_30mA=0;#endif if(flashing_on_off=0)OCR0A=200;else*i_settemp)/(adc_result);long)K2OCR0A=(unsigned char)(K1
19、-(unsignedadc_busy=0;#endif/ Timer interrupt0 output compareTIM0_COMPA voidA interrupt service timer0_compa_isr(void)routineif(adc_busy=0) ADSC=1; adc_busy=1; void main(void)#pragma optsize-#ifdef _OPTIMIZE_SIZE_#pragma optsize+#endif/PORTB=0x19;/DDRB=0x23;TCCR0A=0x83;flashing_on_off=1;time=0;lower_
20、times=0;time_flash=0;frash_count=0;#asm(sei) temp=circle;if(change_needed=0)change_needed=1;elsetemp+;switch (PINB&0x18) case 0x08: 光+暴闪+慢闪+SOS信标/PB4 接地,三档调caseif(temp4) temp+;break;0x10:/PB3 接地 , 三档调光 +暴闪 +SOScase调光 temp+;break;0x00: temp=temp=5?7:4;break;/PB3 、PB4 接地 , 二档default:break;/ 没有连接,六档调光
21、+暴闪 +慢闪+SOS信标if(tempMAX_DANGWEI) temp=0;circle=temp;if(temp!=XINGBIAO)/GIMSK=0x20;/PCMSK=0x10;/GIFR=0x20;TIMSK0=0x04;DIDR0=0x0F;ADMUX=0x41;ADCSRA=0x8D;#pragma optsize-WDTCR|= (1WDCE) | (1WDE); WDTCR=0x41; /64ms #ifdef _OPTIMIZE_SIZE_#pragma optsize+#endifOCR0A=250;TCCR0B=0x01;delay_ms(5);adc_busy=0;
22、while (1) if(temp=XINGBIAO)EN_30mA=1; delay_ms(100);EN_30mA=0;#pragma optsize-WDTCR|= (1WDCE) | (1WDE);WDTCR=0x60;4s#ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #en difMCUCR=0x20;#asm(sleep); #asm(NOP);程序中系数K1、K2计算:(原文件名:1.jpg)引用图片再来一个应急充, 功能:手机充电,1.0V到4.5V电池通吃可以电池过放保护,也可以取消保护榨干干电池 还可以测量电池电压并显示。不计成本,效果绝非
23、地摊上能买到的可比。| 二8*11a j丄CLKIC1CKAi MMomFt5.11OUTREFPGMDPGI4T:PONT:-O 口-4 i匚!TJE1(原文件名:sch.jpg)引用图片源码,读以下就可以知道操作方法了 /* This program was produced by the CodeWizardAVR V2.03.9 StandardAutomaticProgram Generator?Copyright1998-2008 Pavel Haiduc, HP InfoTechProject :Version :Date: 2009-4-3AuthoruserCompany :
24、DellComments:Chip type: ATtiny13AVR Core Clock frequency:4.800000 MHzMemory model: TinyExternal RAM size: 0Data Stack size: 24REF=1.07V#include #include #define DEBUG 0#define OUT_ENABLEPORTB.0#define KEY_CHECKPINB.2#define BOOST_ENABLE PORTB.3#defineOUTPUT_VOLTAGE_SELEPCOTRTB.1#if !DEBUGPORTB.501#d
25、efine LED_OUT#define LED_ON#define LED_OFF #endif #define WDCE 4#define WDE 3#define ADEN ADCSRA.7#define ADSC ADCSRA.6volatileunsignedchartemp_v16;volatileunsignedcharCount;volatileunsignedcharReal_voltage;volatileunsignedcharSystem_states;unsigned char Shut_up_voltage;unsigned int Worked_timer_cou
26、nt;bit adc_busy;bit enable_lower_voltage_protect;unsigned char Lower_voltage_checked_times;interrupt PCINT0 void pin_change_isr(void) unsigned char i=0;while(KEY_CHECK=0)i+;delay_ms(10);if(i=250)/if(KEY_CHECK=1|i=250) break;启动或关闭输出if(i=200) / 按钮按下时间大于 2 秒 if(System_states!=2) System_states=2;Worked_
27、timer_count=0;else System_states=0;,启动或关闭放电低else / 按钮按下时间小于 2 秒 电压保护,并显示空载电压值及低电压保护值if(i=5)if(System_states!=2)System_states=1;lower_voltage_routineenable_lower_voltage_protect=enable protect;/ Watchdog timeout interrupt service routine /interrupt WDT void wdt_timeout_isr(void)/ Timer 0 output compa
28、re A interrupt service interrupt TIM0_COMPA void timer0_compa_isr(void) if(adc_busy=0)ADSC=1;adc_busy=1;/ ADC interrupt service routine interrupt ADC_INT void adc_isr(void) unsigned char i;unsigned int temp;temp_vCount=ADCH;Count+;if(Count15)Worked_timer_count+;Count=0;temp=0; for(i=0;i16;i+)temp+=(unsigned int)temp_vi;Real_voltage=(unsigned char)(unsigned long )temp*1531)/100 000);if(Real_voltage=22500) / 电池电压低或约一小时后关闭输出Lower_voltage_checked_times+;if(Lower_voltage_checked_times3)/ 连续三次采样都低于保护值System_states=0;BOOST_ENABLE=0;OUT_ENABLE=1;#if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营销资源分配优化-洞察及研究
- 射箭节日活动方案
- 宪法宣讲活动方案
- 宣传大使选拔活动方案
- 宿舍扩展心理活动方案
- 家政双十一活动方案
- 安利营销活动方案
- 小儿麻醉活动方案
- 宣传推广活动方案
- 审计机关五一活动方案
- 华为流程与信息化实践与架构规划分享课件
- 房屋拆除施工合同
- 国家开放大学《知识产权法》考试复习题库(含答案)
- 国开农业产业发展规划形考1-4试题及答案
- 2022年临商银行股份有限公司招聘考试真题及答案
- Cpk 计算标准模板
- 化工原理课程设计-用水冷却煤油产品的列管式换热器的工艺设计
- MES系统技术方案
- 主档资料培训课件
- MT-146.1-2011-树脂锚杆-第一部分:锚固剂
- 小学生综合素质发展评价手册
评论
0/150
提交评论