首页 > 其他分享 >2025蓝桥杯(单片机)备赛--扩展外设之PWM的原理与应用(十三)

2025蓝桥杯(单片机)备赛--扩展外设之PWM的原理与应用(十三)

时间:2024-11-29 18:59:53浏览次数:8  
标签:10 cnt PWM -- 蓝桥 单片机 设置 占空比 pwm

1 PWM原理

        PWM :该方法未使用常规的PWM相关的寄存器配置;而是使用了定时器2;

与这个类似。

周期: 通过定时器2设置每次进中断的间隔,来设置最小周期(步进),如设置100us,这时PWM 的最小周期为100us,最大频率为1/100us;可通过设置一个变量进行累加,当该变量的 值达到一定的值的时候,进行PWM调节,以此来达到进一步周期的设置; 当变量达到预期值的时候,可以通过置0的方式,来重新计数,但经研究发现, 可以通过取余来达到此目的,例如cnt_pwm%=10,则cnt_pwm的最大值为10 cnt_pwm%=101,则cnt_pwm的最大值为100,达到了目的; 如果设置为cnt_pwm=cnt_pwm%10+1;并假设定时器2进入中断间隔为100us,则PWM 的周期为100us*10=1ms;

占空比:占空比即是高电平的时间/周期,此处可以用if语句进行值的比较; 当计数器的值小于预期的高电平的时间的时候,设置为1, 当计数器的值大于预期高电平的时间时,设置为0; 如设置pwm_duty=8,则占空比依据上面设置的1ms,可得占空比为80%; 为了更好更简洁的计算,可设置pwm_duty=80再/10,这样便于占空比的调整 可以通过按键设置占空比, 例如 pwm_duty=(pwm_duty+10)%110; 此时占空比步进为10,最大值为109, 但因为刚才pwm_duty/10的缘故,最大值为10,这样设置可以进行0.1ms-10ms,0.1ms步进的高电平时间

定时器设置:设置为 12MHZ,定时器2,100us,1T(ISP生成) 记得加上中断开启,ISP生成的函数不带中断 (IE2|=0X04;EA=1;

2 PWM实现代码

   最小周期设置:利用定时器 2进行设置:

    12MHZ,1T,定时器2,

//第一位是1,不是0,低四位,8-4-2-1

void Timer2_Init(void)        //100微秒@12.000MHz
{
    AUXR |= 0x04;    //定时器时钟1T模式
    T2L = 0x50;    //设置定时初始值
    T2H = 0xFB;    //设置定时初始值
    AUXR |= 0x10;    //定时器2开始计时
        //加上中断
        IE2|=0X04;  //8421 8421 
        EA=1;
}

PWM产生:设置一个CCR的值(占空比),在设置一个CNT用来计数

u8 pwm_ccr=80;
void PWM_Process(void)
{
    pwm_cnt=(pwm_cnt+1)%10;
    if(pwm_cnt<(pwm_ccr/10))
    {
        Device_Ctrl(0x80,0x00);
    }
    else
    {
        Device_Ctrl(0x80,0xff);
    }
}

标签:10,cnt,PWM,--,蓝桥,单片机,设置,占空比,pwm
From: https://blog.csdn.net/m0_75014814/article/details/144042926

相关文章

  • flask框架房屋租赁系统(毕设源码+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于房屋租赁系统的研究,现有研究主要以大型商业地产租赁管理或分散的个体租赁管理工具为主,专门针对整合房东、租客、房屋多种信息(如房......
  • flask框架河北民族师范学院教室管理系统(毕设源码+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于教室管理系统的研究,现有研究多集中在综合性大学或大型教育机构的管理模式与系统构建上。在国内外,许多高校都已经有了较为成熟的教......
  • 算法:数组 #241125
    算法:数组理论二分查找移除元素二分查找题目链接:leetcode#704给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。题目的前置条件为n个有序的元素,故可通过二分查找解题找到中......
  • 蓝桥杯备考冲刺必刷题(Python) | 3412 最小化战斗力差距
    学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(Python)|汇总-CSDN博客【题目描述】小蓝是机甲战队的队长,他手下共有$n$名队员,每名队员都有一个战斗力值$$w_i$$。现在他需要将这$$n$$名队友分成两组$$a$$和$$b$......
  • 蓝桥杯备考冲刺必刷题(Python) | 3236 小蓝的零花钱
    学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(Python)|汇总-CSDN博客【题目描述】小蓝和小桥正在玩一个游戏,他们有一个长度为$$n$$的序列,其中既有偶数也有奇数,且偶数和奇数的数量相等。小蓝有一些零花钱,他可......
  • 使用 Intersection Observer API以及动态加载内容细节
    1使用IntersectionObserverAPI什么是IntersectionObserver?IntersectionObserverAPI是现代浏览器提供的一种接口,用于检测一个元素(目标元素)是否与视口(用户可见区域)或某个特定父容器交叉。优点不需要手动监听滚动事件,性能更优。在用户接近目标区域时触发,比滚动事件......
  • 算法:链表 #241128
    算法:链表移除链表元素设计链表反转链表移除链表元素题目链接:leetcode#203给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]通过资......
  • linux查看so库函数命令
    linux查看so库函数命令在Linux中,可以使用以下命令来查看共享对象(so)库的函数:nm命令:通过使用nm命令,可以列出so库中定义的所有符号,包括函数、变量等。使用以下命令:“nm-D“例如:nm-Dlibtest.so该命令将列出libtest.so库中的所有符号,其中包括函数名称。nm[option(s)]......
  • 从零打造基础HTTP服务器:揭秘背后的技术魔法-MiniTomcat
    ......
  • 2024-2025-1 20241401 《计算机基础与程序设计》 第十周学习总结
    班级链接2024计算机基础与程序设计作业要求第十周作业作业目标①信息系统②数据库与SQL③人工智能与专家系统④人工神经网络⑤模拟与离散事件⑥排队系统⑦天气与地震模型⑧图形图像教材学习内容总结《计算机科学概论》第12、13、14章信息系统信息系......