我的是手动和光敏自动PWM LED调光,但是用光敏调光时!如果光线强,灯会灭~但灭了之后不会亮!要手动调亮

我的是手动和光敏自动PWM LED调光,但是用光敏调光时!如果光线强,灯会灭~但灭了之后不会亮!要手动调亮,第1张

编程不懂,提个思路:

1、光增强--->PWM占空比减小--->LED亮度逐渐变暗--->熄灭;

2、光减弱--->PWM占空比增加--->LED亮度逐渐变亮--->最亮

3、MCU扫描II/O电平--->检测输入的平均电压(光敏管)--->对应的PWM占空比--->1/2。

问题:

1、怀疑你的光敏部分硬件电路问题:LED完全熄灭后,电路影响到光敏电路的供电;

2、软件没有重复扫描这个光敏的I/O。

ORG0000H

L0000: 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8045127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存