基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.17,PWM控制与状态切换)

news2024/12/22 19:44:08

1.今天做了什么

2.过程思路

看了两天文档才慢慢看懂,有点满了

现在接着前一天的思路,可以通过代码来控制pwm的占空比。我这里采用的是TP0定时器

初步控制pwm的占空比

void LED_PWM_OPEN(void) 
{
 //占空比 PWM1-Y-PB2
 	PWM1DH = 0X0F;
	PWM1DL = 0X00; 
	
//占空比 PWM01-W-PB1
	PWM0DTH = 0X01;
	PWM0DTL = 0X00; 
	
//占空比 PWM0-BLUE-PB0 
	//PWM0DH = 0XFF; 
	//PWM0DL = 0X00; 
	
//周期 
	PWM0PH = 0X00; 
	PWM0PL = 0X00; 
	
//PB0输出 
	PWMPSCON = 0x04;//--11 1111 :PB0-OUT	 
	
//pwm0c 
	PWM0C = 0xc2;//PWM0C_Buf;	//11-- 0011 :Fosc/2 
	
//PWM0EN 
	PWM0EN = 0x9d;//PWM0EN_Buf;	//1-01 1101 :TP0-EN;8BIT;PWM0X-EN;独立模式;PWM-EN  


	FTP0IF = 0;//TP0 溢出中断标志位,TP0 溢出时被置位,软件清除
FTP0IE = 1;//TP0 溢出中断使能位(1=使能,0=失能)
FTP0EN = 1;//启动 TP0 定时器
FGIE = 1;//开全局中断

}

然后在中断函数中调用

void interrupt myIsr(void)
{


	if (FTP0IF)
	{
		FTP0IF = 0;
	}
	//----User Code End----
}

思路简略得写在注释了,以后总结再详细一点。

设定PWM的值可以在3s内由最高降到最低

现在需要设定PWM的值可以在3s内由最高降到最低,那么通过设置这个定时器每1ms中断一次,占空比每1ms减少0.03%。达到每1s占空比减少30%就可以达到效果

这里PWM0PH和PWM0PL的值在定时器初始化均设至为0,所以

        PWM0X的占空比等于=占空比设定的值*PWMX0工作时钟源周期
                                           =占空比设定的值*1/PWMX0工作时钟源频率

这里通过寄存器手册可以得知占空比可以设定的最大值为0XFFF,

这个寄存器可以设定的最大值为4095,定时器的频率设置为Fosc/2,也就是1950HZ/2=975HZ

也就是一秒钟中断957次,此时把重装载值设定为1170,与4095之间的差值为975X3。在定时器内对PWM0DL和PWM0DH的值进行调整,那么在3s后占空比就会达到最亮

通过按键控制PWM输出变化

原本的思路是在按键扫描函数中设置FTP0IF = 1,然后可以执行

这一段代码来对PWM的调节。但是结果并不像想象中那个样子,现象为灯的颜色不变,长按或者短按按键均无反应。

猜想1:是不是按键扫描函数的中断执行的太慢了,导致PWM的值不能及时地累加,导致现象不明显,目前未排除

猜想2:TP0的定时器中断一直打断TIMER定时器的中断,对应中断函数无法执行。不过发现其他按键依旧可以顺利执行,排除这个可能。

暂且不管上面,想到个方法采用了在按键扫描中对FTPOIE这个TP0定时器的中断溢出标志位进行改变,相当于控制定时器的开启和关闭。如果点按的话由于事件过短定时器的开启和关闭就一瞬间,对亮度没什么影响。

3.开发中遇到的卡点

现在的问题是灯会呼吸一次,并不是渐灭或者渐亮的状态,应该是逻辑还有问题。

4.想问的问题

这个芯片的Fcpu和Fosc多大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1223956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python3:turtle绘图 .2023-11-18

绘制一个菱形:四边相等且都为200像素;四个内角两边各为60度,上下各为120度 import turtle #导入turtle #画笔默认绘制方向为水平向右 turtle.right(-30) #画笔绘制方向向左(逆时针)旋转30度. turtle.fd(200) #画笔沿绘制方向绘制200像素长度 turtle.right(60) #画笔绘制方向在…

OSS服务和MinIO存储做一个区分解析

日落金山,明天我们继续… 什么是OSS服务和MinIO存储 OSS(Object Storage Service)和MinIO都是对象存储服务,但它们有一些区别。以下是对它们的简要分析: 1. 部署和管理: OSS: 由阿里云提供&a…

HDMI之EDID析义篇

DisplayID Type X Video Timing Data Block 实例 F0 2A 10 93 FF 0E 6F 08 8F 10 93 7F 07 37 04 8F 10该数据来源于SHARP AQUOS-TVE23A 4K144Hz电视机的第3个EDID块(基于HF-EEODB)。 定义 解释 VTDB 1: 3840x2160 144.000009 Hz 16:9 333.216 kHz 1343.527000 MHz (RBv3,h…

UE 程序化网格 计算横截面

首先在构造函数内加上程序化网格,然后复制网格体到程序化网格组件上,将Static Mesh(类型StaticMeshActor)的静态网格体组件给到程序化网格体上 然后把StaticMesh(类型为StaticMeshActor)Instance暴漏出去 …

python基础练习题库实验1

题目1 使用以下变量 product_code“377B” product_name“牛肉汤” product_size“250mL” product_price2.15 使用字符串加法编写一个print语句,以便生成以下精确输出: 377B:牛肉汤,250mL 代码 product_code "377B"…

深入了解Java 8 新特性:lambda表达式进阶

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概7000多字,预计阅读时间长需要10分钟。本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章&#…

这个双11,阿里云经历了可能是历史级的大故障!

2023年11月12日17:44开始,阿里云发生严重故障,导致阿里巴巴大量产品无法连接,一时间,“阿里云盘崩了”、“淘宝又崩了”、“闲鱼崩了”、“钉钉崩了”等话题相继登上热搜。 此外,像纳思云充电桩、乐爽coole…

Git安装与常用命令

Git简介: Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式…

机器学习算法——集成学习

目录 1. Bagging 1. Bagging Bagging(bootstrap aggregating:自举汇聚法)也叫装袋法,其思想是通过将许多相互独立的学习器的结果进行结合,从而提高整体学习器的泛化能力,是一种并行集成学习方法。 工作流…

IO流-框架

一,框架概念 二,Commons-io框架 三,使用案例 package BigDecimal;import org.apache.commons.io.FileUtils;import java.io.File; import java.io.IOException;public class Main12 {public static void main(String[] args) throws IOExcept…

centos7安装mongodb

1、下载mongodb https://www.mongodb.com/try/download/community 2、解压 3、重命名 4、创建mongodb的data、logs目录 5、启动mongodb, bin/mongod --port27017 --dbpath/data/program/mongodb/data --logpath/data/program/mongodb/logs/mongodb.log --bind_ip0.0.0.0 --f…

VMware Workstation Pro 12 ubuntu 20.04 突然奔溃,重新打开后导致win11系统蓝屏问题

1、虚拟机在执行一个程序时候,突然导致系统win11蓝屏 2、重新打开提示磁盘打开异常,网络搜索发现要删除磁盘lock文件,删除后,重启过程中还是会报各种异常 后来把所有的临时文件都删除了,就可以了 临时文件&#xff1…

【Proteus仿真】【51单片机】防火防盗GSM智能家居设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用声光报警模块、LCD1602显示模块、DS18B20温度、烟雾传感器模块、按键模块、PCF8591 ADC模块、红外检测模块等。 主要功能: 系统运行后…

合伙人如何承担合伙公司债务

合伙企业有不同的组织方式,包括普通合伙企业、特殊的普通合伙企业、有限合伙企业这三种,合伙人对于合伙企业的债务承担方式有以下几种情形: 1.普通合伙人合伙企业债务的承担 普通合伙企业由普通合伙人组成,合伙人对合伙企业债务承…

kernel32.dll下载地址分享,Kernel32.DLL文件丢失的修复指南

作为计算机用户,我们可能都曾遭遇过这样一条令人烦恼的错误信息: "程序无法启动,因为您的计算机中缺少Kernel32.dll"。在这种情况下,往往会引发一系列疑问: Kernel32.dll是什么?为什么它对我的电…

Java学习之路 —— Java高级

文章目录 前言1. 单元测试2. 反射2.1 获取Class对象的三种方式2.2 获取类的构造器的方法2.3 获取类的成员变量2.4 获取类的成员方法2.5 反射的作用 3. 注解3.1 自定义注解3.2 注解的原理3.3 元注解3.4 注解的解析 4. 动态代理5. 总结 前言 终于走到新手村的末端了,…

竞赛 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

Leetcode—142.环形链表II【中等】

2023每日刷题(三十三) Leetcode—142.环形链表II 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode *detectCycle(struct ListNode *head) {struct ListNode* …

腾讯云服务器怎么样好用吗?腾讯云服务器性能评测

近年来,腾讯云作为一家领先的云服务提供商,备受关注。尤其是最近两年,腾讯云在优惠活动上的力度非常大,被誉为良心云。其优惠政策吸引了越来越多的用户选择腾讯云作为他们的云服务提供商。 腾讯云双十一领9999代金券 https://111…

微信小程序动态生成表单来啦!你再也不需要手写表单了!

dc-vant-form 由于我们在小程序上涉及到数据采集业务,需要经常使用表单,微信小程序的表单使用起来非常麻烦,数据和表单是分离的,每个输入框都需要做数据处理才能实现响应式数据,所以我开发了dc-vant-form,…