51单片机——独立按键

2023-10-28

如图是独立按键的原理图:
在这里插入图片描述
通电后io口都是高电平,当按下K1~k4后,io口接地,变为低电平,说明当P30-P33为0时,代表我们按下了独立按键

例程1:独立按键控制LED亮灭

#include <REGX52.H>
void main()
{
	while(1)
	{
		//k2按下,点亮D1
		if(P3_0==0){
			P2_0=0;		
		}
		//k1按下,点亮D2
		if(P3_1==0){
			P2_1=0;		
		}
		//k3按下,点亮D3
		if(P3_2==0){
			P2_2=0;		
		}
		//k4按下,点亮D4
		if(P3_3==0){
			P2_3=0;		
		}else
		{
			P2=0xFF;
		}
		
	}
}


例程2:独立按键控制LED状态
效果:按下k1,D1亮,再按k1,D1灭,一直往复

#include <REGX52.H>

void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

void main()
{
	while(1)
	{
		if(P3_1==0)			//如果K1按键按下
		{
			Delay(20);		//延时消抖
			while(P3_1==0);	//松手检测
			Delay(20);		//延时消抖
			
			P2_0=~P2_0;		//LED1取反
		}
	}
}

例程3:独立按键控制LED显示二进制
效果:第一次D1亮,第二次D2亮,第三次D1和D2亮,第四次D3亮。。。。

#include <REGX52.H>

void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

void main()
{
	unsigned char LEDNum=0;
	while(1)
	{
		if(P3_1==0)			//如果K1按键按下
		{
			Delay(20);		//延时消抖
			while(P3_1==0);	//松手检测
			Delay(20);		//延时消抖
			
			LEDNum++;		//变量自增
			P2=~LEDNum;		//变量取反输出给LED
		}
	}
}

例程4:独立按键控制LED移位

#include <REGX52.H>
void Delay(unsigned int xms);

unsigned char LEDNum;

void main()
{
	P2=~0x01;				//上电默认LED1点亮
	while(1)
	{
		if(P3_1==0)			//如果K1按键按下
		{
			Delay(20);
			while(P3_1==0);
			Delay(20);
			
			LEDNum++;		//LEDNum自增
			if(LEDNum>=8)	//限制LEDNum自增范围
				LEDNum=0;
			P2=~(0x01<<LEDNum);	//LED的第LEDNum位点亮
		}
		if(P3_0==0)			//如果K2按键按下
		{
			Delay(20);
			while(P3_0==0);
			Delay(20);
			
			if(LEDNum==0)	//LEDNum减到0后变为7
				LEDNum=7;
			else			//LEDNum未减到0,自减
				LEDNum--;
			P2=~(0x01<<LEDNum);	//LED的第LEDNum位点亮
		}
	}
}

void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}


例程4效果图

IMG

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机——独立按键 的相关文章

  • 边缘计算2.0时代,“云边缘”与“边缘云”你分清了吗?

    5G时代的来临 意味着整个世界的连接 计算 和沟通方式都将迎来巨大的改变 这样的改变挑战着每一个人对于未来的想象力 越来越多的 低时延 大带宽 业务需求将会涌现 与此同时 大规模的数据激增也给整个行业和企业带来了不小的挑战 2020年对于全
  • PS批量给图片加水印

    一 打开PS 导入图片 点击菜单栏 文件 打开 载入一张需要设置文字水印的图片 二 点击菜单栏 窗口 动作 打开Photshop的动作组工作台窗口 先点击新建组图标新建一个组类别 再点击新建动作图标新建一个动作 新建后自动开始录制 名称均为

随机推荐

  • Matlab中hold on与hold off的用法

    摘录自 https blog csdn net smf0504 article details 51830963 https www cnblogs com shuqingstudy p 4853936 html 一 hold指令使用 正常
  • Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码

    本文利用MyBatis jsp servlet html css javascript实现了一个简单的登录页面 对用户输入的用户名和密码就行校验 校验通过则登录成功 密码和用户信息保存在mysql表中 通过MyBatis访问 MyBatis
  • 【Redis】高并发下缓存穿透缓存雪崩解决方案

    高并发下缓存穿透缓存雪崩解决方案 高并发下缓存穿透 缓存雪崩的解决方案 缓存穿透及其解决方案 缓存雪崩及其解决方案 使用双重检查锁需要注意的点 高并发下缓存穿透 缓存雪崩的解决方案 缓存穿透及其解决方案 缓存穿透指的是在缓存系统中请求一个不
  • Java8之 LocalDate,LocalDateTime和处理时间、日期工具类一网打尽

    article details 128433011 1 java 支持日期格式化 2 获取今天日期 3 获取年 月 日信息 4 设置特定日期 5 判断两个日期是否相等 6 检查像信用卡还款这种周期性事件 7 获取当前时间 8 在现有的时间上
  • Git原理

    Git原理 一 版本控制系统 2 Git与SVN的区别 3 工作区 暂存区 本地仓库 远程仓库 3 暂存区 index 4 Git结构 Git 注意 常见命令 参考文献 一 版本控制系统 1 集中式版本控制系统 数据都保存在中央服务器 SV
  • [maven]关于pom文件中的<relativePath>标签

    关于pom文件中的
  • 每个 JavaScript 开发人员都应该知道的 7 个速记优化技巧

    每种语言都有自己的怪癖 最常用的编程语言JavaScript也不例外 本文将介绍大量JavaScript 速记优化技巧 这些技巧可以帮助您编写更好的代码 并确保您在遇到它们时不会做出以下反应 1 多字符串检查 通常您可能需要检查 astri
  • c++ string 堆还是栈_C++ GCC STL std::string实现 (短字符串优化)

    写在前面 本笔记介绍了C 11之后的GCC string的核心数据成员 以及短字符串的栈上优化 C 11之前与之后string的实现完全不同 这个SO回答写的很好 简而言之 c 11之前实现的是COW string C 11之后实现的就是实
  • C#系列-超市银行系统

    Acer cs using System using System Collections Generic using System Linq using System Text using System Threading Tasks n
  • 开源软件介绍说明

    https www oschina net project tag 81 db optimization
  • Android Thread.UncaughtExceptionHandler捕获

    在Java 的异常处理机制中 如果抛出的是Exception异常的话 必须有try catch 进行处理 属于checked exception 如果抛出的是RuntimeException异常的话 则不是必须进行try catch 异常处
  • C++ 使用ffmpeg将本地视频推送到远程服务器

    1 包含必须的头文件 extern C include
  • Qt-国际化(语言切换)

    在Qt中 所有的输入部件和文本绘制方式对Qt支持的所有语言都提供了内置的支持 Qt内置的字体引擎可以在同一时间正确而且精细地绘制不同的文本 这些文本可以包含来自众多不同书写系统的字符 如果想了解更多的相关知识 可以在帮助中通过Overvie
  • 人工智能的动作来看这四家:百度、谷歌、微软、Facebook

    人工智能的动作来看这四家 百度 谷歌 微软 Facebook 人工智能已经成了兵家必争之地 但说句实在话 也都是准备的姿势 不过 瞭望未来的AI大战 积极的人才 设施 技术储备都是刚需 近日 美国 财富 杂志 Fortune 发表题为 Wh
  • 按键开关机电路

    1 目标 今天我们利用MOS管来设计一个按键开关机电路 2 要求 长按按键2秒钟松开后 系统电源启动 再长按2秒钟后 系统电源切断 3 分析 该电路设计的开始阶段应该是一个逻辑问题 后期器件选型以及参数确定才是一个硬件问题 下面只分析逻辑问
  • 各大AI开放平台汇总分析

    AI开放平台已经成为企业重要的基础设施 各大公司都建立了自己的AI开放平台 除了BAT 科大讯飞的建设的四大AI开放平台外 各公司纷纷推出了自己的人工智能平台 AI平台介绍和汇总如下 不断更新中 目录 百度AI开放平台 阿里云人工智能平台
  • 八步成功组织项目启动会议

    八步成功组织项目启动会议 项目启动会议将首次公布项目计划 这在很大程度上决定了项目是否能够圆满完成 你应该充分利用这个机会来给团队鼓劲 提出适当的期望 并根据时间和预算建立有助于项目顺利完成的指导方针 如果没有很好的准备项目启动会议 则会从
  • 电磁流量计测流工作原理及优缺点

    电磁流量计包含变送器和传感器 它们共同测量流量 电磁流量计的传感器采用直通连接 可测量流体在流经管道时产生的感应电压 变送器测量传感器产生的电压 将该电压转换成流量 然后再将流量测量值传送到控制系统 工作原理 电磁流量计是根据法拉第电磁感应
  • c 语言 模板函数,在 C 语言中实现模板函数的方法

    http blog csdn net whinah article details 13815 2004 各种用 C 语言实现的模板可能在使用形式上有所不同 现以一个求和函数 Sum 为例 用 C Template 可写如下 templat
  • 51单片机——独立按键

    如图是独立按键的原理图 通电后io口都是高电平 当按下K1 k4后 io口接地 变为低电平 说明当P30 P33为0时 代表我们按下了独立按键 例程1 独立按键控制LED亮灭 include