实验6 矩阵键盘的检测
- 格式:doc
- 大小:453.50 KB
- 文档页数:4
昆明理工大学信息工程与自动化学院学生实验报告(2013 —2014 学年第 2 学期)课程名称:单片机原理及接口技术开课实验室: 2014年5月27日一、上机目的及内容上机目的:掌握单片机I/O口的输入检测的方法、矩阵按键的识别方法、键盘消抖等。
学会实时程序的调试技巧。
上机内容:实验板上电时,数码管不显示,顺序按下矩阵键盘后,在数码管上依次显示0到F,6个数码管同时静态显示即可。
二、实验原理及本技术路线图(方框原理图或程序流程图)我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms 左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。
下图中按键s6-s218条线分别联接p3口相连,p3.0~p3.3控制1~4行,p3.4~p3.7控制1~4列。
三、所用仪器、材料(设备名称、型号、规格等或使用软件)Pc机一台,keil软件,stc-isp四、实验方法、步骤(或:程序代码或操作过程)1、按实验要求在KeilC中创建项目,编辑、编译程序。
2、将编译生成的目标码文件(后缀为.Hex)下载到实验板电路中。
3、在实验板中运行程序,观察实验运行结果并记录。
程序代码:org 0000hwei bit p2.7duan bit p2.6main: mov p3,#0ffhmov a,p3setb weimov p0,#0ffhclr weimov dptr,#tablem1: mov p3,#0fehmov a,p3cjne a,#0feh,s1jmp s7s1: call delaymov a,p3cjne a,#0feh,s2jmp s7s2: mov a,p3cjne a,#0eeh,s3mov r2,#0jmp s8s3: mov a,p3cjne a,#0deh,s4mov r2,#1jmp s8s4: mov a,p3cjne a,#0beh,s5mov r2,#2jmp s8s5: mov a,p3cjne a,#7eh,s8mov r2,#3jmp s8s8: mov a,p3cjne a,#0feh,s8call displays7: nopjmp m2m2: mov p3,#0fdhmov a,p3cjne a,#0fdh,l0jmp l0l0: call delaymov a,p3cjne a,#0fdh,l2jmp l7l2: mov a,p3cjne a,#0edh,l3mov r2,#4jmp l8l3: mov a,p3cjne a,#0ddh,l4mov r2,#5jmp l8l4: mov a,p3cjne a,#0bdh,l5mov r2,#6jmp l8l5: mov a,p3cjne a,#7dh,l8mov r2,#7jmp l8l8: mov a,p3cjne a,#0fdh,l8call displayl7: nopjmp m3m3 : mov p3,#0fbhmov a,p3cjne a,#0fbh,a0jmp a0a0: call delaymov a,p3cjne a,#0fbh,a2jmp a7a2: mov a,p3cjne a,#0ebh,a3mov r2,#8jmp a8a3: mov a,p3cjne a,#0dbh,a4mov r2,#9jmp a8a4: mov a,p3cjne a,#0bbh,a5mov r2,#10jmp a8a5: mov a,p3cjne a,#7bh,a8mov r2,#11jmp a8a8: mov a,p3cjne a,#0fbh,a8call displaya7: nopjmp m4m4: mov p3,#0f7hmov a,p3cjne a,#0f7h,b0jmp b0b0: call delaymov a,p3cjne a,#0f7h,b2jmp b7b2: mov a,p3cjne a,#0e7h,b3mov r2,#12jmp b8b3: mov a,p3cjne a,#0d7h,b4mov r2,#13jmp b8b4: mov a,p3cjne a,#0b7h,b5mov r2,#14jmp b8b5: mov a,p3cjne a,#77h,b8mov r2,#15jmp b8b8: mov a,p3cjne a,#0f7h,b8call displayb7: nopjmp m1 display:setb weimov p0,#0c0hclr weisetb duanmov a,r2movc a,@a+dptrmov p0,aclr duanretdelay: mov r4,#20dl0: mov r7,#248djnz r7,$djnz r4,dl0rettable: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhdb 77h,7ch,39h,5eh,79h,71hend五、实验过程原始记录( 测试数据、图表、计算等)六、实验结果、分析和结论(误差分析与数据处理、成果总结等。
C51矩阵键盘的检测要求:扫描矩阵键盘,并将对应按键的值显示在LED上方法一(传统检测):#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;//sbit key1=P3^4;uchar code table[]={//共阳极LED数码管显示数字0~F0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar num,temp,num1;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}uchar keyscan();void display(uchar aa);void main(){while(1){display(keyscan());}}void display(uchar aa){/*先送数,后选通,延时以后,将所有端口都不选通,这样,拖影就消失了*/ dula=1;P0=table[aa-1];dula=0;wela=1;P0=0x01;wela=0;delay(5);wela=1;P0=0x00;wela=0;}uchar keyscan(){P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case0xee:num=1;break;case0xde:num=2;break;case0xbe:num=3;break;case0x7e:num=4;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case0xed:num=5;break;case0xdd:num=6;break;case0xbd:num=7;break;case0x7d:num=8;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfb;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case0xeb:num=9;break;case0xdb:num=10;break;case0xbb:num=11;break;case0x7b:num=12;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xf7;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case0xe7:num=13;break;case0xd7:num=14;break;case0xb7:num=15;break;case0x77:num=16;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}return num;}方法二(技巧检测):#include<reg51.h>#include<intrins.h>sbit dula=P2^6;sbit wela=P2^7;#define uint unsigned int#define uchar unsigned char//uchar code table[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01, 0x09};uchar code table[]={//共阳极LED数码管显示数字0~F0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar Key_Value;void Delay_1ms(uint x){uchar i,j;for(i=0;i<x;i++)for(j=0;j<=148;j++);}void Getkey(){uchar i,j,temp,num,Key_Temp1,Key_Temp2,Buffer[4]={0xfe,0xfd,0xfb, 0xf7};for(j=0;j<4;j++)//循环四次{P3=Buffer[j];_nop_();_nop_();temp=0x10;for(i=0;i<4;i++)//循环四次{if(!(P3&temp)){num=i+j*4;//返回取得的按键值}temp<<=1;//换左边一位}}P3=0xff;Key_Temp1=num;//读入按键if(Key_Temp1<16)//有键按下{Delay_1ms(5);//延时消抖Key_Temp2=num;//再读一次if(Key_Temp1==Key_Temp2)//两次相等Key_Value=Key_Temp1;//就确认下来}}void Display(uchar k){dula=1;P0=table[k];dula=0;wela=1;P0=0x01;wela=0;Delay_1ms(5);wela=1;P0=0x00;wela=0;}void Main(void){while(1){Getkey();Display(Key_Value);//显示键值}}。
一、实验目的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. 实验结果:程序下载到单片机后,按键按下时,单片机能够正确读取按键值。
实验报告九课程名称:微机原理与接口技术指导老师:李素敏学生姓名:向春霞学号:1243013 专业:通信工程日期:5月地点:理工603实验九矩阵键盘检测1. 实验目的和要求①学会使用编写关于矩阵按键的查询和显示的程序2. 主要仪器设备电脑,Keil软件3.实验内容实验内容:对实验板上4*4矩阵键盘的16个按键S6---S21进行按键次数统计。
键号06、07……21用最左边2位数码管显示,按键次数用右侧4位数码管显示。
有键按下时,显示相应键号和该键累计按键次数,没键按下时,数码管不亮。
(无论键号还是按键次数都用其十进制数显示。
)(1)设计思路:①利用反转法查询按键的键码②把按键键码的十位和各位分别表示出来。
③用30H到3FH单元记按键次数(2)源程序:ORG 0000HAJMP MAINORG 0030HMAIN: MOV R2,#10H ;给30H-3FH单元清零MOV R1,#30HMOV A,#00HXH: MOV @R1,AINC R1DJNZ R2,XHLOOP: LCALL KEYLCALL XSLJMP LOOPXS: MOV A,60HMOV P0,#0FFHMOV DPTR,#DUANMOVC A,@A+DPTR ;把十位给最左边的数码管MOV P0,ACLR P2.6SETB P2.7MOV P0,#0FEHCLR P2.7LCALL DEL0MOV A,61HMOVC A,@A+DPTR ;把个位数用数码管表示SETB P2.6MOV P0,#0FFHMOV P0,ACLR P2.6SETB P2.7MOV P0,#0FDHCLR P2.7LCALL DEL0MOV A,62HMOV P0,#0FFHMOVC A,@A+DPTRSETB P2.6MOV P0,ACLR P2.6SETB P2.7MOV P0,#0FBHCLR P2.7LCALL DEL0MOV A,63HMOVC A,@A+DPTR ;把个位数用数码管表示SETB P2.6MOV P0,ACLR P2.6SETB P2.7MOV P0,#0F7HCLR P2.7LCALL DEL0RETKEY : MOV P3,#0FH ;将P3的高四位给"0"MOV A,P3 ;读P3ANL A,#0FH ;判断p3的高4位有没有变化,给AMOV B,A ;将变换后的信息放入b暂存MOV P3,#0F0H ;给P3的低四位赋0ANL A,#0F0H ;判断p3的低4位有没有变化,给AORL A,B ;合成特征码CJNE A,#0FFH,KEY1AJMP RETNKEY1: MOV B,A ; 存特征码MOV DPTR,#TABLE ;取表头地址MOV R3,#0FFH ;给初值,也是空键的代码KEY2: INC R3MOV A,R3MOVC A,@A+DPTR ;查找键值CJNE A,B,KEY2 ;判断是否查完MOV A,R3 ;找到键值存入AADD A,#06MOV R6,A ;把A暂存到30H单元MOV B,#10DIV AB ;A/B=A.....BMOV 60H,AMOV 61H,BCOUNT: MOV A,R6ADD A,#2AHMOV R0,A ;按键计数INC @R0MOV A,@R0MOV B,#10DIV AB ;A/B=A.....BMOV 62H,AMOV 63H,BAG: MOV P3,#0FH ;将P3的高四位给"0"MOV A,P3 ;读P3CJNE A,#0FH,AG ;判断p3的高4位有没有变化,给A RETN: RETTABLE:DB 0EEH,0DEH,0BEH,7EH ;6-9DB 0EDH,0DDH,0BDH,7DH ;10-13DB 0EBH,0DBH,0BBH,7BH ;14-17DB 0E7H,0D7H,0B7H,77H ;18-21DB 0FFH ;空键DUAN:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段选地址表DEL0: MOV R4,#2 ;延时1ms DEL1: MOV R5,#248NOPDEL2: DJNZ R5,DEL2DJNZ R4,DEL1RETEND。
一、实验目的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. 在电路设计过程中,可以考虑增加去抖动电路,提高按键稳定性。
很多盘检4*46个也就较好时,低电键按标,独立键盘多按键时就检测。
这里4键盘实现IO 口控无论是独就是检测与好检测,而,先送一列电平,若有按下,送下,然后对其盘与单片机就会浪费里以4*4现了用8控制9个按独立按键还与该键对而矩阵键盘列低电平有低电平则下一列低其编码后矩阵键盘机相连时,很多的IO 矩阵键盘个IO 口控按键,5*5还是矩阵键对应的IO 盘就需要,其余为则证明该电平,通编程扫描盘检测及,每个按键O 口,鉴于盘为例,下控制16个实现10键盘,单口是否为要人为控制高电平,该列有键按过这种方描了。
及其运用键都要占用于对IO 口下面是其与个按键,当个IO 口控片机检测为低电平。
制端口电平立即轮流按下,若无方法,我们用一个IO 口的节省,与单片机连当然也可以控制25个测的依据都独立按键平变化来检流检测一下无低电平证们便可以确O 口,当用引入矩阵连接电路以以3*3实个按键。
都是一样的键一端固定检测了。
检下各行是否证明该列没确定按键的用到阵键图:实现。
的,定比检测否有没有的坐以下是软件流程图:NYNNY N扫描四行按键程序会很长,下面我编程实现扫描出第一行按键,其他各行可用相同方法进行扫描:开始寄存器初始化IO口初始化检测是否有键按下延时10ms 检测是否真有键按下检测按键是否释放执行相应代码/*******************************************************// ////‐‐‐函数功能:扫描矩阵键盘,返回相应按键代表的值 ////‐‐‐主函数中可以利用这一返回值选择执行相关代码 ////‐‐‐这样就实现了矩阵按键对器件的操作 //// //*******************************************************/ unsigned char Matrixkeyscan(){unsigned char temp,key;P3=0xfe; //送一列低电平其余为高确定该列temp=P3; //将P3口的值读回来temp=temp&0xf0; //if(temp!=0xf0) //看是否有IO口为低电平{Delayms(10); //延时去抖temp=P3; //重新读回P3口的值temp=temp&0xf0;if(temp!=0xf0) //看是否真有键按下{temp=P3; //temp的值发生变化需重新读回switch(temp) //判断是哪一行按键被按下,确定按键位置{case 0xee:key=1;break;case 0xde:key=2;break;case 0xbe:key=3;break;case 0x7e:key=4;break;}while(temp!=0xf0)//松手检测 {temp=P3;temp=temp&0xf0;}}}//P3=0xfd; //扫描下一行//。
矩阵键盘实验报告佘成刚学号2010302001班级08041202时间2016.01.20一、实验目的1.学习矩列式键盘工作原理;2.学习矩列式接口的程序设计。
二、实验设备普中HC6800ESV20开发板三、实验要求要现:用4*4矩阵键盘,用按键形式输入学号,在数码管上显示对应学号。
四、实验原理工作原理:矩阵式由行线和列线组成,按键位于行、列的交叉点上。
如图所示,一个4*4 的行、列结构可以构成一个由16 个按键的键盘。
很明显,在按键数量较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/0 口。
(1)矩阵式键盘工作原理按键设置在行、列交节点上,行、列分别连接到按键开关的两端。
行线通过下拉电阻接到GND 上。
平时无按键动作时,行线处于低电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。
列线电平如果为低,行线电平为高,列线电平如果为高,则行线电平则为低。
这一点是识别矩阵式键盘是否被按下的关键所在。
因此,各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。
(2)按键识别方法下面以3 号键被按下为例,来说明此键是如何被识别出来的。
前已述及,键被按下时,与此键相连的行线电平将由与此键相连的列线电平决定,而行线电平在无键按下时处于高电平状态。
如果让所有列线处于高电平那么键按下与否不会引起行线电平的状态变化,始终是高电平,所以,让所有列线处于高电平是没法识别出按键的。
现在反过来,让所有列线处于低电平,很明显,按下的键所在行电平将也被置为低电平,根据此变化,便能判定该行一定有键被按下。
但我们还不能确定是这一行的哪个键被按下。
所以,为了进一步判定到底是哪—列的键被按下,可在某一时刻只让一条列线处于低电平,而其余所有列线处于高电平。
当第1 列为低电平,其余各列为高电平时,因为是键3 被按下,所以第1 行仍处于高电平状态;当第2 列为低电平,其余各列为高电平时,同样我们会发现第1 行仍处于高电平状态,直到让第4 列为低电平,其余各列为高电平时,因为是3 号键被按下,所以第1 行的高电平转换到第4 列所处的低电平,据此,我们确信第1 行第4 列交叉点处的按键即3 号键被按下。
矩阵式键盘测试及运行结果
键盘分编码键盘和非编码键盘。
键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。
矩阵键盘的识别方法其实和独立键盘类似,都是检测低电平,但矩阵键盘没固定接地,接的是I/O口,地(即低电平)由写程序给它。
以扫描第一行为例,通过给P3.0口赋低电平,其他口给高电平为基础,通过对P3.4~P3.7口的读取,若P3.4口读取结果是低电平,则第一行第一个按键按下,依次类推,后面三个按键。
检测完第一行,检测第二行,同理,给P3.1口赋低电平,其他口给高电平,再读取P3.4~P3.7口的电平情况,第三、四行也如此,通过分别给P3.2,P3.3口赋值低电平,然后对P3.4~P3.7口进行读取,来判断是否有按键按下。
矩阵键盘设计实验报告
矩阵键盘是一种特殊的电子输入设备,其特殊性在于每个按键可以仅由几根线连接而成。
这可以将按键尺寸缩小,同时也减少了接線复杂度。
在本次实验中,我们设计了一个4*4的矩阵键盘。
矩阵键盘的外型是4 *4的按键,其中每个按键由一个PIN组成,连接起来分别连接在一个不同的ROW与COL上。
在使用矩阵键盘时,我们将其连接到一台电脑上,通过电脑程序监视每行每列的通断状态,当一行或者一列被按下,程序会自动捕捉,来表示一个字符或者code.
首先,我们先准备一台电脑,再连接矩阵键盘的各个PIN,用8个信号线将矩阵键盘连接到单片机,再用USB线将单片机连接到电脑上,使用PL 2303驱动链接矩阵键盘和电脑终端。
单片机负责捕获ROW和COL的信号,计算并识别矩阵键盘的按键,将计算出的字符发送至电脑终端,进行小程序的检测。
在电脑端,我们使用Apple系统的终端运行.bash,编写简单的shell脚本实现对矩阵键盘信号识别。
脚本将不断检测矩阵键盘信号状态,根据捕捉到的ROW和COL信号,将其映射出字符信息,在一定时间内输出至终端。
在实验的最后,我们检验了所设计的矩阵键盘是否符合预期效果。
通过代码发送进行按键操作,能检测到正确的字符,表明矩阵键盘的设计及实现满足要求。
本次实验可以作为以后矩阵键盘的参考,深入研究程序软件,提高实验效率。
矩阵键盘实验报告矩阵键盘实验报告引言:矩阵键盘是一种常见的输入设备,广泛应用于电子产品中。
本实验旨在通过对矩阵键盘的研究和实验,深入了解其原理和工作机制,并探索其在实际应用中的潜力。
本文将从实验目的、实验步骤、实验结果和讨论四个方面进行论述。
实验目的:1. 理解矩阵键盘的工作原理;2. 掌握矩阵键盘的接线方法;3. 通过实验验证矩阵键盘的可靠性和稳定性。
实验步骤:1. 准备实验材料:矩阵键盘、电路板、导线等;2. 连接电路:将矩阵键盘与电路板通过导线连接;3. 编写程序:使用C语言编写程序,实现对矩阵键盘的扫描和按键检测;4. 烧录程序:将编写好的程序烧录到单片机中;5. 运行实验:按下矩阵键盘上的按键,观察电路板上的指示灯是否亮起。
实验结果:经过实验,我们成功地完成了矩阵键盘的接线和程序烧录,并进行了按键测试。
在按下不同的按键时,电路板上相应的指示灯亮起,证明了矩阵键盘的正常工作。
讨论:1. 矩阵键盘的工作原理:矩阵键盘是由行线和列线组成的,每个按键都与行线和列线相连。
当按下某个按键时,对应的行线和列线会短接,从而使得电流流过该按键,被检测到。
2. 矩阵键盘的接线方法:在本实验中,我们采用了常见的4行4列的接线方式,即将矩阵键盘的4个行线连接到单片机的4个输入引脚上,将4个列线连接到单片机的4个输出引脚上。
3. 矩阵键盘的可靠性和稳定性:通过实验,我们发现矩阵键盘具有较高的可靠性和稳定性。
即使在长时间使用和频繁按键的情况下,矩阵键盘仍能正常工作,并且按键的检测准确率较高。
4. 矩阵键盘的应用潜力:矩阵键盘广泛应用于各种电子产品中,如计算机、手机、电视遥控器等。
它具有结构简单、成本低廉、易于集成等优点,因此在电子产品设计中具有广阔的应用前景。
结论:通过本次实验,我们对矩阵键盘的工作原理和接线方法有了更深入的了解,并验证了其可靠性和稳定性。
矩阵键盘作为一种常见的输入设备,在电子产品设计中具有重要的地位和潜力。
实验6 矩阵键盘的检测
一、实验目的
1、掌握七段数码管显示的软件译码方法;
2、掌握矩阵键盘的使用。
二、实验内容
矩阵键盘来控制数码管显示:实验板上电时,数码管不显示,顺序按下4*4矩阵键盘后,在数码管上依次显示0-F,6个数码管同时静态显示即可。
三、实验方法和手段
多媒体教学、演示、讲练结合、软件仿真、实物焊接
四、实验条件
实验指导书、计算机、Proteus软件、Keil C51软件、耗材、电烙铁
五、实验学时
2学时
六、实验步骤
1、Proteus设计电路原理图
(1)按照图6-1,在Proteus软件中绘制好电路原理图。
图6-1 电路原理图
说明:矩阵键盘行线接P3口低4位(第一行P3.0),列线接P3口高4位(第一列接P3.4)。
(2)电路原理图中所需要的元件见表6-1。
表6-1 元件列表
元件名称型号数量Proteus中的名称单片机芯片AT89C51 1个AT89C51 晶振12MHz 1个CRYSTAL
电容22PF 2个CAP
电解电容22uF/16V 1个CAP-ELEC
电阻1K 1个RES
排阻1K 1个RESPACK_8 六位一体共阴极数码管1个7SEG-MPX6_CC 锁存芯片74HC573 2个74HC573
按键开关16个BUTTON 2、编程控制
在Keil软件中进行程序编制,完成目标:顺序按下4*4矩阵键盘后,6个数码管同时静态依次显示0-F。
将下面的参考程序补充完整,也可自行编写新程序。
参考程序代码如下:
3、仿真调试
将生成的HEX文件加载到Proteus中,进行软件仿真,查看效果。
4、实物调试
(1)程序烧制
(2)使用焊接成功的电路板,通电调试,查看效果。
七、思考题
1、如果采用双数码管显示按键值(0-15),应如何修改程序代码?
2、如果行线接P3口低4位,列线接P2口低4位,程序代码如何修改?。