求教51单片机生成spwm波形的程序

求教51单片机生成spwm波形的程序,第1张

1、用普通I/O口采用软件定时器中断可以模拟SPWM输出。"/**/"里面的内用是对程序的标注,解析。

2、/*采用6MHz晶振,在P1.0脚上输出周期为2.5s,占空比为20%的脉冲信号*/

/*定时100ms,周期2.5s需25次中断,高电平0.5s需5次中断*/

#include <reg51.h>

typedef unsigned char uchar

sbit P1_0=P1^0

uchar time=0

uchar period=25

uchar high=5

void timer0() interrupt 1 using 1

{

TH0=0x3c/*定时器初值重装载*/

TL0=0xb0

time++

if(time==high) /*高电平持续时间结束,变低*/

{ P1_0=0}

else if(time==period) /*周期时间到,变高*/

{ time=0

P1_0=1

}

}

void main()

{

TMOD=0x01/*定时器0方式1*/

TH0=0x3c/*定时器装载初值*/

TL0=0xb0

EA=1/*开CPU中断*/

ET0=1/*开定时器0中断*/

TR0=1/*启动定时器0*/

while(1) /*等待中断*/

{}

}

3、说明:本程序主要采用了51单片机(具体型号STC89C52RC)的定时器,工作在方式3,来产生规定时间内的方波,制造SPWM.

1、PWM波是控制直流电机的

通俗的说,5V直流电机在5V的情况下肯定速度最快,在0V的情况下肯定不转了

这样电源0~5V就对应了不同的速度

问题是怎么才能实现0~5V的变化呢?

于是就用PWM波控制mos管来给直流电机供电。PWM就是一个矩形波,通过控制高电平和低电平的时间来控制MOS管导通的时间。MOS管在高电平的时候导通,就相当于5V电源直接加到电机上;MOS管在低电平的时候截止,就相当于0V电源加到电机上。

PWM又叫脉宽调制,就是控制高电平占一个周期的比例。而这个PWM波就是控制5V电源加到电机上的时间,从而控制了电机。

2、例程:

#include <reg52.h>

sbit KEY1 = P3^4

sbit PWM = P1^5

unsigned char CYCLE//定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms

unsigned char PWM_ON //定义高电平时间

void delay(unsigned int cnt)

{

while(--cnt)

}

main()

{

unsigned char PWM_Num//定义档位

TMOD |=0x01//定时器设置 1ms in 12M crystal

TH0=(65536-1000)/256

TL0=(65536-1000)%256//定时1mS

IE= 0x82//打开中断

TR0=1

CYCLE = 10// 时间可以调整 这个是10步调整 周期10ms 8位PWM就是256步

while(1)

{

if(!KEY1)

{

delay(10000)

if(!KEY1)

{

PWM_Num++

if(PWM_Num==4)PWM_Num=0

switch(PWM_Num){

case 0:P0=0x06PWM_ON=0break//高电平时长

case 1:P0=0x5BPWM_ON=4break

case 2:P0=0x4FPWM_ON=6break

case 3:P0=0x66PWM_ON=8break

default:break

}

}

}

}

}

/********************************/

/* 定时中断 */

/********************************/

void tim(void) interrupt 1 using 1

{

static unsigned char count//

TH0=(65536-1000)/256

TL0=(65536-1000)%256//定时1mS

if (count==PWM_ON)

{

PWM = 1//灯灭

}

count++

if(count == CYCLE)

{

count=0

if(PWM_ON!=0) //如果左右时间是0 保持原来状态

PWM = 0//灯亮

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11836054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存