1.jpg (23.73 KB, 下載次數: 42)
下載附件
2023-8-4 15:43 上傳
1) 原理分析:上圖原理圖中,(+)圓圈接LED正極,(-)圓圈接LED負極;二極管D1與電容C1組成單片機MCU電源,其作用是用于電筒斷電后,能給單片機提供幾秒的連續應急電源,D1于用斷電后防止MCU電源上的電反向流出;C1調節斷電維持時間,增大C1,可以延長手電筒斷電換檔時間,不會復位!MCU中1腳是IC電源正極,8腳是負極,4腳用于斷電檢測,R1是其下拉電阻,6腳控制LED(實際是通過恒流IC-AMC7135的電源正極來控制LED功能);Q1是三個恒流IC-AM7135并聯,每個恒流IC通過電流大約是350mA。
2) 電路工作過程:當K1開關接通時,4腳為高電位,MCU正常工作在第一檔功能,在K1快速斷開,接通時,MCU的4腳在開關斷開時,檢測到低電位,(由于C1上的電被D1二極管反向截止,通過R1下拉電阻到負極);當4腳為低電位,單片機MCU關閉輸出,LED不亮,同時進入睡眠模式(睡眠模式時,單片機的工作電流很小,幾個uA),這樣可以延長C1工作時間,也就是開關K斷電時間!當開關K接通時,MCU的4腳被單片機內部上拉電阻接通到電池正極,為高電位,MCU被喚醒,通過MCU程序被執行下一檔功能(對6腳進行控制);再按開關,MCU如此循環工作!此手電筒為5檔功能(強光,中光,弱光,爆閃,SOS閃),當然也可以自行編程其功能!
3)如果要把MCU腳位全部利用起來,可以增加檔位選擇功能,如把2腳接負極,則手電筒只有2檔,如3腳接負極,則手電筒有3檔功能,7腳接負極,手電筒為4檔,所有3個腳不接負極,為默認5檔功能,有的在PCB板上把此三腳畫成五角星。
4)注意:此貼能火的話,再附PCB圖紙,程序!
-- 覺得好的話,麻煩回個貼哦!
---為滿足手電愛好者的動手興趣,特附上PCB圖,可直接打印1:1大小,另再附上原程序,供單片機愛好者參考!
---程序是義隆單片機,型號是EM78P153K
---本人不是專業手電制作者,只是一位有點喜好者,舊電筒線路板壞了,工作之余,特為止重新制作了,包PCB,程序;呵呵。。以上資料大家業余學習參考!
**********怎么不可以傳送附件?只能傳圖片格式!版主有方法嗎?****************
*****************原程序供大家參考****************************
;EM78P153K
;P63--KEY(低電位有效)對應P61--LED
;看門狗喚醒
CONT==0X01
IOCB==0X0B
PORT6==0X06
TCC==0X01
STATUS==0X03
IOCF==0X0F
IOCE==0X0E
RF==0X0F
TURN==0X11
DLY1==0X12
DLY2==0X13
FLAG==0X14
LMF==FLAG.0 ;中斷中亮滅燈標志
BSF==FLAG.1 ;爆閃標志
SOF==FLAG.2 ;SOS標志
SSF==FLAG.3 ;SOS中快慢標志
SST==FLAG.4 ;SOS中滅燈標志
SKK==FLAG.5 ;SOS中第二次快閃
NUMK==0X16
NUM==0X17
PAR==0X18
ORG 0X00
JMP START
ORG 0X08
JMP TCC_INT
;=====================調光
TCC_INT:
JBC SOF ;SOS
JMP IN_SOS
JBC BSF
JMP IN_BS ;爆閃
JBC LMF
JMP MD
BS PORT6,1
DJZ PAR
JMP OUT
BS LMF ;亮滅標志
COMA NUM
MOV PAR,A
JMP OUT
MD:
BC PORT6,1
DJZ PAR
JMP OUT
BC LMF
MOV A,NUM
MOV PAR,A
JMP OUT
OUT:
MOV A,@250
MOV TCC,A
BC RF,0
RETI
;---------------------爆閃
IN_BS:
DJZ PAR
JMP OUT1
MOV A,@0B00000010
XOR PORT6,A
MOV A,@20
MOV PAR,A
OUT1:
MOV A,@200
MOV TCC,A
BC RF,0
RETI
;--------------------SOS
IN_SOS:
JBC SST
JMP STT ;滅燈
JBC SKK
JMP KK2
DJZ PAR
JMP OUT2
MOV A,@0B00000010
XOR PORT6,A
JBC SSF ;快慢標志
JMP SOK ;慢閃部分
SOM: ;快閃部分
MOV A,@80
MOV PAR,A
DJZ NUM
JMP OUT2
MOV A,@6
MOV NUM,A
BS SSF ;開快閃標志
JMP OUT2
SOK: ;慢閃部分
MOV A,@200
MOV PAR,A
DJZ NUM
JMP OUT2
MOV A,@6
MOV NUM,A
MOV A,@80
MOV PAR,A
BC SSF
BS SKK ;第二次快
BC PORT6,1
JMP OUT2
OUT2:
MOV A,@1
MOV TCC,A
BC RF,0
RETI
;-------------------------
KK2:
DJZ PAR
JMP OUT2
MOV A,@0B00000010
XOR PORT6,A
;----------------------- ;快閃部分
MOV A,@80
MOV PAR,A
DJZ NUM
JMP OUT2
MOV A,@4
MOV NUM,A
BS SST ;開滅燈
JMP OUT2
;------------------------
STT: ;滅燈部分
BC PORT6,0
DJZ PAR
JMP OUT2
MOV A,@200
MOV PAR,A
DJZ NUM
JMP OUT2
BC SST ;關滅燈
BC SSF ;開慢閃
BC SKK
BC PORT6,1
MOV A,@6
MOV NUM,A
JMP OUT2
;===================
;===================
START:
MOV A,@0B11111101 ;P61輸出
IOW PORT6
MOV A,@0B11111101 ;P61下拉
IOW IOCB
MOV A,@0X00
MOV PORT6,A
IOW IOCE
MOV A,@10
MOV TURN,A
;-----------------------------
BEG:
MOV A,@0X00
MOV PORT6,A
MOV FLAG,A
IOW IOCE
MOV A,@6
MOV NUMK,A
;------------------功能1 強光
G1:
MOV A,@6
SUB A,NUMK
JBS STATUS,0
JMP G2
MOV A,@0X00
IOW IOCF
BS PORT6,1
JMP KEY
;------------------功能2 中光
G2:
MOV A,@5
SUB A,NUMK
JBS STATUS,0
JMP G3
MOV A,@0B00000000
CONTW
MOV A,@170
MOV NUM,A
MOV PAR,A
MOV A,@0B00000001
IOW IOCF
MOV A,@250
MOV TCC,A
ENI
JMP KEY
;------------------功能3 弱光
G3:
MOV A,@4
SUB A,NUMK
JBS STATUS,0
JMP G4
MOV A,@85
MOV NUM,A
MOV PAR,A
MOV A,@0B00000000
CONTW
MOV A,@0X01
IOW IOCF
MOV A,@250
MOV TCC,A
ENI
JMP KEY
;-----------------功能4 爆閃
G4:
MOV A,@3
SUB A,NUMK
JBS STATUS,0
JMP G5
BS BSF ;爆閃標志
MOV A,@0B00000101
CONTW
MOV A,@20
MOV PAR,A
MOV A,@200
MOV TCC,A
MOV A,@0X01
IOW IOCF
ENI
JMP KEY
;-----------------功能5 SOS
G5:
MOV A,@2
SUB A,NUMK
JBS STATUS,0
JMP BEG
BC BSF ;關爆閃標志
BS SOF ;開SOS標志
MOV A,@0B00000100
CONTW
BS PORT6,1
MOV A,@5
MOV NUM,A ;閃次數
MOV A,@80
MOV PAR,A
MOV A,@1
MOV TCC,A
MOV A,@0X01
IOW IOCF
ENI
JMP KEY
;===============開關檢測
KEY:
JBC PORT6,3
JMP KEY
CALL DELAY1
JBC PORT6,3
JMP KEY
DISI
MOV A,@0X00
IOW IOCF ;關所有中斷
MOV PORT6,A ;關開關時,要關輸出
;------------------
SL:
WDTC ;清除WDT和預分頻器
CLR TCC ;清TCC
MOV A,@0B00011110 ;設置WDT分頻比,大于1:1
CONTW
MOV A,@0X00 ;禁止WDT
IOW IOCE
MOV PORT6,PORT6
DISI
MOV A,@0B00000010 ;設置喚醒功能
IOW IOCF
SLEP
NOP
WDTC
CLRA
IOW IOCE ;禁止WDT
IOW IOCF ;禁止喚醒
;===========================
K1:
JBS PORT6,3
JMP K1
CALL DELAY2
JBS PORT6,3
JMP K1
DEC NUMK
JMP G1
;================
DELAY1:
MOV A,@15
MOV DLY1,A
D1: MOV A,@10
MOV DLY2,A
D2: DJZ DLY2
JMP D2
DJZ DLY1
JMP D1
RET
;---------------
DELAY2:
MOV A,@40
MOV DLY1,A
E1: MOV A,@50
MOV DLY2,A
E2: DJZ DLY2
JMP E2
DJZ DLY1
JMP E1
RET
|