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

独立按键识别

项目文件

文件

关于项目的内容知识点可以见专栏单片机原理及应用 的第四章 IO口编写

 


参考图电路编写程序,要求实现如下功能:

  • 开始时LED均为熄灭状态,随后根据按键动作点亮相应LED(在按键释放后能继续保持该亮灯状态,直至新的按键压下时为止)。

在这里插入图片描述

分析:电路LED采用的是低电平驱动,按键按下后低电压。
需要从P0按键输入电压,到p2输出。

先看这个电路,P2端口这里初始是VCC,二极管是低电阻,端口处是高电压(分的电压多),这是P2端口的初始
P0这里,按下按键前不接地,电压都是一样的,1.25V大概,按下按键后,接地,必然会分压,其中低4位中某一位变成低0。这里就是看P0后面的低4位变化否来判断是否按下

也就是刚开始要使端口P0.4~P0.7强制为0,而P0.0 ~ P0.3不变。屏蔽P0高4位,即key=P0 & 0x0f

然后要把key值也就是P0值传送给P2:
if(key!=0x0f)P2=key; //有按键动作,P0状态值送P2端口

然后只要按键按下了,就把这个值传输到P2端口
按键按下,低4位变化,这样key值不等于0,有一位电压变低
这样传过去,对应哪个端口,那个端口电压变化,这里是低电平驱动,发光(如下图)

在这里插入图片描述

这个问题的参考代码如下:

#include<reg51.h>
void main(){
char key=0; //定义按键变量
while(1){
key =P0&0x0f; //按键P0的高4位清零
if(key!=0x0f)P2=key; //有按键动作,P0状态值送P2端口
}
}

结果:

在这里插入图片描述

运行视频如下:

单片机C51-独立按键识别

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

相关文章:

  • 【论文阅读】AlphaFold2阅读笔记
  • 机器学习基础知识之数据归一化
  • QCC51XX---pydbg_cmd集合
  • camx 马达的MSM_ACTUATOR_WRITE_DAC 操作
  • 【无人机】无人机平台的非移动 GPS 干扰器进行位置估计的多种传感器融合算法的性能分析(Matlab代码实现)
  • 一篇文章搞定《RecyclerView缓存复用机制》
  • Elasticsearch概述
  • 停车场收费系统
  • nodejs+vue+elementui学生毕业生离校系统
  • 儿童用灯哪个品牌好?推荐专业的儿童护眼台灯
  • 探究Android插件化开发的新思路——Shadow插件化框架
  • SimpleDateFormat和DateTimeFormatter的区别及使用详解
  • 边缘人工智能——nanodet模型实践指引,从标注数据集到实现部署文件
  • SASS的用法指南
  • MCSM面板一键搭建我的世界服务器-外网远程联机【内网穿透】
  • ( 数组和矩阵) 565. 数组嵌套 ——【Leetcode每日一题】
  • linux内核网络子系统初探---概述
  • java版工程项目管理系统源代码-功能清单 图文解析
  • 【chapter30】【PyTorch】[动量与学习率衰减】
  • 【键入网址到网页显示】
  • Nacos配置中心、配置热更新、及配置共享的记录
  • MATLAB | 绘图复刻(八) | 堆叠柱状图+哑铃图
  • Scala之集合(2)
  • 【图像分割】视觉大模型SEEM(Segment Everything Everywhere All at Once)原理解读
  • Linux: command: ibstat; infiniband
  • UML简介与类图详解
  • 【每日一题】1994.好子集的数目
  • 坚持伙伴优先,共创数据存储新生态
  • 树形结构的三级分类如何实现?
  • SSM整合完整流程