单片机C语言程序设计:用 ADC0808 控制 PWM 输出
时间:11-11 13:26 阅读:6713次
*温馨提示:点击图片可以放大观看高清大图
简介:单片机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);