c语言生成周期方波,输入给定幅值、频率以及占空比
时间: 2024-05-03 20:19:32 浏览: 39
生成周期方波的代码如下(假设使用的是51单片机):
```c
#include<reg51.h>
#define FREQ 11059200 // 定义晶振频率
sbit OUT=P1^0; // 方波输出引脚
unsigned int period=0; // 周期
unsigned int duty=0; // 占空比
void main()
{
unsigned long temp;
TMOD=0x01; // 定时器0工作在16位定时模式下
TH0=0; // 定时器初值设为0
TL0=0;
TR0=1; // 启动定时器0
while(1)
{
temp=(unsigned long)FREQ/period; // 计算计数器初值
temp=temp/2; // 由于需要产生正负两个方向的波形,所以初值需除以2
temp=temp*duty/100; // 计算高电平时间
OUT=1; // 输出高电平
while(temp--) ; // 高电平时间
OUT=0; // 输出低电平
while(--temp); // 低电平时间
}
}
void timer0() interrupt 1
{
TH0=0; // 加载定时器初值
TL0=0;
period++; // 计算一个周期时间
}
```
需要注意的是,本代码中的占空比是指高电平时间占一个周期总时间的百分比。如果需要调整为低电平时间占空比,只需将代码中的`OUT=1`改为`OUT=0`,`OUT=0`改为`OUT=1`即可。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)