51单片机矩阵式键盘的编程方法

发布者:ping777最新更新时间:2021-01-13 来源: eefocus关键字:51单片机  矩阵式键盘  编程方法 手机看文章 扫描二维码
随时随地手机看文章

根据电路原理图,键盘扫描方法是:行线P1O~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P1O-P13)全部输出低电平,此时读入列线数据,若列线全为高电平说明没有键接下,若有列线为低电平则调用延时程序来去除按键抖动。延时后再读入列线看是否有低电平,如果列线数据还是有低电平,说明确实有键接下,接下来便是确定键值。下面以第二行的S5键为例,看接下S5后我们应该怎么得到这个键值。当判定确实有键接下之后,将行线轮流置为低电平,根据读入列线的数据可以确定键值。首先,单片机将P1O置为低电平,P11~P13置为高电平,此时读出的列线数据全为高电平,说明第一行没有键接下;接着单片机将P11输出低电平,P1O、P12、P13置为高电平,再读列线数据,此时的列线数值为1011(OxOB),即P11与P15交叉点上的按键S5被接下,而OxOB就代表S5的键值了。转到S5键功能处理子程序就可以达到目的。




2.程序流程

软件流程图如下图所示。51单片机综合学习系统资源丰富,板内有:8位LED数码管、32路LED、4x4矩阵键盘、4个直控按键盘、蜂鸣器喇叭、继电器试验、I2C总线接口、SPI总线接口、l60x液晶、l28x64液晶、红外接收头接口、支持PS/2接口的104键标准键盘、步进电机驱动接口、ADCO832模/数转换接口、PC817光电耦合器、串行时钟芯片DSl302、温度传感器DSl8B2O按口、RS232串口通讯、外扩展接口等,可以方便地接更多的实验资源。




3. 软件代码

相关的软件代码如下:

/* 矩阵键盘测试程序*/







关键字:51单片机  矩阵式键盘  编程方法 引用地址:51单片机矩阵式键盘的编程方法

上一篇:MCS-51单片机中断响应的三种方法解析
下一篇:51单片机串行通信的原理解析

推荐阅读最新更新时间:2024-11-17 02:59

STC15W4K48S4的直接USB-ISP功能!51单片机最方便的下载
正在检测目标单片机 ... 单片机型号: STC15W4K48S4 固件版本号: 7.3.1T 当前芯片的硬件选项为: . 下次冷启动后系统时钟源为内部IRC振荡器 . 内部振荡器的频率未调节 . 掉电唤醒定时器的频率: 37.133KHz . P3.2和P3.3与下次下载无关 . 上电复位时增加额外的复位延时 . 复位引脚用作普通I/O口 . 检测到低压时复位 . 低压检测门槛电压 : 2.63 V . 低压时不能进行EEPROM操作 . CPU-Core最高工作电压 : 2.78 V . 上电复位时,硬件不启动内部看门狗 . 上电自动启动内部看门狗时的预分频数为 : 256 . 空闲状态时看门狗定
[单片机]
STC15W4K48S4的直接USB-ISP功能!<font color='red'>51单片机</font>最方便的下载
【自学51单片机】6 ---数码管动态显示、中断系统介绍
1、数码管的动态显示 1.1 动态显示基本原理 静态显示:通过三八译码器控制一个数码管显示数值。 动态显示:又称动态扫描,通过轮流点亮数码管(一个时刻只有一个点亮),利用人眼视觉的余晖效应,让人看数码管看起来全部点亮。 如何实现动态显示? 把数码管的整体扫描时间(整体扫描时间 =单个数码管点亮时间*数码管个数)限定在10ms以内即可。当刷新频率大于100HZ,即刷新时间小于10ms,就可做到无闪烁。设计程序时选一个接近10ms,又比较规整的值就可。 1.2 数码管动态显示秒表(0~999999) 程序流程图 程序 #include reg52.h sbit ADDR0 = P1^0; sbit ADDR1 = P1
[单片机]
【自学<font color='red'>51单片机</font>】6 ---数码管动态显示、中断系统介绍
使用51单片机设计一个带语音报数功能的抢答器原理图
现在市面上的抢答器类型很多,带有语音功能的抢答器不是很多且其价格较贵。本文介绍一款带有语音报数功能的抢答器。抢答器由单片机(AT89S52)、语音芯片(ISD2560)、20cm的LED及少数外围元件构成。由于采用单片机,外围电路非常简单,但是功能不比一般的抢答器少。 此抢答器具有防作弊功能、语音报数功能、两组显示功能 。
[单片机]
使用<font color='red'>51单片机</font>设计一个带语音报数功能的抢答器原理图
基于51单片机的MODBUS通信C语言程序(从机)
#include reg52.h typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; #define TIMER_HIGHT 0xf8 #define TIMER_LOW 0xcd sbit bRunLED =P3^4; //运行指示灯 sbit bWatchDog =P1^7; //看门狗复位 sbit b485Send= P1^3; //75LBC184 发送接收控制 uint32 dwTickCount,dwIntTick; //时钟 uint8 i
[单片机]
51单片机串口通信中的检错方法
0 引言 对于基于flash控制器的8051的芯片结构,一般在进行数据传输时,都是先通过串口将数据传送到flash控制器的buffer中。由于buffer的大小为512 bytes,所以每次传输的最大数据量为512bytes。本文中所讨论的三种检错方法的传输数据量均为512 bytes。 1 检错方式 基于8051的串口数据通信系统的硬件开发平台框图如图1所示。利用该平台进行数据传输时,通常有三种数据检错方式。 1.1 奇偶校验 奇偶校验是检错中比较常见的一种方法。它利用数据中的1的个数作为检错的标志位,若1的个数为奇数个,则错误检测的标志位为1,若1的个数为偶数,则错误检测的标志位为0。在发送端和接收端同时检测
[单片机]
<font color='red'>51单片机</font>串口通信中的检错<font color='red'>方法</font>
基于51单片机89C51的超声波LCD1602液晶显示距离C语言程序
#include AT89X51.H #include intrins.h #define uint unsigned int #define uchar unsigned char sbit rs=P1^2; sbit rw=P1^1; sbit en=P1^0; char idata disp_buf1 ;//1602显示缓冲区1(即上排16个字符) char idata disp_buf2 ;//1602显示缓冲区2(即下排16个字符) uchar code table = celiang ok ! ; uchar i; char idata jul
[单片机]
51单片机汇编——延时和点灯
前言 这篇文章主要是看视频学习51汇编,但是我的环境总是配置不好,出现了这个问题(keil2+vdmagdi.exe+Proteus),有懂的小伙伴可以帮助一下我 ^.^ 一、延时程序 1.1 延时程序的简介和分类 在单片机的控制应用中,常有延时的需要,CPU 过一段时间再去做某件事,称之为延迟。延时有两种方法,即软件延时和硬件延时 硬件延时是通过定时/计数器(中断程序)来实现的,这种方法不占用 CPU 的工作时间 软件延时一般采用循环程序,通过 CPU 执行一个具有固定延迟时间的循环体来实现的 1.2 软件延时 1、机器周期数 延时程序的延时时间主要与两个因素有关,一是所用晶振,二是延时程序中的循环次数,一旦晶振确定之后
[单片机]
51单片机与蓝牙模块连接
不久前开始学习使用蓝牙模块,在模块与51单片机连接的过程中出现了非常多的问题,我想应该也是很多新手和我一样会遇到这样的问题,因此特地写这篇文章,想分享下在学习过程中遇到的问题以及解决方法。 此次学习用到模块是HC-06蓝牙模块,如下图: 该模块某宝有售,价格约为20RMB。某宝上的HC-06有两种,分别是带引脚和不带引脚的,建议新手购买带引脚的。我从试验开始到成功,一共使用了四块蓝牙模块。第一次买的是带引脚的,但是模块本身是坏的;第二次买的是不带引脚的,但是由于自身的焊功有限,导致模块损坏,无法使用;第三次是朋友送的蓝牙4.0,由于某些原因无法使用,在此也特别感谢朋友送我蓝牙;第四次购买,就是上图所示的蓝牙,才最终完成了试
[单片机]
<font color='red'>51单片机</font>与蓝牙模块连接
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved