矩阵式键盘接口技术及程序设计

合集下载

键盘接口技术

键盘接口技术
(1)训练目的 ①了解独立式键盘的结构与工作原理。 ②掌握按键的检测与软件消抖方法。 ③学会通过独立式按键操作设置参数的编程方法。
(2)训练任务
本项目要完成的任务是设计一个简易数字调节器。 用两位数码管显示数值,变化范围 00—59。开始时 显示 00,每按下 key1 键一次,数值加 1;每按下 key2 键一次,数值减 1;每按下 key3 键一次,数值 归零;按下 key4 键一次,利用定时器功能使数值开 始自动每秒加 1,再次按下 key4 键,数值停止自动 加 1,保持原来的数。Key1—key4 键均采用独立式 按键。 (3)任务引导
TR0=~TR0;
//启动或停止定时器T0
}
}
}
void main()
{
T0_init();
while(1)
{
keyscan();
display(num);
}
}
void T0_time() interrupt 1 //T0中断服务函数
{
TH0=(65536-50000)/256;
//重装初值
TL0=(65536-50000)%256;
1、矩阵式键盘结构
VCC 10k 10k 10k 10k
P1.0 P1.1 8051 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
2、键盘扫描方式
(逐行)
置低电平,同时读入行(或列)的状态,如果行(
或列)的状态出现非全1状态,这时0状态的行、列
GND
2、独立式键盘接口
结构简单,每个按键接单片机的一条I/O线,通 过对输入线的查询,可以识别每个按键的状态。
I/O
I/O
8051
INT0 INT1

键盘接口原理与设计

键盘接口原理与设计

矩阵键盘的接口实例
8051单片机的P1口作为键盘I/O
口,键盘的列线接到P1口的低4位,
键盘的行线接到P1口的高4位。列线 P1.0~P1.3分别接有4个上拉电阻到 正电源+5V,并把列线P1.0~P1.3设 置为输入线,行线P1.4~P.17设置为
输出线。4根行线和4根列线形成16
个相交点。
矩阵键盘的接口实例
总结:
无论以何种方式编码,均应以处理问题方便为原则, 而最基本的就是键所处的物理位置即行号和列号,它是各 种编码之间相互转换的基础,编码相互转换可通过计算或 查表的方法实现。
键盘扫描方式
编程扫描方式
定时扫描方式
中断扫描方式
编程扫描方式
编程扫描方式是利用CPU完成其他工作的空余调用键 盘扫描子程序来响应键盘输入的要求。在执行键功能程 序时,CPU不再响应键输入要求,直到CPU重新扫描键 盘为止。
(6)显示RAM和显示寄存器。
I/O控制及数据缓冲器
数据缓冲器是双向缓冲器,连接内外 总线,用于传送CPU和8279之间的命令或 数据,对应的引脚为数据总线D0~D7。 I/O控制线是CPU对8279进行控制的引
线,对应的引脚为数据选择线A0;片选线;
读、写信号线。
控制与定时寄存器
控制与定时寄存器用来寄存键盘及显示工
消抖----软件方法
不过一般情况下,通常不对按键释放的 后沿进行处理,实践证明,也能满足一 定的要求。当然,在实际应用中,对按 键的要求也是千差万别的,要根据不同 的需要来编制处理程序,但以上是消除 按键抖动的原则。
简单键盘接口
简单键盘的工作原理
简单键盘的接口电路与编程
实践与思考
简单键盘的工作原理

基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真_课程设计

基于msc51单片机实现的四位4乘4矩阵键盘计算器的C语言程序及其PROTUES电路和仿真_课程设计

单片机原理及接口技术课程设计报告设计题目:计算器设计信息与电气工程学院二零一三年七月计算器设计单片机体积小,功耗小,价钱低,用途灵活,无处不在,属专用运算机。

是一种特殊器件,需通过专门学习方能把握应用,应用中要设计专用的硬件和软件。

最近几年来,单片机以其体积小、价钱廉、面向操纵等独特优势,在各类工业操纵、仪器仪表、设备、产品的自动化、智能化方面取得了普遍的应用。

与此同时,单片机应用系统的靠得住性成为人们愈来愈关注的重要课题。

阻碍靠得住性的因素是多方面的,如组成系统的元器件本身的靠得住性、系统本身各部份之间的彼此耦合因素等。

其中系统的抗干扰性能是系统靠得住性的重要指标。

数学是科技进步的重要工具,数据的运算也随着科技的进步越发变得繁琐复杂,计算器的显现能够大大解放人在设计计算进程中的工作量,使计算的精度、速度取得改善,通过msc51单片机,矩阵键盘和LED数码管能够实现简单的四位数的四那么运算和显示,并当运算结果超出范围时予以报错。

注:这一部份要紧描述题目的背景和意义,对设计所采取的要紧方式做一下简要描述。

字数不要太多,300-500字。

另注:本文要当做模板利用,不要随意更改字体、字号、行间距等,学会利用格式刷。

文中给出的各项内容都要在大伙儿的报告中表现,可采纳填空的方式利用本模板。

1. 设计任务结合实际情形,基于AT89C51单片机设计一个计算器。

该系统应知足的功能要求为:(1) 实现简单的四位十进制数字的四那么运算;(2) 按键输入数字,运算法那么;(3) LED数码管移位显示每次输入的数据和运算结果;(4) 当运算结果超出范围时实现报错。

要紧硬件设备:AT89C51单片机、LED数码管、矩阵键盘。

注:这一部份需要写明系统功能需求,用到的要紧硬件(参考实验箱的说明书)。

2. 整体方案设计计算器以AT89C51单片机作为整个系统的操纵核心,应用其壮大的I/O功能和计算速度,组成整个计算器。

通过矩阵键盘输入运算数据和符号,送入单片机进行数据处置。

单片机教程26课单片机矩阵式键盘接口技术及程序设计

单片机教程26课单片机矩阵式键盘接口技术及程序设计

单片机教程26课:单片机矩阵式键盘接口技术及程序设计发布:2009-4-04 22:40 | 作者:hnrain | 查看:885 次在单片机系统中键盘中按钮数量较多时,为了减少I/O 口的占用,常常将按钮排列成矩阵形式,如图1所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按钮加以连接。

这样,一个端口(如P1 口)就能组成4*4=16个按钮,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就能组成20键的键盘,而直接用端口线则只能多出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

<单片机矩阵式键盘接口技术及编程接口图>矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O 口作为输出端,而列线所接的I/O 口则作为输入。

这样,当按钮没有按下时,所有的输出端都是高电平,代表无键按下。

行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样, 通过读入输入线的状态就可得知是否有键按下了。

具体的识别及编程办法如下所述。

矩阵式键盘的按钮识别办法确定矩阵式键盘上何键被按下介绍一种行扫描法”行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按钮识别办法,如上图所示键盘,介绍过程如下。

判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。

只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按钮之中。

若所有列线均为高电平,则键盘中无键按下。

判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。

其办法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。

在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。

若某列为低,则该列线与置为低电平的行线交叉处的按钮就是闭合的按钮。

4×4_矩阵键盘计算器设计

4×4_矩阵键盘计算器设计

西华大学课程设计说明书题目4×4 矩阵键盘计算器设计系(部) 电气信息学院专业(班级) 自动化3班姓名学号指导教师胡红平起止日期2012.6.10-2012.6.30计算机接口及应用课程设计任务书系(部):电气信息学院专业:09自动化指导教师:日期:2012-6-20西华大学课程设计鉴定表摘要近几年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结合,加以完善。

本任务是个简易得三位数的减法运算,用4×4 矩阵键盘及计算器设计,利用数码管实现255内的减法运算。

程序都是根据教材内和网络中的程序参考编写而成,在功能上还并不完善,限制也较多。

本任务重在设计构思与团队合作,使得我们用专业知识,专业技能分析和解决问题全面系统的锻炼。

关键词:单片机,AT89C51,矩阵键盘,数码管ABSTRACTIn recent years, along with the rapid development of science and technology, the application of SCM is unceasingly thorough, it causes the traditional control test technology increasingly updates. In real-time detection and automatic control of single-chip microcomputer application system, often as a core component to use, only microcontroller aspects of knowledge is not enough, should according to specific hardware combined, and perfects.This task is a simple three digits, subtract with 4 * 4 matrix keyboard and a calculator design, use digital tube realization within the 255 subtract. Program is according to the teaching material and within the network reference and compiled program, on the function is not perfect, restrictions also more. This task focuses on design conception and team cooperation, make us with professional knowledge, professional skills to analyze and solve problems of full system exercise.Keywords:Single-chip,AT89C51,Matrix keyboard,digital tube目录摘要 (I)ABSTRACT (II)第1章课题概述 (1)1.1 课题概述 (1)1.2 课题要求 (2)第2章系统设计 (3)2.1 设计思路 (3)2.2 框图设计 (3)2.3 知识点 (3)2.4 硬件设计 (4)2.4.1 电路原理图 (4)2.4.2 元件选择 (5)2.4.3 PCB制版及效果 (9)2.5 软件设计 (10)2.5.1 程序流程图 (10)2.6 系统仿真及调试 (11)2.6.1 硬件调试 (11)2.6.2 软件调试 (11)2.6.3 软硬件调试 (11)结论 (11)参考文献 (14)附录 (15)第1章课题概述1.1 课题概述随着当今时代的电子领域的发展,尤其是自动化的控制领域,传统的分立元件或数字逻辑电路构成的控制系统正被智能化的单片机所取代。

《矩阵键盘》课件

《矩阵键盘》课件

游戏机按键通常配备震动反馈 功能,提供触觉反馈,增强游 戏体验的真实感。
工业控制设备
工业控制设备如自动 化仪表、数控机床等 也采用矩阵键盘布局 。
工业控制设备的矩阵 键盘通常防水、防尘 ,适应恶劣的工业环 境。
矩阵键盘的设计使得 工业控制设备能够实 现快速、准确的输入 控制指令。
06
矩阵键盘的未来展望

扫描程序
按照一定的规则逐行逐列扫描键盘 ,检测按键状态变化。
识别程序
根据按键电路的状态变化,判断具 体哪个按键被按下,并执行相应的 操作。
接口通信方式
并行通信
通过数据线将按键信号直接传输 到微控制器,数据传输速度快,
但需要较多的数据线。
串行通信
通过串行数据线将按键信号传输 到微控制器,数据传输速度较慢
键。
矩阵键盘的设计使得电子琴能够 模拟传统钢琴的触感,提供逼真
的演奏体验。
电子琴的矩阵键盘通常配备力度 感应功能,根据按下琴键的力度
来调整音符的音量和音质。
游戏机按键
游戏机按键通常采用矩阵键盘 布局,以适应游戏过程中快速 输入指令的需求。
矩阵键盘的设计使得游戏机按 键能够实现多键同时按下,提 高游戏操作的准确性和速度。
THANKS
感谢观看
03
矩阵键盘的电路设计
硬件电路设计
电源电路
为矩阵键盘提供稳定的电 源,确保按键的正常工作 。
按键电路
每个按键对应一个或多个 行列交叉点,通过检测行 和列的状态变化来确定按 键的按下状态。
输出电路
将按键信号输出到微控制 器或其他处理设备进行处 理。
软件编程设计
初始化程序
对矩阵键盘进行初始化设置,包 括设置扫描频率、去抖动时间等

9 接口技术II键盘接口

9 接口技术II键盘接口

P.168
b. 线反转法
采用线反转法的键盘行线、 列线端口各自应当可以在输 入与输出方式间切换! 如图:高四位与低四位均可 独立改变其输入或输出方式
实验板4×4键盘 实验板 × 键盘 连接82C55的端口线 连接 的端口线 PC3 PC2 PC1 PC0 PC4 PC5 PC6 PC7
图10-10线反转法原理图 10-10线反转法原理图 第1步:列线输出为全‘0’ ,随后输入行线电平如有‘0’,则 线输出为全‘ 随后输入行线电平如有‘ , 所在的行就是闭合的按键所在行; 则无键闭合。 ‘0’所在的行就是闭合的按键所在行;无‘0’则无键闭合。 所在的行就是闭合的按键所在行 则无键闭合 随后输入列线电平如有‘ , 第2步:行线输出为全‘0’ ,随后输入列线电平如有‘0’,则 线输出为全‘ 则无键闭合。 所在的列就是闭合的按键所在列; 则无键闭合 ‘0’所在的列就是闭合的按键所在列;无‘0’则无键闭合。 所在的列就是闭合的按键所在列 结合上述两步,可确定按键所在行和列。 结合上述两步,可确定按键所在行和列。
键盘扫描子程序---3 TEST2011.ASM 键盘扫描子程序--3 KN:MOV MOV MUL MOV JMP A,61H B,#05H AB DPTR,#K0 DPTR,#K0 @A+DPTR ;根据查表获得的键号00H~0FH之一转向相应处理程序 根据查表获得的键号00H~0FH之一转向相应处理程序 00H ;转移表中每个键号处理程序占 转移表中每个键号处理程序占5 ;转移表中每个键号处理程序占5个地址单元
键盘扫描子程序---1 TEST2011.ASM 键盘扫描子程序--1 KEY:MOV 键盘扫描子程序(反转法) KEY:MOV A,#81H ;键盘扫描子程序(反转法) MOV DPTR,#0FEFFH ;C口先初始化为高 位输出驱行线、 口先初始化为高4 MOVX @DPTR,A ;C口先初始化为高4位输出驱行线、低4位输入列线 MOV DPTR,#0FEFEH 键盘行线 行线( 输出驱动全 驱动全'0' MOV A,#00H ;键盘行线(高4位)输出驱动全'0' MOVX @DPTR,A A,@DPTR 输入键盘列线电平 列线电平( 60H单元 MOVX A,@DPTR ;输入键盘列线电平(低4位)存60H单元 MOV 60H,A ;C口改初始化为高 位输入行线、 口改初始化为高4 MOV A,#88H ;C口改初始化为高4位输入行线、低4位输出驱列线 MOV DPTR,#0FEFFH MOVX @DPTR,A MOV DPTR,#0FEFEH 键盘列线 列线( 输出驱动全 驱动全'0' MOV A,#00H ;键盘列线(低4位)输出驱动全'0' MOVX @DPTR,A 行线电平( 输入键盘行线电平 MOVX A,@DPTR ;输入键盘行线电平(高4位)在A中 ANL 60H,#0FH ;列线电平值保留所在的低4位 列线电平值保留所在的低4 行线电平值保留所在的高4 ANL A,#0F0H ;行线电平值保留所在的高4位 ;两次输入的列线电平值 行线电平值组合成 两次输入的列线电平值、 合成8 ORL 60H,A ;两次输入的列线电平值、行线电平值组合成8位行列码

一、 独立式键盘接口电路及程序设计

一、 独立式键盘接口电路及程序设计
第3章 智能仪器人机接口
3.1 键盘与接口 3.2 LED显示及接口 3.3 键盘/LED显示器接口设计 3.4 CRT显示及接口 3.5 微型打印机及接口
第3章 智能仪器人机接口
人机交互功能即用户与仪器交换信息的功能。 这个功能有两方面的含义:一是用户对智能仪 器进行状态干预和数据输入;二是智能仪器向用户报 告运行状态与处理结果。
3.1 键盘与接口
3.1.1 键盘输入基础知识
一、 键盘的组织
键盘按其工作原理可分为编码式键盘和非编码式键盘。
编码式键盘由按键键盘和专用键盘编码器两部分构成。当键 盘中某一按键被按下时,键盘编码器会自动产生对应的按键代 码, 并输出选通脉冲信号与CPU 进行信息联络。
非编码键盘不含编码器,当某键按下时,键盘只送出一个简 单的闭合信号, 对应按键代码的确定必须借助于软件来完成。
一、 独立式键盘接口电路及程序设计
独立式键盘的每个按键占用一根测试线,它们可以直接与 单片机I/O 线相接或通过输入口与数据线相接,结构很简单。 这些测试线相互独立无编码关系,因而键盘软件不存在译码问 题,一旦检测到某测试线上有键闭合,便可直接转入到相应的 键功能处理程序进行处理。
一个实际三个按 键的独立式键盘接口 电路如右图所示:
3.1.1 键盘输入基础知识
一、 键盘的组织 二、 键盘的工作方式
编程扫描工作方式、中断工作方式和定时扫描工作方式。 (1) 编程扫描工作方式:也称查询方式。 (2) 中断工作方式:程扫描工作方式: 该方式也称查询方式,它是利用 CPU在完成其他工作的空余调用键盘扫描程序,以响应键输入 的要求。当CPU在运行其他程序时,它就不会再响应键输入要 求,因此,采用该方式编程时, 应考虑程序是否能对用户的每 次按键都会做出及时的响应。

22 键盘接口技术

22 键盘接口技术

1.硬件方法
硬件方法是设计一个滤波延时电路或单稳态电路等硬 件的间电滤。路波按来 延 键避 时S未开 消按按 抖下键 电时的路,抖,电动设容时置两间在端。按电下键压图S为与是C0由,PUR即2数和与据C非线组门D成输i之
入能启于充时电门电V突只i为压的延变要0, 开 迟, 使,门 启 时充 之输的 电 间电 大出输 压 取电 于V出 时 决压或o为,于等VV1io在与于R将。1充非1、不当0电门R会0S2m按时的改和s下间输变C即值时内出,可的,未V直避o大由达到才开小于到充变按,C与电为键两电非电0抖端,路门压动电这设的V的压段i计开大影不
+5V
8088
8255A
D7 CPU D0
D7 PA0
PA1
D0
PA2 PA3
S0 S1 S2
RD INTR
RD PA4
INTRa
PC3 PC4
PA5 PA6
PA7
INT
IR3
8259A
STBa
独图立5式-6 键独立盘式中键断盘中法断接法接口口电电路路
工作过程如下:当CPU对8255A初始化后,CPU 即执行主程序。当按下S0键即表示要进入自动控制状 态,此时与之相连的I/O口线呈现为低电平的同时, 与非门输出为高电平,经反相器变为低电平,使 8255A端口A的选通输入信号PC4 有效,则PA0~ PTASIT2时引间脚,接8收2并55存A入的3P个C3按发键出的IN“T0R”a或中“断1请”状求态信,号经, 经中断控制器8259A向CPU申请中断,CPU响应中 断后,即转到中断服务程序中。中断服务程序依次查 询按键的通断状态,当查询到是自动/手动(即S0=0) 时,则转到自动/手动控制子程序的入口地址,从而 使系统进入自动控制状态。如果没有键按下,则相应 的I/O口线均为高电平,也不会产生中断信号,CPU 继续运行主程序。

单片机实验五报告_单片机键盘实验

单片机实验五报告_单片机键盘实验

单片机实验五报告_单片机键盘实验一、实验目的本次单片机键盘实验的主要目的是让我们深入了解单片机与键盘的接口技术,掌握如何通过编程实现对键盘输入的检测和响应,从而提高我们在单片机应用开发中的实际操作能力。

二、实验原理在单片机系统中,键盘通常是作为输入设备使用的。

常见的键盘有独立式键盘和矩阵式键盘两种类型。

独立式键盘是每个按键单独占用一根 I/O 线,其优点是电路简单,编程容易,但缺点是占用较多的 I/O 口资源。

矩阵式键盘则是将按键排列成矩阵形式,通过行线和列线的交叉来识别按键。

这种方式可以有效地节省 I/O 口资源,但电路和编程相对复杂一些。

在本次实验中,我们采用了矩阵式键盘。

其工作原理是通过逐行扫描或者逐列扫描的方式,检测行线和列线的电平状态,从而确定按下的按键。

三、实验设备及材料1、单片机开发板一块2、计算机一台3、编程软件(如 Keil C51)4、下载工具(如 STCISP)四、实验步骤1、硬件连接将矩阵式键盘与单片机的 I/O 口进行连接,注意行线和列线的对应关系。

连接好电源和地线,确保硬件电路正常工作。

2、软件编程打开编程软件,创建一个新的工程。

编写初始化程序,包括设置 I/O 口的工作模式、中断等。

编写键盘扫描程序,通过循环扫描行线和列线的电平状态,判断是否有按键按下。

当检测到按键按下时,根据按键的编码执行相应的操作,如在数码管上显示按键值、控制 LED 灯的亮灭等。

3、编译和下载对编写好的程序进行编译,检查是否有语法错误。

如果编译成功,使用下载工具将程序下载到单片机中。

4、实验调试观察硬件电路的工作状态,看是否有异常现象。

按下不同的按键,检查程序的响应是否正确。

如果出现问题,通过调试工具(如单步调试、断点调试等)查找并解决问题。

五、实验代码以下是本次实验的部分关键代码:```cinclude <reg51h>//定义键盘的行和列define ROW_NUM 4define COL_NUM 4//定义行线和列线的端口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 code KeyCodeMapROW_NUMCOL_NUM ={{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'','0','','D'}};//键盘扫描函数void KeyScan(){unsigned char i, j, temp;unsigned char keyValue = 0;//逐行扫描for (i = 0; i < ROW_NUM; i++){//先将所有行线置高电平ROW1 = ROW2 = ROW3 = ROW4 = 1;//将当前行线置低电平switch (i){case 0: ROW1 = 0; break;case 1: ROW2 = 0; break;case 2: ROW3 = 0; break;case 3: ROW4 = 0; break;}//读取列线的电平状态temp = COL1 | COL2 | COL3 | COL4;//如果有列线为低电平,则表示有按键按下if (temp!= 0xF0){//延迟去抖动delay_ms(10);//再次读取列线的电平状态temp = COL1 | COL2 | COL3 | COL4; if (temp!= 0xF0){//确定按下的按键for (j = 0; j < COL_NUM; j++){if ((temp &(1 << j))== 0){keyValue = KeyCodeMapij;break;}}//执行相应的操作switch (keyValue){case '1'://具体操作break;case '2':break;//其他按键的操作}}}}}//主函数void main(){while (1){KeyScan();}}```六、实验结果及分析在实验过程中,我们成功地实现了对矩阵式键盘的输入检测,并能够根据不同的按键执行相应的操作。

矩阵键盘——精选推荐

矩阵键盘——精选推荐

矩阵键盘摘要本课题研究的内容是4×4矩阵式键盘识别技术,即以单⽚机为控制核⼼设计⼀个4×4的键盘和LED数码管的显⽰电路,按顺序键号为“0—F”,并在数码管上显⽰按下的按键的键号﹙“0—F”之间的值﹚。

本⽂通过⽅案设计、电路设计、程序设计、系统仿真四个部分来叙说4×4矩阵式键盘识别技术的具体实现。

其中电路设计对每个单元电路原理有详细解说,程序采⽤模块化、结构化设计,这样免去了内容的多次重复程序冗长的缺点,同时也更加清晰明了。

整个过程都可以在PROTEUS上进⾏仿真,并能成功实现该课题所要求的功能。

关键词:89C51单⽚机;矩阵式键盘;LED数码管⽬录摘要.......................................................................................................... I 1⽅案设计.. (1)1.1设计任务 (1)1.2设计要求 (1)1.3⼯程⽅案 (1)2电路设计 (2)2.14×4矩阵式键盘电路 (2)2.2LED数码显⽰电路 (3)2.3单⽚机最⼩系统电路 (3)2.4电路⼯作原理 (4)3程序设计 (5)3.1程序流程图 (5)3.2程序代码实现 (8)4系统仿真 (10)4.1系统仿真⽅法 (10)4.2仿真结果分析 (10)5总结与体会 (12)参考⽂献: (12)致谢 (13)1⽅案设计1.1 设计任务设计⼀个4×4的键盘和LED数码管的显⽰电路,按顺序键号为“0—F”,并在数码管上显⽰按下的按键的键号(“0—F”之间的值)。

1.2 设计要求﹙1﹚以单⽚机为控制核⼼,实现硬件电路的设计、程序设计,并在PROTEUS平台实现仿真。

﹙2﹚课程设计论⽂内容正确,结构合理。

1.3 ⼯程⽅案单⽚机4×4矩阵式键盘识别技术的实现包括电路设计、程序设计以及系统仿真三⼤部分,系统总框图见图1.1。

单片机课程设计---4×4矩阵式键盘识别显示电路的设计

单片机课程设计---4×4矩阵式键盘识别显示电路的设计

数理与信息工程学院《单片机原理及应用》期末课程设计题目:4×4矩阵式键盘识别显示电路的设计专业:电子信息工程班级:电信061班*名:***学号:********指导老师:***成绩:( 2008.12 )目录第1节引言 (2)1.1 4*4矩阵式键盘系统概述 (2)1.2 本设计任务和主要内容 (3)第2节系统主要硬件电路设计 (4)2.1 单片机控制系统原理 (4)2.2 单片机主机系统电路 (5)2.2.1 时钟电路 (4)2.2.2 复位电路 (5)2.2.3 矩阵式键盘电路 (5)2.3 译码显示电路 (6)第3节系统软件设计 (11)3.1 软件流程图 (8)3.2 系统程序设计 (9)第4节结束语 (12)参考文献 (13)4*4矩阵式键盘识别显示电路的设计数理与信息工程学院电信061 姜铮铮指导教师:余水宝第一节引言矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。

单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。

4*4矩阵式键盘采用AT89S51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语言编程。

单片机将检测到的按键信号转换成数字量,显示于LED显示器上。

该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

1.1 4*4矩阵式键盘识别显示系统概述矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。

显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。

并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。

单片机与键盘输入的接口设计与应用解析

单片机与键盘输入的接口设计与应用解析

单片机与键盘输入的接口设计与应用解析引言:单片机是一种集成电路芯片,具有处理器核、存储器和输入输出引脚等组成部分,可以控制各种外部设备。

键盘是计算机和其他电子设备的常用输入设备,通过按下不同的按键来输入信息。

在许多应用中,需要将键盘与单片机相连接,以实现键盘输入的功能。

本文将深入探讨单片机与键盘输入的接口设计与应用,包括接口电路的设计原理、接口方式的选择以及相关应用案例的分析。

一、接口电路设计原理1. 键盘扫描原理键盘通常是由一系列按键按排成矩阵状的结构,每个按键都有两个触点,当按键按下时,两个触点短接,形成闭合电路。

为了检测到具体按下的按键,需要通过扫描的方式来逐个检测。

2. 电路连接方式通常,键盘与单片机之间可以通过行列式和矩阵式两种方式实现连接。

行列式连接方式即将键盘的行和列通过引脚分别连接到单片机的IO口,通过单片机的输入输出控制来检测按键信号。

矩阵式连接方式则是采用矩阵键盘的形式,将所有的按键都连接到行和列的交叉点上,通过扫描的方式来检测按键信号。

二、接口方式的选择1. 行列式连接方式的优势和劣势行列式连接方式相对简单,常用于按键较少的情况下。

它的优势在于节省IO 口的使用,通过编写简单的行列扫描程序即可实现对按键的检测。

然而,它的劣势在于不能同时检测多个按键,当同时有多个按键按下时,只能检测到其中一个。

2. 矩阵式连接方式的优势和劣势矩阵式连接方式可以同时检测多个按键,因为所有的按键都连接到行和列的交叉点上。

它的优势在于可以通过编写复杂的扫描程序,实现同时检测多个按键,并且可以检测到按键的精确位置。

然而,它的劣势在于需要占用较多的IO口,且对于按键较多的情况下,编写扫描程序较为复杂。

三、相关应用案例的分析1. 数字密码锁数字密码锁是常见的应用之一,通过将键盘与单片机连接,可以实现输入密码的功能,比如开启或关闭某个装置。

在设计中,可以选择行列式连接方式,通过扫描程序来检测按键,进而判断输入的密码是否匹配。

键盘接口技术PPT课件

键盘接口技术PPT课件

6
7H
5、互动试验装置键盘接口
• 1、装置中键号未 按照顺序定义;
• 使用时可采用查 表方式。
• 2、扫描时,可按 照列号、行号进 行查表,确定键 的键值。
• 全扫描码为0FFH, 无键按下时读入 列值为00H,有键 按下为“1”。
7
例3:键盘扫描程序:D6L3.ASM
• 程序JIANPAN.ASM为键盘扫描例程, 在LED上显示对应的键值。
消除抖动是按键设计所必
须要考虑的问题。
• (2)消除抖动的方法
• 消抖动通常有软件和硬件两种方法。
• 软件消抖动就是在检测到键按下时,执行一段延时子 程序后,再确认该键电平是否仍保持键按下时的状态 电平。延时时间通常取5~10ms以上。
• 硬件消抖动可采用RS触发器或RC延时等方法。
2
2、独立式按键
• 独立式键盘是指各按键相互独立,每个 按键分别与单片机或外扩I/O芯片的一 根输入线相连。
• 如:
• JB P1.0,L1 ;K0闭合? LCALL DELAY ;延时10ms JB P1.0,L1 ;K0闭合? LJMP KEY0 ;K0处理
L1:JB P1.2,L2 ;K1闭合? ……
3
3、行列式键盘(矩阵键盘)
键盘接口技术系统中通常采用非编码键盘 • 非编码键盘连接结构形式有: • (1)独立式键盘 • (2)行列式(矩阵)键盘
1
1、按键闭合过程
• (1)按键抖动问题
• 一般按键开关为机械弹性
开关,由于触点的弹性作
用,会出现“抖动”现象,
抖动时间一般为5~10ms。
• 矩阵式键盘适用于 按键数量较多的场 合。它通常由行线 和列线组成,按键 位于行、列的交叉 点上。

单片机课程设计4X4矩阵键盘显示

单片机课程设计4X4矩阵键盘显示

长沙学院?《单片机原理及应用》课程设计说明书题目】液晶显示4*4矩阵键盘按键号程序设计系(部)电子与通信工程系专业(班级)电气1班姓名龙程学号【09指导教师刘辉、谢明华、王新辉、马凌云起止日期—长沙学院课程设计鉴定表《单片机技术及应用》课程设计任务书系(部):电子与电气工程系专业:11级电子一班指导教师:谢明华、刘辉—目录'前言 (5)一、课程设计目的 (6)二、设计内容及原理 (6)单片机控制系统原理 (6)阵键盘识别显示系统概述 (6)键盘电路 (7)12864显示器 (8)整体电路图 (9)!仿真结果 (9)三、实验心得与体会 (10)四、实验程序 (10)参考文献 (18)…。

,】前言单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。

与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。

它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。

由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。

现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。

手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。

汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!单片机的数量不仅远超过PC机和其他计算机的总和,甚至比人类的数量还要多。

液晶显示器(英语:Liquid Crystal Display,缩写:LCD)为平面薄型的显示设备。

它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。

FPGA矩阵键盘课程设计

FPGA矩阵键盘课程设计

逻辑仿真与调试
调试工具:使用调试工具对 FPGA矩阵键盘进行调试, 找出并解决设计中的问题
逻辑仿真:使用仿真软件对 FPGA矩阵键盘进行逻辑仿 真,验证设计是否正确
仿真结果分析:分析仿真结 果,找出设计中存在的问题,
并进行修改
调试结果分析:分析调试结 果,找出设计中存在的问题,
并进行修改
FPGA矩阵键盘驱动程序开 发
FPGA矩阵键盘软件设计
软件算法设计
键盘扫描算法:实现键盘矩阵的 扫描和按键检测
键值转换算法:将扫描到的键值 转换为对应的字符或功能键
键盘响应算法:处理键盘输入, 实现按键响应和功能键处理
键盘驱动程序设计:实现键盘的 驱动程序,支持键盘的初始化、 扫描、键值转换和响应等功能
VHDL/Verilog语言实现
FPGA芯片:选择合适的 FPGA芯片,如Xilinx或 Altera
驱动电路:设计键盘驱动电 路,如LED背光、按键反馈

电源管理:设计电源管理电 路,如电源输入、电源转换

硬件调试:进行硬件调试, 确保键盘功能正常
元器件选型
FPGA芯片:选择合适的 型号和品牌,如Xilinx、 Altera等
游戏机中的矩阵键盘用于控制游戏 角色或操作游戏界面
矩阵键盘可以提高游戏操作的准确 性和响应速度
添加标题
添加标题
添加标题
添加标题
矩阵键盘可以提供多种按键组合, 实现复杂的游戏操作
矩阵键盘在游戏机中的使用可以提 高用户体验和游戏乐趣
矩阵键盘在医疗设备中的应用
矩阵键盘可以提供多种功能, 如输入密码、选择菜单、调 整参数等
未来发展方向与展望
技术发展趋势:FPGA技术的不断发展和更新,如更高性能、更低功耗等 应用领域拓展:FPGA在更多领域的应用,如人工智能、物联网等 课程设计优化:课程设计的不断优化和完善,提高教学质量和效果

4乘4键盘_矩阵式键盘识别技术

4乘4键盘_矩阵式键盘识别技术

14.4×4矩阵式键盘识别技术1.实验任务如图4.14.2所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的“0-F”序号。

对应的按键的序号排列如图4.14.1所示图4.14.12.硬件电路原理图图4.14.23.系统板上硬件连线(1.把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;(2.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

4.程序设计内容(1.4×4矩阵键盘识别处理(2.每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

5.程序框图图4.14.36.汇编源程序KEYBUF EQU 30HORG 00HSTART: MOV KEYBUF,#2 WAIT:MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY1LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY1MOV A,P3ANL A,#0FHCJNE A,#0EH,NK1 MOV KEYBUF,#0LJMP DK1NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1LJMP DK1NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2LJMP DK1NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3LJMP DK1NK4: NOPDK1:MOV A,KEYBUFMOV DPTR,#TABLE MOVC A,@A+DPTRMOV P0,ADK1A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK1ANOKEY1:MOV P3,#0FFHCLR P3.5MOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY2LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY2MOV A,P3ANL A,#0FHCJNE A,#0EH,NK5 MOV KEYBUF,#4LJMP DK2NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5LJMP DK2NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6LJMP DK2NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7LJMP DK2NK8: NOPDK2:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ADK2A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK2ANOKEY2:MOV P3,#0FFHCLR P3.6MOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY3LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY3MOV A,P3ANL A,#0FHCJNE A,#0EH,NK9MOV KEYBUF,#8LJMP DK3NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#9LJMP DK3NK10: CJNE A,#0BH,NK11 MOV KEYBUF,#10LJMP DK3NK11: CJNE A,#07H,NK12 MOV KEYBUF,#11LJMP DK3NK12: NOPDK3:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ADK3A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK3ANOKEY3:MOV P3,#0FFHCLR P3.7MOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY4LCALL DELY10MSMOV A,P3ANL A,#0FHXRL A,#0FHJZ NOKEY4MOV A,P3ANL A,#0FHCJNE A,#0EH,NK13MOV KEYBUF,#12LJMP DK4NK13: CJNE A,#0DH,NK14 MOV KEYBUF,#13LJMP DK4NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#14LJMP DK4NK15: CJNE A,#07H,NK16 MOV KEYBUF,#15LJMP DK4NK16: NOPDK4:MOV A,KEYBUFMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ADK4A: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ DK4ANOKEY4:LJMP WAITDELY10MS:MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HEND7. C语言源程序#include <AT89X51.H>unsigned char code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char temp;unsigned char key;unsigned char i,j;void main(void){while(1){P3=0xff;P3_4=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f){temp=P3;temp=temp & 0x0f; switch(temp){case 0x0e:key=7;break;case 0x0d:key=8;break;case 0x0b:key=9;break;case 0x07:key=10;break;}temp=P3;P1_0=~P1_0;P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f) {temp=P3;temp=temp & 0x0f; }}}P3=0xff;P3_5=0;temp=P3;temp=temp & 0x0f; if (temp!=0x0f) {for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;temp=temp & 0x0f; if (temp!=0x0f) {temp=P3;temp=temp & 0x0f;switch(temp){case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=11;break;}temp=P3;P1_0=~P1_0;P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f) {temp=P3;temp=temp & 0x0f; }}}P3=0xff;P3_6=0;temp=P3;temp=temp & 0x0f; if (temp!=0x0f) {for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;temp=temp & 0x0f; if (temp!=0x0f) {temp=P3;temp=temp & 0x0f; switch(temp){case 0x0e:key=1;break;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=12;break;}temp=P3;P1_0=~P1_0;P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f) {temp=P3;temp=temp & 0x0f; }}}P3=0xff;P3_7=0;temp=P3;temp=temp & 0x0f; if (temp!=0x0f) {for(i=50;i>0;i--) for(j=200;j>0;j--); temp=P3;temp=temp & 0x0f; if (temp!=0x0f) {temp=P3;temp=temp & 0x0f; switch(temp){case 0x0e:key=0;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}temp=P3;P1_0=~P1_0;P0=table[key]; temp=temp & 0x0f; while(temp!=0x0f) {temp=P3;temp=temp & 0x0f; }}}}}。

矩阵按键控制数码管显示

矩阵按键控制数码管显示

定时消抖 Case 0xee; P0口送0 段码 Case 0xed; P0口送1 段码 Case 0x77; …… P0口送F 段码
有键按下?


存储当前P2的状态1 Break P2=0X0F 结束 存储当前P2的状态2
返回(状态1|状态2)
返回0XFF
程序编写
//========================================== //函数名称: keyscan() //函数功能: 检测按键 //入口参数:无 //出口参数:cord_h|cord_1 //备注: //========================================== UINT8 keyscan(void) { INT8 cord_h=0; INT8 cord_1=0; P2=0xf0; if(P2!=0xf0) { delay_ms(10); if(P2!=0xf0) { cord_h=P2; P2=0x0f; cord_1=P2; return(cord_h|cord_1); } } return(0xff); }
在没有按键按下时,即DS2450 的输入量时0,当有丌 同的按键按下时,DS2450 的输入量丌同,微处理器就会 得到丌同的数字量,微处理器根据采集到的数字量可判断 按键情况。
单片机控制的“机电一体化产品”中按键的接口设计 科技咨询,李迚波
键盘扫描子程序一般包括以下内容:
1.判别有无键按下;
2.消除键盘机械抖动;
出线输出为全低电平,则列线中电平由高变低所在列为按
键所在列。
两步即可确定按键所在的行和列,从而识别出所按的键。
采用线反转法的矩阵式键盘
假设键3被按下。
第一步,P1.0~P1.3输出全为“0”,然后,读入 P1.4~P1.7线的状态,结果P1.4=0,而P1.5~P1.7均为 1,因此,第1行出现电平的变化,说明第1行有键按下; 第二步,让P1.4~P1.7输出全为“0”,然后,读入 P1.0~P1.3位,结果P1.0=0,而P1.1~P1.3均为1,因 此第4列出现电平的变化,说明第4列有键按下。

独立键盘和矩阵键盘-PPT

独立键盘和矩阵键盘-PPT

图8.2 矩阵式键盘接口
特点:电路连接复杂,但提高了 I/O口利用率,软件编程较复 杂。适用于需使用大量按键 得场合。
U1
P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8
P10 P11 P12 P13 P14 P15 P16 P17
P00 P01 P02 P03 P04 P05 P06 P07
设第2行第 4列键按下
89C51 P1.0 P1.1 P1.2 P1.3 P1.4 11 11 11 1011 P1.5 P1.6 P1.7
+5V
101 110 110 01
行线输出 列线输入
0111 1011 1101 1110
1111 1110 1111 1111
(2)线反转法。 线反转法也就是识别闭合键得一种常用方法, 该 法比行扫描速度快, 但在硬件上要求行线与列线外 接上拉电阻。 先将行线作为输出线, 列线作为输入线, 行线输出 全“0”信号, 读入列线得值, 那么在闭合键所在得列 线上得值必为0;然后从列线输出全“0”信号,再读取 行线得输入值,闭合键所在得行线值必为 0。这样, 当一个键被按下时, 必定可读到一对唯一得行列值。 再由这一对行列值可以求出闭合键所在得位置。
独立键盘和矩阵键盘
通常,键盘有编码与非编码两种。编码键盘通过 硬件电路产生被按按键得键码与一个选通脉冲。选 通脉冲可作为CPU得中断请求信号。这种键盘使用 方便,所需程序简单,但硬件电路复杂,常不被单片机采 用。
非编码键盘按组成结构又可分为独立式键盘与 矩阵式键盘。独立式键盘得工作过程与矩阵式键盘 类似,无论就是硬件结构还就是软件设计都比较简单,。
…… else if (表达式n-1) (语句n-1;) else {语句n}

单片机教学第四部分

单片机教学第四部分

单片机教学第二十四课一般单片机系统中采和非编码键盘使用灵活等特点单片机中应用的一般是由机械触点构成的当开图1图2关S未被按下时S闭合后由于按键是机械触点会有抖动动这种抖动对于人来说是感觉不到的因为计算机处理的速度是在微秒级这已是一个前面我们讲到中断时曾有个问题其实就是这个原因如果执行的次数正好是奇数次那就不对了对每一次按键只作一次响应硬件方法和软件方法因此就是在单片机获得P1²»ÊÇÁ¢¼´È϶¨S1已被按下0口这实际上是避开了按键按下时的抖动时间P1ÔÙÑÓʱ5-10个毫秒不过一般情况下也能满足一定的要求对按键的要求也是千差万别键盘与单片机的连接图3图41ÕâÊÇ×î¼òµ¥µÄ·½·¨Ëĸö°´¼ü·Ö±ð½Óµ½P3.2对于这种键各程序可以采用不断查询的方法检测是否有键闭合判断键号并转入相应的键处理四个键定义如下按此键则灯开始流动按此键则停止流动上下则继续ACALL KEYPROC ;否则调用键盘处理程序ACALL LAMP ;调用灯显示程序AJMP LOOP ;反复循环键盘处理中调用KEYPROC:MOV A,B ;从B寄存器中获取键值JB ACC.2,KeyStart ;分析键的代码因为在键盘程序中已取反表示无键按下将键值存入B中SETB F0 ;设置有键按下的标志ORL P3,#00111100B ;此处循环等待键的释放MOV A,P3ORL A,#11000011BCPL AJZ K_RET1 ;直到读取的数据取反后为0说明键释放了则启动MOV P1,#0FFHAJMP LAMPRET ;否则关闭所有显示则向上流动MOV A,LAMPCODERL A ;实际就是左移位而已MOV LAMPCODE,AMOV P1,ALCALL D500MSAJMP LAMPRETLAMPUP:MOV A,LAMPCODERR A ;向下流动实际就是右移MOV LAMPCODE,AMOV P1,ALCALL D500MSLAMPRET:RETEND以上程序功能很简单也不很实用会造成按键反应而如果一直按着键不放等等2µ±ÓÐÈκÎÒ»¸ö°´¼ü°´ÏÂʱËüµÄºÃ´¦ÊDz»ÓÃÔÚÖ÷³ÌÐòÖв»¶ÏµØÑ-»·²éѯ单片机教学第二十五课如图1所示每条水平线和垂直线在交叉处不直接连通一个端口比之直接将端口线用于键盘多出了一倍比如再多加一条线就可以构成20键的键盘9键需要的键数比较多时识别也要复杂一些并将行线所接的单片机的I/O口作为输出端当按键没有按下时行线输出是低电平这样矩阵式键盘的按键识别方法确定矩阵式键盘上何键被按下介绍一种行扫描法行扫描法又称为逐行如上图所示键盘然后检测列线的状态列的电平为低若所有列线均为高电平即可进入确定具体闭合键的过程依次将行线置为低电平在确定某根行线位置为低电平后则该列线与置为低电平的行线交叉处的按键就是闭合的按键图仍如上所示键盘的列线接到P1口的低4位列线P1.0-P1.3分别接有4个上拉电阻到正电源+5VÐÐÏßP1.4-P.17设置为输出线检测当前是否有键被按下0ÈôP1.0-P1.3为全则无键闭合当检测到有键按下后应识别出是哪一个键闭合P1.7 1 1 1 0P1.6 1 1 0 1P1.5 1 0 1 1P1.4 0 1 1 1在每组行输出时读取P1.0-P1.3这一行没有键闭合然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值为了保证键每闭合一次CPU仅作一次处理 键盘扫描程序INC BINC BJC NEXT5NEXT6: MOV A,P1ANL A,#0FHCJNE A,#0FH,NEXT6MOV R0,#0FFHRET键盘处理程序就作这么一个简单的介绍显示处理是很复杂的但说到因此然后用适当的算法表示出来才能快速有效地写好代码本站教程暂告一个段落。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在单片机系统中键盘中按钮数量较多时,为了减少I/O口的占用,常常将按钮排列成矩阵形式,如图1所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按钮加以连接。

这样,一个端口(如P1口)就能组成4*4=16个按钮,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就能组成20键的键盘,而直接用端口线则只能多出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

<单片机矩阵式键盘接口技术及编程接口图>
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。

这样,当按钮没有按下时,所有的输出端都是高电平,代表无键按下。

行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

具体的识别及编程办法如下所述。

矩阵式键盘的按钮识别办法
确定矩阵式键盘上何键被按下介绍一种“行扫描法”。

行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按钮识别办法,如上图所示键盘,介绍过程如下。

判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。

只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按钮之中。

若所有列线均为高电平,则键盘中无键按下。

判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。

其办法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电
平。

在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。

若某列为低,则该列线与置为低电平的行线交叉处的按钮就是闭合的按钮。

下面给出一个具体的例程:
图仍如上所示。

8031单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。

列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。

4根行线和4根列线形成16个相交点。

检测当前是否有键被按下。

检测的办法是P1.4-P1.7输出全“0”,读取
P1.0-P1.3的状态,若P1.0-P1.3为全“1”,则无键闭合,不然有键闭合。

去除键抖动。

当检测到有键按下后,延时一段时间再做下一步的检测判断。

若有键被按下,应识别出是哪一个键闭合。

办法是对键盘的行线进行扫描。

P1.4-P1.7按下述4种组合依次输出:
P1.7 1 1 1 0
P1.6 1 1 0 1
P1.5 1 0 1 1
P1.4 0 1 1 1
在每组行输出时读取P1.0-P1.3,若全为“1”,则表示为“0”这一行没有键闭合,不然有键闭合。

由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值
为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动。

《单片机矩阵式键盘接口技术及编程》
键盘扫描程序:
从以上分析得到单片机键盘扫描程序的流程图如图2所示。

程序如下SCAN: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT1
SJMP NEXT3
NEXT1: ACALL D20MS
MOV A,#0EFH
NEXT2: MOV R1,A
MOV P1,A
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H RET
KCODE: MOV B,#0FBH NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1 ANL A,#0FH
CJNE A,#0FH,NEXT6 MOV R0,#0FFH
RET
键盘处理程序就作这么一个简单的介绍,实际上,键盘、显示处理是很复杂的,它一般占到一个应用程序的大部份代码,可见其重要性,但说到,这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。

到本课为止,本站教程暂告一个段落!请继续关注的单片机教程。

感谢大家的关心和支持!教程中如果有不对之处也希望大家在评论中提出,我们会及时正更错误的.
本文出自:/mcuteach/226.html
其它:。

相关文档
最新文档