admin管理员组

文章数量:1794759

单片机之独立按键(多种按键代码编写)

单片机之独立按键(多种按键代码编写)

🌹作者简介: @鹤辞 ,喜欢玩弄单片机,嵌入式,PCB制作,电路设计等等,希望自己的学习经历经验能够对你们有启发

🌹前期回顾:单片机之中断系统篇_@鹤辞的博客-CSDN博客

🌹努力目标:突破1000粉丝

🌹支持鹤辞:点赞👍,留言👏, 关注💖,收藏🤞  

 51单片机独立按键 按键的基本原理

按键右端接GND,左边接到单片机的IO口,同时接了一个上拉电阻,当按键未按下时,P2.0为高电平(学过模电的人都应该知道为什么吧)当按键按下时,相当于P2.0口与GND相连为 低电平。

按键的消抖(重点)

 可以从上图看到,断开和闭合之间有一些毛刺现象,这样,当我们按键按下时,我们无法判别此时P2.0口到底是高电平还是低电平,所以,这是我们要解决的问。

通常按键消抖有两种方式:

1,软件消抖(简易,省资源,常用)

利用延时程序代码进行消除抖动的一种方式。

2,硬件消抖

 主要利用锁存器来实现按键消抖的一种方式。

3,利用protues实现模拟

仿真视频连接:video-community.csdnimg/vod-84deb4/3a529b43ee9042318901de6572c6a7ac/snapshots/7876adef0122495fa2ba5a2e36e83400-00002.jpg?auth_key=4811481057-0-0-2de201306ecba0f11d6395d528c01996

代码多种编写: 第一种编写: #include <reg52.h> sbit key=P2^0; unsigned char smg[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F}; bit falg=0; unsigned char num=0; void key_scan() { if(key==0&&falg==0) { falg=1; } if(key==1&&falg==1) { num++; falg=0; } } void smg_display() { P3=smg[num]; if(num==10) num=0; } int main() { while(1) { key_scan(); smg_display(); } }

 第二种编写: void key() { if(key_1==0) { Delay10ms(); if(key_1==0) led=~led; } while(!key_1); }

❀❀❀下期:矩阵键盘多种编写

文章制作不易,感谢你的喜欢!点赞👍,留言👏, 关注💖,收藏🤞

下期再见吧🐱‍🏍🐱‍🏍🐱‍🏍🐱‍🏍🐱‍🏍🐱‍🏍

本文标签: 按键单片机多种独立代码