51单片机矩阵键盘原理
- 格式:docx
- 大小:37.25 KB
- 文档页数:5
51单片机原理
51单片机,又称作8051单片机,是一种微控制器,广泛应用
于嵌入式系统中。
它是由英特尔公司在1980年推出的,并成
为了应用最广泛的单片机架构之一。
51单片机采用哈佛架构,具有8位数据总线和16位地址总线。
它内部集成了CPU、RAM、ROM、I/O口等组成部分。
在工
作时,通过外部时钟源供给给单片机提供时钟信号。
CPU是51单片机的核心部件,用于执行程序指令。
51单片机
的指令集支持多种操作,包括算术、逻辑、移位、跳转等。
数据的存储和处理则在RAM中进行,程序的存储则在ROM中。
RAM是51单片机的临时存储器,用于存储程序中的变量和计算结果。
ROM则是只读存储器,用于存储程序指令。
在单片
机启动时,ROM中的程序会被加载到RAM中,并由CPU执行。
I/O口是51单片机与外部设备进行交互的接口。
它可以被配置为输入或输出,用于连接各种传感器、执行器、显示器等外围设备。
通过I/O口,51单片机可以与外部世界进行数据交换和控制。
为了编程和调试51单片机,我们通常使用专用软件和编程器。
这些工具可以将用户编写的程序烧录到51单片机的ROM中,并通过与单片机的通信接口进行通信。
总的来说,51单片机是一种功能强大且应用广泛的微控制器。
它可以用于控制各种嵌入式系统,如家用电器、车辆电子、工业自动化等领域,为我们的生活和工作提供了便利。
实验一矩阵键盘检测一、实验目的:1、学习非编码键盘的工作原理和键盘的扫描方式。
2、学习键盘的去抖方法和键盘应用程序的设计.二、实验设备:51/AVR实验板、USB连接线、电脑三、实验原理:键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。
我们可以通过键盘输入数据或命令来实现简单的人机通信。
1、按键的分类一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。
前者造价低,后者寿命长.目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。
按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。
编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别.全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。
非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成.由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)。
2、按键的输入原理在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。
也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。
此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。
当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能。
因此,键信息输入是与软件结构密切相关的过程。
对于一组键或一个键盘,通过接口电路与单片机相连.单片机可以采用查询或中断方式了解有无按键输入并检查是哪一个按键按下,若有键按下则跳至相应的键盘处理程序处去执行,若无键按下则继续执行其他程序。
51单片机矩阵键盘设计
一、引言
AT89C51单片机矩阵键盘设计是嵌入式系统中一个重要的技术,它的
作用是以矩阵形式把外部按键与MCU相连,使得系统可以对外部的按键进
行检测和响应。
矩阵键盘设计在可编程嵌入式系统的设计中占有重要的地位,如智能交通系统、智能家居系统、航空电子系统等。
本文主要介绍了矩阵键盘设计中硬件电路的设计,包括按键、拉电阻、和矩阵编码等,同时给出系统的控制算法,使得系统可以实现有效的按键
检测和响应。
二、矩阵键盘概述
矩阵键盘是将多个按键排布成列行形式进行连接,一般来说,矩阵键
盘是由按键、拉电阻、矩阵编码器和控制器组成,按键是系统中重要的部件,其作用是将外部输入信号传递给控制器。
拉电阻起到的作用是防止按
键耦合,一般可以使用4.7KΩ拉电阻来防止按键耦合。
矩阵编码器用来
识别按键的状态,通常通过硬件把按键信号编码为数字信号,输入到处理
器或控制器。
控制器用来实现按键信号的检测,通过定义硬件定时器和软
件定时器,实现按键检测和处理。
1、硬件电路设计
应用AT89C51单片机矩阵键盘。
一、任务说明本次的任务是利用51单片机设计一个4*4矩阵键盘输入系统,用16个发光二级管对应16个不同的按键。
每按下一个按键对应的发光二极管就亮。
矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。
在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为N*N个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
最常见的键盘布局如图1所示。
一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。
图1 键盘布局利用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.3各管脚作输入线,以单片机的P1.4-P1.7各管脚作输出线;利用P2、P3口控制灯1-灯16,。
用Proteus绘制其电路原理图(附录一)。
此任务用到了AT89C51芯片,还用到了晶体振荡器、按钮开关、发光二级管以及一些电阻。
这次任务中采用C语言编写程序,在编译过程中设置成自动产生HEX文件,将此文件导入AT89C51中,即可实现相应的功能。
二、原理图绘制说明电路原理图的设计与绘制是整个电路设计的基础,设计一个电路原理图的工作包括:设置电路图图纸的大小,规划电路图的总体布局,在图纸上放置元器件并对元器件进行调整,进行布线和整体布局,最后保存并打印输出等几个步骤。
安装完Proteus后,运行ISIS 7 Professional,在原理图编辑窗口绘制电路图,在该界面下还有预览窗口和元件列表区,在左侧的工具箱中还有模型选择工具栏,方向工具栏及仿真按钮等工具。
其具体的使用步骤如下:1.运行该软件后,新建一个设计文件,设置图纸大小。
选择界面如图2所示。
图2 选择图纸大小界面2.接下来开始查找任务中所用到的元器件,查找界面如图3所示。
图3 元器件查找界面3.将查找的元器件放置到界面中,并进行相应的引脚连线,本次是采用标注的方式进行引脚连接,标注符号相同的表示引脚相连接,具体操作是先将引脚引出一小段导线,右击导线选择放置网络标号,标注标号界面如图4所示。
2021-2021 学年_一_学期山东科技大学电工电子实验教课中心创新性实验研究报告实验工程名称__鉴于51单片机的简略计算器设计_2021年12 月27 日一、实验纲要经过对51单片机汇编指令、STC89C52RC单片机片上各功能模块、常用外面可编程芯片的学习和应用训练,进一步熟习51单片机汇编程序设计,串行总线接口程序设计以及外面可编程芯片的使用方法。
学习创新性实验报告的撰写方法。
二、实验目的1、鉴于STC89C52RC单片机设计制作简略计算器,能达成绝对值小于的有符号整数的加减乘除四那么运算,运算结果均保留小数点后一位。
2、要求有加、减、乘、除、负号、归零、等号键。
3、利用6位LED显示参加运算的数据和运算结果,显示运算结果超限提示,消隐未使用位。
4、鼓舞进行探究。
可在认识实验室器械并能实现题目根本要求的状况下,对题目进行创新设计三、实验场所及仪器、设施和资料:1、实验场所:J11-3242、实验仪器、设施和资料:PC兼容机一台、80C52单片机实验箱一台、2*8键盘一个、6个共阳极的数码管、连线假定干四、实验内容1、实验原理依据功能和指标要求,本系统采纳MCS-51系列单片机为主控机。
经过扩展必需的外头接口电路,实现对计算器的设计。
详细设计以下:〔1〕因为要设计的是简单的计算器,能够进行四那么运算,为了获得较好的显示成效,采纳LED显示数据和结果。
〔2〕此外键盘包含数字键〔0~9〕、符号键〔+、-、×、÷〕、去除键和等号键,故只要要16个按键即可,设计中采纳集成的计算键盘。
〔3〕履行过程:开机显示零,等候键入数值,当键入数字,经过LED显示出来,当键入+、-、*、/运算符,计算器在内部履行数值变换和储存,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。
系统模块图:2、实验内容〔一〕、整体硬件设计本设计采纳AT89C52单片机为主控单元。
矩阵式键盘实验报告矩阵键盘设计实验报告南京林业大学实验报告基于AT89C51单片机4x4矩阵键盘接口电路设计课程院系班级学号姓名指导老师机电一体化设计基础机械电子工程学院杨雨图2013年9月26日一、实验目的1、掌握键盘接口的基本特点,了解独立键盘和矩阵键盘的应用方法。
2、掌握键盘接口的硬件设计方法,软件程序设计和贴士排错能力。
3、掌握利用Keil51软件对程序进行编译。
4、用Proteus软件绘制“矩阵键盘扫描”电路,并用测试程序进行仿真。
5、会根据实际功能,正确选择单片机功能接线,编制正确程序。
对实验结果能做出分析和解释,能写出符合规格的实验报告。
二、实验要求通过实训,学生应达到以下几方面的要求:素质要求1.以积极认真的态度对待本次实训,遵章守纪、团结协作。
2.善于发现数字电路中存在的问题、分析问题、解决问题,努力培养独立工作能力。
能力要求1.模拟电路的理论知识2.脉冲与数字电路的理念知识3.通过模拟、数字电路实验有一定的动手能力4.能熟练的编写8951单片机汇编程序5.能够熟练的运用仿真软件进行仿真三、实验工具1、软件:Proteus软件、keil51。
2、硬件:PC机,串口线,并口线,单片机开发板四、实验内容1、掌握并理解“矩阵键盘扫描”的原理及制作,了解各元器件的参数及格元器件的作用。
2、用keil51测试软件编写AT89C51单片机汇编程序3、用Proteus软件绘制“矩阵键盘扫描”电路原理图。
4、运用仿真软件对电路进行仿真。
五.实验基本步骤1、用Proteus绘制“矩阵键盘扫描”电路原理图。
2、编写程序使数码管显示当前闭合按键的键值。
3、利用Proteus软件的仿真功能对其进行仿真测试,观察数码管的显示状态和按键开关的对应关系。
4、用keil51软件编写程序,并生成HEX文件。
5、根据绘制“矩阵键盘扫描”电路原理图,搭建相关硬件电路。
6、用通用编程器或ISP下载HEX程序到MCU。
51单片机工作原理51单片机是一种常见的微控制器,它在各种电子设备中都有着广泛的应用。
要理解51单片机的工作原理,首先需要了解它的基本结构和工作原理。
51单片机由中央处理器(CPU)、存储器、输入输出端口和定时器等部分组成。
其中,CPU是单片机的核心部分,它负责执行程序指令和控制整个系统的工作。
存储器用于存储程序和数据,输入输出端口用于与外部设备进行通信,定时器用于产生精确的时间基准。
在51单片机工作时,首先需要将程序代码下载到单片机的存储器中。
然后,CPU按照程序指令的顺序逐条执行,完成各种操作。
在执行过程中,CPU会不断地从存储器中读取指令和数据,并根据需要进行运算和逻辑判断。
同时,输入输出端口可以与外部设备进行数据交换,实现与外部世界的通信。
在实际应用中,定时器也扮演着非常重要的角色。
它可以产生各种精确的时间信号,用于控制系统的时序和节拍。
通过定时器,我们可以实现各种精密的定时和计数功能,从而满足不同应用场景的需求。
除了硬件结构外,51单片机的工作原理还与其内部的指令集和编程语言密切相关。
51单片机的指令集非常丰富,可以实现各种复杂的操作和算法。
同时,它支持多种编程语言,如汇编语言和C语言,开发人员可以根据实际需求选择合适的编程方式。
总的来说,51单片机的工作原理涉及到硬件结构、指令集和编程语言等多个方面。
只有深入理解这些内容,才能真正掌握51单片机的工作原理,并能够灵活应用于各种实际项目中。
希望通过本文的介绍,读者能够对51单片机的工作原理有一个初步的了解,同时也能够对其在实际应用中的重要性有所认识。
当然,要真正掌握51单片机,还需要进一步的学习和实践。
希望大家能够在学习和工作中不断积累经验,不断提升自己的技术水平。
这样才能更好地应用51单片机,为电子设备的开发和应用做出更大的贡献。
电气与电子信息工程学院单片机课程设计设计题目:简易电子计算器专业班级: 12级电信(1)班学号: *************名:**指导教师:章磊艾青设计时间:2014/06/03~2014/06/13 设计地点:K2—407课程设计任务书2013 ~2014 学年第2学期学生姓名:杨峥专业班级:电子信息工程技术(专)2012(1)班指导教师:艾青、章磊工作部门:电气学院电信教研室一、课程设计题目:单片机课程设计1. 出租车计价器系统设计2. 医院住院病人呼叫器的设计3. 作息时间控制器4. 数字温度计的设计5. 火灾报警器的设计6. 电子密码锁7. 电子计算器8.学生自选二、课程设计内容1. 以单片机为核心器件,构造系统;2. 熟悉、掌握各种外围接口电路芯片的工作原理和控制方法;3. 熟悉、掌握单片机汇编语言的软件设计方法;4. 熟悉、掌握印刷电路板的设计方法;5. 根据具体设计课题的技术指标和给定条件,能独立而正确地进行方案论证和电路设计,要求概念清楚、方案合理、方法正确、步骤完整;6. 学会查阅有关参考资料和手册,并能正确选择有关元器件和参数;7. 编写设计说明书,参考毕业设计论文格式撰写设计报告(5000字以上)。
三、进度安排2.执行要求智能电子产品设计制作共8个选题,每组不超过7人,为避免雷同,在设计中每个同学所采用的方案不能一样。
四、基本要求(1)进行方案论证并根据要求确定系统设计方案;(2)绘制系统框图和电气原理草图,程序流程图;(3)对相关电路进行电路参数计算和元器件选择;(4)进行软件汇编并调试;(5)利用Proteus和Keil uVision2对系统进行联调;(6)绘制系统原理总图,列出原器件明细表;(7)画出软件框图,列出程序清单;(8)写出使用说明书;(9)对设计进行全面总结,写出课程设计报告。
五、课程设计考核办法与成绩评定第1章方案的选择与概述1. 单片机概述当今时代,是一个新技术层出不穷的时代。
单片机按键实验报告篇一:单片机按键扫描实验报告键盘扫描一.实验目的(1)掌握矩阵键盘接口电路和键盘扫描编程方法。
(2)掌握按键值处理与显示电路设计。
二.实验任务(1)设计4*4键盘,编写各个键的特征码和对应的键值(0~F);(2)编程扫描按键,将按键对应的数字值使用数码管显示出来。
三.实验电路及连线方法1.采用动态显示连线方法:电路由2 片74LS573,1 个六字一体的共阴数码管组成。
由U15 输出段选码,U16 做位选码,与单片机的采用I/O 口连接方式,短路片J22 连接P2.0,J23 连接P2.3,做输出信号锁存。
(实际电路连接是d7-d6-d5-d4-d3-d2-d1-d0?h-c-d-e-g-b-a-f)。
PW12 是电源端。
2.键盘电路连线方法:电路由16 个按键组成,用P1 口扩展4×4 行列式键盘。
J20 是键盘连接端,连接到P1 口。
J21 是行列键盘、独立键盘选择端,当J21 的短路片连接2-3脚时,构成4×4 行列式键盘;当J21 的短路片连接2-1 脚时,可形成3×4 行列式键盘,4 个独立式按键S4、S8、S12、S16,这4 个独立按键分别连接P1.4~P1.7;其他12 个键3×4 行列式键盘。
PW15 是电源端。
四.编程思路1.采用反转法识别按键的闭合。
2.采用动态显示将键值显示出来。
五.算法流程图六.资源分配1.用P1口进行查找按键2.用R3做键值指针3.用R1做动态显示为选码指针。
4.R5为延时指针。
七.程序设计KPIN:ORG MOV MOV ANL MOV 0000H P1,#0F0H A,P1 A,#0F0H B,AMOVP1,#0FHMOVA,P1ANLA,#0FHORLA,BCJNE A,#0FFH,KPIN1AJMP EXITKPIN1: MOVB,AMOVDPTR,#TABKPMOVR3,#0KPIN2: MOVA,R3MOVC A,@A+DPTRCJNE A,B,KPIN3MOVA,R3LOOP: MOVR1,#0FEH;键盘动态显示 LOOP1: MOVA,R3ANLA,#0FHMOV DPTR,#TABMOVC A,@A+DPTRCLRP2.0CLRP2.1MOVP0,ASETB P2.0NOPCLRP2.0LOOP2: MOVA,R1;位选码MOVP0,ASETB P2.1MOVR5,#250LOOP3: DJNZ R5,LOOP3CLRP2.1SJMP LOOPKPIN3: INCR3CJNE A,#0FFH,KPIN2EXIT: RETTABKP: DB0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBHDB 0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFHTAB: DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FHDB 79H,33H,7CH,3BH,1BHEND八.调试出现的问题及解决问题1:程序正常运行,但按键显示出现乱码解决:动态显示笔形码错误,并改正。
《电子系统设计课程设计》项目设计书项目名称打地鼠小组成员1小组成员2小组成员3专业任课教师成都理工大学信科院电子系2013年6月1项目名称,并简要说明应用背景。
项目名称:打地鼠应用背景:打地鼠游戏是人们生活中常见的一种休闲小游戏。
此游戏玩法简单,考验人们的反应速度。
开发者可以根据人们兴趣开发出具有多功能的打地鼠游戏,比如升级、道具、过关等,增加游戏的趣味性。
2项目设计需求(包括功能描述和性能设计指标)功能描述:1.启动系统,液晶屏第一排随机显示一个1-9的数字,显示地鼠(Ö)或地雷(*),中间显示剩余时间,右边显示分数;液晶屏第二排显示游戏的英文名称——打地鼠。
2.开始游戏后,在背景音乐伴随下显示“Ready Go”,之后正式进入游戏游戏历时2min,随着时间的增加,数字显示速度加快,游戏中课随时按K10键暂停,再次按则恢复游戏。
3.进入游戏界面后,随机产生地鼠和地雷(地雷产生的概率为10%),但随着时间的增加,地雷出现的概率会增加,数字更新的速度也越快。
按键分别对应独立键盘的9个按键,按下某个键即代表击打相应位置。
4.若击中地鼠:正常情况下分数加1,若在较短时间(实际为地鼠产生到消失的前一半时间内)击中,则“快速反应,双倍加分”,即分数加2。
若击中地雷,则分数减1,若未按下相应键,则分数加1。
5.游戏结束,背景音乐停止,保留最高分,分数和时间在按复位后刷新。
性能设计指标:能通过复位,玩家可以持续玩游戏。
自动保存和人为清除游戏数据。
3设计方案3.1 系统设计框图及原理阐述设计框图:原理阐述:1)复位电路复位条件:89C52单片机复位需要一个长达24个时钟周期的高电平才能复位,复位的作用就是使程序的指针指向地址0,每个程序都是从地址0开始执行,所以复位的概念就是让程序从头开始执行。
复位原理:该复位电路具有上电复位的功能,此功能是由C3实现的。
当系统上电时C3有一个充电放电的过程,放电过程会产生一个高电平,放电的时间根据公式(RCt )计算。
实验五矩阵键盘实验一、实验内容1、编写程序,做到在键盘上每按一个数字键(0-F)用发光二极管将该代码显示出来。
按其它键退出。
2、加法设计计算器,实验板上有12个按键,编写程序,实现一位整数加法运算功能。
可定义“A”键为“+”键,“B”键为“=”键。
二、实验目的1、学习独立式按键的查询识别方法。
2、非编码矩阵键盘的行反转法识别方法。
三、实验说明1、MCS51系列单片机的P0~P3口作为输入端口使用时必须先向端口写入“1”。
2、用查询方式检测按键时,要加入延时(通常采用软件延时10~20mS)以消除抖动。
3、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
行反转法识别闭合键时,要将行线接一并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口在各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上输入值,那么,在闭合键所在行线上的值必定为0。
这样,当一个键被接下时,必定可以读得一对唯一的行线值和列线值。
由于51单片机的并口能够动态地改变输入输出方式,因此,矩阵键盘采用行反转法识别最为简便。
行反转法识别按键的过程是:首先,将4个行线作为输出,将其全部置0,4个列线作为输入,将其全部置1,也就是向P1口写入0xF0;假如此时没有人按键,从P1口读出的值应仍为0xF0;假如此时1、4、7、0四个键中有一个键被按下,则P1.6被拉低,从P1口读出的值为0xB0;为了确定是这四个键中哪一个被按下,可将刚才从P1口读出的数的低四位置1后再写入P1口,即将0xBF写入P1口,使P1.6为低,其余均为高,若此时被按下的键是“4”,则P1.1被拉低,从P1口读出的值为0xBE;这样,当只有一个键被按下时,每一个键只有唯一的反转码,事先为12个键的反转码建一个表,通过查表就可知道是哪个键被按下了。
51单片机按键使用及注意事项如下:
1.按键工作原理:按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时,开
关断开。
在开发板上使用的按键及内部简易图按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态,如果按键按下,初始导通状态变为断开,初始断开状态变为导通。
2.按键电路接法:上拉是为了让引脚默认是高电平,但是上拉的力量扛不住接地,所以按键没有按
下时上拉的力量保证了IO引脚输入为1,而按下后绝对为0。
3.按键抖动:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械点的弹性
作用,按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,因而在闭合和断开的瞬间均伴随着一连串的抖动。
抖动时间的长短由按键的机械特性决定的,一般为5ms到10ms。
4.按键消抖:有两种方式,一种是硬件消抖,另一种是软件消抖。
5.注意事项:CPU通过监测按键连接的IO引脚的电平输入是1还是0来得知外部有没有人按下
这个按键。
CPU在按键被按下的一瞬间检测到的信号是很多次的忽高忽低的电平信号,这种信号是不稳定
的。
因此,需要使用按键消抖的算法使单片机获取到正常稳定的信号。
总的来说,51单片机按键使用需要注意按键的电路接法、抖动以及消抖等问题。
在使用过程中,需要遵循相应的原理和注意事项,以确保按键的正常工作。
51单片机矩阵键盘原理
51单片机矩阵键盘原理
矩阵键盘是一种常用的输入设备,可以通过少量的I/O口控制多个按键。
51单片机作为嵌入式系统中常用的控制器,也可以通过控制矩阵键盘来实现输入功能。
1. 矩阵键盘的结构
矩阵键盘由多个按键组成,每个按键都有一个引脚与其他按键共用,形成了一个按键矩阵。
例如,4x4的矩阵键盘有16个按键,其中每行和每列各有4个引脚。
2. 矩阵键盘的工作原理
当用户按下某一个按键时,该按键所在行和列之间会形成一个电路通路。
这时,51单片机可以通过扫描所有行和列的电路状态来检测到用户所按下的具体按键。
具体实现过程如下:
(1)将每一行引脚设置为输出状态,并将其输出高电平;
(2)将每一列引脚设置为输入状态,并开启上拉电阻;
(3)逐一扫描每一行引脚,当发现某一行被拉低时,则表示该行对应的某一个按键被按下;
(4)记录下该行号,并将该行引脚设置为输入状态,其余行引脚设置为输出状态;
(5)逐一扫描每一列引脚,当发现某一列被拉低时,则表示该列对应的是刚才所记录下的行号及其对应的按键;
(6)通过行号和列号确定具体按键,并进行相应的处理。
3. 代码实现
下面是一个简单的51单片机矩阵键盘扫描程序:
```c
#include <reg52.h> //头文件
sbit row1 = P1^0; //定义引脚
sbit row2 = P1^1;
sbit row3 = P1^2;
sbit row4 = P1^3;
sbit col1 = P1^4;
sbit col2 = P1^5;
sbit col3 = P1^6;
sbit col4 = P1^7;
unsigned char keyscan(void) //函数定义
{
unsigned char keyvalue; //定义变量
while(1) //循环扫描
{
row1=0;row2=row3=row4=1; //设置行状态 if(col1==0){keyvalue='7';break;} //读取按键值 if(col2==0){keyvalue='8';break;}
if(col3==0){keyvalue='9';break;}
if(col4==0){keyvalue='/';break;}
row2=0;row1=row3=row4=1;
if(col1==0){keyvalue='4';break;}
if(col2==0){keyvalue='5';break;}
if(col3==0){keyvalue='6';break;} if(col4==0){keyvalue='*';break;}
row3=0;row1=row2=row4=1; if(col1==0){keyvalue='1';break;} if(col2==0){keyvalue='2';break;} if(col3==0){keyvalue='3';break;} if(col4==0){keyvalue='-';break;}
row4=0;row1=row2=row3=1; if(col1==0){keyvalue='C';break;} if(col2==0){keyvalue='0';break;} if(col3==0){keyvalue='=';break;} if(col4==0){keyvalue='+';break;}
}
return keyvalue; //返回按键值
}
void main() //主函数
{
unsigned char key;
while(1) //循环读取
{
key = keyscan(); //调用函数
}
}
```
以上代码实现了一个简单的矩阵键盘扫描程序,可以通过调用
`keyscan()`函数来获取用户所按下的具体按键值。
在实际应用中,我们可以根据具体需求进行相应的修改和扩展。
总之,51单片机矩阵键盘的原理是通过扫描行和列引脚状态来检测用户所按下的具体按键,并进行相应的处理。
这种方式可以有效地减少I/O口的使用量,提高系统的灵活性和可扩展性。