单片机C程序:怎么让单片机输出一个方波的脉冲,并且它的高电平持续时间可以控制,是不是还要接D/A。。。

就是那种入门学习时用的51单片机,高电平的时间可以用延时,但怎么进行控制啊。。。请高人指点下,,急

第1个回答  推荐于2018-05-06
其实你说 的就是PWM方波,高电平宽度可以调节。
用定时器实现就可以了。
也可以用有PWM输出的单片机来实现。例如C8051F340等等。追问

再请问下你说的PWM方波是???定时器控制啊,好像很有理,,能不能帮我写下关键点的程序啊,呵呵呵,,,谢谢了

追答

sbit PWM_PIN= P1^0; //举例定义PWM输出为P1.0

uchar pwm_cnt; //用于计数
uchar pwm_level; //用于设置高电平宽度,100表示全高电平,0表示全低电平,50表示各占一半

定时器初始化:
TMOD =0X21;
TL0=0X8A;
TH0=0X00;
TR0=1;
EA=1;

/**********************************************************
T0中断函数
**********************************************************/
void time0(void) interrupt 1 using 1
{
TR0=0;
//-----------------------------------------------------
TH0 =(65536-2000)/256;
TL0 =(65536-2000)%256;
TR0=1;

pwm_cnt++;
if(pwm_cnt>=100)
{
pwm_cnt=0;
}

if(pwm_cnt<pwm_level)
{
PWM_PIN=1; //输出高电平,PWM_PIN可定义为你想要的管脚。
}
else
{
PWM_PIN=0; //输出低电平
}
}

本回答被提问者采纳
第2个回答  2013-04-16
51单片机只能通过控制i/o口输出电平高低输出方波了,不用D/A就可以实现啊,接俩按键,一个是高电平时间增加一个是减少,,,,动脑筋想想,不难实现的,祝你成功来自:求助得到的回答
第2个回答  2013-04-16
方波,是指高电平、低电平宽度相同的。
持续时间可控,即周期可控,也就是控制频率。

你找找单片机电子琴方面的资料吧。

我的百度空间里面也有。本回答被网友采纳
第3个回答  2013-04-16

你可以选带PWM调制的51单片机,简单好用。附上份资料。重点第十章(295页)

追问

我点下载怎么没反应啊,,不知道下到哪里了,,,,

相似回答