173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

单片机pwm输出代码

htxw 2023-03-15 资讯中心 26 ℃

新买的STC12C2052AD单片机 P3^7口 PWM0 输出一直为高 代码为说明文档里面的代码如下:

CCAP1H = CCAP1L = 0xff;这有问题,这一句意思是P3.5输出的脉冲占空比是99%这样测量就感觉一直高电平,因为只有1%的低电平只有示波器能测出来。

CCAP1H = CCAP1L = 0x80;就是50%的占空比,CCAP1H = CCAP1L = 0x00;是1%的占空比

如果还不行,你把这句删掉试试看PCAPWM0 = 0x00;反正我没写这句能有波形

跪求单片机输出pwm波控制电调的程序!!

#includeat89x51.h

unsigned char PWM0=0x80,PWM1=0x80,PWM2=0x80;//PWM的百分比

void InitT0(void)

{

TMOD=0x02;//定时器0工作方式2 8位自动重装

TH0=0;//pwm频率为系统时钟/256

TL0=0;

TR0=1;//开始计时

ET0=1;//允许定时器中断

EA=1;//开启总中断

}

void main(void)

{

InitT0();//初始化T0定时器

while(1)

{

//添加处理代码

}

}

void Timer0(void) interrupt 1//用于PWM的定时器

{

static unsigned char counter=0;//记录中断次数

counter++;

if(counter = PWM0) P1_0 = 0; else P1_0 = 1;

if(counter = PWM1) P1_1 = 0; else P1_1 = 1;

if(counter = PWM2) P1_2 = 0; else P1_2 = 1;

}

STC 89C51,单片机C语言程序,P10输出PWM方波

串口还是P10?我下面贴出P10输出PWM的产生代码,希望对你能有帮助。

#include reg51.h

# t  10000/100   //修改10000更改周期 单位us  T(us)=10^6/f(hz) 至少10000us

# Duty_cycle 10 ///更改此更改占空比  0-100

unsigned char percent=0;

sbit work_pin P1^0;

void Timer0Init()  //定时器0初始化

{

TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

TH0=0xff;

TL0=0x9c;

ET0=1;//打开定时器0中断允许

EA=1;//打开总中断

TR0=1;//打开定时器

}

void  PWM_work()   interrupt 1   

{

TH0=0xff;

TL0=0c9c;  

percent++;

if(percent=Duty_cycle*t/100)

{

work_pin=1;

if(percentt)   percent=0;

}

else work_pin=0;

      

}

void main()

{

Timer0Init();

while(1);

}

哪位单片机高人帮我写个代码,关于PWM的~

如果用AVR单片机,只要配置好几个寄存器,那就搞定PWM了,非常简单的!比如Atmega8单片机,4MHz工作频率,在PB1输出90%,1KHz的PWM,PB2输出70%,1KHz的PWM:

PORTB=0x00;

DDRB=0x06;

TCCR1A=0xA2;

TCCR1B=0x1A;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x01;

ICR1L=0xF4;

OCR1AH=0x01;

OCR1AL=0xC2;

OCR1BH=0x01;

OCR1BL=0x5E;

51单片机输出pwm

15-PWM调光

#includereg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

void Delay(unsigned int t)

{

while(--t);

}

void main ( )

{

unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值

while (1) //主循环

{

P2=0X00;

Delay(60000); //特意加延时,可以看到熄灭的过程

for(PWM_LOW=1;PWM_LOWCYCLE;PWM_LOW++)

{

P2=0XFF; //点亮LED

Delay(PWM_LOW);//延时长度,600次循环中从1加至599

P2=0X00; //熄灭LED

Delay(CYCLE-PWM_LOW);//延时长度,600次循环中从599减至1

}

P2=0XFF;

for(PWM_LOW=CYCLE-1;PWM_LOW0;PWM_LOW--)

{ //与逐渐变亮相反的过程

P2=0XFF;

Delay(PWM_LOW);

P2=0X00;

Delay(CYCLE-PWM_LOW);

}

}

}

自己修改 可以改变占空比

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

#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前分频值)

{ //ab时有最高转速

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 信号 */

}

单片机pwm输出代码的介绍就聊到这里吧,感谢您花时间阅读,谢谢。

本文标签:单片机pwm输出代码

<