51定时器配置PWM的技巧

发布者:和谐共处最新更新时间:2018-12-13 来源: eefocus关键字:51定时器  配置PWM 手机看文章 扫描二维码
随时随地手机看文章

定时器计数频率 * 周期时长(需要产生频率的分之一) = 计数值,看下面这段关键程序!


void ConfigPWM(u16 fr, u8 dc)//具体用的时候最好再估算一下是否真的可以产生!

{

    u32 tmp, high, low;


    tmp = 11059200/12/fr;

    high = (tmp * dc)/100;

    low = tmp - high;

    high = 65536 - high;

    low = 65536 - low;

    HighRH = (u8)(high>>8);

    HighRL = (u8)high;

    LowRH = (u8)(low>>8);

    LowRL = (u8)low;

    TMOD &= 0xF0;

    TMOD |= 0x01;

    TH0 = HighRH;

    TL0 = HighRL;

    ET0 = 1;

    TR0 = 1;

    PWMOUT = 1;

}


占空比可调也是可以的,再开一个定时器里面设置一个数组放一些占空比值,然后定时切换。切换无非就是重新赋值HighRH,HighRL, LowRH, LowRL。


关键字:51定时器  配置PWM 引用地址:51定时器配置PWM的技巧

上一篇:串口接收实例——空闲中断
下一篇: 8051之汇编ASM

推荐阅读最新更新时间:2024-03-16 16:19

演示STM32中PWM配置与应用
打开CubeMX软件,新建工程。 输入芯片型号。 根据封装选择列表中的芯片,我的是LQFP144封装,双击此项。 在Project Manager选项卡中,配置工程名、编译工具,如下图所示。 在Pinout&Configuration选项卡中,配置System的Debug为Serial Wire,否则可能无法下载程序。 RCC选择高速外部时钟。 根据电路原理图,可知LED7对应PC6管脚。 本实验要让PC6管脚输出PWM波形,实现LED7呼吸灯效果。 找到PC6,选中TIM3_CH1。 找到TIM3,通道1配置PWM输出。 查找STM32参考手册时钟图,找到TIM3时钟的位置在APB1上。
[单片机]
演示STM32中<font color='red'>PWM</font>的<font color='red'>配置</font>与应用
STM32F207管脚映射配置PWM输出笔记
已亲测,可以实现。 第一步:配置相关管脚输出,比如我的是配置到PB9,使用的是定时器4的第四通道。 void Pwm_Gpio_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); /*GPIOB_Pin_9, TIM4_Channel4 PWM*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructu
[单片机]
51单片机(二十二)—— 定时器2功能测试
在本文中,我们对51单片机的定时器2的功能进行测试。包含两个实验,一个是定时器2递增计数功能的测试,另一个是定时器2递减计数功能的测试。 实验1:递增计数 这个实验使用了定时器2的16位自动重装模式的递增计数功能。RCAP2H和RCAP2L寄存器内的值是重新加载的值。当TH2和TL2的计数值溢出时,将RCAP2H和RCAP2L寄存器内的值装载到TH2和TL2中重新计数。定时器2的初始化代码如下所示 void init_T2(void) { T2MOD= 0x00; //定时器2递增计数,禁止输出 CP_RL2=0; //16位自动重装模式 RCAP2H=(65536-50000)/256; //给R
[单片机]
51单片机中断机制(定时器/计数器)
单片机中断简介 52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下: INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起 T0 - 定时器/计数器0中断, 由T0计数器计满回零引起 T1 - 定时器/计数器1中断, 由T1计数器计满回零引起 T2 - 定时器/计数器2中断, 由T2计数器计满回零引起 TI/RI - 串行口中断,串行端口完成一帧字符发送/接收后引起 其中T2是52单片机特有的。 中断允许寄存器IE 中断优先级寄存器IP 定时器中断 51单片机内部共有两个16位可编程的定时器/计
[单片机]
C51单片机 定时器模拟单路输出PWM
前言 本博文基于STC89C52RC和Keil5 C51环境开发; 如有不足之处还请多多指教; 需要的东西 定时器0; 管脚P1.0; 代码如下: #include STC89C5xRC.H #define ENABLE 1 #define DISENABLE 0 typedef unsigned char uchar8; sbit P1_0 = P1^0; bit Flag = 0; /* 占空比的时间计算: 占空比 = 高电平时间 /(高电平时间+低电平时间); */ //高电平时间(初始值为:0x02EE,即十进制750) uchar8 Timer0_TH0_High_Level_Time = 0
[单片机]
STM8S系列单片机TIM1的PWM配置与TIM2的区别
为什么STM8的PWM用TIM1不能输出,TIM2可以,下面针对TIM1的PWM输出做了下列程序代码的编写。 STM8S系列单片机 PC1管脚来控制PWM的输出,即TIM1_CH1通道 PC2管脚来控制PWM的输出,即TIM1_CH2通道 PC3管脚来控制PWM的输出,即TIM1_CH3通道 //PWM初始化 void Driver_PWMON(u8 ch,u8 Num) { //开TIM1时钟 CLK- PCKENR1 |= CLK_PCKENR1_TIM1; //设置PWM频率,Fpwm=Fmaster/TIM2_ARR //这里Fpwm = 2000000/100 = 20K
[单片机]
51单片机内部定时器/计数器实验
一、实验内容 使用MCS-51内部定时/计数器,定时1秒钟,CPU运用定时中断方式,实现每1秒钟输出状态发生一次反转,即发光管每隔1秒钟亮一次(P1.7接LED)。 根据实验内容编写一个程序,并在实验仪器上调试和验证。 二、仿真图 三、代码 C语言实现: # include reg52.h # include intrins.h # define uint unsigned int # define uchar unsigned char sbit LED=P1^0; uchar t,temp; void init(); void main() { t=0; init(); whil
[单片机]
<font color='red'>51</font>单片机内部<font color='red'>定时器</font>/计数器实验
51单片机程序——定时器控制蜂鸣器
#include reg52.h #define uint unsigned int sbit bb=P3^5; //位定义蜂鸣器接口 sbit led1=P0^0; //位定义LED接口 unsigned int i=0; void delay(uint z); //延迟函数声明 void main() { TMOD=0x01; //TMOD赋值,以确定T0和T1的工作方式 TH0=(65536-50000)/256; //计算初值,并将其写入TH0、TL0或TH1、TL1 TL0=(65536-50000)%6; E
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved