×
单片机 > 单片机程序设计 > 详情

利用STC15单片机产生一个占空比、频率可调的PWM波

发布时间:2024-05-02 发布时间:
|

#include

#define uint unsigned int

#define uchar unsigned char

sbit P1_0=P1^0;

void dutyANDf(float duty,float f)

{

int Xt1,Xt0;

float t1,t0;

uchar h1,l1,h0,l0;


t1=duty/f; //高电平时长

t0=(1/f)-t1; //低电平时长

Xt1=65536-1000000*t1; //高电平的时长转换成的定时器16位数

Xt0=65536-1000000*t0;; //低电平的时长转换成的定时器16位数

TMOD=0X01;

TR0=1;

h1=(uchar)(Xt1>>8); //高电平高八位保存

l1=(uchar)Xt1; //高电平低八位保存

h0=(uchar)(Xt0>>8); //低电平高八位保存

l0=(uchar)Xt0; //低电平低八位保存


while(1)

{

TH0=h1;

TL0=l1;

do{}while(!TF0);

P1_0=!P1_0;

TF0=0;

TH0=h0;

TL0=l0;

do{}while(!TF0);

P1_0=1;

TF0=0; //溢出复位

}

}


void main()

{

dutyANDf(0.989,55.55);//占空比以及频率 占空比为小数(即百分比)duty=98.9%,f=55.55hz p1^0口观看PWM波形

while(1);

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计