单片机C语言程序设计:用 ADC0808 控制 PWM 输出
          
            时间:11-11 13:26 阅读:7043次
*温馨提示:点击图片可以放大观看高清大图
                
         
        
		  
               简介:单片机C语言程序设计:用 ADC0808 控制 PWM 输出
               
                        
          
            /* 名称:用 ADC0808 控制PWM 输出
说明:使用数模转换芯片 ADC0808,通过调节可变电阻 RV1 来调节脉冲宽度,
运行程序时,通过虚拟示波器观察占空比的变化。
*/
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
 
sbitEOC=P2^6;//转换结束信号
sbitOE=P2^7;//输出使能
sbitPWM=P3^0;//PWM输出
//延时
voidDelayMS(uintms)
{
uchari;
while(ms--)for(i=0;i<40;i++);
}
//主程序
voidmain()
{
ucharVal;
TMOD=0x02;//T1工作模式2
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
while(1)
{
 
while(!EOC);//等待转换完成
OE=1;
 
Val=P1;//读转换值
OE=0;
if(Val==0)//PWM输出(占空比为0%)
{
PWM=0;
DelayMS(0xff);
continue;
 }
if(Val==0xff)//PWM输出(占空比为100%)
{
PWM=1;
 }
}
//T0定时器中断给ADC0808提供时钟信号
voidTimer0_INT()interrupt1
{
CLK=~CLK;
}
PWM=1;//PWM输出(占空比为0%~100%)
DelayMS(Val);
PWM=0;
DelayMS(0xff-Val);
 
 
 
 
