PIC单片机输出PWM波的C语言源程序

PIC单片机输出PWM波的C语言源程序,第1张

#ifndef __PWM__H__

#define __PWM__H__

void pwm_ccp1(unsigned char a,unsigned char b)

void pwm_ccp2(unsigned char a,unsigned char b)

#endif

void pwm_ccp1(unsigned char a,unsigned char b)//左边PWM

//CCP1 模块的 PWM 工作方式,周期为(b+1)*4*Tosc*(TMR2前分频值)=b+1 us //pwm高电平=a:CCP1CON(第四五位)Tosc*(TMR2前分频值)

//pwm高电平=a:CCP1CON(第四五位)Tosc*(TMR2前分频值)

{//a>b时有最高转速

CCPR1L=a //* 设置工作循环的高 8bit 为 a

CCP1CON=0X0C //0000 1100 设置 CCP1 为 PWM 工作方式,且工作循环的低 bit2 为 11*/

CCP1IE=0//* 禁止总中断和外围中断 */

PR2=b //* 设置 PWM 周期 */

TRISC2=0 //* 设置 RC2/CCP1 为输出 */

T2CON=0X04 //* 0000 1000前分频比为 1:1 ,后分频器1:2,打开 TMR2 ,同时输出 PWM 信号 */

}

void pwm_ccp2(unsigned char a,unsigned char b) //右边PWM

//CCP2 模块的 PWM 工作方式,周期为(b+1)*4*Tosc*(TMR2前分频值),

//pwm高电平=a:CCP2CON(第四五位)Tosc*(TMR2前分频值)

{

CCPR2L=a //* 设置工作循环的高 8bit 为 a

CCP2CON=0X0C //* 设置 CCP2 为 PWM 工作方式,且工作循环的低 bit2 为 11*/

CCP2IE=0 //* 中断屏蔽

PR2=b //* 设置 PWM 周期 */

TRISC1=0 //* 设置 RC1/CCP2 为输出 */

T2CON=0X04 //* 前分频比为 1 ,打开 TMR2 ,同时输出 PWM 信号 */

}

/*s52,12M晶振,P30输出PWM,P10按键控制输出*/

#include<reg52.h>

sbit control=P1^0

sbit pwm=P3^0

void delay()

{

unsigned char i,j

for(i=0i<10i++)

for(j=0j<112j++)

}

main()

{

unsigned char flag=1

TMOD=0x02//定时器0方式2自动载入;

TH0=0xe3//28us定时,即28us翻转一次;周期为56us,频率约为18K

TL0=0xe3

EA=1

ET0=1

TR0=1

while(1)

{

if(control==0)

{

delay()

if(control==0)

{

flag=~flag

switch(flag)

{

case 0:TR0=0EA=0pwm=0

break

case 1:EA=1TR0=1

}

}

}while(control==0)

}

}

void timer0()interrupt 1

{

pwm=~pwm

}

用带PWM输出的单片机做吧!51单片机只能通过定时器来实现。

想12C2052AD这些单片机就带PWM输出的。他的PWM输出程序:

#include<reg52.h>

sfr CCON =0xD8

sfr CMOD=0xD9

sfr CL=0xE9

sfr CH =0xF9

sfr CCAP0L=0xEA

sfr CCAP0H=0xFA

sfr CCAPM0=0xDA

sfr CCAPM1=0xDB

sbit CR =0xDE

void main(void)

{

CMOD = 0X02//

CL =0X00//

CH =0X00//

CCAP0L = 0xc0//设置初值

CCAP0H= 0xc0//输出占空比为25%的波形

CCAPM0 = 0x42//PWM的输出模式

CR =1 ;启动PCA定时器

while(1){};

}

上面是输出PWM的程序,你把PWM输出端接到你的舵机控制端,再启动PCA就OK了,改变CCAP0的值就可以改变占空比


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存