单片机实现pwm控制

全部回答3
默认 最新
  • 【1】任何一款单片机都能输出pwm波,即脉冲宽度调制器。用定时器即可输出占空比变化的方波。【2】led亮度调节,首先应当明确led的伏安特性曲线。还要知道项目中有没有多基色要求、led灯数量、它们的连接方式。【3】用pwm控制,应该控制的实际led驱动电路为恒压驱动方式。【4】以最简单的单个led亮度调节为例,一个pnp三极管和基极电阻就搞定了。先根据伏安特性,确定一个最大工作电压和电流点。用对应的电阻串接直流电流表代替led做实验。产生的方波最小占空比为工作电压(如2.0v)除以电源电压(如5.0v)。控制方波,用示波器、电流表检验调节情况。最后用led代换。为防止单片机方波失效烧坏led,后期增加限流电路(如5ma恒流源)保护led。
    0 点赞
  • 控制LED的灯光强弱就是控制输出电压的大小。IO口输出的都是TTL电平,所以无法直接控制,你可以先在IO口接一个PC817光耦。1脚接VCC,2接IO,3接VCC,4对地接一个220欧的电阻。在4脚和220欧电阻之间接出一根线,串联接5K的电阻和10U的电解电容,最后接地。这样光耦导通时5K电阻和10U电容就形成了RC充电,由于PWM的占空比不同,电容充电时间长短也就不一样,电容两端的电压也不一样。LED和电容并联就可以了。
    0 点赞
  • /*********************************************************/ // 定时器0中断服务程序. /*********************************************************/ void timer0() interrupt 1 {//本中断函数,每隔1ms执行一次.//每次执行,都是使P0从此刻输出0.//并且令T1从此刻开始定时.//T1定时时间是:"PWM"us,即2~255us. TR1 = 0; TH0 = 0xfc; TL0 = 0x66; TH1 = PWM; TR1 = 1; P0 = 0x00; //启动输出 } /*********************************************************/ // 定时器1中断服务程序 /*********************************************************/ void timer1() interrupt 3 { //本中断函数,每隔2~255us执行一次.//本中断函数在1ms期间,只会执行一次.//本函数一旦执行,就是使P0从此刻输出1. TR1 = 0; P0 = 0xff; //结束输出 } //程序在P0口输出8路相同的PWM脉冲波形,//周期为1ms,低电平的持续时间为2~255us。 //在主函数里面,利用按键修改PWM的数值2~255,并且发音。
    0 点赞

没有更多内容了

返回顶部
产品求购 求购