矩阵键盘电路设计
verilog-矩阵键盘
二、矩阵键盘显示电路设计(显示键盘值的平方)矩阵键盘显示电路的设计一、实验目的1、了解普通4×4 键盘扫描的原理。
2、进一步加深七段码管显示过程的理解。
3、了解对输入/输出端口的定义方法。
二、实验原理实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描;再就是用软件实现键盘扫描。
作为一个嵌入系统设计人员,总是会关心产品成本。
目前有很多芯片可以用来实现键盘扫描,但是键盘扫描的软件实现方法有助于缩减一个系统的重复开发成本,且只需要很少的CPU 开销。
嵌入式控制器的功能能强,可能充分利用这一资源,这里就介绍一下软键盘的实现方案。
图10-1 简单键盘电路通常在一个键盘中使用了一个瞬时接触开关,并且用如图10-1 所示的简单电路,微处理器可以容易地检测到闭合。
当开关打开时,通过处理器的 I/O 口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的/IO口的输入将被拉低得到逻辑0。
可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的 1或者 0。
尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。
当触点闭合时,其弹起就像一个球。
弹起效果将产生如图10-2所示的好几个脉冲。
弹起的持续时间通常将维持在 5ms∼30ms 之间。
如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。
然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。
图10-2 按键抖动键盘上阵列这些开关最有效的方法(当需要5个以上的键时)就形成了一个如图10-3 所示的二维矩阵。
当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候),一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。
矩阵所需的键的数目显然根据应用程序而不同。
每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。
图10-3 矩阵键盘键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的 4 行均为高电平,那么肯定没有按键按下,否则,如果读入的4 行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。
矩阵键盘键信号检测电路设计EDA课程设计说明书
课程设计说明书题目EDA技术及应用系(部)专业(班级)姓名学号指导教师起止日期EDA技术课程设计任务书系(部):专业:指导教师:目录引言 (5)一、绪论 (5)1.1 FPGA概况 (5)1.2 此课题的研究意义 (6)二、矩阵键盘接口电路的原理及总体设计 (6)2.1 矩阵键盘接口电路的原理 (6)2.2 总体设计 (8)三、各模块的设计及仿真 (8)3.1 键盘扫描电路 (8)3.2 键盘译码电路和按键标志位产生电路 (11)3.3 时钟产生模块 (16)3.4 键盘接口电路顶层电路实现 (18)四、硬件测试 (19)五、实验设备 (19)六、总结 (20)参考文献 (20)矩阵键盘键信号检测电路设计引言人类文明已进入到高度发达的信息化社会。
信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。
电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。
实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronic Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
此设计主要利用VHDL硬件描述语言在EDA平台Quartus II上设计一个4×4阵列键盘扫描电路,将行扫描信号输入阵列键盘,读取列信号的值,输出按键编码,从而判断出按键按下的位置。
并且进行模拟仿真,下载到EDA实验箱进行硬件验证。
一、绪论1.1 FPGA概况早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(E2PROM)三种。
矩阵键盘驱动电路的高阻设计
《微型机与应用》2017年第36卷第8期矩阵键盘驱动电路的高阻设计郭京,沈华,段小虎(中航工业西安航空计算技术研究所,陕西西安710068)摘要:矩阵键盘是人机交互的重要设备。
实际应用场景中,用户通过键盘按键产生激励信号,经过驱动电路送到扫描电路,最终传给处理器电路,从而完成人机交互。
在这个过程中,驱动电路负责传递信号,驱动电路的设计决定着整个系统能否正常工作。
在驱动电路中引入高阻设计后,可以避免多个按键同时按下时矩阵键盘内部电路发生短路的情况,能让整个驱动电路更加可靠。
关键词:矩阵键盘;驱动电路;高阻设计中图分类号:TP391文献标识码:ADOI :10.19358/j.issn.1674-7720.2017.08.009引用格式:郭京,沈华,段小虎.矩阵键盘驱动电路的高阻设计[J ].微型机与应用,2017,36(8):26-27,30.High impedance design of matrix keyboard driver circuitGuo Jing ,Shen Hua ,Duan Xiaohu(Xi ’an Aeronautical Computing Technique Research Institute ,AVIC ,Xi ’an 710068,China )Abstract :The matrix keyboard is an important man-machine interactive equipment.To complete the man-machine interactive ,the user gener-ates excitation signal through the keyboard keys in the actual scenario ,and then the driver circuit sends signal to the scanning circuit ,the sig-nal arrivals the processor circuit at last.In this process ,the driver circuit is responsible for the signal transmission and the design of driver cir-cuit determines whether the entire system can work normally.The high impedance design of driver circuit can avoid matrix keyboard internal short circuit when user presses multiple keys at the same time ,so this design makes the driver circuit more reliable.Key words :matrix keyboard ;driver circuit ;high impedance design0引言随着电子信息技术的高速发展,越来越多的工业控制设备和移动终端设备得到广泛的应用,这些设备通称为嵌入式系统。
单片机4×4矩阵键盘设计方案
1、设计原理(1)如图14.2所示,用单片机的并行口P3连接4×4矩阵键盘,并以单片机的P3.0-P3.3各管脚作输入线,以单片机的P3.4-P3.7各管脚作输出线,在数码管上显示每个按键“0-F”的序号。
(2)键盘中对应按键的序号排列如图14.1所示。
2、参考电路图14.2 4×4矩阵式键盘识别电路原理图3、电路硬件说明(1)在“单片机系统”区域中,把单片机的P3.0-P3.7端口通过8联拨动拨码开关JP3连接到“4×4行列式键盘”区域中的M1-M4,N1-N4端口上。
(2)在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-h端口上;要求:P0.0对应着a,P0.1对应着b,……,P0.7对应着h。
4、程序设计内容(1)4×4矩阵键盘识别处理。
(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。
矩阵的行线和列线分别通过两并行接口和CPU通信。
键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。
键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。
两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
5、程序流程图(如图14.3所示)6、汇编源程序;;;;;;;;;;定义单元;;;;;;;;;;COUNT EQU 30H;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100HSTART: LCALL CHUSHIHUALCALL PANDUANLCALL XIANSHILJMP START;;;;;;;;;;初始化程序;;;;;;;;;;CHUSHIHUA: MOV COUNT,#00HRET;;;;;;;;;;判断哪个按键按下程序;;;;;;;;;;PANDUAN: MOV P3,#0FFHCLR P3.4MOV A,P3ANL A,#0FHJZ SW1LCALL DELAY10MS JZ SW1MOV A,P3ANL A,#0FHCJNE A,#0EH,K1 MOV COUNT,#0 LJMP DKK1: CJNE A,#0DH,K2 MOV COUNT,#4 LJMP DKK2: CJNE A,#0BH,K3 MOV COUNT,#8 LJMP DKK3: CJNE A,#07H,K4 MOV COUNT,#12K4: NOPLJMP DKSW1: MOV P3,#0FFH CLR P3.5MOV A,P3ANL A,#0FHJZ SW2LCALL DELAY10MS JZ SW2MOV A,P3ANL A,#0FHCJNE A,#0EH,K5 MOV COUNT,#1 LJMP DKK5: CJNE A,#0DH,K6 MOV COUNT,#5 LJMP DKK6: CJNE A,#0BH,K7 MOV COUNT,#9 LJMP DKK7: CJNE A,#07H,K8 MOV COUNT,#13K8: NOPLJMP DKSW2: MOV P3,#0FFH CLR P3.6MOV A,P3ANL A,#0FHJZ SW3LCALL DELAY10MS JZ SW3MOV A,P3ANL A,#0FHCJNE A,#0EH,K9 MOV COUNT,#2 LJMP DKK9: CJNE A,#0DH,KA MOV COUNT,#6 LJMP DKKA: CJNE A,#0BH,KB MOV COUNT,#10 LJMP DKKB: CJNE A,#07H,KC MOV COUNT,#14 KC: NOPLJMP DKSW3: MOV P3,#0FFH CLR P3.7MOV A,P3ANL A,#0FHJZ SW4LCALL DELAY10MSJZ SW4MOV A,P3ANL A,#0FHCJNE A,#0EH,KDMOV COUNT,#3LJMP DKKD: CJNE A,#0DH,KE MOV COUNT,#7LJMP DKKE: CJNE A,#0BH,KF MOV COUNT,#11 LJMP DKKF: CJNE A,#07H,KG MOV COUNT,#15KG: NOPLJMP DKSW4: LJMP PANDUAN DK: RET ;;;;;;;;;;显示程序;;;;;;;;;; XIANSHI: MOV A,COUNTMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ALCALL DELAYSK: MOV A,P3ANL A,#0FHXRL A,#0FHJNZ SKRET;;;;;;;;;;10ms延时程序;;;;;;;;;;DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;;DELAY: MOV R5,#20LOOP: LCALL DELAY10MSDJNZ R5,LOOPRET;;;;;;;;;;共阴码表;;;;;;;;;;TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;;;;;;;;;;结束标志;;;;;;;;;;END7、C语言源程序#includeunsigned char code table[]={0x3f,0x66,0x7f,0x39,0x06,0x6d,0x6f,0x5e,0x5b,0x7d,0x77,0x79,0x4f,0x07,0x7c,0x71};void main(void){ unsigned char i,j,k,key;while(1){ P3=0xff; //给P3口置1//P3_4=0; //给P3.4这条线送入0//i=P3;i=i&0x0f; //屏蔽低四位//if(i!=0x0f) //看是否有按键按下//{ for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);if(i!=0x0f) //再次判断按键是否按下//{ switch(i) //看是和P3.4相连的四个按键中的哪个// { case 0x0e:key=0;break;case 0x0d:key=1;break;case 0x0b:key=2;break;case 0x07:key=3;break;}P0=table[key]; //送数到P0口显示//}}P3=0xff;P3_5=0; //读P3.5这条线//i=P3;i=i&0x0f; //屏蔽P3口的低四位//if(i!=0x0f) //读P3.5这条线上看是否有按键按下// { for(j=50;j>0;j--) //延时//for(k=200;k>0;k--);i=P3; //再看是否有按键真的按下//i=i&0x0f;if(i!=0x0f){ switch(i) //如果有,显示相应的按键//{ case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=7;break;}P0=table[key]; //送入P0口显示//}}P3=0xff;P3_6=0; //读P3.6这条线上是否有按键按下// i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--)for(k=200;k>0;k--);i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=8;break;case 0x0d:key=9;break;case 0x0b:key=10;break;case 0x07:key=11;break;}P0=table[key];}}P3=0xff;P3_7=0; //读P3.7这条线上是否有按键按下//i=P3;i=i&0x0f;if(i!=0x0f){ for(j=50;j>0;j--) for(k=200;k>0;k--); i=P3;i=i&0x0f;if(i!=0x0f){ switch(i){ case 0x0e:key=12;break;case 0x0d:key=13;break;case 0x0b:key=14;break;case 0x07:key=15;break;}P0=table[key];}}}}8、注意事项在硬件电路中,要把8联拨动拨码开关JP2拨下,把8联拨动拨码开关JP3拨上去。
《矩阵键盘》课件
游戏机按键通常配备震动反馈 功能,提供触觉反馈,增强游 戏体验的真实感。
工业控制设备
工业控制设备如自动 化仪表、数控机床等 也采用矩阵键盘布局 。
工业控制设备的矩阵 键盘通常防水、防尘 ,适应恶劣的工业环 境。
矩阵键盘的设计使得 工业控制设备能够实 现快速、准确的输入 控制指令。
06
矩阵键盘的未来展望
。
扫描程序
按照一定的规则逐行逐列扫描键盘 ,检测按键状态变化。
识别程序
根据按键电路的状态变化,判断具 体哪个按键被按下,并执行相应的 操作。
接口通信方式
并行通信
通过数据线将按键信号直接传输 到微控制器,数据传输速度快,
但需要较多的数据线。
串行通信
通过串行数据线将按键信号传输 到微控制器,数据传输速度较慢
键。
矩阵键盘的设计使得电子琴能够 模拟传统钢琴的触感,提供逼真
的演奏体验。
电子琴的矩阵键盘通常配备力度 感应功能,根据按下琴键的力度
来调整音符的音量和音质。
游戏机按键
游戏机按键通常采用矩阵键盘 布局,以适应游戏过程中快速 输入指令的需求。
矩阵键盘的设计使得游戏机按 键能够实现多键同时按下,提 高游戏操作的准确性和速度。
THANKS
感谢观看
03
矩阵键盘的电路设计
硬件电路设计
电源电路
为矩阵键盘提供稳定的电 源,确保按键的正常工作 。
按键电路
每个按键对应一个或多个 行列交叉点,通过检测行 和列的状态变化来确定按 键的按下状态。
输出电路
将按键信号输出到微控制 器或其他处理设备进行处 理。
软件编程设计
初始化程序
对矩阵键盘进行初始化设置,包 括设置扫描频率、去抖动时间等
矩阵式键盘设计实训报告
一、实验目的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. 在电路设计过程中,可以考虑增加去抖动电路,提高按键稳定性。
51单片机矩阵键盘设计
51单片机矩阵键盘设计
一、引言
AT89C51单片机矩阵键盘设计是嵌入式系统中一个重要的技术,它的
作用是以矩阵形式把外部按键与MCU相连,使得系统可以对外部的按键进
行检测和响应。
矩阵键盘设计在可编程嵌入式系统的设计中占有重要的地位,如智能交通系统、智能家居系统、航空电子系统等。
本文主要介绍了矩阵键盘设计中硬件电路的设计,包括按键、拉电阻、和矩阵编码等,同时给出系统的控制算法,使得系统可以实现有效的按键
检测和响应。
二、矩阵键盘概述
矩阵键盘是将多个按键排布成列行形式进行连接,一般来说,矩阵键
盘是由按键、拉电阻、矩阵编码器和控制器组成,按键是系统中重要的部件,其作用是将外部输入信号传递给控制器。
拉电阻起到的作用是防止按
键耦合,一般可以使用4.7KΩ拉电阻来防止按键耦合。
矩阵编码器用来
识别按键的状态,通常通过硬件把按键信号编码为数字信号,输入到处理
器或控制器。
控制器用来实现按键信号的检测,通过定义硬件定时器和软
件定时器,实现按键检测和处理。
1、硬件电路设计
应用AT89C51单片机矩阵键盘。
4X4矩阵键盘及显示电路设计
4X4矩阵键盘与显示电路设计FPGA在数字系统设计中的广泛应用,影响到了生产生活的各个方面。
在FPGA 的设计开发中,VHDL语言作为一种主流的硬件描述语言,具有设计效率高,可靠性好,易读易懂等诸多优点。
作为一种功能强大的FPGA数字系统开发环境,Altera公司推出的Quar-tUSⅡ,为设计者提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程,为使用VHDL语言进行FPGA设计提供了极大的便利。
矩阵键盘作为一种常用的数据输入设备,在各种电子设备上有着广泛的应用,通过7段数码管将按键数值进行显示也是一种常用的数据显示方式。
在设计机械式矩阵键盘控制电路时,按键防抖和按键数据的译码显示是两个重要方面。
本文在QuartusⅡ开发环境下,采用VHDL语言设计了一种按键防抖并能连续记录并显示8次按键数值的矩阵键盘与显示电路。
一、矩阵键盘与显示电路设计思路矩阵键盘与显示电路能够将机械式4×4矩阵键盘的按键值依次显示到8个7段数码管上,每次新的按键值显示在最右端的第O号数码管上,原有第0~6号数码管显示的数值整体左移到第1~7号数码管上显示,见图1。
总体而言,矩阵键盘与显示电路的设计可分为4个局部:(1)矩阵键盘的行与列的扫描控制和译码。
该设计所使用的键盘是通过将列扫描信号作为输入信号,控制行扫描信号输出,然后根据行与列的扫描结果进行译码。
(2)机械式按键的防抖设计。
由于机械式按键在按下和弹起的过程中均有5~10 ms的信号抖动时间,在信号抖动时间内无法有效判断按键值,因此按键的防抖设计是非常关键的,也是该设计的一个重点。
(3)按键数值的移位存放。
由于该设计需要在8个数码管上依次显示前后共8次按键的数值,因此对已有数据的存储和调用也是该设计的重点所在。
(4)数码管的扫描和译码显示。
由于该设计使用了8个数码管,因此需要对每个数码管进行扫描控制,并根据按键值对每个数码管进行7段数码管的译码显示。
矩阵键盘及其电路设计
矩阵键盘及其电路设计
矩阵键盘是一种常见的输入设备,常用于计算机、电视机、手机等电
子产品中。
它由多个按键组成,每个按键都与一个矩阵电路相连。
矩阵键
盘的设计简单、成本低廉,因此在许多场景中广泛应用。
矩阵键盘的电路设计可以分为两个主要方面:行扫描电路和列扫描电路。
行扫描电路负责控制行通道。
它由多个行扫描引脚组成,每一个引脚
都与一个行通道相连。
通常情况下,行扫描电路会以一定的频率依次将每
一个引脚置高电平,然后检测列通道是否有相应的信号。
如果检测到信号,就说明用户按下了对应的按键。
通过依次扫描所有的行通道,可以获取用
户整个键盘的按键状态。
列扫描电路负责控制列通道。
它由多个列扫描引脚组成,每一个引脚
都与一个列通道相连。
当行扫描电路扫描到其中一行时,列扫描电路会检
测到该行通道与列通道之间的电位差。
如果电位差存在,则说明用户按下
了该行和列交叉点处的按键。
在实际的电路设计中,还可以使用连接电阻和电容的方式来降低电路
的噪声。
通过在矩阵键盘中添加适当的抗干扰电路,可以有效减少外界干
扰对键盘输入的影响。
总结起来,矩阵键盘的电路设计主要包括行扫描电路和列扫描电路。
通过行列通道的扫描和检测,可以判断用户所按下的按键。
在实际的设计中,还可以添加抗干扰电路来提高键盘的输入稳定性。
矩阵键盘的设计简
单且成本低廉,因此被广泛应用于各种电子产品中。
第7讲 矩阵键盘电路的仿真实验
2. 电路原理图 元件全部添加后,在Proteus ISIS的编辑区域中按图 7-7所示的原理图连接硬件电路。
图7-7 电路原理图
3、源程序的添加 参照第五讲在Keil中建立工程,添加源程序文件、构 建.hex文件,加载目标代码,执行程序,观察不同按键 被按下后LED灯的显示过程,如图7-8所示。
switch(Tmp)Fra bibliotek{case 1: KeyNo+=0; break;
case 2: KeyNo+=4; break;
case 4: KeyNo+=8; break;
case 8: KeyNo+=12;
}
}
第七讲 矩阵键盘电路的仿真实验
7.1 矩阵键盘电路的原理介绍 7.2 矩阵键盘硬件电路的设计 7.3 软件编程实现矩阵键盘的处理 7.4 矩阵键盘电路在Proteus中的验证 7.5 实例讲解
7.1 矩阵键盘电路的原理介绍
❖ 键盘功能:向单片机输入数据、命令等,是 人与单片机对话的主要手段。
7.1.1 键盘接口应解决的问题
图7-9 参考电路图
参考源代码为:
void Keys_Scan()
//全局变量KeyNo传递键值
{
uchar Tmp;
P1=0x0f;
//高4位置0,放入四行
delay(1);
Tmp=P1^0x0f;
//若有键按下,异或操作把低四位变为3个0,1个1
switch(Tmp)
{
case 1: KeyNo=0; break;
❖ 由原理图可知,矩阵键盘行线连接P1.0~P1.3, 列线连接P1.4~P1.7,扫描过程如下。
❖ 首先判断是否有键按下。为判断16个按键中是否有键 按下,程序首先在4条行线上放置4个0,即在P1端口 输出0xf0,如果有任一按键按下,则4条列线上必有一 位为0。
矩阵键盘实验报告
矩阵键盘实验报告矩阵键盘实验报告引言:矩阵键盘是一种常见的输入设备,广泛应用于电子产品中。
本实验旨在通过对矩阵键盘的研究和实验,深入了解其原理和工作机制,并探索其在实际应用中的潜力。
本文将从实验目的、实验步骤、实验结果和讨论四个方面进行论述。
实验目的:1. 理解矩阵键盘的工作原理;2. 掌握矩阵键盘的接线方法;3. 通过实验验证矩阵键盘的可靠性和稳定性。
实验步骤:1. 准备实验材料:矩阵键盘、电路板、导线等;2. 连接电路:将矩阵键盘与电路板通过导线连接;3. 编写程序:使用C语言编写程序,实现对矩阵键盘的扫描和按键检测;4. 烧录程序:将编写好的程序烧录到单片机中;5. 运行实验:按下矩阵键盘上的按键,观察电路板上的指示灯是否亮起。
实验结果:经过实验,我们成功地完成了矩阵键盘的接线和程序烧录,并进行了按键测试。
在按下不同的按键时,电路板上相应的指示灯亮起,证明了矩阵键盘的正常工作。
讨论:1. 矩阵键盘的工作原理:矩阵键盘是由行线和列线组成的,每个按键都与行线和列线相连。
当按下某个按键时,对应的行线和列线会短接,从而使得电流流过该按键,被检测到。
2. 矩阵键盘的接线方法:在本实验中,我们采用了常见的4行4列的接线方式,即将矩阵键盘的4个行线连接到单片机的4个输入引脚上,将4个列线连接到单片机的4个输出引脚上。
3. 矩阵键盘的可靠性和稳定性:通过实验,我们发现矩阵键盘具有较高的可靠性和稳定性。
即使在长时间使用和频繁按键的情况下,矩阵键盘仍能正常工作,并且按键的检测准确率较高。
4. 矩阵键盘的应用潜力:矩阵键盘广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。
它具有结构简单、成本低廉、易于集成等优点,因此在电子产品设计中具有广阔的应用前景。
结论:通过本次实验,我们对矩阵键盘的工作原理和接线方法有了更深入的了解,并验证了其可靠性和稳定性。
矩阵键盘作为一种常见的输入设备,在电子产品设计中具有重要的地位和潜力。
矩阵式键盘实验报告
矩阵式键盘实验报告矩阵键盘设计实验报告南京林业大学实验报告基于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。
单片机矩阵键盘设计方案
单片机矩阵键盘设计方案一、设计目标设计一个8行8列的矩阵键盘,每个按键都有一个唯一的键码,能够正常读取用户的按键输入,并将按键对应的键码显示在LCD屏幕上。
二、硬件设计硬件设计包括键盘电路和显示电路两部分。
1.键盘电路设计矩阵键盘的硬件设计主要包括键盘矩阵、行扫描电路和列读取电路。
键盘矩阵由8行8列的按键构成,每个按键都连接到一个由二极管组成的矩阵。
行扫描电路使用8位输出的GPIO口,根据行的值来选通对应的行组。
列读取电路使用8位输入的GPIO口,根据列的值来读取对应的列组。
2.显示电路设计三、软件设计软件设计主要包括初始化设置、按键检测、键码解析和显示处理四个部分。
1.初始化设置首先需要对GPIO口进行初始化设置,将扫描行的GPIO口设置为输出模式,将读取列的GPIO口设置为输入模式。
同时需要对LCD屏幕进行初始化设置,设置显示模式、光标位置等参数。
2.按键检测循环扫描每一行,当其中一行被选通时,读取每一列的值。
如果其中一列的值为低电平,则表示对应的按键被按下。
将按下的按键的行和列的值保存下来,用于后续的键码解析。
3.键码解析根据行和列的值,通过查表的方式找到对应的键码。
将键码保存下来,用于后续的显示处理。
4.显示处理将键码传送给LCD屏幕,通过LCD屏幕的驱动芯片进行解析和显示。
根据LCD屏幕的显示方式,可以选择逐行显示或者按需显示的方式。
四、优化设计在以上基本设计方案的基础上,可以进行一些优化设计,以提高系统的性能和可靠性。
1.消除按键抖动按键在实际使用中会存在抖动现象,需要通过软件滤波来消除。
可设置一个适当的延时,当检测到按键按下后,延时一段时间再进行键码解析,只有在延时之后仍然检测到按键按下,才认为是一个有效的按键。
2.防止冲突按键由于矩阵键盘的性质,可能存在一些按键组合会产生冲突的情况。
可以通过硬件设计和软件处理来解决。
在硬件上,可以增加二极管来隔离不同的按键。
在软件上,可以通过扫描算法和按键排除的方式来避免冲突。
44矩阵键盘课程设计
4 4矩阵键盘课程设计一、课程目标知识目标:1. 学生能够理解4x4矩阵键盘的基本原理,掌握其电路连接方式和扫描原理。
2. 学生能够运用所学知识,设计并搭建一个简单的4x4矩阵键盘电路。
3. 学生了解矩阵键盘在嵌入式系统中的应用和重要性。
技能目标:1. 学生能够运用编程软件(如Arduino)编写程序,实现对4x4矩阵键盘的扫描和按键识别。
2. 学生能够运用调试工具,对矩阵键盘电路进行故障排查和优化。
3. 学生具备团队协作能力,共同完成矩阵键盘电路设计和程序编写。
情感态度价值观目标:1. 学生通过动手实践,培养对电子技术和编程的兴趣,增强学习动力。
2. 学生在团队合作中,学会沟通、协作、分享,培养团队精神和责任感。
3. 学生认识到科技发展对社会进步的重要性,激发为我国科技事业贡献力量的志向。
本课程针对高中年级学生,结合电子技术和编程知识,以实用性为导向,旨在培养学生的动手实践能力和创新精神。
课程内容紧密联系课本知识,通过设计4x4矩阵键盘电路,使学生在实践中掌握相关原理和方法。
课程目标具体、可衡量,为后续教学设计和评估提供明确方向。
二、教学内容1. 矩阵键盘基础知识:介绍矩阵键盘的原理、电路连接方式及其在嵌入式系统中的应用。
- 相关章节:课本第三章第二节“矩阵键盘及其应用”2. 4x4矩阵键盘电路设计:讲解如何搭建4x4矩阵键盘电路,包括硬件连接、电路图绘制等。
- 相关章节:课本第三章第三节“矩阵键盘电路设计”3. 矩阵键盘编程:介绍如何使用Arduino编程软件编写程序,实现对4x4矩阵键盘的扫描和按键识别。
- 相关章节:课本第四章第一节“Arduino编程基础”及第四节“矩阵键盘编程实例”4. 矩阵键盘电路调试与优化:教授学生如何运用调试工具进行故障排查,以及如何对电路和程序进行优化。
- 相关章节:课本第五章“电路调试与优化”5. 团队合作与展示:学生分组进行项目实践,共同完成矩阵键盘电路设计与程序编写,并进行成果展示。
矩阵键盘原理
单片机引脚高电平是路端电压是5V,低电平是地0V,为什么不会发生短路呢。
因为脚高电平电压5V不是电源的5V,是经过了一个上拉电阻后的5V,当高低电平端接是,高电平端就被接地,就有电流流过上拉电阻,所以不短路。
单片机IO口电路其实就是一个NPN三极管,集电极与电源之间接一个上拉电阻。
你所提到的高电平所测到的电压是集电极电压。
不知道楼主明白没有呢矩阵键盘在单片机中就是两个端口短接,都变为低电平,再取查询判断低电平的位置,得知是哪个键按下,再取执行相应的程序呵呵,是有点尴尬,搞了这么几年,到现在竟然矩阵键盘都不会!不过也不意外,毕竟之前并不能把所有的知识都学到!比如串口,本科的时候就没仔细研究过,后来做GSM,没办法,还是一点一点的去深入理解它,才毕竟通了!矩阵键盘也是一样,现在实习有个项目,要用到矩阵键盘,就现在熟悉下原理,哈哈!在按键数目比较多、I/O资源有限的情况下,有几种方法实现多按键检测:•端口扩展:采用端口扩展芯片实现单片机I/O口的扩展;•使用专门的键盘芯片;•使用矩阵键盘。
其中矩阵键盘是一种比较常用的方法。
矩阵键盘的电路图如下:矩阵式键盘由行线和列线组成,按键位于行、列的交叉点上。
当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,单片机通过检测行或列线上的电平变化可以确定哪个按键被按下。
矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。
矩阵键盘的检测方法有多种,常见的有:逐点扫描法、逐行扫描法、全局扫描法。
在本实例中我们采用逐行扫描法来实现按键检测,其中PD0-PD3作为列线,PD4-PD7作为行线。
识别过程如下:1、判断键盘中是否有键按下。
设置所有行线为输出口,并输出低电平;设置列线为输入口,读取列线上的电平状态,只要有一列的电平为低,就表示有按键按下,并且被按下的键位于电平为低的列线与4跟行线相交叉的4个按键中,若所有列线都为高电平,表示没有按键按下;2、判断被按下按键所在的位置。
单片机键盘显示接口电路设计
单片机键盘显示接口电路设计设计单片机键盘显示接口电路,需要考虑到键盘输入与显示输出两个方面。
以下是一个简单的设计示例,供参考:键盘通常采用矩阵键盘连接电路的方式,通过扫描矩阵的方式读取键盘输入信息。
以下是矩阵键盘接口电路的设计流程:1.确定键盘的规格和类型:键盘一般有正方形、矩形、圆形等几种形状,需要根据键盘的规格和类型选择适合的扫描方式。
2.确定键盘的逻辑矩阵大小:根据键盘的布局和规格,确定键盘的逻辑矩阵的行和列数,例如4行4列。
3.确定键盘的连接方式:键盘的连接方式一般有行列扫描、列行扫描、行列+列行扫描等几种方式,需要根据键盘的输出信号特点和单片机的输入要求进行适当的选择。
4.设计按键输入的译码电路:将键盘的输出信号通过译码电路解码成易于读取的二进制数,以便单片机的输入端口读取。
显示输出接口电路设计一般有两种方式:数码管和液晶显示。
1.数码管显示电路设计:数码管是通过控制各个数码管的段选和位选,实现数字或字符的显示。
以下是数码管显示电路的设计流程:a.确定显示的数字或字符类型:根据设计需求,确定要显示的数字或字符类型,例如整数、小数、字母等。
b.确定数码管的位数和类型:根据显示需求,确定数码管的位数和类型,有共阴数码管和共阳数码管两种类型,需要选择适合的数码管。
c.设计数码管的译码电路:根据数码管的类型和位数,设计数码管的译码电路,将输入的数字或字符转换为控制各个数码管的段选和位选的电信号。
2.液晶显示电路设计:液晶显示器是一种常见的显示设备,通过控制液晶的极性来实现图形和字符的显示。
以下是液晶显示电路设计的流程:a.确定显示的内容类型:根据设计需求,确定要显示的内容,例如字符、图像等。
b.选择适合的液晶显示器:根据显示的内容和要求,选择适合的液晶显示器,有字符型液晶显示器和图形型液晶显示器两种类型。
c.设计液晶的驱动电路:根据液晶显示器的类型和特性,设计液晶的驱动电路,将输入的数字或字符转换为控制液晶的电信号。
矩阵式键盘工作原理
矩阵式键盘工作原理
矩阵式键盘的工作原理是基于矩阵电路的设计。
该键盘由一组键开关组成,这些键开关呈现出行和列的网格状布局。
每个键开关都连接到一个行列交叉点。
在键盘上按下某个按键时,该按键对应的行列交叉点位置会发生变化。
这种变化可以通过键盘控制器或芯片中的扫描电路进行检测。
扫描电路会按顺序扫描每个行和列的交叉点,检测到键按下的时候会产生一个电信号。
当键盘的控制器检测到有按键按下时,它会将该按键的信息发送到计算机。
计算机接收到按键信息后,会根据键盘映射表将按键转换为对应的字符或功能。
这样,用户通过按下键盘上的按键,就能够输入字符或执行特定的功能。
整个矩阵式键盘的工作原理可以归纳为以下几个步骤:
1. 初始化:键盘控制器配置为扫描矩阵键盘。
2. 扫描:控制器按顺序扫描每个行和列的交叉点,检测到按键按下的时候产生一个电信号。
3. 检测:键盘控制器检测到按键按下的电信号后,将其转换为对应的按键信息。
4. 传输:键盘控制器将按键信息传输给计算机。
5. 转换:计算机根据键盘映射表将按键信息转换为对应的字符或功能。
6. 执行:计算机执行输入的字符或功能。
通过这样的工作原理,用户可以通过按下矩阵式键盘上的按键,实现对计算机的输入操作。
单片机矩阵按键实训报告
一、实训目的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. 编写了矩阵键盘的检测和响应程序,实现了按键的检测和消抖处理。
第6讲 矩阵式键盘设计
矩阵式键盘设计
软件去抖
在检测到有按键按下时
执行一个10ms左右( 执行一个10ms左右(具体 10ms左右 时间应视所使用的按键进 行调整)的延时程序后; 行调整)的延时程序后; 再确认该键电平是否仍保 持闭合状态电平, 持闭合状态电平,若仍保 持闭合状态电平, 持闭合状态电平,则确认 该键是处于闭合状态。 该键是处于闭合状态。
矩阵式键盘设计
矩阵式键盘电路
R1
10k
R2
10k
R3
10k
R4
10k
VCC GND
C1
30pF
X1
C2
30pF 19
C3
10uF
U1
XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
1. 2. 3. 4.
矩阵式键盘设计
求按键的键值
对键盘的列线进行扫描,P0.4~P0.7循环输出 对键盘的列线进行扫描,P0.4~P0.7循环输出 1110、1101、1011和0111, 次读P0 P0口 若低4 1110、1101、1011和0111,依次读P0口,若低4位 全为1 则断定该列上没有键按下; 全为1,则断定该列上没有键按下; 否则,该列上就有键按下,并且就是行线为0 否则,该列上就有键按下,并且就是行线为0,列 线为0的交叉点,行号和列号按公式: 线为0的交叉点,行号和列号按公式:rol*4+col 计算得到按下键的键值。 计算得到按下键的键值。 例如,P0.4~P0.7输出1101时 P0口的低四位读 输出1101 例如,P0.4~P0.7输出1101时,P0口的低四位读 入的值为1011,不全为1,就可以断定有键按下, 入的值为1011,不全为1 就可以断定有键按下, 1011 并且是第 交叉点的键。于是, 并且是第2行和第1列交叉点的键。于是,该键的 4+1=9。 键值= 键值=2×4+1=9。按照相同的方法可以得到所有键 的键值。 的键值。如:return(rol*4+col);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
矩阵键盘电路设计
矩阵键盘是一种常见的输入设备,它通过矩阵布局的按键组成,可以方便地输入数字、字母和其他符号。
在电子设备中,矩阵键盘通常采用扫描电路进行输入和控制。
在本文中,将探讨矩阵键盘电路的设计。
首先,我们需要确定矩阵键盘的布局。
一般情况下,矩阵键盘采用4×4或者3×4的布局。
每个按键都是一个开关,当按下时闭合,松开时断开。
接下来,我们需要设计输入电路。
输入电路通过扫描矩阵键盘的每一行和每一列来检测按键的状态。
为了实现这个功能,我们可以使用两个二进制计数器来控制扫描的行和列。
每当计数器增加时,就对应地扫描一行或者一列。
我们可以通过多路复用器和反向器将计数器输出与矩阵键盘的行和列相连。
当计数器的输出与矩阵键盘的行和列相连后,我们可以通过逐行或逐列地扫描矩阵键盘并检测按键的状态。
如果有按键按下,我们可以将对应的按键编码为数字信号。
在设计输入电路时,我们还需要考虑按键去抖动的问题。
按键去抖动是指当按键被按下或松开时,会产生多次开关闭合的现象。
为了解决这个问题,我们可以使用一个滤波器电路来消除按键的抖动。
滤波器电路可以采用RC滤波器或者Schmitt触发器等。
设计好输入电路后,接下来需要设计控制电路。
控制电路负责扫描矩阵键盘的每一行和每一列,以及对按键的状态进行控制。
我们可以使用计时器和计数器来控制扫描的速度和顺序。
当检测到按键按下时,控制电路会将对应的按键编码为数字信号并传递给接收端。
此外,在设计控制电路时,我们还需要考虑矩阵键盘的多键同时按下的问题。
当多个按键同时按下时,我们需要使用矩阵解码器来对这些按键进行解码,并将解码结果传递给接收端。
在进行电路设计时,我们还需要考虑一些其他的因素,比如布线、电源供应和接收端的设计等。
布线是指将电路中的各个元件和连接线布置在PCB板上的过程。
在布线时,我们需要确保信号传输的可靠性和稳定性。
电源供应是指提供电路所需的电源电压和电流的过程。
接收端的设计是指接收和处理从矩阵键盘电路传递过来的数字信号的过程。
接收端可以是数字显示器、计算机或者其他设备。
综上所述,矩阵键盘电路的设计包括输入电路和控制电路两部分。
输入电路将按键的状态转化为数字信号,而控制电路负责扫描和控制按键。
在进行电路设计时,我们需要考虑布局、扫描、解码、去抖动、布线、电源供应和接收端的设计等因素。
通过合理的设计,我们可以实现一个高性能和可靠的矩阵键盘电路。