蓝桥杯之单片机学习(十)——PWM脉宽调制信号的发生与控制

2023-05-16

文章目录

  • 一、训练任务
    • 1.1 具体要求
  • 二、代码展示
  • 三、一些介绍

一、训练任务

在CT107D单片机综合训练平台上,利用PWM脉宽信号实现独立按键S7对L1指示灯亮度变化的控制。

1.1 具体要求

  1. PWM脉宽信号的频率为100Hz
  2. 系统上电后L1指示灯处在熄灭状态
  3. L1指示灯有4中亮度模式,分别是完全熄灭,10%的亮度、50%的亮度和90%的亮度
  4. 按下S7按键,循环切换L1指示灯的四种亮度模式
    在这里插入图片描述

二、代码展示

#include <reg52.h>

typedef unsigned int uint;
typedef unsigned char uchar;

sbit L1 = P0^0;
sbit S7 = P3^0;

//配置HC138
void SelectHC138(uchar channel)
{
	switch(channel)
	{
		case 4:    //LED
			P2 = (P2 & 0X1F) | 0X80;
		break;
		case 5:    //蜂鸣器和继电器
			P2 = (P2 & 0X1F) | 0Xa0;
		break;
		case 6:    //位码
			P2 = (P2 & 0X1F) | 0Xc0;
		break;
		case 7:    //段码
			P2 = (P2 & 0X1F) | 0Xe0;
		break;
	}
}

//*********定时相关函数*********
uchar count = 0;
uchar pwm_duty = 0;
void InitTimer0()
{
	TMOD = 0x01;
	TH0 = (65535 - 100) / 256;
	TL0 = (65535 - 100) % 256;
	
	ET0 = 1;
	EA = 1;
}

void ServiceTimer0() interrupt 1 
{
	TH0 = (65535 - 100) / 256;
	TL0 = (65535 - 100) % 256;
	
	count++;
	if(count == pwm_duty)
	{
		L1 = 1;
	}
	else if(count == 100)
	{
		L1 = 0;
		count = 0;
	}
}
//*******按键相关函数********
uchar stat = 0;
void Delay(uint t)
{
	while(t--);
}


void ScanKeys()
{
	if(S7 == 0)
	{
		Delay(100);
		if(S7 == 0)
		{
			switch(stat)
			{
				case 0:
					L1 = 0;
					TR0 = 1;  //打开寄存器
					pwm_duty = 10;
					stat = 1;
				break;
				case 1:
					pwm_duty = 50;
					stat = 2;
				break;
				case 2:
					pwm_duty = 90;
					stat = 3;
				break;
				case 3:
					L1 = 1;
					TR0 = 0;
				  stat = 0;
				break;
			}
			while(S7 == 0);
		}
	}
}

//初始化系统
void Initsys()
{
	SelectHC138(5);
	P0 = 0X00;//关闭蜂鸣器和继电器
	SelectHC138(4);
	P0 = 0XFF;//关闭LED
}

void main()
{
	InitTimer0();
	Initsys();
	SelectHC138(4);
	while(1)
	{
		ScanKeys();
	}
}


三、一些介绍

占空比:在一个周期里面,高电平所占的比率

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯之单片机学习(十)——PWM脉宽调制信号的发生与控制 的相关文章

  • stm32中pwm频率和占空比设置

    对于72M频率来说 xff0c 计算pwm频率是 xff1a 频率 xff1a Fpwm 61 72M arr 43 1 psc 43 1 单位 xff1a Hz 占空比 xff1a duty circle 61 TIM3 gt CCR1
  • 【STM32技巧】STM32 PWM互补输出设置

    本例程是使用STM32CubeMX 6 5版本生成带代码 测试单片机型号 xff1a STM32F103VET6 时钟设置72MHZ 使用定时器1的通道1 和 通道2 配置PWM互补输出 分频72分频 定时器频率为 72MHZ 72 61
  • pwm 正弦波_谈谈逆变器输出的方波与正弦波

    逆变器 逆变器是一种能把直流电 电池 蓄电池 变成交流电 市电 的一种设备 xff0c 广泛应用于空调 电脑 照明等等电器的使用 xff0c 通常是在外出旅游或者工作时 xff0c 用逆变器连接蓄电池产生交流电 xff0c 从而供给需要交流
  • pwm控制电机原理

    首先我们要明白电机的原理 电机 简单来说就是 实现电能与机械能相互转换的电工设备 那么我们经常使用的直流电机原理就是 xff1a 电生磁 xff1a 通电导线会产生磁场 也就是电磁感应 旋转磁场带动转子转动 电动机是由定子和转子组成 xff
  • 舵机PWM,SBUS,PPM信号转模拟电压的方案

    PWM SBUS PPM信号转模拟电压的方案 本文由 麦粒电子 撰写 xff0c 并提供相应产品服务和交流 案例场景 有个内部采用电瓶车的驱动器的无线小车 xff0c 现在需要使用遥控器控制小车的前进后退 也就是说 xff1a 把之前电瓶车
  • 航模无人机中PWM信号频率浅谈

    航模中执行机构 xff1a 动力电调 xff0c 舵机等基本都是通过PWM信号来驱动的 xff0c 但不同的电机或电调输入的信号频率和占空比又是不一样的 xff0c 这个是由什么决定的呢 xff1f 今天就以我的理解来简单讲一讲 最早的航模
  • 【Rt-Thread】STM32输出PWM

    1 实验目标 STM32输出不同频率的占空比为50 的PWM信号 xff0c 控制蜂鸣器音调 2 硬件部分 2 1 模块介绍 xff08 1 xff09 主控芯片 F405RGT6 xff08 2 xff09 蜂鸣器 低电平触发 2 2 接
  • STM32CubeIDE---HAL库PWM使用速记

    一 如何计算 理论分析 xff1a HAL库函数之呼吸灯 PWM波 简书 jianshu com 预分频系数 PSC 自动重装载值 ARR 捕获 比较寄存器值 CCR 频率计算 xff1a 定时器频率 PSC 43 1 ARR 43 1 占
  • 通用LED闪烁代码模块(也可实现软件PWM)

    仅提供参考文件 xff1a 1 需要修改gpio引脚 2 需要根据平台实现软件定时器接口 xff0c 启动 xff0c 停止 xff0c 回调 xff0c 三个API 3 根据平台优化相关错误即可 pwm drv c Created on
  • px4的PWM是如何输出的

    如果有io芯片 xff0c 且使用了io作为输出PWM的设备 则fmu将mixer传输给io xff0c io进行混控计算并输出PWM xff0c 将pwm结果传递回fmu xff0c 此时无app订阅acuator outpus xff0
  • DSP的PWM

    PRD 周期寄存器 xff0c 决定了PWM的周期 频率 CMP 比较寄存器 xff0c 决定了PWM的占空比 CRT 计数寄存器 PWM原理图 为什么需要PWM
  • Hi3798 PWM输出控制背光

    一 PWM配置说明 Hi3798 具有3个PWM输出端口 通过查阅 Hi3798M V200 低功耗方案 使用指南 pdf 可得 xff1a 通过查阅Hitool工具可以查看到三个PWM端口的寄存器分别为 xff1a 通过原理图可得 xff
  • stm32通用定时器输出PWM控制舵机

    stm32的通用定时器有TIM2 TIM3 TIM4 TIM5 xff0c 每个定时器都有独立的四个通道可以作为 xff1a 输入捕获 输出比较 PWM输出 单脉冲模式输出等 stm32除了基本定时器 xff0c 其他定时器都能输出PWM
  • 学习PS2无线手柄解码通讯手册

    学习 PS2 无线手柄的使用方法 将市场上 PS2 手柄通过解码应用到我们自己产品之中 比如控制智能车 机械臂等等任何涉及无线通信控制的一些diy场景 本次主要让大家了解 PS2 无线手柄的工作原理 以及掌握 PS2 无线手柄的使用并最终通
  • 直流电机控制 pwm 和 pid 算法

    下面的文章是我转载的 所以作者若是看到不允许转载 请给我留言或给我邮件 lushiliangcsdn 163 com 我会立即删除 转载原因 这篇文章把pid 算法解释的很详细 我担心以后这篇文章无故删除 才转载到我这边的 谢谢 转载来源于
  • STM32 使用TIM2_CH1(PA15) 输出10K PWM信号

    PA15 gt TIM2 Remap CH1 1 apb init RCC APB1PeriphClockCmd RCC APB1Periph TIM2 ENABLE RCC APB2PeriphClockCmd RCC APB2Perip
  • X2000 Linux PWM

    一 硬件设计 PC04 PWM4 二 通过shell开启PWM 配置参数 cmd pwm config pc04 freq 1000 max level 100 active level 1 accuracy priority freq 启
  • stm32f103 TIM2定时器4路PWM输出实验

    这里以TIM2为例 pwm c include pwm h uint16 t TIM2 CCR1 Val uint16 t TIM2 CCR2 Val uint16 t TIM2 CCR3 Val uint16 t TIM2 CCR4 Va
  • STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值

    参考 stm32 定时器输出PWM原理及工作原理 控制舵机 作者 点灯小哥 发布时间 2021 03 09 23 17 52 网址 https blog csdn net weixin 46016743 article details 11
  • 如果我尝试打开 PWM 引脚,Windows 10 Iot Core 应用程序会崩溃

    我想为我的蜂鸣器打开一个 PWM 引脚 但如果我尝试打电话给pwmController OpenPin 6 方法 应用程序崩溃并显示System Runtime InteropServices SEHException 我已经仔细检查过示例

随机推荐

  • JAVA中toString方法的作用

    一句话概括 xff1a 就是可以把实体类 xff0c 或者其他类 xff0c 以字符串或者规定的方式输出 xff0c 如果用了toString那么就会这样输出User 否则就会输出 xff1a 因为它是Object里面已经有了的方法 xff
  • Android.mk 和 CMakeLists.txt 的转换规则

    Android mk 和 CMakeLists txt 都是用来构建 Android 应用程序或库的工具 但是它们有不同的语法和规则 xff0c 所以将一个 Android mk 文件转换成一个 CMakeLists txt 文件需要一些注
  • Dronekit-python连接飞控报错dronekit.APIException: Timeout in initializing connection.

    将命令改为python connect py connect dev ttyUSB0 就可以了 与飞控的连接串口因各自而异 xff0c 我得是ttyUSB0 有的人的是ttyAMA0等等
  • C++代码小白从零开始手敲学习(2)

    1 为什么C 43 43 有多种整型 xff1f 能够根据程序的具体要求来选择最合适的整型 2 声明与下述描述相符的变量 include lt iostream gt int main short a 61 80 unsigned int
  • 大学生自制ROS无人机飞行练习

    目前是喊了舍友来帮我 xff0c 不用像之前那样单飞了 xff0c 真的忙不过来 xff0c 没想到刚上大三就这么累 xff0c 都怪那个线下机器人比赛延期还改成了线上 导致我时间安排得很紧 怎么说呢 xff0c 其实自学无人机挺快的 xf
  • 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍

    原文链接 xff1a 蓝牙协议分析 3 蓝牙低功耗 BLE 协议栈介绍 系列索引 xff1a 蓝牙协议分析 1 基本概念 蓝牙协议分析 2 协议架构 目录 1 前言 2 Why 3 How和What 4 Physical Layer 5 L
  • 在Ubuntu20.04运行VINS-Fusion

    准备工作 xff1a 虚拟机 ubuntu xff1a 20 04 ROS xff1a Neotic Ubuntu20 04 43 ROS Noetic的安装与配置可以参考这篇文章 xff0c 以下步骤在完成上述安装的基础上进行 一 安装c
  • 英伟达nx开发板USB口只能供电不能传输

    今天使用英伟达的NVIDIA Xaiver 开发板时发现连不上键鼠了 xff0c 屏幕也没反应 xff0c 想了很多办法 电源开关是正常的 xff0c 可正常给便携式屏幕供电但是就是不能连接键鼠 xff0c HDMI接口也无反应 我都要以为
  • 串口的不同发送方式

    一 中断的直接收发 Res 61 USART ReceiveData USART1 读取接收到的数据 USART SendData USART1 Res 发送数据 void USART1 IRQHandler void 串口1中断服务程序
  • input上传图片

    上传图片这一个功能element plus中虽然有这个组件 xff0c 但是自定义功能这块还是有点麻烦 xff0c 所以自己尝试着写了一个上传图片的组件 如下图所示 xff0c 右边是一个加号 xff0c 点击唤起上传功能 xff0c 左边
  • UART、RS232、RS485协议简单总结

    UART xff1a uart帧格式 空闲位 xff1a 即空闲的状态 高电平 起始位 xff1a 低电平 数据位 xff1a 5 8位自定义长度 校验位 xff1a 奇偶校验 停止位 xff1a 高电平 高低电平约定 xff1a uart
  • 系统调用的概念和作用

    一 什么是系统调用 xff0c 有何作用 1 概念 用户接口 命令接口 允许用户直接使用 程序接口 允许用户通过程序间接使用 xff1a 由一组系统调用组成 系统调用 系统调用 是操作系统提供给应用程序 xff08 程序员 编程人员 xff
  • 49.在ROS中实现local planner(2)- 实现Purepersuit(纯跟踪)算法

    48 在ROS中实现local planner xff08 1 xff09 实现一个可以用的模板实现了一个模板 xff0c 接下来我们将实现一个简单的纯跟踪控制 xff0c 也就是沿着固定的路径运动 xff0c 全局规划已经规划出路径点 x
  • 计算机操作系统保研面试题整理(自用)

    目录 1操作系统 1 什么是操作系统 2 操作系统的作用 3 操作系统的特征 4 进程 4 1 进程的定义 4 2 进程与程序的区别 4 3 进程的状态 5 线程 5 1 线程的定义 5 2 线程的实现方式 5 3 进程与线程的区别 5 4
  • 计算机网络保研面试题整理(自用)

    目录 计算机网络 第一章概述 1 1 协议和服务之间的联系和区别 1 2 计算机网络有哪些层 xff1f 1 3 面向连接的服务以及无连接的服务 1 4 对等层 协议栈 实体 协议概念 第二章物理层 2 1 物理层作用 2 2 物理层主要设
  • 数据结构保研面试题整理(自用)

    目录 第一章绪论 1 1 时间复杂度 1 2 空间复杂度 1 3 数的存储结构 1 4 数的逻辑结构 1 5 用循环比递归的效率高吗 xff1f 第二章线性表 2 1 顺序表和链表的比较 2 2 头指针和头结点的区别 xff1f 第三章栈和
  • 【C语言】宏定义和带参宏定义

    宏定义是在编程中经常使用的一个模块 xff0c 其优点在于当写的代码量比较大的时候方便修改检查 xff0c 可以做到改一变 百 一 宏定义 宏定义是用宏名来表示一个字符串 xff0c 在宏展开时又以该字符串取代宏名 xff0c 这只是一种简
  • Bing搜索没法用的解决办法(附Google和edge的详细解决步骤)

    文章目录 前言Edge浏览器的解决办法Google浏览器的解决办法其他 前言 从12月16日下午 xff0c bing搜索没法正常使用 xff0c 可能是DNS的污染 xff0c 或被墙等可能 xff0c 以下是解决方案 xff0c 亲测有
  • 嵌入式(九)——Linux开发工具(vim的使用)

    文章目录 一 嵌入式Linux开发系统二 vi vim gvim xff1a 文本编辑器三 vim的使用四 vim替代品 一 嵌入式Linux开发系统 文本编辑器 vim 43 vscode xff08 使用并配置vim 安装及使用插件 4
  • 蓝桥杯之单片机学习(十)——PWM脉宽调制信号的发生与控制

    文章目录 一 训练任务1 1 具体要求 二 代码展示三 一些介绍 一 训练任务 在CT107D单片机综合训练平台上 xff0c 利用PWM脉宽信号实现独立按键S7对L1指示灯亮度变化的控制 1 1 具体要求 PWM脉宽信号的频率为100Hz