本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导。本文章会陆续推出,隔几天一个章节。所使用单片机为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单片机入门之七:按键检测,单片机如何检测按键输入相关推荐

  1. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础

    上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...

  2. 单片机stm32LED流水灯C语言,STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二)...

    STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二) 2019-04-26 13:21:48 19点赞 73收藏 19评论 写在前面的话:本篇是承接上一篇文章,属于小白向. 没看过的朋友点 ...

  3. stc51单片机入门 c语言,STC51单片机入门 (C语言)

    51单片机发展主要历程:AT89C51系列--STC89C52系列--STC90系列--STC11系列--STC12系列--STC15F系列--STC15W系列(最新主流),由于STC12系列功能已经 ...

  4. stc单片机入门c语言,谈谈单片机入门

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "reg52.h" #include"intrins.h" typedef unsigned i ...

  5. 51单片机入门——矩阵按键

    文章目录 1.按键 1.1.独立按键 1.2.矩阵按键 2.按键的扫描与抖动 2.1.独立按键的扫描 2.2.按键抖动与消抖 2.3.矩阵按键的扫描 3.简易计算器 1.按键 1.1.独立按键 常用的 ...

  6. 51单片机入门学习------独立按键控制LED亮灭

    一.独立按键 1.特点:同侧导通,异侧断开 2.独立按键的I/O口  单片机上电后,所有I/O口默认都是高电平.没有按开关时都是高电平,按下后变成低电平. 寄存器通过检测高低电平检测按键是否被按下 1 ...

  7. 51单片机入门——16路抢答器

    文章目录 设计要求 电路原理图 硬件原理 时钟信号(晶振) 矩阵按键与独立按键 代码解析 设计要求 同时为16支参赛队提供抢答功能,抢答成功后应能通过数码管显示出参赛队号数,同时点亮发光二极管示意抢答 ...

  8. 51单片机入门基础介绍

    51单片机入门基础介绍 文章目录 51单片机入门基础介绍 前言 常用元器件 发光二极管 数码管 LED数码管的显示方式 按键 定时计数器 串行口控制寄存器SCON 中断系统 中断源及中断请求 中断允许 ...

  9. 51单片机入门学习笔记(上)

    笔记整理自B站UP主江科大自化协教程<51单片机入门教程-2020版 程序全程纯手打 从零开始入门> 所用单片机为普中51 STC89C52单片机2022新款,文中所提到的调试现象及结果也 ...

最新文章

  1. 订单管理之更新订单表状态数据
  2. C++11 auto 关键字学习1
  3. Angular项目构建指南 - 不再为angular构建而犹豫不决(转)
  4. 深入浅出的webpack4构建工具--webpack4+react构建环境(二十)
  5. Word2010双栏中某一处改变为单栏后,无法撤销还原为原来的双栏格式的解决方案
  6. 19) maven 项目结构:聚集
  7. 【三】MongoDB文档的CURD操作
  8. bresenham算法画圆mfc实现_kd-tree理论以及在PCL 中的代码的实现
  9. 【火炉炼AI】机器学习045-对股票数据进行隐马尔科夫建模
  10. 中国天气数据,中国地面气象站要素清单
  11. Android studio——百度地图
  12. while循环结构的用法
  13. 拆一台微型计算机步骤,台式微型计算机拆装.doc
  14. layui多文件一次性上传案例
  15. 计算机听音乐没有声音怎么回事,笔记本电脑听音乐没有声音怎么办
  16. Qt鼠标相对位置、绝对位置、窗口位置、控件位置、控件大小、控件绝对位置
  17. 百脑汇 Ghost_XP_SP3 电子城国庆版 2012.10
  18. 房价必然增长的十个原因
  19. swf文件格式1(中文翻译版)
  20. 查看ERC20的精度

热门文章

  1. 关于投资收益(工薪青年投资理财买房炒股必看)
  2. python实现数学函数图像
  3. 背下来就是电脑高手(转)
  4. PHP:PHP与XML
  5. 从零搭建一个无人驾驶系统 —— 线控底盘介绍
  6. RTMP流媒体协议互联网直播/点播平台EasyDSS如何使用 ReverseProxy 中断 flv 流达到自动停播的效果?
  7. Stata 字符变量处理
  8. CURL GITLAB API
  9. Android中apk加固完善篇之内存加载dex方案实现原理(不落地方式加载)
  10. CDN判断及绕过技术