随身玩伴吧 关注:157贴子:642
  • 0回复贴,共1

【4.1】谈手电筒原理(MCU五档功能)7135*3典型应用电路

取消只看楼主收藏回复



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
- 本文出自“手电大家谈”,原帖:http://www.shoudian.org/thread-369732-1-1.html


1楼2017-04-01 16:14回复