通过查阅资料, 我们可以得知, 通过改变输出电平的高低电平占空比, 可以控制蜂鸣器发声的声音大小.
要想使得改变占空比变得更为容易, 则采用下述方式来获取时延: 这样一来, 通过改变两个时延函数的所占时间即可实现对高低电平占空比的改变. 比如, delay_low()中需要执行10000次";"语句, delay_high()中也需要执行10000次";"语句, 这样一个完整的周期就为10000 + 10000 = 20000次";"语句执行的时间. 要想改变高低电平的占空比, 就需要改变两个函数中执行";"语句的次数, 且在改变后要使得一个周期内执行";"语句的次数和改变前相同.
#include
sbit beep = P1 ^ 5;// P1 xor 0000 0101
void delay_low()
{
int i, j;
for(i = 0; i < 100; i ++)
for(j = 0; j < 100; j ++)
{
;
}
}
void delay_high()
{
int i, j;
for(i = 0; i < 100; i++)
for(j = 0; j < 100; j ++)
{
;
}
}
int main()
{
while(1)
{
beep = 0;
delay_low();
beep = 1;
delay_high();
}
return 0;
}
关键字:高低电平 占空比
引用地址:
改变高低电平占空比的一种方式
推荐阅读最新更新时间:2024-11-13 12:54
STM32F4_TIM输入波形捕获 (脉冲频率、占空比)
Ⅰ、概述 本文基于上一篇文章“TIM输入波形捕获(脉冲频率)”的基础上进行拓展,上一篇文章主要是捕获波形的频率,本文主要拓展捕获波形的占空比。 笔者实验测试的方法和上一篇文章一样,通过信号发生器产生PWM信号,通过串口发送频率和占空比到上位机(上位机串口助手显示其数值)。(没有信号发生器的朋友可以结合上一篇文章PWM输出做信号源;在同一块板子上也可以使用不同定时器,将PWM输出引脚接在捕获输入引脚) 实验现象:不同频率的实验现象请看上一篇文章(该文章提供的工程笔者也是进行了大量不同频率的测试,误差在几Hz属正常范围)。 1000Hz、20% - 80%占空比现象: 1000Hz、51% - 58%占空比现象: 关于
[单片机]
占空比可调的多谐振荡器
iframe style="POSITION: absolute; TOP: 0px; LEFT: 0px" id=aswift_0 onload="var i=this.id,s=window.google_iframe_oncopy,H=s&&s.handlers,h=H&&H ,w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&&d&&(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else if(h.match){try{h=s.upd(h,i)}catch(e){}w.location.rep
[模拟电子]
定时器输出的PWM频率范围及占空比精度
我想要TIM定时器输出的PWM波形:0.1%精度占空比, 频率范围:200Hz - 10KHz。请问能实现吗? Ⅰ 写在前面 如果有朋友下载了上一篇文章我提供的例程,在“bsp_timer.h”文件下,你就会发现有如下一段被我注释了的【说明性文字】。 这个工程是我从之前项目中提取出来(复制部分代码),从新整理的一个的工程。里面的这个被注释了的描述文字是之前整理的,今天重新对其说明一下。 这里句题外话: 我一般都是注重让大家明白其原理,提供的工程代码以简单为原则。比如:没有添加系统,没有添加参数越界检查等额外的代码。不是让你直接拷贝过去就用,一般需要结合你实际工程,对其修改。 Ⅱ 解读那段文字
[单片机]
STM8S103之tim1捕获周期及占空比
本文以STM8S103F3P6编程为例,介绍STM8S103F3P6定时器1捕获周期及占空比 电脑平台:Windows7 64位旗舰 编译软件:IAR 硬件平台:STM8S103F3P6 1.系统时钟初始化为内部16M CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //时钟 初始化时钟为1分频 16M 2分频8M 2.初始化定时器1设置PC6为捕获输入 void Init_Timer1(void) { GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT); //输入浮动,没有外部中断 TI
[单片机]
STM32动态更改PWM波频率和占空比
STM32的PWM波动态调频和调占空比 以TIM3_CH1为例 (1)定时器工作原理 定时器的时基单元包含三个部分:①自动装载寄存器(TIMx_ARR),②预分频器寄存器 (TIMx_PSC),③计数器寄存器(TIMx_CNT)。设置自动装载值,预分频器根据所设置的分频系数(1-65536)对定时器所选择的时钟源进行分频,分频后的频率驱动计数器。计算器开始计数,当计数器达到自动装载值时,重新开始计数! 以秒表举例:时钟源是秒针,经过60分频后的频率变成分针,分针一分钟一分钟的增加,当分针数达到60时,又从零开始计数。在这个例子中,秒针是时钟源,第一个60就是预分频器设置的值,第二个60就是自动装载寄存器设置的值。 (2)P
[单片机]
STM32如何实现可调频率、占空比的PWM波形
使用两个TIM定时器: 一个输出可调频率、占空比的PWM, 一个对输出PWM脉冲计数(计时)。 1.门控方式能实现,但需要复杂的配置和计算,不推荐。 2.脉冲计数是比较实际,也是比较简单的方式; 对输出PWM脉冲计数(计时)方法有多种: 1.IO中断计数,或同步定时中断计数:用另外一个定时器,按照相同频率中断计数(类似IO中断); 2.由PWM频率和脉冲个数,计算输出全部所需的时间,使用定时中断,关闭输出PWM; 3.利用定时器外部脉冲触发(外部时钟模式2功能),计数个数为所需脉冲个数(10个脉冲),则关闭输出PWM; STM32定时器 利用阻塞延时,控制IO高低变化输出PWM这种方式就行啦,也很简单。其实,这种方法的弊端很大。
[单片机]
改变高低电平占空比的一种方式
通过查阅资料, 我们可以得知, 通过改变输出电平的高低电平占空比, 可以控制蜂鸣器发声的声音大小. 要想使得改变占空比变得更为容易, 则采用下述方式来获取时延: 这样一来, 通过改变两个时延函数的所占时间即可实现对高低电平占空比的改变. 比如, delay_low()中需要执行10000次 ; 语句, delay_high()中也需要执行10000次 ; 语句, 这样一个完整的周期就为10000 + 10000 = 20000次 ; 语句执行的时间. 要想改变高低电平的占空比, 就需要改变两个函数中执行 ; 语句的次数, 且在改变后要使得一个周期内执行 ; 语句的次数和改变前相同. #include STC89C5xRC.
[单片机]
N76E003 PWM中断及设定新的占空比
首先还是来看看PWM中断寄存器,及其含义。 PWM模块带有标志位 PWMF (PWMCON0.5) 用来标志当前 PWM周期完成状态。PWMF通过软件清零。 别忘记了使能PWM中断,以及开启总中断。 再来看看PWM中断的中断号。 就是这么简单,就是这么直接,接下来我们就开始配置代码吧。 在本次的例程中,我们将在中断中,修改初始设定的占空比,最后再逻辑分析仪中进行查看。 void main(void) { Set_All_GPIO_Quasi_Mode;//所有IO设置为双向模式 EA=1;//开启总中断 set_EPWM;//使能pwm中断 PWM_INT_PWM4;//设定中
[单片机]