
其实这个很简单啊,
1、就是你要知道单片机的I/O口输出的电压是什么,I/O口输出的电压是平均值,也就是说你控制好输出的电压就可以控制好亮度(当然,这是指输出变化的时间在10ms左右)
2、既然要调节亮度,那么就是改变平均值,改变平均值的方法就是改变输出占空比,
3、因为是4级的调节,为了让眼睛分辨得出来建议用1/8,3/8,5/8,8/8输出
以上的方法以前用过,还算好用,这个方法只能直接驱动,不能加三极管驱动,若用三极管驱动会出现闪烁。希望这些对你有帮助
实用的方法是:
1:比较器检测交流电的过零信号;
2:单片机根据过零信号,延迟输出触发脉冲,驱动双向可控硅;
3:调整单片机的延迟时间可以调整触发信号相位,达到调压目的。
交流调压,使用PWM方式调压,较难实现。
;十进制调整结果放在30H(百)、20H(十)、10H(个)
;以下是主程序
org 00h
mov a,#0ffh;端口初始化
mov p0,a
mov p1,a
mov p2,a
mov p3,a
main:anl p1,#0f0h;开机显示000
mov 30h,#00h;清除十进制调整结果存放的内存区
mov 20h,#00h
mov 10h,#00h
start:clr p36;启动A/D转换器
nop
nop
setb p36
wait:jb p20,adc;A/D转换是否完成?
call disp;转换未完成则调用显示子程序
jmp wait;继续判断A/D转换是否完成?
adc:movx a,@r0;读入A/D转换结果
call tiaozheng;调用十进制调整子程序
mov r1,#10;显示时间控制初值
disp1:call disp;调用显示子程序
djnz r1,disp1;显示时间到了没有?
jmp start;继续进行下一次的A/D转换(更新电压数据)
;以下是显示子程序
disp:mov a,10h;取个位显示数据
orl a,#30h;个位显示数据+个位的使能端
mov p1,a;(个位显示数据+个位的使能端)
从P1口输出
call delay;延时5ms
mov a,20h;取十位显示数据
orl a,#40h;十位显示数据+十位的使能端(小数点在十位的时候亮)
mov p1,a;(十位显示数据+十位的使能端)从P1口输出
call delay;延时5ms
mov a,30h
orl a,#90h
mov p1,a
call delay
clr a
ret
;以下是十进制调整子程序
tiaozheng:mov b,#100
div ab;商在A中(百位),余数在B中
mov 30h,a
mov a,b
mov b,#10
div ab;商在A中(十位),余数在B中(个位)
mov 20h,a
mov 10h,b
mov a,10h;个位乘以2
add a,10h
da a;十进制调整
mov 10h,a;个位十进制调整存入10H单元
jb acc4,shijia1
mov a,20h
add a,20h
da a
cunshi:mov 20h,a;十位的十进制调整存入20H单元
jb acc4,baijia1
mov a,30h
add a,30h
da a
cunbai:mov 30h,a;百位的十进制调整存入30H单元
ret
shijia1:setb c;进位位置1
mov a,20h;十位乘以2+1
addc a,20h
da a
jmp cunshi
baijia1:setb c;进位位置1
mov a,30h;百位乘以2+1
addc a,30h
da a
jmp cunbai
;以下是5ms延时子程序
delay:mov r4,#10h
d1:mov r5,#248
djnz r5,$
djnz r4,d1
ret
end
以上就是关于c51单片机怎么调节电压全部的内容,包括:c51单片机怎么调节电压、如何用单片机的电压信号来控制220V的电压大小、利用单片机与DAC0809设计简易电压表,能够测量和显示0—5V电压,设计电路和程序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)