一、什么是PWM脉冲宽度调制:

对PWM简单理解(佛科院——深夜学习)_佛科院深夜学习的博客-CSDN博客

二、脉冲宽度调制实验:

1、代码思路:

(1)我们可以利用定时器规定周期为10ms(100HZ),通过调节高电平时间来产生想要的PWM波,不同的亮度对应着不同占空比。

(2)首先我们先通过定时器产生四种不同的亮度,然后编写可以转换四种不同状态的按键,走后把他们整合起来

2、公共函数:

#ifndef _PUBLIC_H
#define _PUBLIC_H#include "STC15F2K60S2.H" #define u8 unsigned char
#define u16 unsigned intvoid Delay_1ms(u16 num);
void Close_All(void);
void Delay_10us(u16 num);
#endif
#include "Public.h"
// 延时函数(最小约1ms@12MHz)
void Delay_1ms(u16 num)
{unsigned int i;while(num--)for(i=0; i<628; i++);
}/*输入变量:无输出变量:无功能:关闭蜂鸣器和继电器
*/
void Close_All(void)
{//关闭蜂鸣器和继电器P0 = 0x00;P2 = (P2 & 0x1f) | 0xA0;P2 &= 0x1f;//关闭LED灯P0 = 0xff;P2 = (P2 & 0x1F) | 0x80;P2 &= 0x1f;
}void Delay_10us(u16 num)
{u16 i;while(num--)for(i=0; i<3; i++);
}
    • 主函数:
// 使用程序前,将J13调整为IO模式(2-3脚短接)
#include "Public.h"u8 ms_count,h_time;
u8 key_old,key_delay;
void LED_ON(u8 L_X);
void Timer_0_Init(u16 time);
void Key_Proc();
// 主函数
void main(void)
{Close_All();    Timer_0_Init(1000);//1mswhile(1){ Key_Proc();}
}/*****************定时器**********************/
/*输入变量:定时时长___us输出变量:无功能:配置并开启定时器0
*/
void Timer_0_Init(u16 time)
{//12T模式AUXR &= 0x7f;//定时器0 模式0TMOD &= 0xf0;//设置初值TH0 = (65536-time)/256;TL0 = (65536-time)%256;//打开中断ET0 = 1;EA = 1;//开始计数TR0 = 1;
}void Timer_0_IT(void) interrupt 1
{if(++key_delay == 10) key_delay = 0;ms_count++;if(ms_count <= h_time)LED_ON(~(0x01<<0));elseLED_ON(0xff);if(ms_count == 10)ms_count = 0;
}
/***************LED*******************/
/*输入变量:P0口的对应的16进制数输出变量:无功能:选择相应的锁存器后,通过P0口控制LED灯亮
*/
void LED_ON(u8 L_X)
{P0 = L_X;P2 = (P2 & 0x1f) | 0x80;P2 &= 0x1f;
}/*****************按键*******************//*输入变量:无输出变量:7-4代表第几个按键被按下;0代表没有按键按下功能:检测哪个独立按键被按下注意:只有消抖,没有松手检测
*/
u8 Key_read()
{u8 i;for(i=0;i<4;i++){if(!(P3 & (0x01<<i))){return 7-i;}}return 0;
}void Key_Proc()
{u8 key_now=0,key_down=0;static u8 state=1;//消抖,同时节省CPU资源if(key_delay) return;key_delay = 1;//读取按键按下的编号key_now = Key_read();//按键按下:通过判断按键状态是否发生变化,并且变化后状态是否为按下key_down = key_now & (key_old ^ key_now);//记录当前状态为下一次检测做准备key_old = key_now;if(key_down == 7)//按键按下state++;switch(state){case 1:h_time = 0;break;case 2:h_time = 1;break;case 3:h_time = 5;break;case 4:h_time = 9;break;}if(state == 5)state = 1;
}

蓝桥杯模块学习9——PWM脉冲宽度调制(深夜学习——单片机)相关推荐

  1. 拓展模块使用教程和心得(四):PWM脉冲宽度调制及普通有刷马达和空心杯电机(测试平台:STC8A8K,STM32F103)

    成就更好的自己 这次内容是给未来的新专栏(控制算法)打一个小基础,而且是为了完善上一期拓展模块教程三:步进电机的内容(https://blog.csdn.net/qq_36098477/article ...

  2. 蓝桥杯模块学习17——AT24C02存储器(深夜学习——单片机)

    一.硬件电路: 1.引脚功能: (1)A0-A2:决定不同设备的地址码: (2)WP:写保护 二.通讯方式(IIC协议) 通讯方式与PCF8591相同,可参考以下文章: 蓝桥杯模块学习16--PCF8 ...

  3. 嵌入式STM32入门之定时器控制LED闪烁与产生PWM脉冲宽度调制信号

    定时器控制LED闪烁与产生PWM脉冲宽度调制信号 一.前言 二.定时器基本介绍 (一)STM32定时器 (二)通用定时器主要功能 (三)计数器模式 (四)定时器工作原理 三.实验(1)初识定时器 (一 ...

  4. 微雪树莓派PICO笔记——3.PWM(脉冲宽度调制)

    文章目录 什么是PWM PWM的应用 RP2040 PWM框架图 PWM流程图 PWM内部框架图 [MicroPython]machine.PWM类函数详解 代码实现 什么是PWM 脉冲宽度调制 (P ...

  5. 蓝桥杯模块四路运算放大器LM324

       九层妖塔 起于垒土 蓝桥杯模块四路运算放大器LM324

  6. 蓝桥杯模块矩阵键盘Part_1

       九层妖塔 起于垒土 蓝桥杯模块矩阵键盘Part_1 矩阵键盘 一.理论 1.矩阵键盘的识别与编码: 2.矩阵键盘的工作方式: 二.原理图 三.Template1 1.矩阵键盘扫描函数: 2.定时 ...

  7. 启明智显分享| ESP32学习笔记参考--PWM(脉冲宽度调制) 篇,配PWM控制 LED呼吸灯代码示例参考

    提示:启明智显专为智能产品提供一站式彩屏显示+连接+云端服务+APP软件开发.维护等解决方案,帮厂商快速实现硬件的智能化.作为启明云端旗下方案公司,我们用心整理了开发小伙伴在开发过程中可能会遇到的问题 ...

  8. 蓝桥杯模块学习10——串口通信(深夜学习——单片机)

    一.什么是串口通信? 51单片机--串口通信详解(STC89C51为例)_佛科院深夜学习的博客-CSDN博客 二.IAP15F2K60S2与STC89系列的区别: 1.16位自动重装载模式下波特率的计 ...

  9. 蓝桥杯模块之NE555

    NE555模块 NE555模块简介: NE555内部结构及应用电路 - 百度文库  这是NE555分析比较详细的一篇文章,可以仔细看一下,当然蓝桥杯要求没有那么严格,总归来说蓝桥杯的设计就是将它作为了 ...

最新文章

  1. 安装win10操作系统的设备将要突破10亿台
  2. (转)Log4J使用笔记
  3. 全局配置文件:mybatis-config.xml
  4. StringBoot设置了拦截器没有产生作用,页面没有拦截
  5. 机器人学习--Imperial College London机器人学课程
  6. Java接口–历年来Java 9之旅–默认和私有方法
  7. 关于安装deepin+window10双系统有时没有声音的问题
  8. Educational Codeforces Round 62 (Rated for Div. 2)
  9. 在浏览器设置里能看到cookie, 页面调试Application里看不到
  10. C++ boost::upgrade_lock upgrade_to_unique_lock 升级锁 是什么 怎么用
  11. 医院所用到的信息系统的缩写、定义,持续更新
  12. 融云即时通讯云学习笔记
  13. 雷电模拟器配置文件参数解读
  14. 5分钟带你了解Prosody XMPP Server
  15. 分享136个PHP源码,总有一款适合您
  16. UWP 分享用那个图标
  17. zz 0ffice 2007 something.....
  18. python爬收费小说_使用python+selenium爬小说
  19. PyCharm easygui
  20. 苹果屏蔽更新描述文件_最新屏蔽升级TVOS 13描述文件阻止iOS更新,拒绝自动升级...

热门文章

  1. 【离线】esrally实践总结
  2. 儒家思想的核心:仁、义、礼、智、信、忠、孝、悌、节、恕、勇、让
  3. django Using the URLconf defined in test02.urls, Django tried these URL patterns, in this order:
  4. bind()方法实现
  5. 机器视觉学习系列四:身份证识别
  6. Python之图片转PDF
  7. 【网络安全】知名网络安全企业有哪些?
  8. css中的label标签
  9. DOSBox简单指令
  10. 易语言linux时间戳转换,生成时间戳(如何正确地生成时间戳)