PWM按键控制灯亮度(改变占空比)MCU2010-04-0520:32:09阅读63评论0字号:大中小明文作品,谢谢欣赏!功能说明:PWM,通过改变占空比,PWM_T/100,这里100是周期,每个按键都会给PWM_T一个定值,这样就改变了输出波形U16个按键改变占空比攻受灯的题——声孙——5fTMj卒D1邮FCAlADiPC&AD6WF7科訂*BPzaafl陀¥说旳”"円>ATI时11AI1町墊阿鬥砂14pirfrrrP1LT1Pl!?AT仿真运行后,点击debug->4.digitaloscillicope(最后一项)就能够看到波形了观察低电平占的比例10%,这里WPM-T=1010/100=10%60/100=60%/****************************************************6个按键决定6个亮度占空比:PWM_T/100,越大越亮**************************************************#inelude#defineulntunsignedint#defineucharunsignedcharsbitc7=P3A7;〃6个按键,决定输出PWM_T值sbitc6=P3A6;sbitc5=P3A5;sbitc4=P3A4;sbitc3=P3A3;sbitc2=P3A2;/****************************************************主程序****************************************************/voidmain(void){ulntn;TMOD=0x02;//定时器0,工作模式2,8位定时模式TH0=210;//写入预置初值(取值1-255,数越大PWM频率越高)TL0=210;//写入预置值(取值1-255,数越大PWM频率越高)TR0=1;//启动定时器ET0=1;//允许定时器0中断EA=1;//允许总中断P仁0xff;//初始化P1,输出端口P0=0xff;//初始化P0while(1)//PWM周期100,高电平100-PWM_T,低电平PWM_T,低电平工作{for(n=0;n<200;n++);//延时,取值0-65535,数字越大变化越慢if(!c7||!c6||!c5||!c4||!c3||!c2)//通过按键改变占空比{if(!c7)PWM_T=O;//这些值可以改变P0=0xff;//使LED灯灭if(!c7)PWM_T=O;//这些值可以改变elseif(!c6)PWM_T=10;elseif(!c5)PWM_T=35;elseif(!c4)PWM_T=60;elseif(!c3)PWM_T=85;elseif(!c2)PWM_T=100;P0=0xff;//使LED灯灭if(!c7)PWM_T=O;//这些值可以改变P0=0xff;//使LED灯灭if(!c7)PWM_T=O;//这些值可以改变/****************************************************/定时器0中断模拟PWM****************************************************/timer0()interrupt1using2staticuchart;//PWM计数t++;//每次定时器溢出加1if(t==100)//PWM周期100个单位t=0;〃使t=0,开始新的PWM周期P1=0x00;//使LED灯亮,输出端口P0=0x00;//使LED灯亮,输出端口P0=0xff;//使LED灯灭if(!c7)PWM_T=O;//这些值可以改变P0=0xff;//使LED灯灭if(!c7)PWM_T=O;//这些值可以改变if(PWM_T==t)//按照当前占空比切换输出为高电平{P仁0xff;//使LED灯灭P0=0xff;//使LED灯灭。