PWM控制LED灯渐亮渐灭(C51) |
您所在的位置:网站首页 › c51怎么算5下1上c410 › PWM控制LED灯渐亮渐灭(C51) |
/*******************************************************************//*ME300B单片机开发系统演示程序-PWM控制LED灯渐亮渐灭*//*LED显示*/ /*******************************************************************/ //PWM控制LED灯渐亮渐灭程序//适用ME300B开发系统//晶振为11.0592M//利用定时器控制产生占空比可变的PWM波//按K1,PWM值增加,则占空比减小,LED灯渐暗。//按K2,PWM值减小,则占空比增加,LED灯渐亮。//当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。 /*********************************************************/ #include#include sbitK1=P1^4;//增加键sbitK2=P1^5;//减少键sbitBEEP=P3^7;//蜂鸣器unsignedcharPWM=0x7f;//赋初值 voidBeep();voiddelayms(unsignedcharms);voiddelay(unsignedchart); /*********************************************************/voidmain(){ P1=0xff;TMOD=0x21;TH0=0xfc;//1ms延时常数TL0=0x66;//频率调节 while(1){do{if(PWM!=0xff){PWM++;delayms(10);}elseBeep();}while(K1==0); do{if(PWM!=0x02){PWM--;delayms(10);}elseBeep();}while(K2==0);}} /*********************************************************///定时器0中断服务程序./*********************************************************/voidtimer0()interrupt1{TR1=0;TH0=0xfc;TL0=0x66;TH1=PWM;TR1=1;P0=0x00;//启动输出} /*********************************************************///定时器1中断服务程序/*********************************************************/voidtimer1()interrupt3{TR1=0;P0=0xff;//结束输出} /*********************************************************///蜂鸣器子程序/*********************************************************/ voidBeep(){unsignedchari;for(i=0;i{delay(100);BEEP=!BEEP;//Beep取反}BEEP=1;//关闭蜂鸣器delayms(100);} /*********************************************************///延时子程序/*********************************************************/voiddelay(unsignedchart){while(t--);} /*********************************************************///延时子程序/*********************************************************/voiddelayms(unsignedcharms) {unsignedchari;while(ms--){for(i=0;i}} /*********************************************************/ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |