单片机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页)

追问

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

如何用C语言编程使单片机产生方波信号?
else if(!P1_1)\/\/否则如果P1_1按键按下 { while(!P1_1);\/\/等待按键放手 if(sm<0xFF)\/\/检测变量小于0xFF { ++sm; \/\/自加1 P2_1=1;} else P2_1=0;} } } }

怎么用C写一个让51单片机发生一个频率40K标准的方波
二、利用硬件来产生。如果你的晶振是6M,ALE就是6M\/6=1M,需要二十五分频,得到40K脉冲。

如何用C语言编程使单片机产生方波信号
你要看一下你使用的单片机的PWM或者时钟模块,里面会有一项功能,捕捉单片机PIN脚上的电平变化,通常叫输入捕捉。这种功能通常都有一个自由时钟在运行,通过单片机的寄存器配置可以设置——捕捉输入PIN脚上的上升沿还是下降沿,或者两种变化沿都捕捉,当PIN脚上出现对应的变化沿时,输入捕捉功能会将此时自由...

在单片机中,如何产生方波脉冲信号?
使用GPIO口:单片机的通用输入输出口(GPIO)也可以通过设置输出高低电平的方式产生方波脉冲信号。具体步骤如下:(1)将GPIO口设置为输出模式。 (2)通过修改GPIO口电平来生成方波脉冲信号,即先将GPIO口电平置高,经过一定时间后再将GPIO口电平置低,即可生成方波脉冲信号。以上两种方法均可以生成方波脉冲...

单片机入门 怎么用STM32单片机产生1khz的方波
这个编译后下载就可以执行。include "stm32f10x.h"void delay_us(u32 nus){ u32 temp;SysTick->LOAD = 9*nus;\/\/延时指定时间 SysTick->VAL = 0X00;\/\/清空计数器 SysTick->CTRL = 0X01;\/\/使能,减到零无动作,外部时钟源 do { temp=SysTick->CTRL;\/\/读取当前倒计数值 }while((temp...

怎样用51单片机实现方波输出?
51单片机的定时器T0要工作在方式1,才能定时10ms。而TMOD=0x02,是方式2,定时最长只有256us,是不行的,应该是TMOD=0x01,才对。采用中断方式,对10ms定时中断计数50次为500ms,交替从P1.1输出高电平和低电平,即输出周期 为1S的方波信号了。如下的仿真图,示波器测试为1S的方法信号。

用AVR单片机 输出一个0.5ms的方波 定时器怎么设置
首先需要知道主频,确定分频系数。你要输出方波可使用定时器溢出模式,在中端函数中处理,或者也可以使用比较匹配模式,不需要做函数处理,配置好寄存器就OK了。具体的你需要看AVR的寄存器手册。不同模式初值计算不同,例如使用溢出模式,中断时长0.5ms,芯片mega16,主频8M,1分频,定时器的初值是0XF0,0X...

如何用单片机控制产生的波形输出电压可调,步进0.1v,0-5v
用PWM,即脉宽调制。我使用1个定时器中断做周期,在中断服务程序中用DJNZ指令循环比较做占空比实现步进电机的电流控制的。占空多了,电流就弱。要控制电压可能需要电路转换一下,如:在主回路串接PWM控制的开关管和电感,输出并电容。ORG 000BH;---T0---PWM CLR ET0 LJMP PWM ;---T0--...

51单片机一个引脚输出一个方波,频率为1Hz到100zHz,第一次用这个应用,所...
\/\/延时void scan_s1(); \/\/扫描按键,按一次频率增加1Hzvoid display_num(uchar freq);\/\/显示频率void scan_s1(){if(!S1){DelayMs(10);\/\/延时防抖动if(!S1){while(!S1);\/\/检测到按键改变频率\/*我这里只改变显示的数值,实际上改变数值后你还应该根据新的数值改变定时器的预设值,才能真正改...

基于单片机的信号发生器的设计,输出方波,正弦波,三角波,锯齿波,频率可 ...
还是通过调节正弦波的频率的方式调节。木有DA···还是和正弦波类似,通过算法将输出值转化成二进制,然后送给IO口 方波:这个最简单,将IO口定时切换高低电平即可,你定的时间就将成为你输出的频率。如果有PCA模块,可配置成定时翻转模式,比较方便~锯齿波是不是和方波类似啊?

相似回答