非编码键盘的扫描程序设计

合集下载

实验五 键盘扫描实验 实验报告

实验五 键盘扫描实验 实验报告

键盘扫描实验实验报告一、实验目的1. 掌握线反转法键盘扫描原理。

2. 了解单片机的输入和输出过程,理解单片机的数据采集过程。

二、实验内容单片机外接4x4键盘,通过线反转法判断按下的键,并在数码管上显示按键对应的数字。

第一行从左到右分别是开关K0, K1, K2, K3,第二行从左到右分别是K4, K5, K6, K7以此类推。

当按下Kn时,在数码管上显示数字n。

三、实验原理线翻转法:先对行(R0-R3)置0,对列(R4-R7)置1。

当有键被按下时,会把按键所在的列的电位从1变0,记录下位置;然后再将行列翻转,记录下按下键的所在行,两数进行或运算,就可以得到一个唯一表示按下键的数字。

例如:假定R0-R7分别与单片机的P2.0-P2.7相连。

先把R4-R7置1,R0-R3置0(通过指令MOV P2, #0F0H实现)。

当键K5被按下时,R5电位被拉低为低电平。

此时,P2口表示的数为:1101 0000(0xD0);然后再置R4-R7为0,R0-R3为1,此时,R1电位被拉低为低电平,此时,P2口表示的数为:0000 1101(0x0D)。

将两数相与取反,得到:0010 0010。

四、实验过程1. 连接好单片机及其外围设备电路2. 编写汇编程序ORG LJMP KeyLJMP K7: CJNE R2, #82H, K8ORG 0100H MOV P0, #0F8H Init: CLR P1.3 LJMP KeyMOV P0, #0C0H K8: CJNE R2, #14H, K9 Key: MOV P2, #0F0H MOV P0, #080HMOV A, P2 LJMP KeyMOV R1, A K9: CJNE R2, #24H, K10MOV P2, #0FH MOV P0, #090HMOV A, P2 LJMP KeyORL A, R1 K10: CJNE R2, #44H, K11CPL A MOV P0, #088HMOV R2, A LJMP KeyJNZ KeyPro K11: CJNE R2, #84H, K12LJMP Key MOV P0, #083H KeyPro: CJNE R2, #11H, K1 LJMP KeyMOV P0, #0C0H K12: CJNE R2, #18H, K13LJMP Key MOV P0, #0C6H K1: CJNE R2, #21H, K2 LJMP KeyMOV P0, #0F9H K13: CJNE R2, #28H, K14LJMP Key MOV P0, #0A1H K2: CJNE R2, #41H, K3 LJMP KeyMOV P0, #0A4H K14: CJNE R2, #48H, K15LJMP Key MOV P0, #086H K3: CJNE R2, #81H, K4 LJMP KeyMOV P0, #0B0H K15: CJNE R2, #88H, K16LJMP Key MOV P0, #08EH K4: CJNE R2, #12H, K5 LJMP KeyMOV P0, #099H K16: LJMP KeyLJMP Key ENDK5: CJNE R2, #22H, K6MOV P0, #092HLJMP KeyK6: CJNE R2, #42H, K7MOV P0, #082H五、实验结果1. 当按下开关Kn时,数码管能够显示对应的数字。

stm32键盘扫描电路原理

stm32键盘扫描电路原理

stm32键盘扫描电路原理
STM32键盘扫描电路原理是通过使用STM32微控制器的GPIO(通用输入/输出)功能和外部硬件电路,实现对键盘的扫描和检测。

1. 首先需要将键盘的按键连接到STM32微控制器的GPIO引脚上。

可以使用矩阵排列的方式来连接多个按键。

2. 然后将STM32微控制器的GPIO设置为输入模式,需要扫描的按键对应的GPIO引脚设置为输入。

3. 在代码中,设置一个循环,依次对每一个按键进行扫描。

可以使用GPIO外部中断来触发按键的扫描。

4. 在每次扫描过程中,将某一个按键对应的GPIO引脚设置为高电平,并读取引脚的状态。

5. 如果读取到的引脚状态为高电平,则表示该按键被按下。

6. 根据读取到的按键状态,可以执行相应的操作。

需要注意的是,如果使用矩阵排列的方式连接多个按键,还需要使用GPIO引脚的输出模式来控制矩阵的行和列。

总之,STM32键盘扫描电路原理是通过STM32微控制器的GPIO和外部硬件电路,实现对键盘的扫描和检测。

实验四4×4键盘输入

实验四4×4键盘输入

实验四: 4 × 4键盘输入实验一、实验目的:1.学习非编码键盘的工作原理和键盘的扫描方式。

2.学习键盘的去抖方法和键盘应用程序的设计。

二、实验原理:键盘是单片机应用系统接受用户命令的重要方式。

单片机应用系统一般采用非编码键4*4矩阵盘,需要由软件根据键扫描得到的信息产生键值编码,以识别不同的键。

本板采用键盘,行信号分别为P1.0-P1.3 ,列信号分别为P1.4-P1.7 。

具体电路连接见下图对于键的识别一般采用逐行(列)扫描查询法,判断键盘有无键按下,由单片机I/O口向键盘送全扫描字,然后读入列线状态来判断。

程序及流程图:ORG 0000HAJMP MAINORG 0000HAJMP MAINORG 0030HMAIN:MOV P2,#0F7HMOV P1,#0F0HMOV R7,#100DJNZ R7,$MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ MAINLCALL D10MSMOV A,#00HMOV R0,AMOV R1,AMOV R2,#0FEH SKEY0:MOV A,R2MOVP1,AMOVR7,#10DJNZ R7,$MOVA,P1ANLA,#0F0HXRLA,#0F0HJNZ LKEYINC R0MOVA,R2RL AMOVR2,AMOVA,R0CJNE A,#04H,SKEY0AJMP MAIN LKEY:JNB ACC,4,NEXT1MOVA,#00HMOVR1,AAJMP DKEYNEXT1:JNB ACC.5,NEXT2MOVA,#01HMOVR1,AAJMP DKEYNEXT2:JNB ACC.6,NEXT3MOVA,#02HMOVR1,AAJMP DKEYNEXT3:JNB ACC.7,MAINMOVA,#03HMOVR1,AAJMP DKEY DKEY:MOV A,R0MOVB,#04HMULABADDA,R1AJMP SQRSQR:MOVDPTR,#TABMOVC A,@A+DPTRMOVP0,AAJMP MAINTAB:DB0C0H,0F9H,0A4H,0B0H,99H, 92H, 82H, 0F8H DB 80H, 90H, 88H, 83H, 0C6H,0A1H,86H, 8EH D10MS:MOV R6,#10L1:MOV R5,#248DJNZ R5,$DJNZ R6,L1RETEND流程图:结束三、思考题:总结 FPGA是如何识别按键的?与单片机读取键值有何不同?答:FPGA的所有 I/O 控制块允许每个 I/O 引脚单独配置为输入口 , 不过这种配置是系统自动完成的。

键盘扫描程序实验报告

键盘扫描程序实验报告

一、实验目的1. 理解键盘扫描的基本原理。

2. 掌握使用C语言进行键盘扫描程序设计。

3. 学习键盘矩阵扫描的编程方法。

4. 提高单片机应用系统的编程能力。

二、实验原理键盘扫描是指通过检测键盘矩阵的行列状态,判断按键是否被按下,并获取按键的值。

常见的键盘扫描方法有独立键盘扫描和矩阵键盘扫描。

独立键盘扫描是将每个按键连接到单片机的独立引脚上,通过读取引脚状态来判断按键是否被按下。

矩阵键盘扫描是将多个按键排列成矩阵形式,通过扫描行列线来判断按键是否被按下。

这种方法可以大大减少引脚数量,降低成本。

本实验采用矩阵键盘扫描方法,使用单片机的并行口进行行列扫描。

三、实验设备1. 单片机开发板(如51单片机开发板)2. 键盘(4x4矩阵键盘)3. 连接线4. 调试软件(如Keil)四、实验步骤1. 连接键盘和单片机:将键盘的行列线分别连接到单片机的并行口引脚上。

2. 编写键盘扫描程序:(1)初始化并行口:将并行口设置为输入模式。

(2)编写行列扫描函数:逐行扫描行列线,判断按键是否被按下。

(3)获取按键值:根据行列状态,确定按键值。

(4)主函数:调用行列扫描函数,读取按键值,并根据按键值执行相应的操作。

3. 调试程序:将程序下载到单片机,观察键盘扫描效果。

五、实验程序```c#include <reg51.h>#define ROW P2#define COL P3void delay(unsigned int ms) {unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 123; j++);}void scan_key() {unsigned char key_val = 0xFF;ROW = 0xFF; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值ROW = 0x00; // 初始化行delay(1); // 延时消抖key_val = ROW & COL; // 获取按键值}void main() {while (1) {scan_key();if (key_val != 0xFF) {// 执行按键对应的操作}}}```六、实验结果与分析1. 实验结果:程序下载到单片机后,按键按下时,单片机能够正确读取按键值。

非编码键盘的扫描程序设计

非编码键盘的扫描程序设计

计算机控制技术课程设计是在教学及实验基础上,对课程所学理论知识的深化和提高。

本次课程设的内容是利用8031微控制器,通过8155扩展I/O口行列式键盘。

要求通过8155扩展I/O口组成4×8行列式键盘,设计非编码键盘的扫描系统,并且能够对键盘的按键正确识别,去抖动。

关键词:8155 非编码去抖1 课程设计目的 (1)2 非编码键盘 (2)3 芯片介绍 (3)3.1 8031芯片介绍 (3)3.2 8155芯片介绍 (5)4 电路设计 (7)5 程序设计 (8)6 电路仿真 (12)7 心得体会 (17)附录程序清单 (18)参考文献 (21)非编码键盘的扫描程序设计1 课程设计目的(1)了解并掌握非编码键盘的工作原理;(2)熟悉和掌握8155与8031的结构及工作原理;(3)通过课程设计,掌握电路设计的基本方法和技术;(4)掌握单片机的接口技术及相关外围芯片的外特性,控制方法,从而加深对计算机控制技术知识的理解;(5)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

2 非编码键盘键盘可以分为编码式和非编码式两种。

编码式键盘是通过数字电路直接产生对应于按键的ASCⅡ码,这种方式目前很少使用。

非编码式键盘将案件排列成矩阵的形势,由硬件或软件随时对矩阵扫描,一旦某一键被按下,该键的行列信息即被转换为位置码并送入主机,再由键盘驱动程序查表,从而得到按键的ASCⅡ码,最后送入内存中的键盘缓冲区供主机分析执行。

非编码式键盘由于结构简单,按键重定义方便而成为目前最常采用的键盘类型。

由此,多姿多彩的多媒体键盘便应运而生,这些键盘通常出现在品牌机上,如联想、同方等,品牌机上的“单键上网”也是基于此原理。

非编码键盘又分为:独立键盘和行列式(又称为矩阵式)键盘。

本次课程设计要求设计的是4×8行列式键盘。

3 芯片介绍3.1 8031芯片介绍8031和8051一样是最常见的MCS51系列单片机,是inter公司早期的成熟的单片机产品,应用范围涉及到各行各业。

键盘程序设计

键盘程序设计

键盘扫描程序是整个程序的核心部分,其流程图如下图3.1所示。

图3.1 键盘扫描程序流程图
八位七段数码管显示程序,采用动态显示,每个数码管均可以从0到9、A到F的显示。

通过查询键盘输出端的数据总线的通码值,将相应的通码在数码管上显示出来。

程序见附录A,八位七段数码管显示如图3.2所示。

图3.2 八位七段数码管
16*16点阵显示程序,通过查询数据总线的通码值,在LED点阵上显示键盘上相应的符号。

程序见附录B,16*16点阵显示如图3.3所示。

图3.3 16*16点阵
扫描码有两种不同的类型:“通码”和“断码”。

当一个键被按下去或长按的时候,键盘就发送通码;当一个键被释放的时候,键盘就发送断码。

每个键盘被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以确定是哪个按键被按下或释放。

程序见附录C。

动态扫描程序,控制八位七段数码管和16*16点阵单独显示,当系统时钟频率达到一定值时,显示效果就和静态显示一样了。

基于非编码的键盘/显示系统设计

基于非编码的键盘/显示系统设计
和 显 示 器作 为 一 个 整 体 来设 计 , 口 电路 简 单 , 合 紧 密 , 本 低 实 用 。 接 结 成
关键词 单片机
键盘 显示 接 口电路
器、个 3 1 ×7行列式键 盘等相关 电路构成 。
1 引 言 通 常 键 盘 有 编 码 和 非 编 码 两 种 编 码 键 盘 通 过 硬 件 电
际中只用 到 了 8位 中 的 3位 其 地址 为 A 0 H 4 S6反 相 F 0 。7 L0
器 : 电 极 开 路 6反 相 与 非 门 , 集 用它 来 驱 动 L D显 示 器 段 选 。 E
图 1 键 显接 口电 路 维普资讯 东越) i ; 舛技
U N 03集成驱 动芯 片 : L 20 是具 有 7个达林 顿 电路 的集成
A M v V 到求键值 程序 JP v ; G : I V A 群2 ; H  ̄ 。 H 第三行行号送 A I O
v : tO B #7 列数送 B w d V , H;
Ⅻ AB 行 号 ×列 数 送 A :
杂, 通常不 被微 型计算 机采纳 , 尤其是 单片机 非编码键 盘常 用一些按键 排列 成行列 矩阵 , 按键 的作用
只是 使 相应 接 点 接 通 或 断 开 , 相 』 程 序 配 合 下 , 可 产 生 在 ‘ 也 被 按 按 键 的 编 码 非编 码 键 盘 硬 件 电 路 极 为 简 单 , 能 广 泛 故 应 用 于 微 型 计 算 机 。 例 如 IM P B — c机 常 用 的 11 盘 , 文 0键 本 所 设 计的 3 列 式 键 盘 均 属 于 此 类 。 7行 x
由键 显 电 路 图 1所 示 , 电 路 主 要 由 2片 数 据 锁 存 器 本

非编码键盘的扫描程序设计

非编码键盘的扫描程序设计

非编码键盘的扫描程序设计武汉理工大学《计算机控制技术》课程设计说明书目录1设计任务及要求............................................................................ . (1)1.1初始条件 ........................................................................... ............. 1 1.2要求完成的主要任务 .................................................................... 1 2方案比较及认证............................................................................ .......... 1 3键盘扫描原理............................................................................ .............. 3 4系统硬件设计............................................................................ .. (4)4.1选用元器件 ........................................................................... (4)4.1.1 8031单片机 (4)4.1.2 8155芯片 ........................................................................... .. 7 4.2 硬件电路 ........................................................................... . (10)4.2.1矩阵式键盘电路 ................................................................ 10 4.2.2时钟电路和复位电路 .. (11)4.2.3非编码键盘的总电路 (12)5系统软件设计............................................................................ (13)5.1软件思想 ........................................................................... ........... 13 5.2 程序流程图 ........................................................................... ...... 14 5.3源程序 ........................................................................... ............... 15 6调试记录及结果分析 ...........................................................................18 心得体会 ........................................................................... ........................ 19 参考文献 ........................................................................... ........................ 20 附录 ........................................................................... .. (21)1武汉理工大学《计算机控制技术》课程设计说明书附录1 8031单片机资料 ................................................................... 21 附录2 8155芯片资料 (21)附录3 程序清单 ........................................................................... . (22)2武汉理工大学《计算机控制技术》课程设计说明书非编码键盘的扫描程序设计1设计任务及要求1.1初始条件1.通过8155扩展I/O口组成6×6行列式键盘 2.利用8031微控制器1.2要求完成的主要任务1.技术指标:对键盘按键能够正确识别,去抖动 2.工作原理:键盘扫描 3.课程设计说明书应包括(1)设计任务及要求(2)方案比较及认证(3)键盘扫描原理(4)硬件原理,电路图,采用器件的功能说明(5)软件思想,流程,源程序(6)调试记录及结果分析(7)参考资料(8)附录:芯片资料,程序清单(9)总结2方案比较及认证(1)键盘去抖动方案的选择键盘采用机械弹性开关来反映一个电压信号的开、断。

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

摘要 ------------------------------------------------------------------------------------------------------- 11设计方案 ------------------------------------------------------------------------------------------------ 21.1设计任务 ---------------------------------------------------------------------------------------- 2 1.2设计方案 ---------------------------------------------------------------------------------------- 22系统硬件设计------------------------------------------------------------------------------------------ 32.1最小应用系统 ------------------------------------------------------------------------------------ 3 2.28155扩展电路---------------------------------------------------------------------------------- 4 2.3矩阵键盘接口电路 ---------------------------------------------------------------------------- 6 2.4LCD1602接口电路----------------------------------------------------------------------------- 6 2.5主电路设计 --------------------------------------------------------------------------------------- 8 3系统软件设计------------------------------------------------------------------------------------------ 83.1主程序设计 --------------------------------------------------------------------------------------- 9 3.2延时程序设计----------------------------------------------------------------------------------- 9 3.3键盘扫描子程序设计 ------------------------------------------------------------------------ 103.4显示子程序设计------------------------------------------------------------------------------- 114 系统调试与结果 ---------------------------------------------------------------------------------- 134.1调试内容与问题解决----------------------------------------------------------------------- 13 4.2运行结果与分析 ----------------------------------------------------------------------------- 13 小结 ------------------------------------------------------------------------------------------------------- 15 参考文献 ------------------------------------------------------------------------------------------------ 16 附录 ------------------------------------------------------------------------------------------------------- 17摘要计算机控制技术是一门以电子技术、自动控制原理、计算机应用技术为基础,以计算机控制技术为核心,综合可编程控制技术、单片机技术、计算机网络技术,从而实现生产技术的精密化、生产设备的信息化、生产过程的自动化及机电控制系统的最佳化的专门学科。

企业对具备较强的计算机控制技术应用能力专门人才需求很大。

本文在proteus7.5软件上利用8155芯片来扩展8031单片机的I/O接口,在keil软件下采用C语言编程,生成.hex文件,可以仿真实现6*6矩阵键盘的按键识别和消除按键抖动,将识别到的按键更人性化的在lcd1602的液晶显示,主要由方案设计、硬件电路设计、系统软件设计和系统调试四部分组成。

关键词:8031单片机 8155芯片矩阵键盘 I/O口扩展 1602液晶非编码键盘的扫描程序设计1设计方案1.1 设计任务通过8155扩展8031微控制器I/O口组成6×6行列式键盘行列式键盘。

设计非编码键盘的扫描硬件系统,画出电路图;对键盘按键能够正确识别,去抖动;键盘扫描;撰写设计说明书。

1.2 设计方案首先,将用8155芯片扩展8031单片机的I/O口,然后需要检测6*6的矩阵键盘的12根导线可分别接在8155的PB0-PB6和PC口,LCD1602的8根数据线可接在8155的PA0口,控制线接在单片机的P2.0-P2.3,由于8155是可编程芯片,所以将的PA、PB和PC口依次设为输出、输出和输入,通过编写键盘扫描程序来识别按键并返回按键值,最后判断将识别到的按键值形象的显示在LCD1602液晶上。

主电路结构框图如图1-1所示。

图1-1 系统结构图2系统硬件设计2.1最小应用系统80C31单片机,它是8位高性能单片机。

属于标准的MCS-51的HCMOS产品。

它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,标准MCS-51单片机的体系结构和指令系统。

80C31内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。

但80C31片内并无程序存储器,需外接ROM。

此外,80C31还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。

在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。

掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。

本次设计采用80C31的PDIP(40pin)封装形式,管脚图如图2-1所示。

图2-1 8031管脚图80c31单片机的40根管脚,若要单片机正常工作必须满足:1. 电源线2根Vcc:编程和正常操作时的电源电压,接+5V。

Vss:地电平。

2. 晶振:2根XTAL1:振荡器的反相放大器输入。

使用外部震荡器是必须接地。

XTAL2:振荡器的反相放大器输出和内部时钟发生器的输入。

当使用外部振荡器时用于输入外部振荡信号。

所以可以得到单片机的最小应用系统如图2-2所示。

图2-2 8031最小应用系统2.2 8155扩展电路8155芯片介绍关于Intel的8155/8156:是一多功能的可编程外围接口芯片,40脚双列直插封装,有A口、B口、C口和定时器/计数器低8位以及定时器/计数器高8位五个端口,另外8155内部还有一个命令/状态寄存器,所以8155内部共有6各端口。

对它们只需要使用即可实现编址,如表1-1所示。

8155的A口有输入和输出两种工作方式,B口也有输入和输出两种工作方式,而C口有输入方式(ALT1),输出方式(ALT2),A口控制端口方式(ALT3)以及A口和B口控制端口方式(ALT4)四种工作方式。

这些端口的工作方式是由8155内部的命令寄存器(命令字)来控制的。

命令字除了规定端口的工作方式还规定了定时器/计数器的工作方式。

命令字只能进行写操作。

其格式如图2-3所示。

图2-3 8155的命令字结合8031和8155的芯片结构和特点,可设计出如图2-4所示的扩展电路。

图2-4 8155扩展电路2.3 矩阵键盘接口电路编码键盘与单片机的接口单片机系统所用的键盘有编码键盘和非编码键盘两种。

非编码键盘是由一些按键排列成的一个行列矩阵。

按键的作用,只是简单地实现接点的接通和断开,但必须有一套相应的程序与之配合,才能产生出相应的键码。

非编码键盘几乎不需要附加什么硬件电路,目前,在微型计算机控制系统中使用比较普遍。

本次设计有一个6行×6列的非编码键盘,按行依次为1-36,键盘的行线接8155C口的六条线PB5~PB0,键盘的列线则接8155C口的6条线,而且在C口接下拉电阻。

如图2-5所示。

图2-5 矩阵键盘接口电路2.4 LCD1602接口电路LCD1602字符型液晶显示模块是一种专门用于可以显示16列*2行显示字母、数字、符号等点阵式LCD, 16*2等的模块。

其管脚介绍如下:第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

图2-6 LCD1602接口电路第15脚:背光源正极。

第16脚:背光源负极。

相关文档
最新文档