1、光增强--->PWM占空比减小--->LED亮度逐渐变暗--->熄灭;
2、光减弱--->PWM占空比增加--->LED亮度逐渐变亮--->最亮
3、MCU扫描II/O电平--->检测输入的平均电压(光敏管)--->对应的PWM占空比--->1/2。
问题:
1、怀疑你的光敏部分硬件电路问题:LED完全熄灭后,电路影响到光敏电路的供电;
2、软件没有重复扫描这个光敏的I/O。
ORG0000HL0000: LJMP MIN00主程序
/ *** *** *** *** / 初始化 PWM
PCA00: MOV CMOD, #82H(fSYS/2)
MOV CCON, #00H
MOV CL, #00H
MOV CH, #00H
MOV CCAPM0, #00H PWM0 输出
MOV PCA_PWM0, #00H
SETBCR开 PWM
RET
/ *** *** *** *** / 主程序
P1M0EQU 91H
P1M1EQU 92H
P3M0EQU 0B1H
P3M1EQU 0B2H
ADC_CONTR EQU 0C5H A/D 转换寄存器
ADC_DATAEQU 0C6H A/D 结果寄存器
MIN00: MOV P1M0, #08H 设置 P1.3 为高阻状态
MOV P1M1, #08H
MOV ADC_CONTR, #0E3H 开A/D 转换电源 P1.3
LCALL PCA00初始化 PWM
MIN10: NOP 主程序 入口
LCALL ADC00测光敏电阻电压
MOV CCAP0H, A写入PWM 控制 发光亮度
LJMPMIN10
RET
/ *** *** *** *** / A/D 转换通道 测电压
ADC00: MOV ADC_DATA, #00H
ORL ADC_CONTR, #08H 启动 AD 转换
MOV A, #10H 判断 AD 转换是否完成
ANL A, ADC_CONTR
JZ ADC32 AD 转换尚未完成, 继续等待
ANL ADC_CONTR, #0E7H 清0 ADC_FLAG, ADC_START 位, 停止A/D 转换
MOV A, ADC_DATA A = AD 转换结果
RET
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)