单片机课程设计4x8矩阵键盘

合集下载

单片机 矩阵键盘实验 实验报告

单片机 矩阵键盘实验 实验报告

实验五矩阵键盘实验一、实验内容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个键的反转码建一个表,通过查表就可知道是哪个键被按下了。

单片机 矩阵键盘实验 实验报告

单片机 矩阵键盘实验 实验报告

单片机矩阵键盘实验实验报告一、实验目的本次实验的目的是掌握原理和方法,利用单片机识别矩阵键盘并编程实现键码转换功能,控制LED点亮显示。

二、实验原理矩阵键盘是一种由多路单向控制器输入行选择信号与列选择信号连接而形成的一一对应矩阵排列结构。

它广泛应用于电子游戏机、办公自动化设备、医疗仪器、家电控制及书籍检索机器等方面。

本次实验采用的矩阵键盘是一个4 x 4矩阵,用4段数码管显示按键编码,每个按键都可以输入一个代码,矩阵键盘连接单片机,实现一个软件算法来识别键码转化。

从而将键盘中的按键的按下信号转换成程序能够识别的代码,置于相应的输出结果中,控制LED点亮,从而可以实现矩阵键盘按键的转换功能。

三、实验方法1.硬件搭建:矩阵键盘(4行4列)与单片机(Atmel AT89C51)相连,选择引脚连接,并将数码管和LED与单片机相连以实现显示和点亮的功能。

2.程序设计:先建立控制体系,利用中断服务子程序识别和码值转换,利用中断服务子程序实现从按键的按下信号转换为程序能够识别的代码,然后将该代码段编写到单片机程序中,每次按下矩阵键盘按键后单片机给出相应的按键编码输出,用数码管显示,控制LED点亮。

四、实验结果经过实验,成功实现了矩阵键盘与单片机之间的连接,编写了中断服务子程序,完成了按键编码输出与LED点亮的功能。

实验完成后,数码管显示各种按键的编码,同时LED会点亮。

本次实验介绍了矩阵键盘的原理,论述了键码转换的程序设计步骤,并实验完成矩阵键盘与单片机的连接,实现用LED点亮以及数码管显示按键的编码。

通过本次实验,受益匪浅,使我对使用单片机编写算法与程序有了更深入的认识,同时丰富了课堂学习的内容,也使我更加热爱自己所学的专业。

单片机矩阵键盘原理

单片机矩阵键盘原理

单片机矩阵键盘原理单片机矩阵键盘是一种常见的输入装置,它可以实现对数字、字母、符号等不同类型的输入,是单片机控制系统中不可或缺的一部分。

下面详细介绍单片机矩阵键盘的原理。

1. 键盘的基本原理键盘是一种能够将人体按压的操作转换成电信号输出的输入设备。

它由按键、矩阵电路和接口电路等多个部分组成。

其中最关键的是矩阵电路,它起到了连接按键和接口电路的桥梁作用。

2. 矩阵电路的构成矩阵电路主要由行列式组成,其中行和列的数量决定了键盘能够输入的按键数量。

例如一个4行4列的矩阵电路可以连接16个按键。

3. 按键的工作原理按键的工作原理是利用按键触点的开闭状态来变换电路状态,进而实现输入信号的转换。

按键的触点现在主要分为二态和三态两种,二态触点只能够开闭两种状态,而三态触点则可以在按键未按下、按下瞬间和按下保持三个状态之间变换。

在设计矩阵电路时需要根据按键的触点类型进行对应的接线方式。

4. 矩阵键盘的工作流程单片机矩阵键盘的工作流程主要包括按键扫描、按键代码转换和按键响应处理三步。

按键扫描的原理是利用矩阵电路的行列结构来进行扫描,每次扫描只需要对一个行和一个列进行检测,判断当前按键是否被按下。

如果检测到按键被按下,则会对应生成相应的按键代码,并将其发送到单片机系统进行处理。

5. 按键的编程实现在单片机的程序中,实现矩阵键盘的输入需要用到外部中断和定时器两个功能模块。

其中定时器用于产生定时器中断,从而保证按键信号的稳定性和准确性;而外部中断则在扫描矩阵电路时检测按键是否被按下,用于触发中断并响应按键事件。

总的来说,单片机矩阵键盘的原理涉及到电路接线、按键触点类型、按键扫描算法以及编程实现等多个方面。

在设计和实现过程中需要考虑多种因素,才能确保键盘输入的可靠性和稳定性。

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告

单片机c语言程序设计---矩阵式键盘实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称:矩阵式键盘实验一、实验目的和要求1.掌握矩阵式键盘结构2.掌握矩阵式键盘工作原理3.掌握矩阵式键盘的两种常用编程方法,即扫描法和反转法二、实验内容和原理实验1.矩阵式键盘实验功能:用数码管显示4*4矩阵式键盘的按键值,当K1按下后,数码管显示数字0,当K2按下后,显示为1,以此类推,当按下K16,显示F。

(1)硬件设计电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。

在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

操作方完成矩阵式键盘实验。

具体包括绘制仿真电路图、编写c源程序(反转法和扫描法)、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。

完成思考题。

三、实验方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。

2.在keil上进行编译后生成“xxx.hex”文件。

3.编译好的“xxx.hex”文件加入AT89C51。

启动仿真,观察仿真结果。

四、实验结果与分析void Scan_line()//扫描行{Delay(10);//消抖switch ( P1 ){case 0x0e: i=1;break;case 0x0d: i=2;break;case 0x0b: i=3;break;case 0x07: i=4;break;default: i=0;//未按下break;}}void Scan_list()//扫描列{Delay(10);//消抖switch ( P1 ){case 0x70: j=1;break;case 0xb0: j=2;break;case 0xd0: j=3;break;case 0xe0: j=4;break;default: j=0;//未按下break;}}void Show_Key(){if( i != 0 && j != 0 ) P0=table[ ( i - 1 ) * 4 + j - 1 ];else P0=0xff;}五、讨论和心得。

《单片机矩阵键盘》课件

《单片机矩阵键盘》课件

矩阵键盘的原理
深入了解矩阵键盘的组成结构、工作原理和扫描方式。
组成结构 工作原理
矩阵键盘由按键和行列引脚组成的矩阵状结构。 通过扫描按键矩阵的行和列,确定被按下的按键。
扫描方式
逐行、逐列或矩阵扫描,用于检测按键的状态。
矩阵键盘的接口设计
详细介绍矩阵键盘的电路设计、接口连接和设计注意事项。
电路设计
设计适合矩阵键盘的电路,确保 信号的正确传输和按键的可靠检 测。
接口连接
将矩阵键盘与单片机进行正确的 接线连接,以实现按键信号的读 取。
设计注意事项
注意接口的稳定性、防抖动处理 和按键状态的判别。
矩阵键盘的编程实现
教授GPIO口的配置、矩阵键盘的扫描方法和状态码处理的编程实现。
1
GPIO口的配置
设置单片机的GPIO引脚,用于连接和控
实验效果演示
展示实验结果,演示矩阵键盘 的按键功能。
总结和展望
总结本课程的学习内容,展望矩阵键盘在更多应用场景中的发展。
1 总结本课程的学习内容
2 展望更多应用场景
回顾矩阵键盘的原理、接口设计和编程实现, 总结学习收获。
探讨矩阵键盘在电子设备、控制系统等领域 的应用前景。
矩阵键盘的扫描方法
ቤተ መጻሕፍቲ ባይዱ
2
制矩阵键盘的行和列。
编写扫描程序,逐行或逐列扫描矩阵键
盘,读取按键状态。
3
状态码处理
根据读取的按键状态码,进行相应的处 理和响应,实现按键功能。
实验演示
展示实验环境的介绍、实验步骤和实验效果。
实验环境介绍
介绍搭建实验所需的硬件和软 件环境。
实验步骤
详细说明进行实验的步骤和操 作流程。

矩阵式键盘设计实训报告

矩阵式键盘设计实训报告

一、实验目的1. 掌握矩阵式键盘的工作原理及电路设计方法。

2. 熟悉单片机与矩阵键盘的接口连接及编程技巧。

3. 提高动手实践能力,培养创新意识。

二、实验设备1. 单片机实验平台2. 矩阵键盘模块3. 数字多用表4. 编译器(如Keil51)5. 连接线三、实验原理矩阵键盘是一种常用的键盘设计方式,通过行列交叉点连接按键,从而实现多个按键共用较少的I/O端口。

矩阵键盘通常采用逐行扫描的方式检测按键状态,当检测到按键按下时,根据行列线的电平状态确定按键位置。

四、实验内容1. 矩阵键盘电路设计2. 矩阵键盘编程3. 矩阵键盘测试与调试五、实验步骤1. 电路设计(1)根据矩阵键盘的规格,确定行线和列线的数量。

(2)将行线和列线分别连接到单片机的I/O端口。

(3)在行线上串联电阻,防止按键抖动。

(4)连接电源和地线。

2. 编程(1)初始化单片机的I/O端口,将行线设置为输出,列线设置为输入。

(2)编写逐行扫描程序,逐行拉低行线,读取列线状态。

(3)根据行列线状态判断按键位置,并执行相应的操作。

3. 测试与调试(1)将编写好的程序下载到单片机中。

(2)连接矩阵键盘,观察按键是否正常工作。

(3)使用数字多用表检测行列线电平,确保电路连接正确。

(4)根据测试结果,对程序进行调试,直到矩阵键盘正常工作。

六、实验结果与分析1. 电路连接正确,按键工作正常。

2. 逐行扫描程序能够正确检测按键位置。

3. 按键操作能够触发相应的程序功能。

七、实验总结1. 通过本次实训,掌握了矩阵式键盘的工作原理及电路设计方法。

2. 熟悉了单片机与矩阵键盘的接口连接及编程技巧。

3. 提高了动手实践能力,培养了创新意识。

八、心得体会1. 在实验过程中,遇到了电路连接错误和程序调试困难等问题,通过查阅资料、请教老师和同学,最终成功解决了问题。

2. 本次实训让我深刻体会到理论知识与实际操作相结合的重要性,同时也认识到团队合作的重要性。

九、改进建议1. 在电路设计过程中,可以考虑增加去抖动电路,提高按键稳定性。

矩阵式键盘的接口设计与编程

矩阵式键盘的接口设计与编程

;<--------------------------判断是否真的有键按下--------------------->
T_KEY:
ACALL
DL_20MS
;调用延时子程序
ACALL
P_KEY
;再次调用“有无按键按下子程序”
JNZ
IN_SCAN
;若有键按下,则执行逐行扫描程序
AJMP
SCAN
;若无键按下,则不断查询
;<--------------------------扫描数据初始化----------------------->
单片机原理及应用技术
—1—
one 矩阵式键盘接口设计——基于行反转法
4×4矩阵式键盘接 口设计如图所示
—2—
图中P1口的低4位作为行线,P2口的低4位作为列线。行线通过74LS21进行逻辑与操作后作为单 片机的外部中断源输入,当有键按下时以中断形式去执行相应的按键处理程序。
行反转法因判键时将输入与输出线反转互换而得名,步骤如下:
PB口作为扫描口需要设为输出,PA口设为读入。 逐行扫描时,PB口的状态为:
PB7 PB6 PB5 PB4 111 1 111 1 111 1 111 1 111 0 110 1 101 1 011 1
PB3 PB2 PB1 PB0 1 110 1 101 1 011 0 111 1 111 1 111 1 111 1 111
—3—
【例9-3】 行反转法判断按键编号,并存入40H单元,程序如下
ORG
0000H
LJMP
MAIN
ORG
0003H
LJMP
INT0
ORGБайду номын сангаас

单片机矩阵按键课程设计

单片机矩阵按键课程设计

单片机矩阵按键课程设计一、课程目标知识目标:1. 学生能理解单片机矩阵按键的基础知识,掌握矩阵按键的原理及其在电路中的应用。

2. 学生能描述单片机I/O口操作方法,并运用此知识实现矩阵按键的编程控制。

3. 学生能解释并运用行、列扫描法进行按键识别,实现按键的消抖处理。

技能目标:1. 学生能够独立完成矩阵按键电路的连接,并进行调试。

2. 学生能够运用所学知识,编写程序实现矩阵按键的扫描与功能分配。

3. 学生能够通过实验,分析和解决矩阵按键编程过程中遇到的问题。

情感态度价值观目标:1. 学生培养对单片机技术的兴趣,增强对电子工程领域的认识。

2. 学生在学习过程中,培养解决问题的耐心和毅力,树立团队协作意识。

3. 学生能够认识到单片机技术在现实生活中的应用价值,增强创新实践能力。

课程性质:本课程为实践性较强的电子技术课程,要求学生在掌握理论知识的基础上,注重动手实践。

学生特点:学生具备一定的单片机基础知识,对电子技术有较高的兴趣,但编程和动手能力参差不齐。

教学要求:结合学生特点,课程注重理论与实践相结合,充分调动学生的积极性,提高学生的动手能力和创新能力。

通过课程学习,使学生在知识、技能和情感态度价值观方面均有所提升。

二、教学内容1. 矩阵按键原理:介绍矩阵按键的电路结构、工作原理以及其在单片机系统中的应用。

- 教材章节:第二章第二节《矩阵键盘的工作原理》2. 单片机I/O口操作:回顾并加深理解单片机I/O口的基本操作,为矩阵按键编程打下基础。

- 教材章节:第一章《单片机基础》3. 行列扫描法:讲解如何运用行列扫描法进行按键识别,包括消抖处理方法。

- 教材章节:第二章第三节《矩阵键盘的编程方法》4. 矩阵按键编程实践:指导学生编写程序,实现矩阵按键的扫描与功能分配。

- 教材章节:第二章第四节《矩阵键盘应用实例》5. 电路连接与调试:学生动手实践,完成矩阵按键电路的连接,并进行调试。

- 教材章节:实验指导书《矩阵键盘实验》6. 问题分析与解决:针对编程和调试过程中遇到的问题,引导学生进行分析和解决。

单片机矩阵键盘

单片机矩阵键盘
单片机矩阵键盘
汇报人: 202X-01-04
contents
目录
• 单片机矩阵键盘概述 • 单片机矩阵键盘硬件设计 • 单片机矩阵键盘软件编程 • 单片机矩阵键盘调试与测试 • 单片机矩阵键盘优化与扩展
01 单片机矩阵键盘 概述
定义与特点
定义
单片机矩阵键盘是一种由行线和 列线组成的键盘,通过按键的行 和列交叉点来识别按键。
用于显示输入的信息或状态, 如数码管、液晶显示屏等。
电源模块
为整个系统提供稳定的电源, 保证系统的正常工作。
电路连接
01
矩阵键盘的行线和列线分别连接到单片机的输入/输出端口,通 过软件扫描方式检测按键状态。
02
单片机控制模块与显示模块连接,将需要显示的信息传输给显
示模块。
电源模块为整个系统提供稳定的电源,保证系统的正常工作。
在通讯设备领域,单片机矩阵键盘可以用 于手机、电话等设备的操作面板,实现拨 号、挂断等功能。
பைடு நூலகம்
02 单片机矩阵键盘 硬件设计
硬件组成
01
02
03
04
矩阵键盘模块
由行线和列线组成的键盘矩阵 ,按键被安排在行线和列线的
交叉点上。
单片机控制模块
用于接收和处理来自矩阵键盘 的信号,控制整个系统的运行

显示模块
软件编程
编写单片机程序,用于扫描矩阵键盘并识 别按键按下事件。
测试方法
按键响应时间测试
测试从按键按下到单片机响应 的时间,确保在合理范围内。
按键防抖测试
测试按键防抖功能是否正常, 即在按键按下和释放时是否能 够正确识别。
多键同时按下测试
测试在多个按键同时按下时, 单片机是否能够正确识别并处 理。

单片机矩阵键盘实验

单片机矩阵键盘实验

单片机独立按键和矩阵键盘操作[实验要求]独立按键操作: 试操作P3.4~P3.7控制的四个独立按键中的某一个, 每按一次, 数码管上显示数字作一次加1或减1变化, 显示数字在0~9之间.矩阵键盘操作: 依次按下4*4 矩阵键盘上从第1 到第20 个键,同时在六位数码管上依次显示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

[实验原理](1) 按键识别去抖动原理:我们在手动按键的时候, 由于机械抖动或是其它一些非人为的因素很有可能造成误识别, 一般手动按下一次键然后接着释放, 按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms 左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。

(2) 独立按键识别: 判断是否按下键盘,当单片机上电时所有I/O 口为高电平,参照实验电路图, S2 键一端接地另一端接P3.4,所以当键被按下时P3.4 口直接接地,此时检测P3.4 肯定为低电平。

(3) 矩阵键盘识别: 参照实验电路图, 矩阵键盘的四行分别与P3.0-P3.3 连接,四列分别与P3.4-P3.7 连接。

如识别第1列按键, 可给P3.4送低电平,其余为高电平, 把P3口数据读回, 判断其第4位是否全为1, 如果全为1,则该列无键按下, 可继续判断下1列, 如有某位为0, 则有键按下,并可根据其位置识别按键所在行,从而确定该按键位置和键值. 其它各列按键识别类同.[实验目的](1)掌握独立按键的识别方法.(2)掌握按键去抖动的基本原理。

(3)了解矩阵键盘检测的操作方法。

(4)进一步巩固掌握数码管的显示操作方法.[硬件电路]图1 独立键盘和矩阵键盘电路图图2 矩阵键盘接口图。

单片机课程设计4x8矩阵键盘.

单片机课程设计4x8矩阵键盘.

单片机原理与应用课程设计矩阵式键盘与显示班级:机102-1姓名:许传栋学号:201056502133组号:六组组员:孔令伟、张叶荣、尚桂香、许传栋、刘金林目录:一、设计要求 (3二、硬件设计 (3三、键盘的运行 (6四、数码管的显示 (6五、键盘键值的确定 (6六、按键顺序码的显示 (7七、74LS48的应用 (8八、数码管接口引脚 (9九、程序设计 (10附录 (18一、设计要求1、完成单片机与32键矩阵式键盘的连接方法。

2、识别是否有键按下,并将键值用两位数码管显示出来。

3、用软件延时取出按键抖动。

二、硬件设计1、总体构思本次设计为32键矩阵式键盘,因此采用4x8式按键分布。

分为4行8列的布局。

如图T2_1图T2_1当行线和列线分别置一和置零时,按键两端的电压将发生改变。

将键盘的所有引线连出,行线联接到P2口的低四位,列线联接到P1口,从而构成了单片机对键盘按钮动作的读取电路。

将键值用两位数码管显示,因此要利用两片数码管。

由于单片机通过P0口进行输出,因此将P0口的高四位和低四位分别输出数码管的十位和个位,并在单片机与数码管之间接入74LS48。

74LS48的作用是将P0的四位输出转化为八位,并且作为晶体管的驱动, 74LS48的输出电流为6mA,刚好满足数码管的电流。

连接电路如图T2_2图T2_2单片机将数据从P0口输出后经过74LS48的转换与驱动带动,数码管进行数码的显示,通过数码管的显示判断出按钮的位置。

将上述键盘和显示电路联接到单片机上:键盘的行线联接到单片机的P2.0~P2.3上,列线联接到单片机的P1口,P0.0~P0.3,P0.4~P0.7分别连接到两片74LS48的输入端口。

再接入单片机的晶振电路和复位电路,构成单片机的总体电路设计。

如图T2_3图T2_3根据总体电路图的联接,设计出实际的物品。

三、键盘的运行将32个按钮按照4x8的方式排列并连接到电路后。

先将行线全部置一列线全部置零,在将列线置一行线全部置零,检测各行线和列线的的键值,若键值产生变化则表明有按钮按下,否则表示没有按键按下。

单片机 矩阵键盘实验 实验报告

单片机 矩阵键盘实验 实验报告

单片机矩阵键盘实验实验报告
实验名称:单片机矩阵键盘实验
实验目的:掌握单片机矩阵键盘的原理和应用,能够使用单片机按键输入
实验内容:利用Keil C51软件,采用AT89C51单片机实现一个4x4的矩阵键盘,当按下任何一个按键时,将相应的键值传输到液晶显示屏上进行显示。

实验步骤:
1、搭建实验电路,将矩阵键盘与单片机相连,连接好电源正负极,然后将电路焊接成一个完整的矩阵键盘输入电路。

2、打开Keil C51软件,新建一个单片机应用工程,然后编写代码。

3、通过代码实现对矩阵键盘输入的扫描功能,当按下任何一个按键时,将相应的键值传输到液晶显示屏上进行显示。

4、编译代码,生成HEX文件,下载HEX文件到单片机中,将单片机与电源相连,然后就可以测试了。

5、测试完成后,根据测试结果修改代码,重新编译生成HEX 文件,然后下载到单片机中进行验证。

实验结果:
经过测试,实验结果良好,能够准确地输入按键的值,显示在液晶屏上。

实验感想:
通过这次实验,我深深地认识到了矩阵键盘技术的重要性以及应用价值,同时也更加深入了解单片机的工作原理和应用技术,这对我的学习和工作都有很好的帮助。

(整理)单片机控制的矩阵键盘

(整理)单片机控制的矩阵键盘
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
键盘处理程序就作这么一个简单的介绍,实际上,键盘、显示处理是很复杂的,它往往占到一个应用程序的大部份代码,可见其重要性,但说到,这种复杂并不来自于单片机的本身,而是来自于操作者的习惯等等问题,因此,在编写键盘处理程序之前,最好先把它从逻辑上理清,然后用适当的算法表示出来,最后再去写代码,这样,才能快速有效地写好代码。
可见,键盘输出经双稳态电路之后,输出已变为规范的矩形方波。
软件上采取的措施是:在检测到有按键按下时,执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态;同理,在检测到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。
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
2.独立式按键的软件结构
独立式按键软件常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。图7.4中的I/O口采用P1口,请读者自行编制相应的软件。

基于单片机控制的矩阵键盘显示系统设计

基于单片机控制的矩阵键盘显示系统设计

基于单片机控制的矩阵键盘显示系统设计矩阵键盘是一种常见的输入设备,用于将用户的按键操作转换成数字信号,以便与其他电子设备进行交互。

基于单片机的矩阵键盘显示系统设计实现了对键盘输入的读取,并通过显示器将按键信息进行显示。

下面将对该系统的设计进行详细介绍。

1.系统概述本系统主要由矩阵键盘、单片机、显示器组成。

矩阵键盘采用常见的4行4列的布局,每个按键都与单片机的输入引脚相连接。

单片机负责读取输入引脚的状态,并根据不同的按键进行不同的处理。

而显示器则用于显示按键输入的结果。

2.硬件设计2.1矩阵键盘矩阵键盘采用4行4列的布局,每个按键都与单片机的输入引脚相连接。

为了实现多按键同时按下的检测,采用按键矩阵的方式进行连接。

在按键矩阵中,每个按键与四个不同的引脚相连接,分别代表行和列。

单片机通过轮询的方式读取每个行和列的引脚状态,从而实现对按键状态的检测。

2.2单片机单片机作为系统的核心控制器,负责读取矩阵键盘的输入信号,并对按键进行处理。

单片机需要配置相应的IO引脚作为输入引脚,并进行轮询式的读取。

当按键按下时,单片机会通过扫描算法检测到按键的位置,并将按键的信息存储到相应的缓存区。

2.3显示器显示器用于显示按键输入的结果。

可以采用常见的数码管、LCD屏幕或者LED矩阵作为显示设备。

单片机通过输出引脚将按键信息传递给显示器,显示器根据这些信息进行相应的显示操作。

3.软件设计3.1初始化在系统启动时,单片机需要进行相应的初始化工作。

主要包括配置口线方向、扫描算法的设置、中断使能等。

3.2扫描算法为了检测按键的位置,需要采用合适的扫描算法。

常用的有逐行扫描、逐列扫描和矩阵扫描等。

逐行扫描的方法是先给每一行输出低电平,然后通过检测每一列的引脚状态来确定按键位置。

逐列扫描的方法与之类似,只是输出低电平的对象从行变为列。

矩阵扫描方法是同时扫描行和列,通过检测相交的引脚状态来确定按键位置。

在实际应用中,可以根据具体需求选择合适的扫描算法。

单片机矩阵按键实训报告

单片机矩阵按键实训报告

一、实训目的1. 理解矩阵键盘的工作原理和电路设计。

2. 掌握矩阵键盘的编程方法,实现按键的检测和响应。

3. 培养实际动手能力和团队协作能力。

二、实训内容1. 矩阵键盘电路设计2. 矩阵键盘编程3. 矩阵键盘应用实例三、实训环境1. 单片机开发板:51单片机开发板2. 矩阵键盘:4x4矩阵键盘3. 编程软件:Keil uVision54. 仿真软件:Proteus四、实训过程1. 矩阵键盘电路设计矩阵键盘由行线和列线组成,通过行列交叉连接的按键阵列实现按键功能。

在4x4矩阵键盘设计中,共有4条行线和4条列线,共16个按键。

电路设计如下:(1)行线连接:将单片机的P1.0至P1.3端口作为行线输出,用于控制行线电平。

(2)列线连接:将单片机的P2.0至P2.3端口作为列线输入,用于检测按键状态。

(3)按键连接:将16个按键分别连接到行线和列线交叉处。

2. 矩阵键盘编程(1)初始化:设置P1端口为输出模式,P2端口为输入模式。

(2)按键检测:通过逐行扫描的方式检测按键状态。

首先将P1端口的所有行线设置为低电平,然后逐行检查P2端口列线的状态,如果某列线为低电平,则表示该行对应列的按键被按下。

(3)消抖处理:为了避免按键抖动引起的误读,需要进行消抖处理。

通常采用软件消抖方法,即在检测到按键按下后,延时一段时间(如10ms)再次检测按键状态,如果按键仍然被按下,则确认按键操作有效。

(4)按键处理:根据检测到的按键,执行相应的操作。

例如,当按键按下时,在LCD1602显示屏上显示对应的按键值。

3. 矩阵键盘应用实例以LCD1602显示屏为例,实现按键与显示内容的关联。

(1)LCD1602显示屏初始化:设置LCD1602的显示模式、光标位置等。

(2)按键扫描:按照上述方法检测按键状态。

(3)按键处理:根据按键值,在LCD1602显示屏上显示对应的字符。

五、实训结果1. 成功设计并实现了4x4矩阵键盘电路。

2. 编写了矩阵键盘的检测和响应程序,实现了按键的检测和消抖处理。

单片机控制的矩阵键盘

单片机控制的矩阵键盘

引言概述:
单片机控制的矩阵键盘已经成为现代电子设备中常见的输入方式之一。

该键盘具有结构简单、易于实现和使用方便等优点,广泛应用于各种电子产品中。

本文将对单片机控制的矩阵键盘的原理、设计和应用进行详细阐述。

正文内容:
一、矩阵键盘的原理
1.1矩阵键盘的基本结构
1.2矩阵键盘的电路连接方式
1.3矩阵键盘的工作原理
二、单片机控制的矩阵键盘的设计
2.1单片机的选择和配置
2.2键盘扫描算法的设计
2.3矩阵键盘的接口设计
2.4程序的编写和调试
2.5键盘输入的处理和应用
三、单片机控制的矩阵键盘的应用
3.1家电控制系统中的使用
3.2工控设备中的应用
3.3智能家居中的应用
3.4安防系统中的应用
3.5医疗设备中的应用
四、单片机控制的矩阵键盘的优缺点
4.1优点:
4.1.1结构简单,易于实现
4.1.2使用方便,操作灵活
4.1.3成本低廉,适合大规模生产
4.2缺点:
4.2.1键盘数量限制
4.2.2受到干扰可能导致误触发
五、单片机控制的矩阵键盘的发展趋势
5.1多功能键盘的设计
5.2无线键盘与蓝牙技术的结合
5.3舒适性与人机工程学的结合
5.4智能化与技术的应用
总结:
单片机控制的矩阵键盘是一种常见的输入方式,具有结构简单、易于实现和使用方便等优点。

本文对其原理、设计和应用进行
了详细阐述。

随着技术的不断发展,矩阵键盘在功能、无线化、舒适性和智能化方面也有了较大的进步和应用。

相信在未来,单片机控制的矩阵键盘将继续发挥重要作用,并与其他技术相结合,满足人们对输入设备的更高要求。

单片机矩阵按键原理

单片机矩阵按键原理

单片机矩阵按键原理
单片机矩阵按键的原理主要是通过行列结构来识别按键。

具体来说,它使用4条I/O线作为行线,4条I/O线作为列线,形成了一个4x4的矩阵。

在行线和列线的每个交叉点上,设置一个按键。

当某个按键被按下时,对应的行线和列线会被连通,导致行线和列线的电平发生变化。

单片机通过逐行扫描或逐列扫描的方式,读取I/O口的电平变化,从而确定哪个按键被按下。

具体来说,在行列扫描中,单片机先从P1口的高四位(四个行)输出高电平,低四位(四个列)输出低电平,如果有按键按下,从P1口的高四位读取键盘状态,判断高四位的四行哪一行变成了低电平,就知道是第几行。

然后从P1口的低四位(四个列)输出高电平,高四位(四个行)输出低电平,从P1口的低四位读取键盘状态,判断低四位的四列哪一行变成了低电平,就知道是第几列。

将两次读取结果组合起来就可以得到当前按键的特征编码。

使用这种行列结构能够有效地提高单片机系统中I/O口的利用率,节约单片机的资源。

以上内容仅供参考,建议查阅关于单片机矩阵按键的书籍或者咨询专业技术人员获取更准确的信息。

8x4键盘实验

8x4键盘实验

8x4矩阵键盘实验一、实验要求:使用单片机、32个开关按键、和4个led数码管接口实现输入键值的显示,设计8x4键盘当按下对应的按键时led数码管显示相应的键值,再按下另一个按键时,之前的数值移到另外两个led数码管上。

二、实验目的:1.理解掌握矩阵键盘扫描工作原理2.掌握矩阵键盘与单片机接口的编程方法三、实验原理利用单片机的p0口七个引脚做行,P2.0-P2.3四个引脚作为列输入构成8x4键盘,P0的输入通过接入两个四输入与门74LS21检测是否有按键按下,要是有按键按下,就触发外部中断0.进而计算出对应按键的键值,利用两片74LS164拓展单片机的I/O接口,使用P3口做为输出数据口,最后通过四片74HC4511对输出数据进行译码输出到led数码管,是led数码管显示按下的键的键值。

四、实验内容1.实验程序ORG 0000HLJMP INITORG 0003H ;外部中断源入口地址LJMP INTORG 0100HINIT: ;中断初始化设置SETB EA ;开总中断SETB EX0 ;开外部中断0MOV SCON,#00H ;设置串行口方式0MOV P2,#00H ;全扫描字送P2口MOV R1,#4 ;将四个LED数码管熄灭LED_EXTINCT:MOV SBUF,#0FFHLED_EXTINCT1: JNB TI,LED_EXTINCT1CLR TIDJNZ R1,LED_EXTINCTLP: SJMP LP ;等待中断INT: ;中断表示有按键按下MOV R6,#00H ;列号MOV R2,#0FEH ;首列扫描字送R2MOV R7,#04 ;循环次数(键盘4列)COLUMN: MOV P2,R2 ;列扫描字送P2MOV A,P0 ;读取行号值JNB ACC.0,ROW0 ;第0行无键按下,转查下一行JNB ACC.1,ROW1 ;第1行无键按下,转查下一行JNB ACC.2,ROW2 ;第2行无键按下,转查下一行JNB ACC.3,ROW3 ;第3行无键按下,转查下一行JNB ACC.4,ROW4 ;第4行无键按下,转查下一行JNB ACC.5,ROW5 ;第5行无键按下,转查下一行JNB ACC.6,ROW6 ;第6行无键按下,转查下一行JNB ACC.7,ROW7 ;第7行无键按下,重新扫描MOV A,R2 ;将原列号送ARL A ;左移A的值MOV R2,A ;得到下一列的扫描字INC R6 ;列号加1DJNZ R7,COLUMN ;扫描完毕,无键按下,则结束中断LJMP OVER_INTROW0: MOV A,#0 ;第0行有键按下,将行首键号送AADD A,R6 ;将列号和行号相加,得到键码LJMP SHOW ;转到显示输出ROW1: MOV A,#04 ;第1行有键按下,将行首键号送AADD A,R6 ;将列号和行号相加,得到键码LJMP SHOW ;转到显示输出ROW2: MOV A,#08 ;第2行有键按下,将行首键号送AADD A,R6 ;将列号和行号相加,得到键码LJMP SHOW ;转到显示输出ROW3: MOV A,#12 ;第3行有键按下,将行首键号送AADD A,R6 ;将列号和行号相加,得到键码LJMP SHOW ;转到显示输出ROW4: MOV A,#16 ;第4行有键按下,将行首键号送AADD A,R6 ;将列号和行号相加,得到键码LJMP SHOW ;转到显示输出ROW5: MOV A,#20 ;第5行有键按下,将行首键号送AADD A,R6 ;将列号和行号相加,得到键码LJMP SHOW ;转到显示输出ROW6: MOV A,#24 ;第6行有键按下,将行首键号送AADD A,R6 ;将列号和行号相加,得到键码LJMP SHOW ;转到显示输出ROW7: MOV A,#28 ;第7行有键按下,将行首键号送AADD A,R6 ;将列号和行号相加,得到键码LJMP SHOW ;转到显示输出SHOW: ;LED数码管显示子程序PUSH ACC ;将A压栈WAITKEY_LOST:LCALL DELAY ;判断按键是否释放,释放后显示MOV P2,#00HMOV A,P0CPL A ;对A取反,高电平表示有键按下 JNZ WAITKEY_LOSTPOP ACC ;将A弹出MOV B,#10 ;用数字显示按键所表示的值DIV AB ;商保留在A,余数保留在BJZ RESULT ;判断A是否等于0,如果等于0,则为一位数,就直接跳转到“RESULT”;RL A ;否则键码为两位数,则需要将A的值左移四位,然后再与B相加RL ARL ARL ARESULT:ADD A,B ;将A和B相加,输出两位数MOV SBUF,AWAIT: JNB TI,WAITCLR TIOVER_INT: ;中断结束MOV P2,#00HRETIDELAY: ;延时子程序MOV,R3#0FFHLP_02:MOV R4,#0FFHLP_03:NOPDJNZ R4,LP_03DJNZ R3,LP_02RETEND实验原理图:实验仿真截图实验总结:通过本实验,我了解了非编码键盘扫描工作方式和编程的方法。

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

单片机原理与应用课程设计矩阵式键盘与显示班级:机102-1姓名:许传栋学号:201056502133组号:六组组员:孔令伟、张叶荣、尚桂香、许传栋、刘金林目录:一、设计要求 (3)二、硬件设计 (3)三、键盘的运行 (6)四、数码管的显示 (6)五、键盘键值的确定 (6)六、按键顺序码的显示 (7)七、74LS48的应用 (8)八、数码管接口引脚 (9)九、程序设计 (10)附录 (18)一、设计要求1、完成单片机与32键矩阵式键盘的连接方法。

2、识别是否有键按下,并将键值用两位数码管显示出来。

3、用软件延时取出按键抖动。

二、硬件设计1、总体构思本次设计为32键矩阵式键盘,因此采用4x8式按键分布。

分为4行8列的布局。

如图T2_1图T2_1当行线和列线分别置一和置零时,按键两端的电压将发生改变。

将键盘的所有引线连出,行线联接到P2口的低四位,列线联接到P1口,从而构成了单片机对键盘按钮动作的读取电路。

将键值用两位数码管显示,因此要利用两片数码管。

由于单片机通过P0口进行输出,因此将P0口的高四位和低四位分别输出数码管的十位和个位,并在单片机与数码管之间接入74LS48。

74LS48的作用是将P0的四位输出转化为八位,并且作为晶体管的驱动,74LS48的输出电流为6mA,刚好满足数码管的电流。

连接电路如图T2_2图T2_2单片机将数据从P0口输出后经过74LS48的转换与驱动带动,数码管进行数码的显示,通过数码管的显示判断出按钮的位置。

将上述键盘和显示电路联接到单片机上:键盘的行线联接到单片机的P2.0~P2.3上,列线联接到单片机的P1口,P0.0~P0.3,P0.4~P0.7分别连接到两片74LS48的输入端口。

再接入单片机的晶振电路和复位电路,构成单片机的总体电路设计。

如图T2_3图T2_3根据总体电路图的联接,设计出实际的物品。

三、键盘的运行将32个按钮按照4x8的方式排列并连接到电路后。

先将行线全部置一列线全部置零,在将列线置一行线全部置零,检测各行线和列线的的键值,若键值产生变化则表明有按钮按下,否则表示没有按键按下。

对于有按键按下的线路将其中变化的键值,通过软件查表得出其对应的顺序码,并将其保存。

四、数码管的显示将从键盘处读取的顺序码转换为BCD 码从P0口处进行输出。

因此用P0口的高四位和低四位分别代表十位和个位进行输出。

数码管需要8根输入,并且连接到单片机上需要驱动,因此选择采用74LS48进行转换与驱动。

五、键盘键值的确定由于行线和列线分别置一和置零,当按下按钮后,该按钮所在的行线和列线上所检测到的电位将会发生变化,曾而判断出不同的按钮所对应的位置和顺序码,确定数码管显示的数值。

个按键的键值如图T5_1图T5_1如图T5_1所示,在线左侧,键值的最后一位均为F;在线右侧,键值对低二位均为F。

因此可根据F所在位置的不同判断按键在线左侧还是右侧。

且出去为F的为后左侧和右侧的键值时一一对应相等的。

在查询按键键位位置时,只需建立一个相同的表即可。

六、按键顺序码的显示先将顺序码定制为FFH,再在差表时,将顺序码逐次加一,当查找到对应的键值的同时也取得了在表中相应的顺序码。

当按键所在的位置为线的左侧时顺序码纪委输出置,在线的右侧时则需将顺序码加16在进行输出。

输出由两片数码管进行显示,所以要将十六进制数转化为BCD码进行输出。

将八个输出端口分成两组,一组输出为十位、另一组输出为个位。

并将十位于个位分别联接到不同的74LS48的输入端进行译码,控制晶体管的显示。

达到显示的目的。

七、74LS48的应用八、数码管接口引脚九、程序设计1、程序设计流程:如图T8_1图T8_1按照电路图联接电路,确定行线与列线所对应的I/O接口。

通过MOV指令将行线所在的端口P2口赋值为0FH,列线所在端口P1口赋值为00H。

读取P2口的低四位存入R0。

通过MOV指令将行线所在的端口P2口赋值为00H,列线所在的端口P1口赋值为FFH。

取P1口的高四位存入R2,P1口的低四位存入R1。

取P2的低四位作为高四位分别与P1的低四位和高四位组合为新的八位二进制数,并分别保存在R4和R7中。

判断P1的高四位是否等于0F0H。

若相等,表明对应于P1低四位的按钮有动作,在进行查表,确定该键所对应的顺序码;若不相等,则表明对应于P1高四位的按钮有动作,进行跳转,跳转到判断P1高四位顺序码的指令,进行查表。

由于键值的原因,两组所查的表完全相同。

当动作的按钮在低位时,将顺序码存入到30H单元;当动作的按钮在高四位时,将顺序码加16再存入30H。

将顺序码除后10,将整数部分与余数部分组成一个新的八位二进制,并将其通过P0口进行输出。

在检测到有按键按下后,通过演示程序,对按键进行去抖操作。

具体程序及注释如下:ORG0000HLJMP STARTORG0100H;识别键盘有无按下程序首地址START:MOV P1,#00H;所有列线置低电平MOV P2,#0FH;所有行线置高电平MOV A,P2;读P2口ANL A,#0FH;取出低四位MOV R0,A;P2低四位暂存到R0 MOV P1,#0FFH;所有列线置高电平MOV P2,#00H;所有的行线置低电平MOV A,P1;读P1口MOV R3,A;p1口暂存到R3ANL A,#0FH;取出低四位MOV R1,A;P1口低四位暂存到R1 MOV A,R3;读取P1口给累加器ANL A,#0F0H;取出P1口高四位MOV R2,A;P1口的高四位暂存到R2 MOV A,R0;读取P2口的低四位给累加器ASWAP A;累加器A中低四位和高四位交换ORL A,R1;P1口的低四位与P2口的低四位逻辑或运算重新组合,存在累加器A MOV R4,A;P1口的低四位与P2口的低四位逻辑或运算重新组合暂存到R4MOV A,R0;读取P2口的低四位给累加器AORL A,R2;P1口的高四位与P2口的低四位逻辑或运算重新组合,存在累加器ASWAP A;累加器A中低四位和高四位交换MOV R7,A;P1口的高四位与P2口的低四位逻辑或运算重新组合暂存到R7KEY0:CJNE R2,#0F0H,KEY1;p1口的高四位不全为高电平,跳转到KEY1MOV SP,#70H;软件延时子程序,软件消抖MOV A,R0PUSH ACCMOV A,R1PUSH ACCMOV R0,#64HMOV R1,#64HNET:DJNZ R1,NETDJNZ R0,NETPOP ACCMOV R1,APOP ACCMOV R0,ACJNE R2,#0F0H,KEY_IN1;p1口的高四位不全为高电平,跳转到KEY_IN1KEY_IN1:MOV A,R4;p2低四位与P1低四位组合给累加器AMOV B,A;将按键的特征编码暂存到BMOV DPTR,#KEY_TABLE1MOV R6,#0FFHKEY_IN2:INC R6;顺序码加1MOV A,R6;顺序码值给累加器AMOVC A,@A+DPTR;查表CJNE A,B,KEY_IN3;比较,若相同则找到按键的特征编码MOV A,R6;找到特征编码后,取顺序码MOV30H,A;存入30H单元MOV B,#0AH;B=0AHDIV AB;累加器A除以B,商存在A,余数存在BSWAP A;高四位与低四位互换ORL A,B;A中高四位与B低四位取逻辑或重新组合MOV P0,A;从P0口输出LJMP STARTKEY_IN3:CJNE A,#00H,KEY_IN2;未完,继续查RET;00H为结束码KEY1:CJNE R1,#0FH,START;比较,P1低四位不全为高电平,跳转到START MOV SP,#70H;软件延时子程序,软件消抖MOV A,R0PUSH ACCMOV A,R1PUSH ACCMOV R0,#0AHMOV R1,#0AHNET2:DJNZ R1,NET2DJNZ R0,NET2POP ACCMOV R1,APOP ACCMOV R0,AMOV A,R7;P2低四位P1低四位(R7)给累加器AMOV B,A;累加器A暂存到BMOV DPTR,#KEY_TABLE1MOV R6,#0FFHKEY_IN4:INC R6;顺序码加1MOV A,R6;顺序码值给累加器AMOVC A,@A+DPTR;查表CJNE A,B,KEY_IN5;比较,若相同则找到按键的特征编码MOV A,R6;找到特征编码后,取顺序码ADD A,#10H;累加器A加上16给累加器AMOV30H,A;存入30H单元MOV B,#0AH;B=0AHDIV AB;累加器A除以B,商存在A,余数存在BSWAPA;高四位与低四位互换ORL A,B;A中高四位与B低四位取逻辑或重新组合MOV P0,A;从P0口输出LJMP STARTKEY_IN5:CJNE A,#00H,KEY_IN4;未完,继续查RET;00H为结束码KEY_TABLE1:DB0EEH,0DEH,0BEH,07EH;顺序码DB0EDH,0DDH,0BDH,07DH;顺序码DB0EBH,0DBH,0BBH,07BH;顺序码DB0E7H,0D7H,0B7H,077H;顺序码00H;结束码END附录:参考文献新编单片机原理及应用(机械工业出版社)74LS48芯片资料。

相关文档
最新文档