51单片机入门

您所在的位置:网站首页 单片机P32口在哪 51单片机入门

51单片机入门

2024-07-10 02:12| 来源: 网络整理| 查看: 265

独立按键的基本操作 独立按键与矩阵键盘的原理图例题

独立按键与矩阵键盘的原理图

使用独立按键时,J5跳帽应该接到2~3引脚 在这里插入图片描述 基本原理 一般情况下,独立按键有两个引脚,其中一个通过上拉电阻接到单片机的I/O端口,另外一端接地。也就是说,平时按键没有动作的时候,输出的是高电平,如果有按下动作发生,则输出的是低电平。 按键抖动 我们一般只要扫描跟按键引脚相连的I/O端口,如果发现有低电平产生,则判定该按键处于按下状态。有些时候,电路或者外围有电磁干扰,也会使单片机的I/O端口产生低电平,这种干扰信号会让单片机误认为是按键动作。所以,在扫描按键的时候应该做去抖动处理,把干扰信号过滤掉,从而获得准确的按键状态信号。 每次我们按下的时候,会输出低电平,但有可能是外界干扰;需要延时一段时间,之后再判断是不是低电平,如果是,则是按下;如果不是,则是外干扰。

例题

在这里插入图片描述 代码如下:

#include "reg52.h" sbit HC138_A = P2^5; sbit HC138_B = P2^6; sbit HC138_C = P2^7; sbit S7 = P3^0; sbit S6 = P3^1; sbit S5 = P3^2; sbit S4 = P3^3; unsigned char code SMG_NoDot[18] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e, 0xbf,0x7f}; void Delay(unsigned char t) { while(t--); } void Init74HC138(unsigned char n) { switch(n) { case 4: HC138_A = 0; HC138_B = 0; HC138_C = 1; break; case 5: HC138_A = 1; HC138_B = 0; HC138_C = 1; break; case 6: HC138_A = 0; HC138_B = 1; HC138_C = 1; break; case 7: HC138_A = 1; HC138_B = 1; HC138_C = 1; break; case 8: HC138_A = 0; HC138_B = 0; HC138_C = 0; break; } } void ShowKeyNum(unsigned char value)//根据按键在数码管上显示数字 { Init74HC138(6); P0 = 0x01; Init74HC138(7); P0 = value; } void ScanKeys() { if(S7 == 0)//判断是低电平还是高电平 { Delay(200);// 通过延时函数 按键抖动 if(S7 == 0) { while(S7 == 0); ShowKeyNum(SMG_NoDot[1]); } } if(S6 == 0) { Delay(200); if(S6 == 0) { while(S6 == 0); ShowKeyNum(SMG_NoDot[2]); } } if(S5 == 0) { Delay(200); if(S5 == 0) { while(S5 == 0); ShowKeyNum(SMG_NoDot[3]); } } if(S4 == 0) { Delay(200); if(S4 == 0) { while(S4 == 0); ShowKeyNum(SMG_NoDot[4]); } } } void main() { while(1) { ScanKeys(); } }

代码看不懂的,可以看我之前的博客。博客链接



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3