单片机与矩阵键盘接口电路设计实验报告

合集下载

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

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

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

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

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

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

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

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

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

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

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

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

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

单片机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;}五、讨论和心得。

矩阵式键盘设计实训报告

矩阵式键盘设计实训报告

一、实验目的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. 在电路设计过程中,可以考虑增加去抖动电路,提高按键稳定性。

矩阵键盘实验报告

矩阵键盘实验报告

自主学习用实验矩阵键盘识别实验
一、实验目的
1、掌握 4×4 矩阵键盘的工作原理和键盘的扫描方式。

2、掌握键盘的去抖方法和键盘应用程序的设计。

二、实验设备
1、PC 机一台;
2、开放式模块化单片机教学实验箱一台;
3、USB 下载线一根。

三、实验内容
自行编制程序,用 51 单片机实现 4×4 矩阵键盘扫描,采用线反转法;并实现当S11按下时在数码管上显值“0”,当S12按下时在数码管上显值“1”……,即依次将 S11 至S26按下,在数码管上依次显示十六进制数“0-F”,矩阵键盘原理图如图1-1 所示。

单片机与数码管接口电路原理图如图 1-2 所示。

图 1-1 矩阵键盘接口电路
图 1-2 数码管接口电路原理图
四、思考题
1.画出所编程序的流程图;
2.若要实现2×4 矩阵键盘,软硬件作如何修改。

答:将行线P2^3, P2^4接线去掉。

程序对应部分P2=0xfd; P2=0xfe;删掉。

3.实验中有何故障、问题出现,是否得到解决?如何解决的?问题:显示值对应出错。

原来是共阳段码和共阴段码弄相反了。

单片机 行列式键盘实验报告

单片机  行列式键盘实验报告
1p31txop2p13p3p33i7rrtp3oaivrrirn7robocs12l21?程序调试方法首先在kcilc编程软件里创建工程编写代码并进行调试生成hex文件运行无语法错误后再与proteus进行联机仿真将hex文件加载到单片机模块屮单击菜单屮的调试开始重新启动调试正确无误后进行运行仿真
}}}
return -1;
}
void main(void) {
char key=0;
P0=0x00;
while(1){
key=getkey();
if(key!=-1)
P0=~led_mod[key];
}}
实验总结:
本次实验遇到了一个问题,就是在运行中仿真结果是正确的,连接实验箱的时候,怎么都不正确。老师提示验箱是共阳极显示,而在Proteus中运行仿真结果是共阴极显示。然后我就在C51程序中对字模进行取反(P0=~led_mod[key]),最后重新把程序烧进开发板,并且在开发板上的显示结果正确。
char getkey(void) {
char key_scan[]={0xef,0xdf,0xbf,0x7f};
char i=0,j=0;
for(i=0;i<4;i++) {
P2=key_scan[i];
if((P2&0x0f)!=0x0f){
for(j=0;j<16;j++) {
if(key_buf[j]==P2) return j;
一、实验内容
1.绘制非中断方式键盘接口电路原理图;
2.参照实例完成教材非中断行列式键盘C51语言程序的编译;
3.练习μVision4程序动态调试方法,实现非中断行列式键盘的功能;

矩阵键盘设计实验报告材料

矩阵键盘设计实验报告材料

南京林业大学实验报告基于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。

7、检查验证结果。

六、实验具体容使用单片机的P1口与矩阵式键盘连接时,可以将P1口低4位的4条端口线定义为行线,P1口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。

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

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

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

矩阵键盘设计实验报告

矩阵键盘设计实验报告

矩阵键盘设计实验报告
矩阵键盘是一种特殊的电子输入设备,其特殊性在于每个按键可以仅由几根线连接而成。

这可以将按键尺寸缩小,同时也减少了接線复杂度。

在本次实验中,我们设计了一个4*4的矩阵键盘。

矩阵键盘的外型是4 *4的按键,其中每个按键由一个PIN组成,连接起来分别连接在一个不同的ROW与COL上。

在使用矩阵键盘时,我们将其连接到一台电脑上,通过电脑程序监视每行每列的通断状态,当一行或者一列被按下,程序会自动捕捉,来表示一个字符或者code.
首先,我们先准备一台电脑,再连接矩阵键盘的各个PIN,用8个信号线将矩阵键盘连接到单片机,再用USB线将单片机连接到电脑上,使用PL 2303驱动链接矩阵键盘和电脑终端。

单片机负责捕获ROW和COL的信号,计算并识别矩阵键盘的按键,将计算出的字符发送至电脑终端,进行小程序的检测。

在电脑端,我们使用Apple系统的终端运行.bash,编写简单的shell脚本实现对矩阵键盘信号识别。

脚本将不断检测矩阵键盘信号状态,根据捕捉到的ROW和COL信号,将其映射出字符信息,在一定时间内输出至终端。

在实验的最后,我们检验了所设计的矩阵键盘是否符合预期效果。

通过代码发送进行按键操作,能检测到正确的字符,表明矩阵键盘的设计及实现满足要求。

本次实验可以作为以后矩阵键盘的参考,深入研究程序软件,提高实验效率。

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

单片机与矩阵键盘接口电路设计实验报告
姓名:林蔼龄
学号:1060601007
班级:10级物理系电子信息工程A班
单片机与矩阵键盘接口电路设计实验报告
一:实验内容
使用单片机的P1 口与矩阵式键盘连接时,可以将P1 口低4位的4条端口线定义为行线,P1 口高4位的4条端口线定义为列线,形成4*4键盘,可以配置16个按键,将单片机P2 口与七段数码管连接,当按下矩阵键盘任意键时,数码管显示该键所在的键号。

:电路图
[PD.QfADO M.HAD1 何2也
02 Pα.3ΓAD3 賀
P0.5∕AD5
IPa 5IADE 叮1-∣⅛∕
P2.o⅛a P2.1J⅛9 P3iMI0
P2:3«11 P2.⅛⅛12
P3S J⅛13R2.6M14
P2.7J⅛15
曲JMFD P31JTXD
P3.2flNτf P3.3⅛JτΓ
P34JTO P3¾Π,1
P3占晅PST丽:程序流程图
r
F-SEH
⅛E EA
四:程序
Org Ooooh
IjmP mai n
main:mov p1,#Ofh;列线输出O,行线设为输入mov a,p1;读P1 口
an I a,#Ofh;屏蔽高4位,留下行线状态
Cjne a,#0fh,look;有按键按下,转look
ret;无按键按下,返回主程序
look:lcall dIay10;延时10ms
mov a,p1;读P1 口
anl a,#0fh;屏蔽高4位,留下行线状态
Cjne a,#0fh,ra nk确认键已按稳,转RANK ljmp main;是抖动,未按稳,重新扫描rank:mov r2,#00h ;窜键标志寄存器请0 mov r3,#04h ;查列次数
mov r4,#0f7h ;列扫描字初值
mov r5,#0ffh ;列号处值
rloop1:inc r5 ;开始列扫描,列号加1 mov a,r4 ;列扫描字送A
rl a ;列扫描字左移一位
mov r4,a ;暂存列扫描字
mov p1,a ;送出列扫描字
mov a,p1 ;读P1 口
anl a,#0fh ;屏蔽高4 位,留下行线状态
cjne a,#0fh,next1 ;当前列有键按下,转next1 rloop2:djnz r3,rloop1 ;列扫描未完,继续sjmp line ;列扫描完,转行扫描next1:inc r2 ;窜键标志加 1
mov 20h,r5 ;暂存有按键的列号
sjmp rloop2 ;继续列扫描
Iine:Gjne r2,#01h,main ;若已窜键,转main,重新扫描
mov r2,#00h ;开始查行,窜键标志寄存器清0
mov r3,#04h ;行扫描次数
mov r6,#0ffh ;行号初值
mov p1,#0fh ;列线送0,准备读行线
mov a,p1 ;读P1 口,获取行线状态
IIoop1:inG r6 ;行号加1
rrG a ;从第0 行开始,判断有无按键
jnG next2 ;本行有按键,转next2
IIoop2:djnz r3,IIoop1 ;无按键,继续查下一行sjmp next3 ;查完,转next3
next2:inG r2 ;窜键标志加1
mov 21h,r6 ;暂存有按键的行号
sjmp IIoop2 ;继续行扫描
next3:Cjne r2,#01h,main ;若窜键,转main,重新扫描gainky:mov a,21h ;无窜键,取出行号mov b,#04h ;键盘列数muI ab ;行号*键盘列数
add a,20h ;乘积与列号相加,得到键号mov b,#03h;为执行键处理程序做准备muI ab ;键号*3
mov dptr,#ptab ;键处理程序表首地址送DPTR jmp @a+dptr ;散转至与键号对应的键处理程序ptab:Ijmp prog0; 键处理程序表
Ijmp prog1
Ijmp prog2
Ijmp prog3
Ijmp prog4
Ijmp prog5
Ijmp prog6
Ijmp prog7
Ijmp prog8
Ijmp prog9
Ijmp prog10
ljmp prog11
ljmp prog12
ljmp prog13
ljmp prog14
ljmp prog15 prog0:mov p2,#3fh ret prog1:mov p2,#06h ret prog2:mov p2,#5bh ret prog3:mov p2,#4fh ret prog4:mov p2,#66h ret prog5:mov p2,#6dh ret prog6:mov
p2,#7dh ret prog7:mov p2,#07h ret prog8:mov p2,#7fh ret prog9:mov p2,#6fh ret
prog10:mov p2,#77h ret prog11:mov p2,#7ch ret prog12:mov p2,#39h ret
prog13:mov p2,#5eh ret prog14:mov p2,#79h ret prog15:mov p2,#71h ret
dlay10:mov r0,#100 ;约10ms 延时dlay1:mov r1,#50 dlay2:djnz r1,dlay2 djnz r0,dlay1 ret end
Ul
丄 KT⅛2
RST
RIWADD
PQ.1MD1 FCl.2Jl⅛D2 PO
紳茁
PO.4JA[M R15⅛D5 FHG.⅛DE PaHADT :1∙X∙
P5EN ALE EA
ATE9C51
F 12.D⅛B P2.VA9
P2^,A11 P24ft12 P2.5⅛13 P2£/A14 P⅛7W⅞
F3.0/RXO P31Π⅜D P3.2⅜jT0^ P3.3ifrfΓ P3.4∏0 ^3⅞T1 R3 6AW P3.7M -
五:实验结果
当矩阵键盘的3号键被按下时,P2 口的七段数码管显示的数据为 3.如下图1所 以:
图1
当矩阵键盘的A 号键被按下时,P2 口的七段数码管显示的数据为 A.如下图2所 以:
图2
当矩阵键盘的D 号键被按下时,P2 口的七段数码管显示的数据为 d.如下图3所 以:
Ul
IL
J∏AL2
PoO⅛⅝D0 POJADl PD2⅛AD2 P03⅛D3 PO 4d⅛Dα PO⅞ME>⅝ PP7J(AP7
ILL
PSEN
AL£
£
A
P2QλAfi
P2.1⅛⅛
P2.2⅛1O
P2.3⅛11 P2 AfAl 2
P2≡5W j ∣
3
P2 EW4 P27ΛA15 PaeWRXD P3j ∣∏⅞> F3 2⅞∏Γ P33jSfΓ F3JσD P3.⅞ff1 P⅞-6i^F P3.7i^"
ATfiSLti
Γ≡-
■92
■23
≡2q ■^6
■”
■ J⅛ ■
4
LH
d X T A U
P(IgDO RCHgDI PC2⅛D2 P(I
那&3
P(I ^.'ΛEM M5⅛D5 PoEJ⅞D6 P<∣T⅛O7 R2D⅛β P2 1X4⅞
P2.2^10 R2.MA11 R2.4M12 P24M13 P2W14 P2.7AA15 P3 JOfiXD P3.1ΠXD P32ΛNTΓ P3 3J ∣NT1 P3.^m ∣ P3.5/T1
P3.&^ P37fRCΓ
ATBgCSl
*T⅞!√t:- I
j ^l
≡ >XTΛL1
RST
Pl O Pl Ii P12 Pi 3
图3
当矩阵键盘的F号键被按下时,P2 口的七段数码管显示的数据为 F.如下图4所以:
」1
I a- ⅛r¾ι
d XT⅛2
-3-l RST
迅11—PS&F
ALE EA
RQ QjAPq
Pl I:Aril
P0.2ΛAD2
P0.3AAD3
RO.⅛λ⅛M
PO.5JAD5
PeI.6M[⅛
P07AAD7
F30W8
P2.1^
P2.2W10
P2.-3⅛11
F2.H⅛13
P2.5ΓA13
F2.⅛,AH
F27⅛15





t⅛
¾
¾
P3,Ofl⅞Hβ
PSJfTXD
P3.2⅛jfθ~
P3.3fr∏T
P3.⅛TD
Kill
P3師F
P⅞7颌。

相关文档
最新文档