基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制总结版(11.22)

1.任务需求

基于MS16F3211芯片实现功能一个按键通过长按可以控制当前处于亮状态的灯的亮度,当灯从最亮达到最暗时,所用时为3s。现有三盏颜色分别为红绿蓝的灯,在处于关机状态时红灯亮,处于开机状态时红灯灭。点按第一次仅绿灯亮,点按第二次仅蓝灯亮,点按第三次绿灯和蓝灯齐亮,点按第四次回到初始状态。

实现效果:当仅绿灯亮时,第一次长按按键绿灯状态改变,再次长按按键绿灯会往相反的方向变化,并且在达到极点时,停止调节。蓝灯与绿灯的亮度相互独立,互不影响。在两灯均亮的时候,此时长按按键依旧会造成亮度的改变,但是会由于亮度在前面单独调节不同导致调节所到极点的时间不一样。但是共同点在调节到极点时如果不松开按键亮度均不发生变化。直至双灯亮度均达到极点,此时系统亮度恒定。

2.系统流程拆分

2.1 了解原理图

2.2实现短按按键控制灯的亮灭

判断按键按下或者释放主要使用的是基于触摸库衍生出来的用户函数

基于这个初步对GPIO初始化,并且在按键执行函数内进行对GPIO的高低电平进行翻转就可以实现了

2.3 实现长按按键控制灯的亮度变化

因为要需要根据按键按下的时间长短来控制亮度值变化的大小,所以采用TP0定时器进行PWM波的输出。按下的时间越久,进入定时器中断的次数越多,此时亮度就会相较初始值变化得越大。

当配置好TP0寄存器时,然后将INTEN中的bit4置1,那么在定时器计数溢出时INTFLAG寄存器的中断标志位bit4TP0IF会置1。根据这个原理我们就可以在按键按下时将TPOIE置1,开启定时器中断,对亮度进行控制。在松开按键时将TPOIE置0.此时停止对亮度的控制

当TP0在计数值达里将FFF时会溢出,此时溢出标志位会置1。

此时在定时器中断里对TP0IF这个标志位进行软件复位,那么就可以达到每发生一次定时器中断就可以进行一次亮度调节。

ps:提供每个 PWM 周期溢出中断,但中断共用同一个向量入口

2.4实现3s控制灯的亮度可以由一个极点达到零、另一个极点

如果需要控制灯的亮度变化那么就要控制这个定时器的时钟频率,然后再设定这个PWM的时钟周期,就可以设定这个占空比的变化时间了。

比如这个定时器所用时钟频率根据控制寄存器的CK0[3:0]位来进行控制,这里我采用的是采用输入时钟源为Fosc,二分频。输入时钟频率为1.95kHZ,也就是一秒钟可以计数1950次,3s计数1950乘3次。因为根据占空比寄存器占空比为100%时计数值最大值的设置只能为0X0FFF=4095比这个值小。所以对这个时钟源进行二分频。也就是1秒钟计数975次。所以把初始值设置为1170=4095-975x3。也就是只要1s中会中断975次,在中断中对占空比的值进行加一或者减一。既可以达到3s钟对占空比的值由最高变到最低了。

2.4 实现短按控制灯的状态切换

其实第一步通过GPIO来控制的置1或者0来控制灯的亮灭是可行的,但是在控制灯的亮灭的同时需要控制在灯亮灭亮的变化的同时还需要保持灯的亮度不变。这个时候就需要通过PWM来控制了。

其实主要也是通过寄存器来控制PWM的使能和失能

2.5实现根据当前灯的状态来控制当前灯的亮度,也就是分隔开来

在中断服务函数内进行对灯状态的判断来执行相应的操作

2.6 实现长按时两次长按会让灯的亮度往不同方向变化

其实也就是在下一次接收到按键按下的数据的时候判断上一次按键是否释放来判断是否完成了一次按键的的长按操作。如果完成了的话就对标志位进行改变

2.7 分隔长按和短按

在检测到按键按下使对一个变量累加,然后根据变量的数值来判断是长按还是短按。

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

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

相关文章

postgresql新增非空默认值字段是否需要重写表

简介: PostgreSQL 10 版本前表新增不带默认值的DDL不需要重写表,只需要更新数据字典,因此DDL能瞬间执行,如下: ALTER TABLE table_name ADD COLUMN flag text; 如果新增的字段带默认值,则需要重写表,表越大…

mysql使用--数据的插入,删除和更新

1.UNION合并多个结果集 如&#xff1a;SELECT m1, n1 FROM t1 WHERE m1 < 2 UNION SELECT m2, n2 FROM t2 WHERE m2 > 2; 默认下&#xff0c;某行在参与合并两个结果集均存在时&#xff0c;最终结果集中只包含一行。 如希望最终结果集包含两行&#xff0c;用UNION ALL。 …

慕尼黑电子展Samtec Demo | 回环测试带来Samtec产品组合优异表现

【摘要/前言】 大家好&#xff01;Electronica虎家展台Demo系列回来咯。 实践出真知&#xff0c;再好的纸面数据都不如来一场实际的测试和演示。Samtec团队始终在努力为客户带来卓越的产品和优质服务。而这其中&#xff0c;Demo演示的存在至关重要。演示过程可以为大家带来了…

关于Flink的旁路缓存与异步操作

1. 旁路缓存 1. 什么是旁路缓存? 将数据库中的数据,比较经常访问的数据,保存起来,以减少和硬盘数据库的交互 比如: 我们使用mysql时 经常查询一个表 , 而这个表又一般不会变化,就可以放在内存中,查找时直接对内存进行查找,而不需要再和mysql交互 2. 旁路缓存例子使用 dim层…

Vue-报错No “exports“ main defined in xx

vue报错&#xff1a;No "exports" main defined in F:\wjh\vue#Practice\EasyQuestionnaire-web-master\EasyQuestionnaire-web-master\node_modules\babel\helper-compilation-targets\package.json 1.在文件中找到该路径的package.json文件&#xff0c; 2.按照提示…

人工智能:拥抱未来之手

人工智能对我们的生活影响有多大 人工智能给我们的生活带来了巨大的影响&#xff01;它像魔术师一样&#xff0c;帮我们解决问题、提供建议&#xff0c;甚至预测未来。从智能手机到智能家居&#xff0c;人工智能让我们的生活变得更便捷、更智能。它是我们生活中的得力助手&…

MEMS制造的基本工艺——晶圆键合工艺

晶圆键合是一种晶圆级封装技术&#xff0c;用于制造微机电系统 (MEMS)、纳米机电系统 (NEMS)、微电子学和光电子学&#xff0c;确保机械稳定和气密密封。用于 MEMS/NEMS 的晶圆直径范围为 100 毫米至 200 毫米&#xff08;4 英寸至 8 英寸&#xff09;&#xff0c;用于生产微电…

java序列化与反序列化

java中序列化与反序列化 概念 在Java中&#xff0c;序列化是指将对象转换为字节流的过程&#xff0c;而反序列化则是将字节流转换回对象的过程。序列化和反序列化通常用于在网络上传输对象或将对象持久化到磁盘上。 要对一个对象进行序列化&#xff0c;可以使用ObjectOutput…

github访问失败

1. 问题场景 今天了解到notepad可以安装许多插件&#xff0c;但是自动下载插件时总是失败&#xff0c;这些插件的下载源都是github&#xff0c;将地址复制到浏览器也打不开&#xff0c;所以查了下github的访问问题&#xff0c;目前插件已正常下载。 2. 解决方法 gitee上搜索…

facebook如何群发小组贴

Facebook是一款非常流行的社交媒体平台&#xff0c;它可以让人们与朋友、家人和同事进行交流和分享。在Facebook上&#xff0c;用户可以加入各种小组&#xff0c;与志同道合的人交流和分享。而群发小组贴是一种在小组内发布消息的方式&#xff0c;让小组的成员都能够收到消息。…

BUUCTF [SWPU2019]神奇的二维码 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 得到的 flag 请包上 flag{} 提交。 密文&#xff1a; 下载附件&#xff0c;得到一个.png图片。 解题思路&#xff1a; 1、使用QR research扫一下&#xff0c;得到“swpuctf{flag_is_not_here}”的提示。 2、放到0…

orvibo的Mini网关VS20ZW玩法

概述 闲鱼淘来一个2016年生产的网关,此网关的型号:VS20ZW。 已经不能用APP入网了,没事拆来玩玩。 此设备已经被淘汰,很多新的zigbee产品不再支持入网。 官网设备的简介: ZigBee Mini网关,智能家居网关,智能家居主机|ORVIBO欧瑞博智能网关 设备概貌: 主要器件: …

微信小程序 获取微信头像和昵称的低版本兼容问题

<template> <uni-forms-item label"头像" nameimg><!-- #ifndef MP || MP-WEIXIN --><view click"addFile1"><u-avatar size"46":src"this.$utils.baseUrl/file/download/customFormData.avatar"></…

Uptime Kuma 企业微信群机器人告警

curl https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa \-H Content-Type: application/json \-d {"msgtype": "text","text": {"content": "hello world"}}企业微信群机器人ke…

PowerQuery领域的经典之作“猴子书“中文版来啦!

与数据打交道&#xff0c;还在纠结于Excel、SQL、VBA、Python&#xff1f;数据处理领域经典之作PowerQuery"猴子书"让你用更聪明的方法处理数据。学完这本书&#xff0c;你就掌握了Power Query的一切&#xff0c;想要学Power Query&#xff0c;只需要这一本就够啦&am…

Hotspot启动原理(三)

关于Hotspot虚拟机的启动原理和内部运行机制。Hotspot虚拟机是Java虚拟机的一种实现&#xff0c;它采用了基于类的技术&#xff0c;在运行时将Java字节码转换为机器码并执行。在Hotspot虚拟机的启动过程中&#xff0c;会经历一系列的过程 包括JVM初始化、类加载、字节码解释执…

POL890 LVDSRGB TO MIPILVDS

一、芯片简介 1、系统 高性能 MIPS 32bit CPU 内核&#xff1b; 高性能 DSP 内核图像处理单元&#xff1b; 16KB 指令 Cache&#xff1b; 16KB 数据 Cache&#xff1b; 128KB OnChip SRAM&#xff1b; 内嵌 DDR3 控制器&#xff1b; 2、RGB 输入 支持 RGB666、RGB888 输入&…

万字解析设计模式之组合模式、亨元模式

一、组合模式 1.1概述 组合模式是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构&#xff0c;以表示“部分-整体”的层次结构。组合模式使得客户端可以一致地对待单个对象和对象组合&#xff0c;从而将复杂的层次结构展现为一个统一的树形结构。 在组合模式中&…

设计模式-16-Spring源码中的设计模式

1-Spring之观察者模式 Java、Google Guava都提供了观察者模式的实现框架。Java提供的框架比较简单&#xff0c;只包含java.util.Observable和java.util.Observer两个类。Google Guava提供的框架功能比较完善和强大&#xff1a;通过EventBus事件总线来实现观察者模式。实际上&am…

表格制作软件排行榜,热门做表格的软件推荐

在数字化时代&#xff0c;表格不仅仅是企业管理和数据整理的重要工具&#xff0c;更是学术研究、项目规划以及日常生活中必不可少的一部分。为了更高效地进行表格制作&#xff0c;选择一款优秀的表格制作软件是至关重要的。在众多的软件中&#xff0c;我们特别推荐一款备受好评…