计算机键盘和实验原理图,独立键盘的检测原理及程序实现方法
描述
键盘是单片机应用系统中重要的输入设备,是实现人机对话的纽带。键盘主要分编码键盘和非编码键盘两大类,其中键的开闭的识别由硬件编码器来实现的称为编码键盘,如计算机键盘。而靠软件编程来识别键的开闭的称为非编码键盘,单片机系统中常用的键盘为非编码键盘。
键盘都是由一个一个小按键构成的,按键实际上就是一个开关元件,单片机系统中常用的按键主要有自锁按键和非自锁按键,分别如图1、图2所示。
非编码键盘通常又分为独立键盘和矩阵键盘两大类。所谓独立键盘是指按键在与单片机相连时,每一个按键都与一个单片机单片机的I/O口相连,如图3所示;而对于一些应用系统中若需要较多按键时,采用独立键盘的连接方法,则比较耗费单片机的I/O口,此时我们一般会用到矩阵键盘,如图4所示,16个按键排成4行4列,称为4X4矩阵键盘,如按独立按键法,需要16个I/O口,而按图4的接法只需要8个I/O.
由于在单片机在应用系统中,更多的会用到独立键盘,加之两者的检测原理基本相似,所以这一节里我主要讲解独立键盘的检测原理及程序实现的方法。
1、 按键的检测原理
按键与单片机的连接如图5所示,按键的一端与地相连,另一端直接与单片机的I/O口相连。此时我们在程序中先给I/O口赋值高电平,然后不断的检测I/O口电平的变化。当按键没有被按下时,此I/O口的电平一直为高;当按键被按下时,由于按键的另一端直接与地相连,相当于低电平,此时我们从I/O口读出的即为高电平,程序一旦检测到I/O口由高电平变为低电平时,说明按键被按下,此时马上执行相应的动作,这就是按键检测的原理。
图5 按键与单片机连接图
2、 按键的抖动与消除
由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,与单片机I/O口相接的一端的电压会出现相应的变化,如图6所示。
从图6中我们可以看出,实际的电压波形在按下松手的时候都会出现一定的抖动,经过实验知道,这个一时间大概在5-10ms。所在在做单片机与按键相关的系统时必须考虑消抖的环节。按键消抖的方法有两种,一个是硬件方法 一个是软件的方法,而从节约成本和尽量简化硬件电路的角度出发,一般是采用在程序中加上消抖的方法实现,通常是采用延时的方法。具体的作法是:
检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。后面会结合到程序进行讲解。
下面我写一个简单的程序,功能为:当一个键按下时,让一个发光二极管发光,我们先看下按键模块在实验板上的原理图,如图7和图8所示。
例1 按键检测程序
//功能:当按下S8键时,L1灯发光,松手后,L1灯熄灭。相应程序如例1.
#include 《reg52.h》
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
sbit S1=P3^4;
void main()
{
P3=0xff;
while(1)
{
if(S1==0)
delay(20);//消除按下时的抖动
if(S1==0)
{
D1=0;
while(!S1);//松手检测
delay(20);//消除松手时的抖动
}
else
D1=1;
}
}
例2 按键检测程序
//功能:当每按下S8键时,数码管自动加1,当加到F时又从零开始。
#include《reg52.h》
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;
sbit S1=P3^4;
uchar temp;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z )
{
uint x ,y;
for(x=z;x》0;x--)
for(y=110;y》0;y--);
}
void main()
{
P3=0xff;
wei=1;
P0=0xfe;
wei=0;
temp=0;
while(1)
{
if(S1==0)
{
delay(20);//消除按下时的抖动
if(S1==0)//
{
temp++;
if(temp==16)temp=0;
}
while(!S1);//松手检测,防止temp一次多加
delay(20);//消除松手时的抖动
while(!S1);
}
duan=1;
P0=table[temp];
duan=0;
}
}
打开APP精彩内容
点击阅读全文
计算机键盘和实验原理图,独立键盘的检测原理及程序实现方法相关推荐
- 计算机键盘是编码键盘还是非编码键盘,矩阵按键原理图_矩阵按键扫描实例
键盘分编码键盘和非编码键盘.键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.而靠软件编程来识别的称为非编码键盘. 在一般嵌入式应用中,用的最多的是非编码键盘 ...
- 第五讲:独立键盘、矩阵键盘的检测原理及实现(郭天祥)
说明:此文章仅是我学习过程中的一些记录,如有侵权,请联系我删除,文章中难免有遗漏错误之处,欢迎指出. 目录 一.键盘的分类 二.独立键盘的识别 三.一个读取独立按键状态的程序 四.矩阵键盘的识别 五. ...
- 【STC89C52】独立键盘和矩阵键盘
今天我分享的是基于STC89C52的独立键盘与矩阵键盘实验的学习笔记.希望对你有所帮助! 目录 一.原理图分析 二.独立键盘 三.矩阵键盘 一.原理图分析 键盘在现实生活中很常见,手机的虚拟键盘,电脑 ...
- 基于STM 32、矩阵键盘和独立键盘实现LCD显示的智能计算器(带括号的加减乘除运算、混合四则运算)——普中科技单片机开发试验仪嵌入式开发
0 引言 智能计算器是嵌入式开发的入门项目,本章使用STM 32芯片作为CPU,并将矩阵键盘和独立键盘作为输入外设,LCD1602作为显示屏,实现可输入的可视化智能计算器. 备注:最终生成的可执行HE ...
- STC51入门笔记(郭天祥C语言)---第四节:键盘检测原理及应用实现
声明:本篇文章只是个人知识盲区.知识弱点.重点部分的归纳总结,望各位大佬不喜勿喷.梳理顺序是按照书籍的实际顺序梳理,转载请注明出处. 作者:sumjess 键盘分为编码键盘和非编码键盘.键盘上闭合键的 ...
- 单片机——C51实验含Proteus仿真(独立键盘,矩阵键盘)
文章仅为本人学习记录,如有引用部分会另加说明引用出处 矩阵键盘检测原理:(独立键盘的原理在代码注释中很详细) 线反法的原理为:首先使P1口的高四位输出高电平,P1口低四位输出低电平,这时键盘的行线被拉 ...
- 矩阵键盘简易计算机设计报告,矩阵键盘设计实验报告.doc
南 京 林 业 大 学 实验报告 基于AT89C51 单片机4x4矩阵键盘接口电路设计 课 程 机电一体化设计基础 院 系 机械电子工程学院 班 级 学 号 姓 名 指导老师 杨雨图 201 南京林业 ...
- 矩阵键盘简易计算机设计报告,矩阵键盘设计实验报告
<矩阵键盘设计实验报告>由会员分享,可在线阅读,更多相关<矩阵键盘设计实验报告(21页珍藏版)>请在人人文库网上搜索. 1.南京林业大学实验报告基于 AT89C51单片机 4x ...
- 蓝桥杯实验4--按键之独立键盘(proteus仿真)
开始试试按键的部分 首先说一下什么是按键 按键分为按结构可分为触点式和无触点式两类.开发板上用的是触点式的按键.按键在接口上分类可分为编码键盘和非编码键盘.按键通常使用机械式触点式按键开关,但是由于机 ...
- STC89C52单片机 独立键盘
独立键盘 键盘介绍 键盘是电子系统中人机对话的重要组成部分,是人向机器发出指令.输入信息的必须设备 键盘在单片机应用系统中是使用最广泛的一种数据输入设备.键盘是由多个按键组成的. 按键的工作原理 按键 ...
最新文章
- tplink wr886n v5.0 ttl 接线方法
- PHP MVC设想,MVC框架构思(一)
- SDUT_2119 数据结构实验之链表四:有序链表的归并
- 安川伺服总线通讯方式_MⅢ总线特点 安川伺服选型与应用案例
- LeetCode 2115. 从给定原材料中找到所有可以做出的菜(拓扑排序)
- SpringBoot + Mybatis-puls + ClickHouse增删改查入门教程
- c中static的含义
- stdio.h头文件被更改怎么办
- Python爬虫教程:包图网免费付费素材爬取【附源码】
- Fiddler远程抓包
- gvim 缩写/简写 方法, 缩写 gvim的方法
- 缓存插件 EHCache
- python解压缩-[rar]、[zip]
- 电子元器件行业SCM供应链平台降低管理成本,提升供应链系统效率
- JSP酒店管理系统myeclipse开发mysql数据库bs框架java编程jdbc详细设计
- Android入门,android开发需要什么基础
- 读入一幅图像,对图像分别进行高斯低通、巴特沃兹低通、高斯高通和巴特沃兹高通频域滤波,比较其锐化和平滑效果。
- 秒杀(小米网抢购系统开发实践--“米粉节”背后的故事)
- [COGS 2583]南极科考旅行
- Verilog HDL 硬件描述语言基础
热门文章
- 斐讯T1刷机详细指南
- c语言贪吃蛇游戏代码较难,用C语言编写贪吃蛇代码(难度可选)
- QQ音乐API爬取全过程
- 优酷的视频地址 java_查找各大视频网站真实视频地址方法(乐视优酷会员腾讯56酷6pptv激动网)...
- 陕西西安职高计算机学校有哪些,2019西安中职学校名单(含公办与民办名单)...
- matlab对列矢量求方差,matlab 求标准差 std函数用法
- PTA 基础编程题目集 7-15 计算圆周率 C语言
- 本特利探头330104-00-02-10-02-00
- SEO优化:站群的操作方法有哪些,网站集群系统是什么?
- 《C++沉思录》——类设计核查表、代理类、句柄类