键盘扫描显示实验报告

合集下载

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

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

键盘扫描实验实验报告一、实验目的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时,数码管能够显示对应的数字。

DSP实验报告

DSP实验报告

实验一数字IO应用实验—、实验目的1. 了解DSP开发系统的组成和结构2. 在实验设备上完成I/O硬件连接,编写I/O实验程序并运行验证。

3. 内存观察工具的使用二、实验设备计算机,CCS3.1版本软件,DSP仿真器,教学实验箱三、实验原理2.键值读取程序:该部分有两种方法进行键值的判断。

方法1:利用内存观察工具进行观察方法2:利用LED1-LED8的亮灭对应显示键值。

a)外部中断1的应用参照实验五;b)内存观察键值:程序中定义了三个变量“W”“row”和“col”。

“W”代表是CPLD中键盘的扫描数值,“row”和“col”分别代表键盘的行和列,由行和列可以判定按键的位置。

上述三个变量可以在观察窗口中观察的。

c)利用LED灯显示键值原理,参看实验一。

具体的LED灯显示值以查表的形式读出,请参看“”库文件。

本实验的CPLD地址译码说明:基地址:0x0000,当底板片选CS0为低时,分配有效。

CPU的IO空间:基地址+0x0200 LED灯output 8位外部中断用XINT1:由CPLD分配,中断信号由键盘按键产生。

中断下降沿触发。

KEY_DAT_REG(R):基地址+0x0004;四、实验步骤和内容1.2407CPU板JUMP1的1和2脚短接,拨码开关S1的第一位置ON,其余置OFF;2.E300板上的开关SW4的第一位置ON,其余OFF;SW3的第四位置ON其余的SW置OFF“DEBUG→Connect”)4.打开系统项目文件 \e300.test\ normal \05_key interface \;“\Debug\”文件“Debug\Go Main”跳到主程序的开始;7.指定位置设置断点;8.View--〉Watch Window打开变量观察窗口;9. 将变量“w”“row”和“col”添加到观察窗口中,改变变量观察窗口的显示方式为HEX显示。

“Debug--〉Animate”全速运行,然后点击E300板上键盘按键,观察窗口中变量变化,同时LED1-LED8灯也相应变化,指示键值。

行列式键盘及8位七段数码管的显示拓展

行列式键盘及8位七段数码管的显示拓展

一、实验目的1、掌握矩阵式键盘的原理及编程方法,掌握数码管动态扫描显示的原理及编程方法二、实验原理在实验2的基础上改进程序,当按下数字键0~9时在数码管上显示,要求每按下一个新的数字时,在最低位(最右边)显示,之前按下的数字一次向左移动一个位置,当按下的数字键超过8个时,不再显示新内容。

当按下非数字键即剩下的6个键(A~F)中任意一个时,清除当前显示的内容。

注意这里需要判断按键是否弹起(避免重复显示,有关重复显示参考书第4章例5的重复计数问题,比较相似),否则多个数码管可能会显示同一按键对应的数值三、实验内容⑴掌握行列式键盘和8位七段数码管显示原理;⑵掌握实验3的C51语言编程;四、实验步骤⑴阅读与实验3有关的阅读材料;⑵参考上图,在ISIS中完成电路原理图的绘制;⑶在Keil μvision3中编写和编译C51程序,并生成可执行文件;⑷在μvision3中启动ISIS的仿真运行,并进行联机调试。

五、实验要求提交实验报告并包括如下内容:电路原理图、软件调试分析、C51源程序、仿真运行截图及实验小结。

①源程序:#include<reg51.h>sbit P3_2=P3^2;unsigned char segcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};unsigned char bitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedcharkey_buf[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x 77};unsigned int number=0;unsigned int buf[8]={10,10,10,10,10,10,10,10};void delay(unsigned int time){unsigned int j=0;for(;time>0;time--)for(j=0;j<125;j++);}void getkey() interrupt 0{ delay(10);if(P3_2==0){char key_scan[]={0xef,0xdf,0xbf,0x7f};char i=0,j=0;int m=0,n=0;for(i=0;i<4;i++){P1=key_scan[i];for(j=0;j<16;j++){if(key_buf[j]==P1){number=j;break;}}}for(i=0;i<4;i++){P1=key_scan[i];for(j=0;j<16;j++){while(key_buf[j]==P1);}}if(number<8){for(m=7;m>0;m--){buf[m]=buf[m-1];}buf[0]=number;}else if(number>9){for(n=0;n<8;n++)buf[n]=10;}}}void main(){int k;IT0=1;EX0=1;EA=1;while(1){P1=0x0f;for(k=0;k<8;k++){P0=segcode[10];P2=bitcode[k];P0=segcode[buf[k]];}}}。

键盘扫描原理

键盘扫描原理

键盘扫描原理
键盘是计算机输入设备中最常用的一种,它通过将人们的按键操作转换成计算机可以识别的信号,从而实现了人机交互。

而键盘的核心部分就是键盘扫描原理,它是如何实现的呢?
首先,我们需要了解键盘的工作原理。

当我们按下键盘上的某一个按键时,就会产生一个按键信号,这个信号会通过键盘的电路传输到计算机主机上。

而键盘扫描原理就是指计算机是如何检测到这个按键信号的。

键盘扫描原理的核心就是矩阵扫描。

键盘上的每一个按键都对应着一个电路,这些电路会以矩阵的形式排列在键盘的背后。

当我们按下某一个按键时,对应的电路就会闭合,从而产生一个按键信号。

计算机会通过扫描这个矩阵来检测到按键信号的产生。

具体来说,计算机会以一定的频率扫描键盘上的每一个按键,检测它们是否产生了按键信号。

这个扫描的频率通常很高,所以我们按下按键时几乎可以立即得到响应。

一旦计算机检测到有按键信号产生,它就会将这个信号转换成相应的键值,从而实现了按键的输入。

除了矩阵扫描,现代键盘还采用了一些其他技术来提高性能和稳定性。

比如采用了多种防抖动技术,防止因按键抖动而产生误操作;采用了多种按键轮询技术,提高了按键的灵敏度和反应速度;还采用了多种按键编码技术,提高了按键的识别准确性和稳定性。

总的来说,键盘扫描原理是键盘工作的核心,它通过矩阵扫描等技术实现了对按键信号的检测和转换,从而实现了人机交互。

随着技术的不断发展,键盘的性能和稳定性会不断提高,为人们的使用体验带来更多的便利和舒适。

单片机键盘显示实验报告

单片机键盘显示实验报告

单片机的键盘和显示实验报告㈠实验目的1.掌握单片机I/O的工作方式;2.掌握单片机以串行口方式0工作的LED显示;3.掌握键盘和LED显示的编程方法。

㈡实验器材1.G6W仿真器一台2.MCS—51实验板一台3.PC机一台4.电源一台㈢实验内容及要求实验硬件线路图见附图从线路图可见,8051单片机的P1口作为8个按键的输入端,构成独立式键盘。

四个LED显示器通过四个串/并移位寄存器74LS164接口至8051的串行口,该串行口应工作在方式0发送状态下,RXD端送出要显示的段码数据,TXD则作为发送时钟来对显示数据进行移位操作。

编写一个计算器程序,当某一键按下时可执行相应的加、减、乘、除运算方式,在四个显示器上显示数学算式和最终计算结果。

注:①通过按键来选择加、减、乘、除四种运算方式。

②输入两个数字均为一位十进制数,可预先放在内存中。

㈣实验框图(见下页)㈤思考题1.当键盘采用中断方式时,硬件电路应怎样连接?P1.4~P1.7是键输出线,P1.0~P1.3是扫描输入线。

输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5 V电源,输出端接至8051的外部中断输入端。

2.74LS164移位寄存器的移位速率是多少?实验中要求计算的式子和结果之间相差一秒,移位寄存器的移位速率应该是每秒一位吧。

其实这个问题确实不知道怎么回答。

LED 显示用的段码与教科书所提供的不同,本实验采用如下段码:显示数符段码显示数符段码0BBH A DBH109H B F1H2EAH C B2H36BH D E9H459H E F2H573H F D2H否有否P1口置输入读P1口开 始显示“0000”是否有键按下?延迟消抖是否有键按下?是读键码加法运算减法运算除运算6F3H—40H70BH.04H8FBH┗┛A1H97BH┗┛1AH灭00H P DAH实验代码:ORG 0000HAJMP MAINORG 0030HMAIN:MOV 41H,#0BBH ;对几个存放地址进行初始化MOV 42H,#0BBHMOV 43H,#0BBHMOV 44H,#0BBHMOV SCON,#00H ;初始化串行口控制寄存器,设置其为方式0 LCALL DISPLAY ;初始化显示KEY:MOV R3,#08H;用来存放两个数据MOV R4,#02HMOV P1,#0FFH ;初始化P1口MOV A,P1 ;读取按键状态CPL A ;取正逻辑,高电平表示有键按下JZ KEY ;A=0时无键按下,重新扫描键盘LCALL DELAY1;消抖MOV A,P1 ;再次读取按键状态CPL AJZ KEY ;再次判别是否有键按下PUSH AKEY1:MOV A,P1CPL AANL A,#0FH ;判别按键释放JNZ KEY1 ;按键未释放,等待LCALL DELAY1;释放,延时去抖动POP AJB ACC.0,ADD1 ;K1按下转去ADD1JB ACC.1,SUB1 ;K1按下转去SUB1JB ACC.2,MUL1 ;K1按下转去MUL1JB ACC.3,DIV1 ;K1按下转去DIV1LJMP KEYADD1:LCALL BUFFER ;显示加数和被加数MOV 43H,#049HLCALL DISPLAY ;显示加号MOV A,R3ADD A,R4DA AMOV R3,A ;相加结果放入R6ANL A,#0FHMOV R4,A ;结果个位放入R7MOV A,R3SWAP A ;半字节交换,高四位放入低四位ANL A,#0FHMOV R3,A ;结果的高位放入R6LCALL L;显示缓存区设置LCALL DELAY2;延时一秒后显示LCALL DISPLAYLJMP KEYSUB1:LCALL BUFFER ;显示减数和被减数MOV 43H,#40HLCALL DISPLAY ;显示减号MOV A,R3CLR CY ;CY清零SUBB A,R4 ;做减法PUSH ARLC A ;带进位循环左移,最高位放入CYJC F ;判断最高位,若为1则跳转到负数ZHENG: POP AMOV R4,AMOV R3,#00H ;高位清零SJMP OUTFU:POP ACPL A ;取绝对值INC AMOV R4,AMOV R3,#11H ;显示负号OUT: LCALL L ;显示缓存区设置LCALL DELAY2 ;延时1s后显示LCALL DISPLAYLJMP KEYMUL1:LCALL BUFFER ;显示两位乘数MOV 43H,#99HLCALL DISPLAY ;显示乘号MOV A,R3MOV B,R4MUL AB ;结果放入AB,A中是低8位,B中是高8位MOV B,#0AHDIV AB ;十进制转换MOV R4,B ;结果个位放入R7MOV R3,A ;结果的十位放入R6LCALL LLCALL DELAY2LCALL DISPLAY ;延时1s后显示LJMP KEYDIV1:LCALL BUFFER ;显示除数和被除数MOV 43H,#62HLCALL DISPLAY ;显示除号MOV A,R3MOV B,R4DIV AB ;A除以BMOV R4,B ;余数放在R4中MOV R3,A ;商放在R3中MOV A,R4MOVC A,@A+DPTR ;调用段选号MOV 41H,A ;显示余数MOV A,R3MOVC A,@A+DPTRMOV 43H,A ;显示商MOV 42H,#00HMOV 44H,#00HLCALL DELAY2 ;延时1S后显示LCALL DISPLAYLJMP KEYBUFFER: MOV 41H,#22H ;显示初始化,在做计算之前显示两个操作数,显示等号MOV DPTR,#TABLMOV A,R4MOVC A,@A+DPTRMOV 42H,AMOV A,R3MOVC A,@A+DPTRMOV 44H,ARETDISPLAY:MOV R5,#04H;共四位需要显示MOV R0,#41HDISPLAY1:MOV A,@R0MOV SBUF,ADISPLAY2:JNB TI,DISPLAY2;是否传完了CLR TIINC R0DJNZ R5,DISPLAY1RETL:MOV A,R4MOVC A,@A+DPTRMOV 41H,A ;R4对应的段码MOV A,R3MOVC A,@A+DPTRMOV 42H,A ;R3对应的段码MOV 43H,#00HMOV 44H,#00HRETDELAY1: ;普通延时MOV R1,#20HDS1:MOV R2,#0FFHDS2:DJNZ R2,DS2DJNZ R1,DS1RETDELAY2:MOV R6,#14H ;定时1SMOV TMOD,#01HDS3:MOV TH0,#3CHMOV TL0,#0B0H ;50msSETB TR0LOOP:JNB TF0,LOOPCLR TF0CLR TR0DJNZ R6,DS3 ;1s到,中断返回RETTABL:DB 0BBH 09H 0EAH 6BH ;段码表DB 59H 73H 0F3H 0BHDB 0FBH 7BH 00H 0DBHDB 0F1H 0B2H 0E9H 0F2HDB 0D2H 40H实验结果及分析按键1:8+2= 结果:10按键2:8-2= 结果: 6按键3:8*2= 结果:16按键4:8/2= 结果:4从上面的结果可以看出,本次实验基本完成了实验要求。

《嵌入式接口技术》实验报告5-键盘阵列扫描1107012150陈晓霞

《嵌入式接口技术》实验报告5-键盘阵列扫描1107012150陈晓霞
if(key != 0)
{
IO0CLR=col1|col2|col3|col4|col5|col6;//全清零
return key;
}
//--------------扫描第2列-------------------
IO0CLR=col2;
IO0SET=col1|col3|col4|col5|col6;
if((IO0PIN & row2)==0) key=26;
if((IO0PIN & row3)==0) key=27;
if((IO0PIN & row4)==0) key=28;
if((IO0PIN & row5)==0) key=29;
if((IO0PIN & row6)==0) key=30;
1搭建实验平台
2根据要求编写程序
3在仿真平台上,画图连接线路
4导入程序运行
四、实验结果与数据处理
1.运行结果
2.源程序
#include "config.h"
uint32 key;
//引脚定义
#define col1 (1<<0) //col1连接p0.0
#define col2 (1<<1)
#define col3 (1<<2)
if(key != 0)
{
IO0CLR=col1|col2|col3|col4|col5|col6;
return key;
}
//--------------扫描第5列-------------------
IO0CLR=col5;
IO0SET=col1|col2|col3|col4|col6;

按键检测驱动实验报告

按键检测驱动实验报告

班级_08网络一班_ 学号__20080611052_ 姓名__袁晓洋___按键检测实验[实验目的]深入理解单片机IO输入的特性和编程方法理解4×4键盘的工作原理和扫描原理掌握利用单片机单IO口实现对4×4键盘扫描输入的方法[实验内容]采用单片机的IO口实现对4×4键盘的低电平扫描,将扫描输入的结果按照按钮与数码的对应关系显示到7段数码管上。

[实验步骤]在此填写在proteus中的操作步骤,并附绘制的电路图首先加入根据课本121页,连接电路,一个P0端口连接按键,P2端口连接数码管,设置按钮,设置8个10K的电阻,如图所示:在此填写keil C51代码并附详细注释#include <reg51.h> 添加头文件#define KEYP P0 定义键盘连接到P0#define SEG7P P2 定义七段数码管连接到P2Char code TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xa0,0x83,0xa7,0xa1,0x84,0x8e,0xbf,0x7f}; 0-9,a-f的显示char disp=0x7f; 声明七段显示器初值只显示小数点unsigned char scan[4]={0xef,0xdf,0xbf,0x7f}; 显示器及键盘的扫描码void delay(int); 声明延迟函数void scanner(void); 声明扫描函数main() 主程序{while(1) 无穷循环{scanner(); 一直扫描键盘和显示七段显示器}}void scanner(void) 扫描函数开始{unsigned char col,row,dig; 定义变量col:列,row:行dig:显示位unsigned char rowkey,kcode; 定义变量rowkey:行键值kcode:按键码for(col=0;col<4;col++) for循环扫描第col列{KEYP=scan[col]; 高4位输出扫描信号,低4位输入行值SEG7P=disp; 输出数字rowkey=~KEYP&0x0f; 读入KEYP值,取反,再相与消除高4位00001111if(rowkey!=0) 若按键被按下{ if(rowkey==0x01) row=0; 说明第0行被按下else if(rowkey==0x02) row=1; 说明第1行被按下else if(rowkey==0x04) row=2; 说明第2行被按下else if(rowkey==0x08) row=3; 说明第3行被按下 kcode=4*col+row; 计算出按键的号码disp=TAB[kcode];将键值编码后写入最右侧while(rowkey!=0) 当按钮未放开rowkey=~KEYP&0x0f; 再读入行键值}delay(4); 延迟函数延迟4ms}}void delay(int x) 延迟函数{int i,j; 声明变量i,jfor(i=0;i<x;i++)for(j=0;j<600;j++); 延迟约5ms}[实验总结]总结试验中遇到的问题和问题的解决方法。

键盘扫描原理

键盘扫描原理

键盘扫描原理
键盘扫描原理是指通过控制信号将按键状态传输到计算机的一种技术。

它主要分为两个步骤:键盘扫描和数据传输。

在键盘扫描过程中,计算机会发送扫描码(scan code)到键盘。

扫描码是一个8位的二进制数,用于唯一标识每个按键。

键盘内部有一个按键矩阵,当按键按下时,会触发相应的行和列连线,形成一个电路通路。

键盘通过轮询的方式扫描每个按键的状态,并生成扫描码。

一旦键盘生成了扫描码,它就会通过电缆传输给计算机。

数据传输的方式可以是串行还是并行,取决于键盘和计算机之间的连接方式。

对于串行传输,扫描码会被逐位地发送到计算机。

对于并行传输,扫描码会同时发送到计算机的多个引脚上。

计算机接收到扫描码后,会根据预先定义的映射表将其转换为相应的字符或功能。

映射表可以根据键盘类型和语言环境的不同而有所不同。

计算机将转换后的按键信息存储在一个缓冲区中,供操作系统或应用程序读取和处理。

总结来说,键盘扫描原理通过扫描码和数据传输将按键状态传输给计算机。

这种技术广泛应用于各种键盘设备,包括传统的有线键盘和现代的无线键盘。

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

键盘扫描显示实验报告
一、实验要求
利用实验箱提供的键盘扫描和显示电路,做一个键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。

实验程序可分为三个模块:
1、键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。

2、显示模块:将显示单元的内容在显示器上动态显示。

3、主程序:电影键输入模块和显示模块。

二、实验目的
1、掌握键盘和显示器的接口方法和编程方法。

2、掌握键盘扫描和LED八段码显示器的工作原理。

三、实验框图
四、实验电路及连线
硬件连接图
五、实验总结。

相关文档
最新文档