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>