51单片机利用I/O口高阻状态实现触摸控制LED灯

51单片机利用I/O口高阻状态实现触摸控制LED灯

1.概述

这篇文章介绍使用I/O口的高阻状态实现一个触摸控制LED灯亮灭的实验。该实验通过手触摸P3.7引脚,改变电平信号控制灯的亮灭。

2.实验过程

2.1.实验材料

名称型号数量
单片机STC12C20521
LED彩灯1
晶振12MHZ1
电容30pf2
电阻100欧姆1
面包板1
连接线5

2.2.电路原理

将P3.7接口的灯连接到P1.7接口上,其他的按照电路图链接即可。
在这里插入图片描述

在这里插入图片描述

2.3.实验程序

/*************************************************************
* 程序名: IO口高阻模式实现触控控制LED灯
* 编写人: bruce
* 硬件支持:STC12C2052
* 日  期: 2023-11-23
* 修改日志: 
/*************************************************************/#include<STC12C2052AD.H>// 定义P1.3 和 P1.2接口
sbit LED1 = P1^7;
sbit KEY = P3^7;void main(void){//设置P1接口为准双口模式P1M0 = 0X00;P1M1 = 0X00;//设置P3.7接口为高阻模式P3M0 = 0X80;P3M1 = 0X00;// 定义接口高电平LED1 = 1;while(1){LED1 = ~KEY;}}

将手指放在P3.7接口上灯就会点亮,离开后就会熄灭。但是在实际使用中,手指还没接触到P3.7接口,灯就亮了,这就是受到干扰造成的。下面对此做了优化。

  • 首先将P3.7设置为准双口+延迟,避免未接触到P3.7就变为低电平控制灯亮。在手开始接触P3.7时,该接口处于准双口,有输出功能可以将干扰电流拉到GND,消除了一部分干扰
  • 当设置P3.7为高阻状态时,增加一个延迟,再次消除一部分干扰。
  • 经过优化后比之前要稳定很多,手指触摸到P3.7和P1.0引脚才会点亮LED灯。
/*************************************************************
* 程序名: IO口高阻模式实现触控控制LED灯
* 编写人: bruce
* 硬件支持:STC12C2052
* 日  期: 2023-11-23
* 修改日志: 
/*************************************************************/#include<STC12C2052AD.H>// 定义P1.3 和 P1.2接口
sbit LED1 = P1^7;
sbit KEY = P3^7;/*********************************************************************************************
函数名:毫秒级CPU延时函数
调  用:DELAY_MS (?);
参  数:1~65535(参数不可为0)
返回值:无
结  果:占用CPU方式延时与参数数值相同的毫秒时间
备  注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){unsigned int i;while( --a != 0){for(i = 0; i < 600; i++);}
}void main(void){//设置P1接口为准双口模式P1M0 = 0X00;P1M1 = 0X00;//设置P3.7接口为高阻模式P3M0 = 0X80;P3M1 = 0X00;//初始化高低电平LED1 = 1;KEY = 0;while(1){//当手靠近还未触摸到P3.7引脚,感应到微电流后就会改变状态使控制灯的开关不稳定。//设置为准双口,+ 延迟 过滤微电流影响触摸不稳定现象。P3M0 = 0X00;DELAY_MS(2);P3M0 = 0X80;DELAY_MS(2);LED1 = ~KEY;}}
触控灯效果

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Elasticsearch:ES|QL 函数及操作符

如果你对 ES|QL 还不是很熟悉的话&#xff0c;请阅读之前的文章 “Elasticsearch&#xff1a;ES|QL 查询语言简介​​​​​​​”。ES|QL 提供了一整套用于处理数据的函数和运算符。 功能分为以下几类&#xff1a; 目录 ES|QL 聚合函数 AVG COUNT COUNT_DISTINCT 计数为近…

geemap学习笔记013:为遥感动态GIF图添加图名

前言 遥感动态GIF图可以展示地理区域随时间的变化&#xff0c;这对于监测自然灾害、湿地变化、城市扩展、农田变化等方面非常有用&#xff0c;并且可以反复观察图像&#xff0c;以更深入地了解地表的动态变化。本节主要是对遥感动态GIF图添加图名&#xff0c;以便于更好地理解…

聚观早报 |一加12正式开启预订;OPPO Reno11系列卖点

【聚观365】11月24日消息 一加12正式开启预订 OPPO Reno11系列卖点 小鹏第三季度营收财报 Claude 2.1 聊天机器人公布 现代汽车将与伦敦大学学院合作 一加12正式开启预订 全新的一加12系列公开亮相已有一段时间&#xff0c;不久前一加官方宣布&#xff0c;该机将于12月4日…

android:The application could not be installed: INSTALL_FAILED_TEST_ONLY

1、问题描述 在android12 &#xff08;OPPO PEEM00&#xff09;上安装APP时&#xff0c;提示上述异常 原因分析&#xff1a; android:testOnly&#xff1a;应用是否是为了测试&#xff0c;它可能向外暴露数据&#xff0c;引发安全漏洞。因此国内厂商的手机检测到这个属性为t…

ebpf实战(一)-------监控udp延迟

问题背景: 为了分析udp数据通信中端到端的延迟,我们需要对整个通信链路的每个阶段进行监控,找出延迟最长的阶段. udp接收端有2个主要路径 1.数据包到达本机后&#xff0c;由软中断处理程序将数据包接收并放入udp socket的接收缓冲区 数据接收流程 2. 应用程序调用recvmsg等a…

<JavaEE> 什么是进程控制块(PCB Process Control Block)?

目录 一、进程控制块的概念 二、进程控制块的重要属性 2.1 唯一身份标识&#xff08;PID&#xff09; 2.2 内存指针 2.3 文件描述符表 2.4 状态 2.5 优先级 2.6 记账信息 2.7 上下文 一、进程控制块的概念 进程控制块&#xff08;Process Control Block, PCB&#xff…

Springboot引入分布式搜索引擎Es RestAPI

文章目录 RestAPI初始化RestClient创建索引库删除索引库判断索引库是否存在总结 RestClient操作文档增加文档数据查询文档删除文档修改文档批量导入文档小结 RestAPI ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通…

IOS Frida 常用脚本

调用堆栈 console.log("bt:" + Thread.backtrace(this.context,Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join(\n\t)); Hook 调用,修改返回值 // Get a reference to the openURL selectorvar openURL = ObjC.classes.UIApplication["- openURL:&qu…

uni-app 跨端开发注意事项

文章目录 前言H5正常但App异常的可能性标题二H5正常但小程序异常的可能性小程序正常但App异常的可能性小程序或App正常&#xff0c;但H5异常的可能性App正常&#xff0c;小程序、H5异常的可能性使用 Vue.js 的注意区别于传统 web 开发的注意H5 开发注意微信小程序开发注意支付宝…

Docker实用篇

Docker实用篇 0.学习目标 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署…

STM32入门笔记15_PWR电源管理模块

PWR和低功耗模式 PWR简介 PWR(Power Control) 电源控制PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编程电压检测器和低功耗模式的功能可编程电压检测器(PVD) 可以监控VDD电源电压&#xff0c;当VDD下降到PVD阈值以下或上升到PVD阈值之上时&#xff0c;PVD会触…

C++学习之路(一)什么是C++?如何循序渐进的学习C++?【纯干货】

C是一种高级编程语言&#xff0c;是对C语言的扩展和增强。它在C语言的基础上添加了面向对象编程&#xff08;OOP&#xff09;的特性&#xff0c;使得开发者能够更加灵活和高效地编写代码。 C的名字中的“”符号表示在C语言的基础上向前发展一步&#xff0c;即“加加”&#x…

iOS APP包分析工具 | 京东云技术团队

介绍 分享一款用于分析iOSipa包的脚本工具&#xff0c;使用此工具可以自动扫描发现可修复的包体积问题&#xff0c;同时可以生成包体积数据用于查看。这块工具我们团队内部已经使用很长一段时间&#xff0c;希望可以帮助到更多的开发同学更加效率的优化包体积问题。 工具下载…

LeeCode前端算法基础100题(4)- 无重复字符的最长子串

一、问题详情&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb…

在VMware Workstation的Centos上实现KVM虚拟机的安装部署:详细安装部署过程(保姆级)

KVM概述 • 以色列qumranet公司研发&#xff0c;后被RedHad公司收购 &#xff08;1&#xff09;kvm只支持x86平台 &#xff08;2&#xff09;依赖于 HVM,inter VT AMD-v • KVM是&#xff08;Kernel-based Virtual Machine&#xff09;的简称&#xff0c;是一个开源的系统虚拟…

Spark---补充算子

一、Spark补充Transformation算子 1、join,leftOuterJoin,rightOuterJoin,fullOuterJoin 作用在K&#xff0c;V格式的RDD上。根据K进行连接&#xff0c;对&#xff08;K&#xff0c;V&#xff09;join&#xff08;K&#xff0c;W&#xff09;返回&#xff08;K&#xff0c;&a…

世界复合医学杂志世界复合医学杂志社世界复合医学编辑部2023年第8期目录

论著 能谱&#xff08;Revolution&#xff09;CT胸腹联合胸痛三联CTA扫描对急性胸痛患者疾病的差异分析 左明飞;温丽娟;焦宇; 1-38 超声引导下肩袖间隙注射及肩胛上神经阻滞联合触发点针刺治疗粘连性肩关节囊炎的疗效分析 余菲;王娴;戴甫成;张维;刘武;孙勇; 4-8 神…

python tkinter 使用(六)

python tkinter 使用&#xff08;六&#xff09; 本文主要讲述tkinter中进度条的使用。 1:确定的进度条 progressbar tkinter.ttk.Progressbar(root, mode"determinate", maximum100, value0) progressbar.pack()def updateProgressBar():for i in range(100):pr…

【Unity】 UGUI的PhysicsRaycaster (物理射线检测)组件的介绍及使用

1. 什么是PhysicsRaycaster组件&#xff1f; PhysicsRaycaster是Unity UGUI中的一个组件&#xff0c;用于在UI元素上进行物理射线检测。它可以检测鼠标或触摸事件是否发生在UI元素上&#xff0c;并将事件传递给相应的UI元素。 2. PhysicsRaycaster的工作原理 PhysicsRaycast…

【Proteus仿真】【51单片机】智能垃圾桶设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用报警模块、LCD1602液晶模块、按键模块、人体红外传感器、HCSR04超声波、有害气体传感器、SG90舵机等。 主要功能&#xff1a; 系统运行后&#xf…