当前位置: 首页 > 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;}}
触控灯效果

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/240528.html

相关文章:

  • 自动驾驶术语汇总
  • Jsonpath - 数据中快速查找和提取的强大工具
  • java中,通过替换word模板中的关键字后输出一个新文档
  • MySQL数据库约束你真的懂吗?
  • YOCTO 下载repo工具失败解决办法
  • github连接失败Host key verification failed.解决方案
  • 【TIDB】TiDB认证考试PTCA 练习题 题库
  • PPP/INS紧组合算法
  • c++ 演讲比赛流程管理系统 / from.黑马
  • 【shell】 1、bash语法超详细介绍
  • 华清远见嵌入式学习——网络编程——作业3
  • 前端学习--React(3)
  • rotation matrix reflection matrix
  • Python基础教程: sorted 函数
  • Vue 重写push和replace方法,解决:Avoided redundant navigation to current location
  • 43、vue导出pdf文件,并解决滚动条外内容无法获取的问题
  • 牛客 最小公配数 golang版实现
  • 用 HLS 实现 UART
  • 华清远见嵌入式学习——网络编程——作业4
  • 【OpenCV实现图像:制作酷炫的动画效果】
  • CSS鼠标属性篇
  • 交直流一体化电源系统测试步骤详解
  • 多数据库使用django-apscheduler时,migrate后并不能生成django_apscheduler_djangojob表的问题
  • SPS简单对应分析
  • 智能井盖传感器建设信息化时代智慧城市
  • 安装向量数据库milvus及其Attu
  • 量子计算概述
  • 校园圈子论坛,交友,帖子内短视频,二手市场,APP小程序H5三端交付,源码交付,支持二开
  • Request 爬虫的 SSL 连接问题深度解析
  • gin相关操作--一起学习921190764