一、 实验目的:

(一) 熟悉单片机 I/O 口的输入控制;
(二) 熟悉开发板上单片机 I/O 口与数码管、 独立按键的电路连接;
(三) 掌握 keil C 软件的使用;
(四) 掌握独立按键的应用;
(五) 掌握按键的消抖原理。

二、 主要仪器设备及耗材:

(一) 电脑一台;
(二) 单片机开发板一套。

三、 实验原理

(一) 键盘的分类
键盘分编码键盘和非编码键盘。 键盘上闭合键的识别由专用的硬件编
码器实现, 并产生键编码号或键值的称为编码键盘, 如计算机键盘; 而靠
软件编程来识别的称为非编码键盘。 在单片机组成的各种系统中, 用的最
多的是非编码键盘。 也有用到编码键盘的。
非编码键盘有分为: 独立键盘和行列式(又称为矩阵式) 键盘。
(二) 独立按键
独立按键, 按键一端接地, 另一端与 I/O 引脚相连, 按键按下为低电平,
未按下为高电平, 其电路连接方式如图 3.1 所示。第 11 页 共 58

(三) 按键消抖

按下按键或松手的时候, 单片机 I/O 得到的理想波形与实际波形如图

因此, 按键在闭合和断开时, 触点会存在抖动现象。
1.为什么要消抖?
如图 3.2 所示, 在按键被按下的短暂瞬间, 由于硬件上的抖动, 往往会
产几毫秒的抖动, 在这时候若采集信号, 势必导致误操作, 甚至系统崩溃;
同样, 在释放按键的那一刻, 硬件上会相应的产生抖动, 会产生同样的后
果。 因此, 在模拟或者数字电路中, 我们要避免在最不稳定的时候采集信
号, 进行操作。
2.如何消抖?
一般可以采用延时、 N 次低电平计数、 低通滤波等方式进行消抖。 在单
片机应用中, 一般采用延时进行消抖, 其消抖顺序如下:
(1) 检测到信号, 如: if(k0)
(2) 延时 5ms, 消抖动, 如: delay(5);
(3) 继续检测信号, 确认是否被按下, 如: if(k0)
①是, 则开始等待释放, 如: while(!k);
②否, 则继续检测信号。

四、 实验内容及步骤

(一) 实验内容
利用所学的单片机知识及电路知识编程实现单片机 I/O 口检测按键输
入电平。
1.选中 8 位数码管的其中 1 位数码管, 当独立按键 1 每按下一次, 数码
管加一(按下期间加 1) , 范围为 0—F;
2.选中 8 位数码管的另 1 位数码管, 当独立按键 2 每按下一次, 数码管
减一(松手之后减 1) , 范围为 F—0;
3.按下独立按键 3 期间, 流水灯以 600ms 的速度流动;
4.按下独立按键 4, 松手之后, 8 个 LED 灯作一次花样循环。
注意: 以上 4 个功能需要在同一个程序中完成。
(二) 实验步骤
1.根据电路原理图编写 C 程序, 调试并烧写入单片机;

#include <reg51.h>
/*
1.选中 8 位数码管的其中 1 位数码管, 当独立按键 1 每按下一次, 数码管加一(按下期间加 1) , 范围为 0—F;2.选中 8 位数码管的另 1 位数码管, 当独立按键 2 每按下一次, 数码管减一(松手之后减 1) , 范围为 F—0;
3.按下独立按键 3 期间, 流水灯以 600ms 的速度流动;
4.按下独立按键 4, 松手之后, 8 个 LED 灯作一次花样循环。
*/#define uint unsigned intsbit a=P2^2;
sbit b=P2^3;
sbit c=P2^4;#define smg1 c=1;b=1;a=1//选中第一个数码管
#define smg2 c=1;b=1;a=0//选中第二个数码管char code LED[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};//LED流水灯char code number[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,0x77, 0x7c, 0x39, 0x7e, 0x79, 0x71};//用于数码管显示0-Fcode char led[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xef, 0xdf, 0xbf, 0x7f, //LED花式流水灯0x7e, 0xbd, 0xdb, 0xe7,0xdb, 0xdb, 0xe7, 0x7e,0x00};char k1_i=0;//用于加法
char k2_i=15;//用于减法sbit k1 = P3^1;
sbit k2 = P3^0;
sbit k3 = P3^2;
sbit k4 = P3^3;
//  延迟函数,单位毫秒
void delay(uint ms)
{char i;while(ms--){for(i=0; i<110; i++);}
}void method_1(); //方式一
void method_2(); //方式二
void method_3(); //方式三
void method_4(); //方式四void main()
{while(1){if(k1==0){method_1();}else if(k2==0){method_2();}else if(k3==0){method_3();}else if(k4==0){method_4();}} }void method_1()//选中 8 位数码管的其中 1 位数码管, 当独立按键 1 每按下一次, 数码管加一(按下期间加 1) , 范围为 0—F;
{smg1;delay(5);if(k1==0){P0 = number[k1_i];while(!k1);k1_i++;if(k1_i == 16) k1_i = 0;}
}void method_2()//选中 8 位数码管的另 1 位数码管, 当独立按键 2 每按下一次, 数码管减一(松手之后减 1) , 范围为 F—0;
{smg2;delay(5);if(k2==0){P0 = number[k2_i];while(!k2);k2_i--;if(k2_i == -1) k2_i = 15;}       }void method_3()//按下独立按键 3 期间, 流水灯以 600ms 的速度流动;
{char i;delay(5);if(k3==0){   for(i=0; i<8; i++){while(k3);         P2 = LED[i];delay(600);}       }
}void method_4()//按下独立按键 4, 松手之后, 8 个 LED 灯作一次花样循环。
{char i;delay(5);if(k4==0){while(!k4);for(i=0; i<18; i++){P2 = led[i];delay(200);}     }
}

2.观察实验结果, 验证程序是否正确。
五、 思考题: 画图说明矩阵键盘的结构是怎样的?

单片机:独立按键的应用实验相关推荐

  1. 单片机独立按键模块(含短按,长按,连发功能)

    最近看了很多按键扫描的文章,发现各有长处,后来自己花了一点时间做了一个单片机独立按键扫描的模块,此模块优点颇多,支持短按,长按,连发功能,只要配置相关结构体就可以实现这些功能,唯一的缺点是不支持多按键 ...

  2. 51单片机-独立按键控制LED

    1.   51单片机独立按键的位置: 独立按键的定义:独立按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开: 在整个51开发板的左下 ...

  3. 独立按键和矩阵按键c语言,单片机独立按键与矩阵按键原理图

    当前位置:电工之家 > 电工知识 > 单片机 > 正文 单片机独立按键与矩阵按键原理图 时间:2017-02-22 12:40 来源:电工之家 单片机独立按键与矩阵按键原理图 独立按 ...

  4. 51单片机 | 独立按键实验

    文章目录 一.按键介绍 二.硬件设计 三.软件设计 四.实验现象   开发板上板载 4 个独立按键.通过开发板上的独立按键 K1 控制 D1 指示灯亮灭.通过独立按键实验来介绍 IO 口作为输入的使用 ...

  5. 51单片机——独立按键实验,小白讲解,相互学习

    按键介绍:         按键是一种电子开关,使用时轻轻按开关按钮就可式开关接通,当松手时,开关断开.开发板上使用的按键及内部简易图如下图: 按键管脚两端距离长的表示默认是导通状态,距离短的默认是断 ...

  6. 51单片机—独立按键的控制

    目录 一.独立按键的介绍 1.按键介绍 2.按键原理图 3.按键抖动 4.按键的消抖 二.独立按键控制LED指示灯亮灭 三.按键实验视频 总结 一.独立按键的介绍 1.按键介绍 轻触按键,相当于一种电 ...

  7. 51单片机独立按键和矩阵按键实现

    这里写目录标题 独立按键实验 矩阵按键实验 独立按键实验 按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开.我们开发板上使用的按键及内部简易图如下图所示 管脚与管脚之间( ...

  8. m0单片机io口_51单片机独立按键和矩阵按键实现

    独立按键实验 按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时, 开关断开.我们开发板上使用的按键及内部简易图如下图所示 管脚与管脚之间(注意是距离)距离长的是导通状态,短的是接通状 ...

  9. 普中单片机 独立按键word文档20180923

    第六讲 独立按键 按键是什么东西,我想这个就不必由我向各位阐述了.嗯,如你所见,按键种类繁多,功能有简有繁,极大的充斥着我们的生活.但是无论如何,所有的按键其实都有一个原型,来源于同一种原理,所有的按 ...

最新文章

  1. c语言判断数组里的数据先递增后递减,查找两个有序序数组(一个递增、一个递减)中第K大的数...
  2. 一文看懂循环神经网络-RNN(独特价值+优化算法+实际应用)
  3. Opengl-光照-基本光照-投光物-多光源(现实世界的光可不只有太阳也并不只有一个)
  4. 构建良好的Windows程序
  5. 【Linux】一步一步学Linux——who命令(95)
  6. 【Golang 源码】sync.Map 源码详解
  7. vSAN Health Service-物理磁盘运行状况-物理磁盘运行状况检索问题(2149291)
  8. 自动驾驶—全局定位的学习笔记
  9. [tyvj2032]升降梯上dpspfa
  10. c语言编译器tc2.0,Wintc软件下载
  11. 瑞吉外卖项目(一)软件开发流程设计及环境搭建
  12. 字节跳动裁员不发年终奖致员工与HR薅头发互殴?字节回应来了
  13. Dagger2 使用详解
  14. iOS-No such file or directory没有这个文件
  15. 日本新一轮新冠肺炎限制措施 | 经济学人早报精选20210914
  16. Hbase预分区与优化
  17. 【My Electronic Notes系列——逻辑函数的化简】
  18. Java购买火车票(初识并发)
  19. ppt打印一页6张铺满不留白_无线WiFi双面自动打印省事又省钱,兄弟打印机办公家用两相宜...
  20. 答案原文及理解解释!!二五鱼水八情深,四六相约二定来是什么意思指什么含义怎么理解答!!

热门文章

  1. 欢迎加入高通蓝牙SoC学习小组
  2. phpqrcode 生成带logo的二维码
  3. 苹果手机如何微信多开分身 苹果微信双开教程
  4. 大数据24小时:阿里95亿美元全资收购饿了么,腾讯无人车首次公开亮相北京四环
  5. Vivado 在线调试之 ILA 核
  6. Java酒瓶瓶盖_白酒瓶瓶盖的内塞组件及白酒瓶瓶盖的制作方法
  7. 计算机硬件技术基础(太原理工大学):第四章
  8. 【软件测试】06 -- 软件测试的基本流程
  9. ubuntu14.04搭建Android Studio2.1开发环境activity_main.xml页面不显示虚拟手机的解决办法
  10. SpringBoot支付宝接入实战