当前位置: 首页 > news >正文

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;}}
触控灯效果

在这里插入图片描述

在这里插入图片描述

相关文章:

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

51单片机利用I/O口高阻状态实现触摸控制LED灯 1.概述 这篇文章介绍使用I/O口的高阻状态实现一个触摸控制LED灯亮灭的实验。该实验通过手触摸P3.7引脚&#xff0c;改变电平信号控制灯的亮灭。 2.实验过程 2.1.实验材料 名称型号数量单片机STC12C20521LED彩灯无1晶振12MHZ1电…...

自动驾驶术语汇总

目录 智驾级别芯片相关自动驾驶相关辅助驾驶相关预警相关传感器相关泊车相关安全相关车灯相关 智驾级别 L0-L2属于辅助驾驶&#xff0c;L4-L5才算自动驾驶 L0&#xff08;Level 0&#xff09;&#xff1a;无自动化。这是大多数传统汽车的级别&#xff0c;所有的驾驶任务都需要…...

Jsonpath - 数据中快速查找和提取的强大工具

JSON&#xff08;JavaScript Object Notation&#xff09;在现代应用程序中广泛使用&#xff0c;但是如何在复杂的JSON数据中 查找和提取所需的信息呢&#xff1f; JSONPath是一种功能强大的查询语言&#xff0c;可以通过简单的表达式来快速准确地定位和提取JSON数据。本文将介…...

java中,通过替换word模板中的关键字后输出一个新文档

一、要用到的jar包 我已上传了相关的jar包&#xff0c;需要的可以通过以下链接直接下载&#xff1a; https://download.csdn.net/download/qq_27387133/88558034 具体jar包截图&#xff1a; 二、实现的代码 注意&#xff1a;文件要用docx格式!!! word变量替换的方法&#…...

MySQL数据库约束你真的懂吗?

✏️✏️✏️今天给各位带来的是关于数据库约束方面的知识 清风的CSDN博客 &#x1f61b;&#x1f61b;&#x1f61b;希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; 动动你们发财的小手&#xff0c;点点关…...

YOCTO 下载repo工具失败解决办法

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repocp repo ~/binchmod ax ~/bin/repo如果使用时报错&#xff0c; 切换ubuntu 到 python3 版本。gedit repo 修改repo默认链接地址&#xff1a;REPO_URL "https://gerrit.googlesource.com/git-repo"…...

github连接失败Host key verification failed.解决方案

问题描述 之前一直用的gitee协同协作&#xff0c;然后再最近一次云计算项目中团队使用的是github进行协作&#xff0c;但是按照常规步骤再GitHub上配置了ssh密钥后&#xff0c;却依然显示连接失败&#xff0c;无法推送和拉取代码&#xff0c;克隆仓库也是报错拒绝。具体报错信…...

【TIDB】TiDB认证考试PTCA 练习题 题库

目录 题目 答案 解析 题目 1.下列功能是由 TiKV 或 TiFlash 实现的为&#xff1f;&#xff08; 选 2 项 &#xff09; A. 根据集群中 Region 的信息&#xff0c;发出调度指令 B. 对于 OLAP 和 OLTP 进行业务隔离 C. 将关系型数据转化为 KV 存储进行持久化 D. 将 KV 存储…...

PPP/INS紧组合算法

前言&#xff1a;在学习紧组合之前学会GNSS/INS松组合是很有必要的&#xff0c;i2NAV团队开源的KF_GINS项目可以作为GNSS/INS松组合学习模板&#xff0c;本文章主要对武汉大学i2NAV发布的PPP/INS紧组合学习资源进行算法层面的总结&#xff0c;链接&#xff1a; 武汉大学多源智…...

c++ 演讲比赛流程管理系统 / from.黑马

...

【shell】 1、bash语法超详细介绍

文章目录 修改前缀路径dirname set常用函数参数变量local 返回值正则打印第 n 行获取行号核对数据库各表数量jq查询检查日志 sshpassexpect数组xargs bash manual 修改前缀 参考 export PS1"bash> "路径 dirname strip last component from file name dir$(…...

华清远见嵌入式学习——网络编程——作业3

目录 作业要求&#xff1a;基于UDP的TFTP文件传输 代码 下载功能效果图​编辑 上传功能效果图 思维导图 模拟面试题和答案&#xff08;定期更新&#xff09; 作业要求&#xff1a;基于UDP的TFTP文件传输 完成文件的上传和下载功能 代码 #include<myhead.h>//实现…...

前端学习--React(3)

一、Redux 集中状态管理工具&#xff0c;不需要react即可使用&#xff0c;每个store的数据都是独立于组件之外的 vue小链接&#xff1a;vuex/pinia 基本使用 Redux将数据修改流程分成三个概念&#xff0c;state、action和reducer state - 一个对象 存放我们管理的数据状态 a…...

rotation matrix reflection matrix

文章目录 1. rotation matrix1.1 结论 2. reflection matrix2.1 结论 1. rotation matrix 图像逆时针旋转 θ \theta θ的矩阵 Q r o t a t e [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] (1) Q_{rotate}\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\c…...

Python基础教程: sorted 函数

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 sorted 可以对所有可迭代的对象进行排序操作&#xff0c; sorted 方法返回的是一个新的 list&#xff0c;而不是在原来的基础上进行的操作。 从新排序列表。 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程…...

Vue 重写push和replace方法,解决:Avoided redundant navigation to current location

当我们使用编程式路由导航跳转路径时&#xff0c;如果我们两次携带同样的参数进行跳转&#xff0c;会进行页面报错&#xff1a; 那产生这个问题的原因是什么呢&#xff1f; 我们接收并输出调用push方法返回的结果&#xff1a; 会发现这是一个Promise对象 我们都知道&#xff…...

43、vue导出pdf文件,并解决滚动条外内容无法获取的问题

使用插件html2canvas和jspdf插件 下载完两个插件后引入所需要的页面 import html2canvas from "html2canvas" import jsPDF from "jspdf"1、在导出之前将元素的高度或者宽度设置为滚动高度或者宽度&#xff0c;如&#xff1a; el.style.height el.scro…...

牛客 最小公配数 golang版实现

题目请参考: HJ108 求最小公倍数 题解: 在大的数的倍数里面去找最小的能整除另外一个数的数&#xff0c;就是最小公倍数&#xff0c;按照大的来找&#xff0c;循环次数能够降到很少&#xff0c;提升效率 golang实现: package mainimport ("fmt" )func main() {a : …...

用 HLS 实现 UART

用 HLS 实现 UART 介绍 UART 是一种旧的串行通信机制&#xff0c;但仍在很多平台中使用。它在 HDL 语言中的实现并不棘手&#xff0c;可以被视为本科生的作业。在这里&#xff0c;我将通过这个例子来展示在 HLS 中实现它是多么容易和有趣。 因此&#xff0c;从概念上讲&#xf…...

华清远见嵌入式学习——网络编程——作业4

作业要求&#xff1a;①使用IO多路复用中的select函数实现TCP并发服务器客户端 ②使用IO多路复用中的poll函数实现TCP并发服务器的服务器端 一、 代码 #include <myhead.h>#define SERPORT 8888 //服务器端口号 #define SERIP "192.168.114.113"…...

AI MV 高清无水印生成工具有哪些?零基础在线把歌曲做成 MV 的工具选择指南

AI MV 高清无水印生成工具主要有 OhYesAI、Revid、Kaiber、Runway、CapCut、HeyGen 和 Synthesia&#xff0c;区别在于是否能按歌曲风格、歌词故事、虚拟形象和手机端流程生成完整 MV。 AI MV 工具推荐速览表工具名核心能力&#xff08;在线 AI MV 制作&#xff09;适合人群免费…...

让微信小程序也能发PATCH

项目背景 在 uni-app TypeScript 开发微信小程序时&#xff0c;业务层大量使用了 RESTful 接口&#xff0c;其中更新操作用到了 PATCH。 然而小程序底层仅支持 GET/POST/PUT/DELETE…&#xff0c;不支持直接写 method: PATCH。 改动所有接口为 PUT 不仅语义不纯&#xff0c;还…...

这才是我们热血沸腾的组合技啊!

臭猪妞更新文章不更&#xff0c;纪念日更得轻快 附&#xff1a;256天创作纪念日 平常会发一些题解&#xff0c;笔记&#xff0c;不太勤快。 我的第一篇文章是《P5736 【深基7.例2】质数筛题解》&#xff08;当时只会发题解&#xff0c;也才学到了排序&#xff09; 现在&#…...

Real-Anime-Z训练数据准备:YOLOv8辅助的动漫图像自动标注方案

Real-Anime-Z训练数据准备&#xff1a;YOLOv8辅助的动漫图像自动标注方案 1. 引言 动漫角色识别与生成一直是AI领域的热门研究方向&#xff0c;但高质量的训练数据获取却是个令人头疼的问题。传统的人工标注方式不仅耗时费力&#xff0c;成本也居高不下。以Real-Anime-Z这样的…...

Python代码质量提升:从规范到优化的实践指南

1. 为什么需要提升Python代码质量 刚入行时我写过不少能跑就行的Python脚本&#xff0c;直到有次在线上环境因为一个缩进错误导致服务崩溃&#xff0c;才意识到代码质量的重要性。Python作为动态类型语言&#xff0c;在提供灵活性的同时也带来了更多潜在风险。良好的编码习惯不…...

如何快速掌握无人机数据分析:3步可视化飞行日志

如何快速掌握无人机数据分析&#xff1a;3步可视化飞行日志 【免费下载链接】UAVLogViewer An online viewer for UAV log files 项目地址: https://gitcode.com/gh_mirrors/ua/UAVLogViewer 无人机飞行数据分析一直是飞手和专业团队面临的挑战。面对复杂的MAVLink日志、…...

保姆级教程:在STM32F407上跑通BACnet-MSTP协议栈(附Yabe上位机调试实录)

从零构建STM32F407的BACnet-MSTP智能设备&#xff1a;协议栈移植与Yabe实战指南 当工业物联网遇上嵌入式系统&#xff0c;BACnet协议栈成为连接两者的关键桥梁。想象一下&#xff0c;你手中的STM32F407开发板突然具备了与楼宇自动化系统对话的能力——通过485总线发送标准化数据…...

导电胶技术:电子组装中的关键材料与应用

1. 导电胶技术解析&#xff1a;电子组装中的隐形功臣在拆解手机主板时&#xff0c;你是否注意过那些闪着银光的粘接材料&#xff1f;它们不是传统焊料&#xff0c;而是现代电子制造中不可或缺的导电胶。我曾用导电胶修复过一块因焊盘脱落而报废的显卡&#xff0c;这种材料不仅实…...

springboot+vue3宠物领养系统 原生微信小程序

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析技术实现要点特色功能建议安全考虑项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 后端&#xff08;SpringBoot&…...

Dev Containers + Kubernetes本地沙箱联动失效?2026年3大厂商联合认证的5步跨集群同步协议(含YAML原子模板)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Dev Containers与Kubernetes本地沙箱协同失效的根本归因分析 当开发者在 VS Code 中启用 Dev Container 并同时运行 Kind 或 Minikube 作为本地 Kubernetes 沙箱时&#xff0c;网络隔离、权限模型与容器…...