51单片机入门之七:按键检测,单片机如何检测按键输入
本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导。本文章会陆续推出,隔几天一个章节。所使用单片机为ATMEL公司的AT89C52,软件为PROTEUS和KEIL;只提供原理图和KEIL环境下的注释,希望对广大即将接触单片机的人有所帮助,如果有错误欢迎回帖指出或加入QQ群143586739. 微信公众号:micropoint8.
按键是单片机系统中最常用的交互方式,大学课程里介绍按键的时候,分为了两种:独立式按键和矩阵式按键。在单片机初期,各种扩展芯片的匮乏,导致了IO口资源的宝贵。而今各种按键管理芯片层出不穷,可以实现用尽可能少的IO口检测较多的按键,所以本人认为,矩阵式键盘如今存在的意义只是用在教学上了。下面介绍按键检测的方法。
功能描述:
图中有8个按键,8个发光二极管,1个数码管。当按键1按下时,数码管显示数字1,同时第一个发光二极管点亮。依次类推,当第八个按钮按下时,数码管显示8,并且第八个发光二极管点亮。
硬件分析:按键的一端接单片机,另一端接地,按键按下后单片机侧为低电平,所以当单片机检测到相应的端口为低电平时即可判断按键被按下,(实际应用时,为了提高抗干扰能力,在按键侧加上拉电阻)。
#include<reg52.h>
#define uchar unsigned char;
#define uint unsigned int;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管数据表
uchar code ledtable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //发光二极管数据表
uchar i,j,z,temp,num;void delay(z) //延时子程序
{for(j=z;j>0;j--)for(i=110;i>0;i--);
}void main()
{
P0=0x00; //灭数码管
P1=0xff; //P1口置位while(1){temp=P1; //P1口的状态送给变量temptemp=temp&0xff; //与全1做与运算,看是否有键按下while(temp!=0xff) //如果有键按下则进入循环{delay(5); //消除抖动temp=P1; //再次读入P1口的状态temp=temp&0xff;while(temp!=0xff) //再次判断是否有键按下{temp=P1; //读回P1的按键情况 switch(temp){case 0xfe: num=0; //第一个键按下break;case 0xfd:num=1;break;case 0xfb:num=2;break;case 0xf7:num=3;break;case 0xef:num=4;break;case 0xdf:num=5;break;case 0xbf:num=6;break;case 0x7f:num=7; //第八个键按下break;}while(temp!=0xff) //松手检测{temp=P1;temp=temp&0xff;}P0=table[num+1]; //数码管显示P3=ledtable[num]; //发光二极管点亮delay(500); }}}
}
按键2按下:
按键5按下:
按键8按下:
更多电子知识请关注微信公众号:
51单片机入门之七:按键检测,单片机如何检测按键输入相关推荐
- 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...
- 单片机stm32LED流水灯C语言,STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二)...
STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二) 2019-04-26 13:21:48 19点赞 73收藏 19评论 写在前面的话:本篇是承接上一篇文章,属于小白向. 没看过的朋友点 ...
- stc51单片机入门 c语言,STC51单片机入门 (C语言)
51单片机发展主要历程:AT89C51系列--STC89C52系列--STC90系列--STC11系列--STC12系列--STC15F系列--STC15W系列(最新主流),由于STC12系列功能已经 ...
- stc单片机入门c语言,谈谈单片机入门
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "reg52.h" #include"intrins.h" typedef unsigned i ...
- 51单片机入门——矩阵按键
文章目录 1.按键 1.1.独立按键 1.2.矩阵按键 2.按键的扫描与抖动 2.1.独立按键的扫描 2.2.按键抖动与消抖 2.3.矩阵按键的扫描 3.简易计算器 1.按键 1.1.独立按键 常用的 ...
- 51单片机入门学习------独立按键控制LED亮灭
一.独立按键 1.特点:同侧导通,异侧断开 2.独立按键的I/O口 单片机上电后,所有I/O口默认都是高电平.没有按开关时都是高电平,按下后变成低电平. 寄存器通过检测高低电平检测按键是否被按下 1 ...
- 51单片机入门——16路抢答器
文章目录 设计要求 电路原理图 硬件原理 时钟信号(晶振) 矩阵按键与独立按键 代码解析 设计要求 同时为16支参赛队提供抢答功能,抢答成功后应能通过数码管显示出参赛队号数,同时点亮发光二极管示意抢答 ...
- 51单片机入门基础介绍
51单片机入门基础介绍 文章目录 51单片机入门基础介绍 前言 常用元器件 发光二极管 数码管 LED数码管的显示方式 按键 定时计数器 串行口控制寄存器SCON 中断系统 中断源及中断请求 中断允许 ...
- 51单片机入门学习笔记(上)
笔记整理自B站UP主江科大自化协教程<51单片机入门教程-2020版 程序全程纯手打 从零开始入门> 所用单片机为普中51 STC89C52单片机2022新款,文中所提到的调试现象及结果也 ...
最新文章
- 订单管理之更新订单表状态数据
- C++11 auto 关键字学习1
- Angular项目构建指南 - 不再为angular构建而犹豫不决(转)
- 深入浅出的webpack4构建工具--webpack4+react构建环境(二十)
- Word2010双栏中某一处改变为单栏后,无法撤销还原为原来的双栏格式的解决方案
- 19) maven 项目结构:聚集
- 【三】MongoDB文档的CURD操作
- bresenham算法画圆mfc实现_kd-tree理论以及在PCL 中的代码的实现
- 【火炉炼AI】机器学习045-对股票数据进行隐马尔科夫建模
- 中国天气数据,中国地面气象站要素清单
- Android studio——百度地图
- while循环结构的用法
- 拆一台微型计算机步骤,台式微型计算机拆装.doc
- layui多文件一次性上传案例
- 计算机听音乐没有声音怎么回事,笔记本电脑听音乐没有声音怎么办
- Qt鼠标相对位置、绝对位置、窗口位置、控件位置、控件大小、控件绝对位置
- 百脑汇 Ghost_XP_SP3 电子城国庆版 2012.10
- 房价必然增长的十个原因
- swf文件格式1(中文翻译版)
- 查看ERC20的精度