ldch
发表于 2007-5-4 13:16
今天设计出了1AA调光手电的程序(第五页好了,继续)
<p><font size="5">一直打算设计调光手电,无奈总是很忙。现在终于趁五一放假,把其中最关键的部分,调光用的单片机程序设计出来了。第一次先用12F675,因为去年为了学习PIC单片机买了两片,其实只要是有EEPROM的PIC都可以用。</font></p><p><font size="5">第一版程序设计比较简单,操作方式为:接通电路后如果在2秒钟内断开,再次通电时改变亮度,如果连续接通超过2秒则锁定当前亮度。第一次做先弄3档亮度:强、中、弱,以后再考虑暴闪什么的其他附加功能。</font></p><p><font size="5">我设计出来后的第一个好处就是:呵呵,不用说大家也该知道,操控方式可以通过修改程序而改变,可以随需DIY了。也就是说将开创调光手电DIY新时代了。</font></p><p><font size="5">争取今晚前装配一个完整的样品出来,到时再传照片。</font></p>[此帖子已经被作者于1179246714编辑过]
zisui
发表于 2007-5-4 13:32
不错,希望到时有成品卖,不知道效率如何?
noneedface
发表于 2007-5-4 13:34
<p>希望有成品电路板卖,这样就可以DIY调光手电了</p>
qbq
发表于 2007-5-4 14:41
<p>东成的电路越来越好了,非常期待</p>
woaw
发表于 2007-5-4 15:02
<p>等出成品的时候买一下</p>
li123456
发表于 2007-5-4 15:06
<font size="4">等出成品</font>
阿雷
发表于 2007-5-4 15:22
能人多多加油
ldch
发表于 2007-5-4 16:50
<p><font size="5">首先多谢大家的鼓励。下午把烧好的单片机焊在电路板上,还不能说一帆风顺,还是遇到点问题,本来设计是三档,但是当把控制第二档的IC管脚焊上后电路不稳定,变成闪烁,只好去掉,这样就成了两档了。不管怎么说,已经迈出一步,算是成功一半了:</font></p><p><font size="5"></font> <br />由于IC不是贴片的,暂时尚未对此设计专门的电路板,所有调光的元件用搭焊的方式连接,难看点</p><p> <br /></p><br /><br />
ldch
发表于 2007-5-4 16:57
<p><font size="5">高亮档电池电流大约1.9A,低亮档大约550mA。目前实际测试来看,仍然存在若干问题:</font></p><p><font size="5">1、每次切换时都要闪烁一下,感觉不好:原因是程序初始化端口的方式不好,造成闪烁,需要继续优化源程序</font></p><p><font size="5">2、状态存储不稳定,容易受干扰而改变:需要仔细分析干扰源和干扰原因,从硬件和软件两个方面解决,力争使电路状态可靠、稳定</font></p>
ldch
发表于 2007-5-4 16:59
<font size="5">或者干脆改变控制方式,一开机就是高亮,然后多次点动开关调为低亮。有什么其他建议,欢迎大家献计献策!</font>
ldch
发表于 2007-5-4 17:01
<p>#include "P12F675.INC"</p><p>EEADDRA EQU 20H<br />EEADDRB EQU 21H<br />TEMP EQU 22H<br />EEREADA EQU 23H<br />EEREADB EQU 24H<br />DELY1 EQU 25H<br />DELY2 EQU 26H<br />DELY3 EQU 27H</p><p> ORG 0x0000</p><p>STAR<br /> BCF STATUS,RP0 ;体选择BANK0<br /> MOVLW 01H<br /> MOVWF EEADDRA ;初始化A地址<br /> MOVLW 02H<br /> MOVWF EEADDRB ;初始化B地址</p><p> CLRF GPIO ;清GPIO寄存器</p><p> MOVLW 07H<br /> MOVWF CMCON ;关闭比较器19H</p><p> BSF STATUS,RP0 ;体选择BANK1<br /> BCF INTCON,GIE ;禁止中断<br /> CLRF ANSEL ;清9FH模拟选择寄存器</p><p> MOVLW 08H<br /> MOVWF TRISIO ;除GPIO3外,其他管脚都是输出</p><p> BCF STATUS,RP0<br /> CALL DELAY1</p><p> CALL EEREAD_A<br /> CALL EEREAD_B</p><p> MOVF EEREADB,W<br /> XORLW 01H<br /> BTFSS STATUS,Z<br /> GOTO A3<br /> GOTO AA<br /> <br />A3<br /> BCF STATUS,RP0<br /> INCF EEREADA<br /> MOVF EEREADA,W<br /> XORLW 04H<br /> BTFSS STATUS,Z<br /> GOTO WRA<br /> GOTO A_3<br /> <br />WRA<br /> MOVF EEREADA,W<br /> MOVWF TEMP<br /> CALL WREEA<br /> GOTO AA<br /> <br />A_3<br /> MOVLW 01H<br /> MOVWF EEREADA<br /> GOTO WRA<br /> <br />AA<br /> BCF STATUS,RP0<br /> MOVF EEREADA,W<br /> XORLW 01H<br /> BTFSS STATUS,Z<br /> GOTO AA2<br /> MOVLW 0FFH<br /> MOVWF GPIO</p><p>FINISH<br /> BCF STATUS,RP0<br /> MOVLW 00H<br /> MOVWF TEMP<br /> CALL WREEB<br /> CALL DELAY<br /> BCF STATUS,RP0<br /> MOVLW 01H<br /> MOVWF TEMP<br /> CALL WREEB<br /> BCF STATUS,RP0<br /> MOVF EEREADA,W<br /> MOVWF TEMP<br /> CALL WREEA<br />LOOP<br /> GOTO LOOP<br /> <br />AA2<br /> BCF STATUS,RP0<br /> MOVF EEREADA,W<br /> XORLW 02H<br /> BTFSS STATUS,Z<br /> GOTO AA3<br /> MOVLW 0FDH<br /> MOVWF GPIO<br /> GOTO FINISH</p><p>AA3<br /> BCF STATUS,RP0<br /> MOVF EEREADA,W<br /> XORLW 03H<br /> BTFSS STATUS,Z<br /> GOTO AA1<br /> MOVLW 0FBH<br /> MOVWF GPIO<br /> GOTO FINISH</p><p>AA1<br /> MOVLW 01H<br /> MOVWF EEREADA<br /> GOTO WRA<br /> <br /> </p><p>EEREAD_A<br /> BCF STATUS,RP0<br /> MOVF EEADDRA,W<br /> BSF STATUS,RP0<br /> MOVWF EEADR<br /> BSF EECON1,RD<br /> MOVF EEDATA,W<br /> BCF STATUS,RP0<br /> MOVWF EEREADA<br /> RETURN</p><p>EEREAD_B<br /> BCF STATUS,RP0<br /> MOVF EEADDRB,W<br /> BSF STATUS,RP0<br /> MOVWF EEADR<br /> BSF EECON1,RD<br /> MOVF EEDATA,W<br /> BCF STATUS,RP0<br /> MOVWF EEREADB<br /> RETURN<br /> <br />WREEA ;写A,TEMP传送写入数据<br /> BCF STATUS,RP0 ;取BANK0<br /> MOVF EEADDRA,W ;取A地址<br /> BSF STATUS,RP0 ;取BANK1<br /> MOVWF EEADR ;A地址进入EEADR<br /> BCF STATUS,RP0 ;取BANK0<br /> MOVF TEMP,W ;取写入数据<br /> BSF STATUS,RP0 ;取BANK1<br /> MOVWF EEDATA ;待写数据进入EEDATA<br /> BSF EECON1,WREN<br /> BCF INTCON,GIE<br /> MOVLW 55H<br /> MOVWF EECON2<br /> MOVLW 0AAH<br /> MOVWF EECON2<br /> BSF EECON1,WR<br /> NOP<br /> NOP<br /> RETURN</p><p>WREEB ;写B,TEMP传送写入数据<br /> BCF STATUS,RP0 ;取BANK0<br /> MOVF EEADDRB,W ;取A地址<br /> BSF STATUS,RP0 ;取BANK1<br /> MOVWF EEADR ;A地址进入EEADR<br /> BCF STATUS,RP0 ;取BANK0<br /> MOVF TEMP,W ;取写入数据<br /> BSF STATUS,RP0 ;取BANK1<br /> MOVWF EEDATA ;待写数据进入EEDATA<br /> BSF EECON1,WREN<br /> BCF INTCON,GIE<br /> MOVLW 55H<br /> MOVWF EECON2<br /> MOVLW 0AAH<br /> MOVWF EECON2<br /> BSF EECON1,WR<br /> NOP<br /> NOP<br /> RETURN</p><p>DELAY<br /> MOVLW 10H ;外循环常数<br /> MOVWF DELY1 ;外循环寄存器<br />LOP0 MOVLW 0FFH ;中循环常数<br /> MOVWF DELY2 ;中循环寄存器<br />LOP1 MOVLW 0EEH ;内循环常数<br /> MOVWF DELY3 ;内循环寄存器<br />LOP2 DECFSZ DELY3 ;内循环寄存器递减<br /> GOTO LOP2 ;继续内循环<br /> DECFSZ DELY2 ;中循环寄存器递减<br /> GOTO LOP1 ;继续中循环<br /> DECFSZ DELY1 ;外循环寄存器递减<br /> GOTO LOP0 ;继续外循环<br /> RETURN</p><p>DELAY1 MOVLW 9FH ;外循环常数<br /> MOVWF DELY1 ;外循环寄存器<br />LOOP0 MOVLW 0FFH ;中循环常数<br /> MOVWF DELY2 ;中循环寄存器<br />LOOP1 DECFSZ DELY2 ;中循环寄存器递减<br /> GOTO LOOP1 ;继续中循环<br /> DECFSZ DELY1 ;外循环寄存器递减<br /> GOTO LOOP0 ;继续外循环<br /> RETURN</p><p>END</p>
ldch
发表于 2007-5-4 17:08
晚上有空再上电路图
mioa
发表于 2007-5-4 17:49
<p>支持一下....</p><p>早日见到你的成品.</p><p></p>
kyou
发表于 2007-5-4 19:21
<p>呵呵,东成兄的电路总是一坨一坨的~~~</p>
发条狐狸
发表于 2007-5-4 19:25
xxxx
发表于 2007-5-4 20:01
<p><font size="5">我理想中的有调光电路的手电,最好在采用轻触式开关的方式上开发,这种弹片式开关比现在常用的弹簧开关,更有利于节省手电的整体体积。整个开关和电路可做到尾盖处。但轻触式开关用于手电,它的特点又成了致命的缺陷——不能锁死,电路在待机状态的放电电流又不可能为零!前后矛盾!</font></p>
hayas
发表于 2007-5-4 20:17
<p>AA电池的话,待机电流在1MA内可以接受。</p><p>我知道MP3机器的待机电流,通常都在100微安以内(3.6V)。难道这个单片机还要大?</p>
hayas
发表于 2007-5-4 20:21
<p>另外,一定要搞成记忆的。</p><p>要比定挡的人性化很多很多。</p><p></p><p>感觉东成比老沈要厉害很多,那人牛B都快吹破了,到现在连2 SWICH的2挡电路还没搞出来,要等他的单片机多档,那不是要等到那话儿都泻了?</p><p></p>
zisui
发表于 2007-5-4 21:02
不要这么说,老沈我觉得很值得期待,老沈电筒的思路很切合我的需要。
ldch
发表于 2007-5-4 23:16
继续上图
<p><font size="5">手电装配起来就没什么好看的了,外观都一样,只有使用时才能感觉到差异</font></p><p> <br /></p><p><br /><br /><br /><font size="5">这是高亮档</font></p><p><br /><font size="5">这是低亮档,由于相机的原因,感觉跟上面的差别不大,下面来个对比的</font></p><p><br /> <br /></p><p><br /><font size="5">左边是18650电池供电的远射手电,LED电流约700mA,右边是1AA高亮,LED电流大约450mA,差距还是比较明显的。</font></p><p><br /> <br />忘了关闪光灯了,闪光灯下二者还是可以看出差距</p><p> <br />黑暗中,相机的因素,二者看上去反而差不多了,低亮时差别大些,如下图:<br /></p>