键盘输入与IO实验

合集下载

通用IO使用_矩阵式键盘

通用IO使用_矩阵式键盘

嵌入式系统实验报告院(系)别信息科学与电气工程学院班级学号姓名指导教师时间 2014-06-21实验三通用 I/O 使用——矩阵式键盘1 实验目的S3C44B0X 具有 71 个通用多功能 I/O,这些 I/O 的应用是 S3C44B0X 处理器的基础。

本实验我们就以矩阵式键盘的接口设计为例,学习怎样设置 I/O 口并对它进行操作。

(1)掌握 S3C44B0X 的 I/O 口的功能特点;(2)掌握对 I/O 口的基本编程操作。

2 实验要求4×4 矩阵键盘的每个键的对应字符如下:7, 8, 9, /,4, 5, 6, *,1, 2, 3, -,0, ., +, \n编写 4×4 矩阵式键盘的驱动程序,使得当某个键被按下时,超级终端上显示出该键对应的字符。

3 实验容与步骤本实验需要进行连接电路。

学生按照下面的指导说明和程序流程图,自行编写符合实验要求的源程序。

并按照实验一中说明的步骤,进行:建立工程、编译除错、下载仿真等步骤,最终调试出符合要求的源程序。

观察超级终端上的显示,看是否输出满足实验要求的结果。

在本实验中,根据键盘的循环扫描检测法进行程序编写。

根据该方法,设定 GPF0-3 为输出口(列线),GPF4-7 为输入口(行线)。

用导线连接起这些 I/O 口和键盘的接口。

在程序中,我们首先通过设置 PCONF 寄存器,来实现端口功能配置。

3.1 电路连接在 ARMSys 上用导线连接扩展 I/O 口和键盘接口。

如下图所示:采用键盘的循环扫描检测法编写程序。

程序中,我们首先通过设置 PCONF 寄存器,来实现端口功能配置。

3.2 寄存器设置设置 PCONF 寄存器:如下表所示,由于我们需要设定 PF0-3 为输出口(列线),PF4-7为输入口,因此,在端口工作之前设置 PCONF=000 000 000 000 00 01 01 01 01B=0x55;PF0-3 输出扫描码时,可采用以下语句:rPDATF=0xf0;PF0-3 写入全 0; PF4-7 读入键值时,采用以下语句:Keyvalue=(PDATF&0xf0)>>4;z 部上拉电阻的设置:rPUPF=0x00;使能 PF0-7 的部上拉3.3 编写键盘扫描程序分为主程序和读键子程序两个部分。

io实验原理

io实验原理

io实验原理
IO实验(Input/Output Experiment)是一种实验方法,主要用
于研究和验证物理学或工程学中的特定问题。

该实验旨在对待研究对象进行输入和/或输出的相应变化进行测量和记录。

IO实验的原理可以概括为以下几点:
1. 输入和输出变量:IO实验中,研究对象通常有一些输入变
量和输出变量。

输入变量是通过实验操作员或外部装置输入给系统的参数,而输出变量是系统响应的参数。

2. 实验设备:IO实验通常依赖于一系列的实验设备,例如传
感器、计算机或数据采集设备等,用于测量和记录输入和输出变量的值。

3. 变量控制:为了研究特定的问题,IO实验往往需要对一些
变量进行控制。

这可以通过调整实验设备的设置、改变输入变量的数值或使用不同的输入信号等方式来实现。

4. 数据分析:IO实验的目标是获得输入和输出变量之间的关系,因此在实验结束后,需要对所获得的数据进行分析和解释。

这可以通过统计学方法、数学模型或图表等方式来实现。

总之,IO实验通过测量和记录输入和输出变量之间的关系,
来研究和验证物理学或工程学中的特定问题。

它是研究和解决问题的重要工具,在科学和工程领域中得到广泛应用。

微机原理及实验指导

微机原理及实验指导

实验一、I/O程序设计一.实验内容:I/O程序设计(一)实验内容:1.编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。

2.从键盘输入两个1位十进制数,计算二者之和,并将结果显示在屏幕上。

3.编程由键盘输入任意一位数,将该数以二进制数形式显示在屏幕上,例:5=00000101B (二)实验步骤: 1. 画出实验流程图。

2. 运行Tddebug软件,选择Edit菜单编写实验程序 3. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。

4. 使用Rmrun菜单中的Run运行程序,观察运行结果。

5. 使用Rmrun菜单中的Debug调试程序。

单步执行指令,观察各寄存器及数据区的内容。

6. 更改数据区中的数据,考察程序的正确性。

二.分析设计思想。

设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为ASCII码送屏幕显示。

其中0H~9H之间的数加30H,即可得0H~9H的ASCII码,而AH~FH的ASCII码,则需再加7H,参见表5-1。

参考程序流程如图2-1所示。

示例程序参见参考程序清单。

三.程序清单及流程DATA SEGMENTMES DB 'Show a as hex:',0AH,0DH,'$'SD DB 'a'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES ;显示提示信息MOV AH,09H INT 21HMOV SI,OFFSET SD 4MOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START四.实验结果。

i o扩展实验报告

i o扩展实验报告

i o扩展实验报告I/O扩展实验报告引言:I/O(Input/Output)扩展是指通过外部设备或接口扩展计算机的输入和输出功能,以满足更多的需求。

在本次实验中,我们将探索I/O扩展的原理和应用,并通过实际操作来验证其效果。

1. 实验目的本次实验的目的是通过使用I/O扩展设备,了解其原理和应用,并掌握相关的操作技巧。

2. 实验材料本次实验所需的材料包括:计算机、I/O扩展设备、连接线等。

3. 实验步骤3.1 连接I/O扩展设备首先,将I/O扩展设备与计算机通过连接线连接好。

确保连接的稳固和正确。

3.2 驱动程序安装根据I/O扩展设备的型号和厂商提供的驱动程序,将其安装到计算机中。

确保驱动程序的版本与计算机系统兼容。

3.3 配置I/O扩展设备打开计算机的设备管理器,找到新安装的I/O扩展设备。

根据设备的说明书,进行相应的配置,如设置输入输出端口、中断等。

3.4 编写测试程序根据实验需求,编写相应的测试程序。

程序应能够通过I/O扩展设备实现输入和输出的功能。

3.5 运行测试程序将编写好的测试程序运行起来,观察I/O扩展设备的反应。

检查输入输出是否正常,是否符合预期。

4. 实验结果与分析通过实验,我们可以得到以下结果和分析:4.1 I/O扩展设备的功能验证通过编写的测试程序,我们可以验证I/O扩展设备的输入输出功能是否正常。

如果输入输出正常,说明I/O扩展设备的配置和驱动程序安装都是正确的。

4.2 I/O扩展设备的应用I/O扩展设备可以广泛应用于各个领域,如工业自动化、家庭娱乐等。

通过扩展计算机的输入输出功能,可以实现更多的操作和控制。

4.3 I/O扩展设备的局限性尽管I/O扩展设备可以扩展计算机的输入输出功能,但其也存在一些局限性。

例如,扩展设备的接口类型和计算机的接口类型必须匹配,否则无法正常连接和使用。

5. 实验总结通过本次实验,我们了解了I/O扩展的原理和应用,并通过实际操作验证了其效果。

I/O扩展设备可以为计算机提供更多的输入输出功能,满足不同领域的需求。

io驱动实验原理

io驱动实验原理

在计算机科学和软件工程领域,"IO" 通常指的是输入输出,而"IO驱动实验" 可能指的是通过使用输入输出驱动程序进行实验。

然而,具体的"IO驱动实验" 可能取决于上下文和特定的实验目标。

以下是一些可能涉及的原理:
1. 输入输出驱动程序:许多计算机系统需要设备驱动程序来管理和控制输入和输出设备,例如键盘、鼠标、显示器、打印机等。

IO驱动实验可能涉及编写、测试和调试这些驱动程序,以确保它们能够正确地与硬件通信。

2. 底层硬件交互:IO驱动实验可能包括与硬件进行底层交互,这可能涉及到硬件寄存器的读写、中断处理等。

了解硬件与驱动程序之间的交互原理对于实验是至关重要的。

3. 中断处理:许多输入输出设备使用中断来通知计算机系统发生了某些事件,例如按键、鼠标移动等。

IO驱动实验可能包括中断处理程序的编写和测试,以确保在发生事件时能够正确地响应。

4. 设备管理:IO驱动实验可能要求对设备进行管理,包括设备的初始化、关闭、状态监测等。

这涉及到对设备的规范和文档的理解。

5. 驱动程序性能优化:高效的IO驱动程序对于系统性能至关重要。

IO驱动实验可能包括对驱动程序性能进行优化的实践,以确保系统能够在输入输出负载下保持高效运行。

6. 错误处理和容错:IO驱动实验可能要求实现良好的错误处理机制和容错机制,以应对设备可能出现的问题和异常情况。

总的来说,IO驱动实验通常涉及到理解计算机系统和硬件交互的原理,编写底层驱动程序,进行测试和调试,以确保系统能够正确、高效地与各种输入输出设备进行交互。

简单io实验报告

简单io实验报告

简单io实验报告简单IO实验报告引言:IO(Input/Output)是计算机领域中的一个重要概念,它指的是计算机与外部设备之间的数据交互过程。

在本次实验中,我们将通过一个简单的IO实验来深入了解IO的基本原理和应用。

实验目的:通过实验,掌握IO的基本概念和使用方法,了解IO在计算机系统中的重要性和应用场景。

实验材料:1. 一台计算机2. 一个键盘3. 一台打印机实验步骤:1. 输入输出设备的连接:将键盘通过USB接口连接到计算机的主机上,将打印机通过USB接口连接到计算机的主机上。

2. 输入设备的使用:打开计算机,进入操作系统界面。

通过键盘输入一段文字,并观察文字在屏幕上的显示效果。

尝试使用不同的按键和组合键,观察屏幕上的反应。

3. 输出设备的使用:打开一个文本编辑器,输入一段文字。

将文字保存为文本文件,并选择打印机作为输出设备,点击打印按钮,观察打印机的工作状态和输出结果。

4. IO的原理解析:IO的实现依赖于计算机系统的硬件和操作系统的支持。

当用户通过键盘输入时,键盘会将输入的信号转换为电信号,并通过USB接口发送给计算机主机。

计算机主机接收到信号后,将信号解析为对应的字符,并通过显示器将字符显示在屏幕上。

当用户选择打印机作为输出设备时,计算机主机将要打印的内容转换为打印机可识别的指令,并通过USB接口发送给打印机。

打印机接收到指令后,将指令解析并执行,最终将内容打印在纸张上。

5. IO的应用场景:IO广泛应用于计算机系统中的各个领域。

在个人电脑中,键盘和鼠标是最常见的输入设备,显示器和打印机是常见的输出设备。

在工业自动化领域,传感器常用于采集环境数据,并通过IO接口将数据传输给计算机进行处理。

在网络通信领域,网卡和路由器等设备通过IO接口与计算机连接,实现数据的传输和交换。

实验结论:通过本次实验,我们深入了解了IO的基本原理和应用。

IO在计算机系统中起着至关重要的作用,它实现了计算机与外部设备之间的数据交互。

io口实验报告

io口实验报告

io口实验报告IO口实验报告引言:IO口(Input/Output Port)是计算机硬件中的一种通信接口,用于与外部设备进行数据交互。

本实验旨在通过对IO口的实际应用,深入了解IO口的原理和使用方法。

一、实验目的通过本次实验,我们的目标是掌握IO口的基本原理和操作方法,了解IO口在计算机系统中的重要性,并能够熟练地使用IO口进行数据输入和输出。

二、实验装置本次实验所需的装置包括一台计算机、IO口接口板、连接线和外部设备(如LED灯、按钮等)。

三、实验过程1. 连接IO口接口板将IO口接口板与计算机通过连接线连接好,并确保连接稳固。

接口板上通常会有标识,根据标识将连接线插入正确的接口。

2. 配置IO口参数打开计算机,并进入操作系统。

根据计算机型号和操作系统的不同,配置IO口参数的具体步骤可能会有所不同。

一般来说,可以通过设备管理器或者控制面板中的设备设置选项来进行配置。

3. 进行IO口输入实验将一个按钮连接到IO口接口板的输入端口上。

通过编写简单的程序代码,实现当按钮按下时,计算机能够读取到IO口的输入信号,并作出相应的反应,如显示一个提示信息或者改变屏幕上的图像。

4. 进行IO口输出实验将一个LED灯连接到IO口接口板的输出端口上。

通过编写程序代码,实现当计算机发出IO口的输出信号时,LED灯能够亮起。

可以尝试不同的输出信号模式,如闪烁、渐变等,以观察LED灯的不同反应。

5. 拓展实验除了按钮和LED灯,还可以尝试连接其他外部设备,如蜂鸣器、温度传感器等,以进一步探索IO口的应用。

通过编写相应的程序代码,实现与这些设备的交互,并观察其效果。

四、实验结果与分析通过以上实验操作,我们可以得到以下实验结果:1. IO口输入实验:当按下按钮时,计算机能够读取到IO口的输入信号,并作出相应的反应。

这说明IO口能够实现数据的输入,为计算机提供外部信息。

2. IO口输出实验:当计算机发出IO口的输出信号时,LED灯能够亮起。

单片机IO口应用及键盘实验4-1

单片机IO口应用及键盘实验4-1
由程序和电路直接相应(预先设定功能,采用相应指令)
其他:
通道0作为I/O输出时,需要上拉电阻。驱动 MOS电路时,阻值为4.7K欧姆,驱动LED 显示器时为470欧姆;
通道0作为数据/地址线工作时,不需要上拉 电阻;
并口输出应用举例
VCC
R
VCC 220
2k Px.x
OUT LED
继电器
2 键盘扩展原理
消除键抖:JNB P口,分支
延迟程序
JB
P口,分支
按下一次键,在很短时间内弹起,算一次键抖
K3,K4处理程序结构
按键按下 消抖
寄存器加一/减一
寄存器判断
没有达到要求, 寄存器值赋值给A
达到要求, 寄存器值修改, 再把值送入A
查表显示
逻辑分析
先制一张表,表里面放入要显示的数值0~9共 十个数,表中数值地址也为0~9
KeyDown: CLR UpDown ;第四个键按下后的处理 KEY_RET: RET
采用中断方式 ?如何编程?
3 键盘实验(独立键盘)
键盘硬件连接如图 实验要求: 编写程序实现: 1)按K1,数码管显示0;按K2,数码管显示9 2)按K3,数码管当前数值加一 按K3,数码管当前数值减一
键盘的按键有触点式和非触点式 ; 按键开关的抖动问题 数字、功能、命令 键号、键值 重键
图2
键盘
键盘的类型: 独立式 行列式(或矩阵式) 键盘的工作方式 编程扫描(查询法) 定时扫描 中断
键盘和单片机的连接
和I/O相连:将每个按键的一端接到单片机的I/O口,另 一端接地,如图3所示是实验板上按键的接法,四个 按键分别接到P3.0 、P3.1、P3.2和P3.3
单片机I/O口应用及键盘实验

用单片机I-0口做按键输入实验

用单片机I-0口做按键输入实验

用单片机I/0口做按键输入实验
典型单片机的I/0口都是准双向口,既可以当输出口也可以当输入口。

具体操作时,我们将数据写出I/0口就是将它当作输出口使用;如果在程序中直接调用当前I/0口的状态,给我们定义的变量赋值或用于逻辑判断、分支控制等操作,就是将它当作输入口使用。

下图是使用P2.0口读取按键控制的电路。

从下图中可见,在该电路中P2.0口是输入应用。

当按键没有按下时+5V通过上拉电阻R1接到P2.0,这时P2.0口的电压是+5V,即逻辑1:如果按键被按下,P2.0通过按键接到电源地,这时P2.0口的电压是OV,即逻辑0。

综上所述,不按键时P2.0的状态是1;按键时P2.0的状态是0。

如果没有电阻R1,当按键接下时+5V电源会通过按键被短路到地,严重时会损坏电源,这是绝对不允许的。

io模块的应用案例

io模块的应用案例

io模块的应用案例IO模块是计算机编程中常用的一个模块,它提供了一些函数和方法来操作输入和输出。

在本文中,我将介绍一些常见的IO模块的应用案例,希望能对读者有所帮助。

1. 文件读写文件读写是IO模块最常见的应用之一。

通过IO模块提供的函数,我们可以轻松地读取和写入文件内容。

比如,下面是一个将字符串写入文件的案例:```python# 打开文件f = open("example.txt", "w")# 写入内容f.write("Hello, world!")# 关闭文件f.close()```在上述案例中,我们使用了`open()`函数打开了一个名为"example.txt"的文件,并指定了文件的写入模式为"w",表示以写入方式打开文件。

然后,我们使用`write()`函数向文件中写入了"Hello, world!"这个字符串。

最后,使用`close()`函数关闭文件。

2. 读取键盘输入除了文件读写,IO模块还可以帮助我们读取键盘输入。

通过`sys.stdin`对象,我们可以获取用户在控制台输入的内容。

下面是一个简单的案例:```pythonimport sys# 读取用户输入input_data = sys.stdin.readline()# 打印输入内容print("输入内容:%s" % input_data)```在上述案例中,我们导入了`sys`模块,并使用`sys.stdin.readline()`函数读取了用户输入的内容。

然后,通过`print()`函数将输入内容打印出来。

3. 网络通信在网络编程中,IO模块也扮演着重要的角色。

通过IO模块提供的函数和方法,我们可以轻松地实现网络通信。

以下是一个基于Socket 的简单客户端和服务器的案例:```python# 服务器端import socket# 创建Socket对象server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定端口server_socket.bind(("127.0.0.1", 8888))# 监听客户端连接server_socket.listen(5)while True:# 等待客户端连接client_socket, client_address = server_socket.accept()# 接收客户端发送的数据data = client_socket.recv(1024).decode()# 将数据转换成大写并发送回客户端client_socket.send(data.upper().encode())# 关闭客户端连接client_socket.close()``````python# 客户端import socket# 创建Socket对象client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 连接服务器client_socket.connect(("127.0.0.1", 8888))# 发送数据到服务器client_socket.send("hello, server!".encode())# 接收服务器返回的数据data = client_socket.recv(1024).decode()# 打印服务器返回的数据print("服务器返回:%s" % data)# 关闭连接client_socket.close()```在上述案例中,我们使用了`socket`模块创建了一个基于TCP协议的服务器和客户端。

实验二_I_O输入输出实验

实验二_I_O输入输出实验

a b cde f gh(dp) 实验二 I/O 口输入、输出实验一、实验目的1. 学习I/O 口的使用方法。

2. 学习延时子程序、查表程序的编写和使用。

二、实验说明本实验1通过单片机的I/O 口控制LED 的亮灭,从而观察I/O 口的输出。

实验2通过单片机的I/O 口接受按键动作信息,然后通过LED 和数码管指示。

通过本实验学生可以掌握单片机I/O 口输入输出的控制方法,同时也可以掌握单片机延时子程序、查表程序的编写和调试方法。

要求预先编写好程序并通过伟福仿真软件调试。

三、实验内容1、P0口做输出口,接八只LED (L1—L8),编写程序,使LED 循环点亮,间隔0.5秒。

2、P1.0--P1.7作输入口接拨动开关K1—K8;P0.0--P0.7作输出口,接发光二极管L1—L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出来,同时将开关编号(1—8)显示在共阴极LED 数码管上。

编程时应注意P1作为输入口时应先置1,才能正确读入值。

四、实验电路连线P0.0 ---- L1 P1.0 ----- K1 P0.1 ---- L2 P1.1 ----- K2 P0.2 ---- L3 P1.2 ----- K3 P0.3 ---- L4 P1.3 ----- K4 P0.4 ---- L5 P1.4 ----- K5 P0.5 ---- L6 P1.5 ----- K6P0.6 ---- L7 P1.6 ----- K7 P0.7 ---- L8 P1.7 ----- K8实验1:P0口循环点灯 实验2:P1、P0口输入输出a b c d e f g h(dp)P2.0P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7实验2: 共阴极LED 数码管各段与I/O 的连接五、实验仪器和设备PC 机、WA VE 软件、仿真器+仿真头、实验板、电源等。

六、参考程序框图P1口输入/输出框图七、思考题1、实验1欲改变LED循环的方向程序应如何修改?循环的时间间隔由什么决定?写出间隔时间为1秒的延时程序并说明计算方法。

键盘输入与IO实验

键盘输入与IO实验

04
IO实验
实验一:文件读写操作
打开文件
使用适当的方法打 开文件,如使用 fopen()函数。
写入文件
使用fwrite()函数将 数据写入文件。
总结词
掌握文件读写的基 本操作
读取文件
使用fread()函数从 文件中读取数据。
关闭文件
使用fclose()函数关 闭已打开的文件。
实验二:网络IO编程
IO分类IO可以分为同源自IO和异步IO两种类型。同步IO是指数据传输 过程中,发送方和接收方按照约定的速率进行数据传输,而 异步IO则是指数据传输速率不固定的IO方式。
IO实验目的
理解IO概念及其分类
通过实验,深入理解IO的基本概念和分类,了解同步IO和异步IO 的区别和特点。
掌握IO操作流程
掌握基本的IO操作流程,包括数据的读取、写入、传输等过程。
键盘输入原理
01
02
03
扫描码
键盘控制器通过扫描码识 别按键状态,将信息传递 给计算机。
编码方式
采用特定的编码方式将按 键信息转换为计算机可识 别的二进制码。
接口类型
常见的接口类型包括PS/2 和USB接口,用于连接键 盘与计算机。
键盘输入编程接口
1 2
Windows API
提供了一系列函数用于获取键盘输入信息,如 GetAsyncKeyState()。
提高编程技能
通过实验,提高编程技能,掌握如何使用编程语言进行IO操作。
IO实验步骤
准备实验环境
准备一台计算机和必要的外部 设备,如键盘、显示器等。
编写代码
根据实验目的,编写相应的代 码,实现数据的读取、写入和 传输等操作。
调试程序

单片机IO口应用及键盘实验5

单片机IO口应用及键盘实验5

(2007H)= 43H
2 查表和散转程序的编写与应用
查表:常用于特殊的数据译码和转换 MOVC A,@A+DPTR 查表指令 MOVC A,@A+PC 散转:程序的分支 JMP @A+DPTR
查表举例
TAB1:
DB 0C0H,0F9H,
指令MOV A,@A+DPTR和 MOV A,@A+PC
使用符号常量的优点可改善程序的可读性,它 的定义需要使用伪操作命令“EQU”或 “= ” 。
赋值命令
EQU 赋值命令。定义变量地址或者常数名称。 格式: 字符名称 EQU (数或汇编符号) 赋值后的符号名称可做:数据地址\代码地址\代
码地址\立即数\寄存器名 例如:
ABC EQU 30H ABC EQU R7 不能重名定义
SERCH1: MOV A,BUFF
DB 0A4H ,0B0H, DB 099H,092H,082H DB ,0F8H,080H,090H 表格中依次定义了从“0~
9”的共阳LED数码管显 示“7段码”
MOV DPTR,#TAB1
MOVC A,@A+DPTR
LJMP DISPLAY
……
TAB1:
散转表举例
如果使用查表法,我们应该知道两个数据,一 个找出按下键的数值(自己设定),另一个是 这个键所表示的数字在表中的位置
举例说明
假设S9按下,我们试着来查找 首先,原理图高四位为行,低四位为列
1.设置P1值为00001111(0FH), 有键按下, 该列值变为0,所以S9按下,P1值为07H
2.此时只是判断出第一列有键按下,但是不知 道是哪个,所以接下来扫描整列
3.设置P1值为11110000(F0H), 有键按下, 该列值变为0,所以S9按下,P1值为D0H

实验三 键盘检测实验

实验三 键盘检测实验

实验三键盘识别实验一、实验目的掌握单片机I/O口的输入检测的方法、独立按键的识别方法、键盘消抖等。

学会实时程序的调试技巧。

二、实验原理我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms 左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。

三、实验内容在如下实验电路中每按一次独立键盘的S2 键,与P1 口相连的八个发光二极管中点亮的一个往下移动一位。

图1 实验板键盘电路原理图四、实验步骤1、按实验要求在KeilC中创建项目,编辑、编译程序。

2、将编译生成的目标码文件(后缀为.Hex)传入实验板中。

3、在实验板上运行程序,观察实验运行结果并记录。

#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit duan=P2^6;sbit wei=P2^7;sbit key1=P3^4;sbit key2=P3^5;sbit key3=P3^6;uchar num,bai,shi,ge;uint second;uchar halt;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void display(uchar,uchar,uchar); void delay(uint z);void init();void keyscan();void main(){init();while(1){keyscan();if(halt==1){TR0=0;}elsedisplay(bai,shi,ge);}}void init(){P3=0xff;TMOD=0x01;TH0=(65536-46082)/256;TL0=(65536-46082)%256;EA=1;ET0=1;TR0=1;}void display(uchar a,uchar b,uchar c) {wei=1;P0=0xfe;wei=0;duan=1;P0=table[a];duan=0;delay(5);P0=0xff;wei=1;P0=0xfd;wei=0;duan=1;P0=table[b];duan=0;delay(5);P0=0xff;wei=1;P0=0xfb;wei=0;duan=1;P0=table[c];duan=0;delay(5);P0=0xff;}void keyscan(){if(key1==0)delay(10);if(key1==0){halt=1;}elsehalt=0;}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void int_t0() interrupt 1{TH0=(65536-46082)/256;TL0=(65536-46082)%256;num++;}。

实验二I-O口输入输出实验.

实验二I-O口输入输出实验.

实验二 I/O口输入、输出实验10通信工程A 班 1015231026 林飞翔P0口循环点灯ORG 0000H ; 设定程序汇编起始地址 MOV A ,#03H ; 设置初始值00000011 LOOP:MOV P0,A ;点亮LED0和LED1 ACALL DELAY ; 调用延时子程序RL A ; 将A 里面的00000011左移一位成00000110 SJMP LOOP ; 循环点亮LED 灯 DELAY : ;0.5S 的延时程序 DEL: MOV R7,#10 DEL1:MOV R6,#246 DEL2:MOV R5,#100DEL3:DJNZ R5,DEL3 ;2*100=200μS DJNZ R6,DEL2 ; (200+1+2)*246=49938μS DJNZ R7,DEL1 ; (49938+1+2)*10=499410us RET ; 返回主程序P1口输入/输出ORG 0000 ; 设定起始地址 SJMP MAINMAIN: MOV P1,#0FFH ;P1口置1 SEARCH:MOV A,P1 ; 读P1口CJNE A,0FFH,LED ; 查询是否有按键按下 SJMP SEARCH ; 等待LED: MOV P0, A ; 有键按下,将值读入P0 ACA LL DELAY ; 调用延时子程序MOV R5 ,#00H ; 置计数初值=0 SHIFT: RRC A ; 输入右移1位JNC LOOKFOR ; 若Cy=0,则数码显示 INC R5 ;Cy=1,则计数加1 SJMP SHIFT ; 跳回继续移位LOOKFOR:MOV DPTR,#TAB ; 所查表的首地址赋给MOV A,R5 ; 计数值做偏移量 MOVC A,@A+DPTRMOV P2,A ; 显示相应按键值 SJMP SEARCH TAB:DB 60H,0DAH,0F2H,66H ; DB 0B6H,0BEH,0E0H,0FEH ;DELAY : ;0.5S 的延时程序 DEL: MOV R7,#10 DEL1: MOV R6,#246 DEL2: MOV R5,#100DEL3:DJNZ R5,DEL3 ;2*100=200μS DJNZ R6,DEL2 ; (200+1+2)*246=49938μS DJNZ R7,DEL1 ; (49938+1+2)*10=499410us RET ; 返回主程序SJMP $ END。

实验6 输入输出程序设计

实验6  输入输出程序设计

实验6 I/O程序设计实验目的:(1)掌握利用DOS、BIOS功能调用实现I/O的方法。

(2)掌握程序直接控制I/O方式。

实验内容:(1)利用DOS INT 21H功能调用,编程实现对输入的字符串进行统计;(2)利用BIOS INT 10H功能调用,控制字符显示特性。

(3)通过I/O指令直接对61端口的控制,实现扬声器发声。

实验过程:(1)从键盘输入一串字符(<80,回车结束),统计其中的数字、大写字母、小写字母和其它字符。

①程序说明。

1)主程序利用INT 21H 的1h号功能调用输入字符串,并调用各子程序完成统计、显示功能;2)子程序disp_msg:利用INT 21H 的9h号功能调用显示字符串;入口参数:DS:DX指向字符串3)子程序disp_cnt:利用INT 21H 的2h号功能调用显示统计数字;入口参数:BX为待显示值4)子程序count:分类统计;入口参数:DS:DX指向字符串出口参数:BX为数字字符;CX为大写字母;BP为小写字母;DI为其它字符data segmentstr db 80 dup (?)msg0 db 13,10, 'Enter a string:', '$'msg1 db 13,10, 'Numbers=', '$'msg2 db 13,10, 'Upletters=', '$'msg3 db 13,10, 'Lowletters=', '$'msg4 db 13,10, 'Others=', '$'data endscode segmentassume cs:code,ds:datago: mov ax, datamov ds, axlea dx , msg0call disp_msgmov ah, 1lea si , strlp1:int 21hmov [si], alcmp al, 13je L0inc sijmp lp1L0:lea dx, strcall countlea dx, msg1call disp_msgcall disp_cntlea dx, msg2call disp_msgmov bx, cxcall disp_cntlea dx, msg3call disp_msgmov bx, bpcall disp_cntlea dx, msg4call disp_msgmov bx, dicall disp_cntmov ah, 4chint 21hdisp_msg procpush axmov ah, 9int 21hpop axretdisp_msg endpdisp_cnt procpush axpush dxmov ax, bxmov bl, 10div blmov bh, ahmov dl, aladd dl, 30hmov ah, 2int 21hmov dl, bhadd dl, 30hmov ah, 2int 21hpop dxpop axretdisp_cnt endpcount procpush axpush sixor bx, bx; Numbersxor cx, cx; Uplettersxor bp, bp; Lowlettersxor di, di; Othersmov si, dxnext:mov al, [si]cmp al, 13je donecmp al, '0'jb otherjbe numcmp al, 'A'jb othercmp al, 'Z'jbe U_lettercmp al, 'a'jb othercmp al, 'z'jbe L_letterother:inc dijmp contnum:inc bxjmp contU_letter:inc cxjmp contL_letter:inc bpcont:inc sijmp nextdone:pop sipop axretcount endpcode endsend go②补充完整程序,编辑、连接、运行、调试程序。

【2019年整理】512 键盘输入与IO实验

【2019年整理】512 键盘输入与IO实验
JXARM9-2410实验系统教案 5.12 键盘输入与IO实验
武汉创维特信息技术有限公司
2020/9/29
提纲
1
实验目的
2 实验内容
3 预备知识
4 实验设备
5 基础知识 6 实验过程 7 实验报告要求
2
一 实验目的
实验目的
学习键盘驱动原理 掌握通过CPU的I/O扩展键盘的方法
3
二 实验内容
9
五 基础知识
键盘扫描
键盘扫描过程就是让微处理器按有规律的时间间隔查看 键盘矩阵,以确定是否有键被按下
一旦处理器判定有一个键按下,键盘扫描软件将过滤掉 抖动并且判定哪个键被按下
每个键被分配一个称为扫描码的唯一标识符。应用程序 利用该扫描码,根据按下的键来判定应该采取什么行动, 换句话说,扫描码将告诉应用程序按下哪个键
8
五 基础知识
按键抖动
开关并不完善,因为当它们被按下或者被释放时,并不 能够产生一个明确的1或者0。尽管触点可能看起来稳定 而且很快地闭合,但与微处理器快速的运行速度相比, 这种动作是比较慢的。当触点闭合时,其弹起就像一个 球。弹起效果将产生如下图所示的好几个脉冲。弹起的 持续时间通常将维持在5ms~30ms 之间。来自row++
N row < 4
Y
13
六 实验报告要求
实验报告要求
键盘扫描有哪几种方式,分别说明其基本原理; 思考使用中断方式如何处理键盘输入,试画出流程图。
14
10
五 基础知识
键盘扫描算法
初始化:所有的行(输出端口)被强行设置为低电平 在没有任何键按下时,所有的列(输入端口)将读到高
电平。 任何键的闭合将造成其中的一列变为低电平。 一旦检测到有键被按下,就需要找出是哪一个键。过程

单片机实验-IO口的输入输出实验

单片机实验-IO口的输入输出实验

实验二I/O口输入、输出实验一、实验目的1. 学习I/O口的使用方法。

2. 学习延时子程序、查表程序的编写和使用。

二、参考程序框图三、程序设计1、P0口循环点亮程序ORG 0030HSTART : MOV P2,#00H; //消影MOV A ,#01H; //LOOP : MOV P2 ,A; //点亮一个led灯ACALL DELAY; //延时500msRL A; //左移一位AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETEND2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh值MOV DPTR,#TABLE; //表地址存入DPTRMOV 50H,#0FEH; //比较初值载入地址50hL0 :MOV A,P1; //按键消抖CJNE A,#0FFH,L1;AJMP L0;L1 :MOV A,P1;CJNE A,#0FFH,LL1;AJMP L0;LL1 :CJNE A,50H,LL2; //是否与地址50h中数据相等MOV P0,A; //相等输出对应led灯MOV A,#00H;MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管LCALL DELAY; //延时LJMP START; //返回程序开头LL2 :XCH A,50H; //交换数据RL A; //左移XCH A,50H; //再次交换,此时地址50h中数据左移一位INC DPTR; //表格数据地址加一LJMP LL1; //返回继续比较DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH;DJNZ R5,$;DJNZ R7,DE1;RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据END程序二(方法二)ORG 0000HMOV P2,#00H; //I./O口初始化MOV P1,#0FFH; //P1口赋FFH初值MOV P0,#00H;START : MOV P2,#00H; //P2清0;MOV P0,#00H; //P0清0;MOV R1 ,P1;MOV A,R1; //读P1口CJNE A,#0FFH,L1; //是否有数据输入AJMP START; //无输入则跳转,继续查询LCALL DELAY;L1 : MOV R1,P1; //消除按键抖动MOV A,R1;CJNE A, #0FFH,LL1;AJMP START;LL1 : CJNE A,#0FEH,LL2; //是否按键1输入MOV P2,#06H; //是则P2输出相应的按键号码CPL A; //A取反MOV P0,A; //输出到P0口LCALL DELAY; //延迟AJMP LP; //跳转到LPLL2 : CJNE A,#0FDH,LL3; //是否按键2输入MOV P2,#5BH; //以下同上CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下MOV P2,#4FH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下MOV P2,#6DH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下MOV P2,#7DH;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下MOV P2,#07H;CPL A;MOV P0,A;LCALL DELAY;AJMP LP;LL8 : CJNE A,#7FH,LP; //判断按键8是否按下MOV P2,#7FH;CPL A;MOV P0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H;DE2 : MOV R5,#5AH;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RETEND四、思考题1、LED循环方向更改:RL A; 改成RR A;1S的延时程序: DELAY : MOV R7,#20; //延时程序DE1 : MOV R6,#200;DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1;RET2、提高电阻阻值3、一般为5V或者3.3V。

实验六 简单IO接口的操作

实验六 简单IO接口的操作

实验六简单I/O接口的操作一、实验目的掌握接口操作的基本方法,掌握数据输入输出程序编制的方法。

二、实验设备QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。

三、实验说明1、74LS244是一种三态输出的8位总线缓冲驱动器,无锁存功能,当G 为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。

2、74LS273是一种8D触发器,当CLR为高电平且CLK端电平正跳变时,D0-D7端数据被锁存到8D触发器中。

3、IOY0对应的端口地址范围是180-18FH。

IOY1对应的端口地址范围是190-19FH。

IOY2对应的端口地址范围是1A0-1AFH。

IOY3对应的端口地址范围是1B0-1BFH。

四、实验原理图图6-3-1 74LS244与74LS273扩展I/O口原理图五、实验内容本实验利用74LS244作为输入口,读取开关状态,并将此状态通过74LS273驱动发光二极管显示出来。

六、实验步骤图6-3-2 扩展I/O口连线图(1)实验连线:(确保电源关闭)➢244的CS——PC104总线接口模块的IOY0,Y7~Y0——开关K01~K08。

➢273的CS——PC104总线接口模块的IOY2,Q7~Q0——发光二极管L1~L8。

➢该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。

➢该模块的数据(AD0~AD7)连到PC104总线接口模块的数据(D0~D7)。

(2)连线检查无误后,开机上电。

(3)利用debug中的i或o命令,测试一下端口是否好用。

(4)设计、编辑、编译、运行程序。

源程序为:LS244 EQU 0180H ;244片选信号LS273 EQU 01a0H ;273片选信号MY_STACK SEGMENT PARA 'STACK'DB 100 DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA 'DATA'MY_DATA ENDSMY_CODE SEGMENT PARA 'CODE'MY_PROC PROC FARASSUME CS:MY_CODE, DS:MY_DATA, SS:MY_STACK MAIN: MOV AX,MY_DATAMOV DS,AXREAD1: MOV DX,LS244 ;读取开关状态IN AL,DXMOV DX,LS273OUT DX,AL ;送LED显示CALL BREAKJMP READ1MY_PROC ENDP;BREAK PROC NEAR ;按任意键退出PUSHFPUSH AXPUSH DXMOV AH,06H ;6号功能调用,键盘输入单字符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提纲
1
实验目的
2 实验内容
3 预备知识
4 实验设备
5 基础知识 6 实验过程 7 实验报告要求
1
一 实验目的
实验目的
学习键盘驱动原理 掌握通过CPU的I/O扩展键盘的方法
2
二 实验内容
实验内容
编写矩阵键盘扫描程序,并将按键键值在数码管中显示
3
三 预备知识
预备知识
了解ADT集成开发环境的基本功能; 了解键盘的构成以及原理
9
五 基础知识
键盘扫描算法
初始化:所有的行(输出端口)被强行设置为低电平 在没有任何键按下时,所有的列(输入端口)将读到高
电平。 任何键的闭合将造成其中的一列变为低电平。 一旦检测到有键被按下,就需要找出是哪一个键。过程
很简单,微处理器只需在其中一列上输出一个低电平。 如果它在输入端口上发现一个0值,微处理器就知道在所 选择行上产生了键的闭合
第一次扫描键值input_key
为1则继续查询下一行,否则延时一段时间并重新
N
扫描一次
是否有键按下 input_key != key_mask
Y
延时
➢ 如果扫描结果与上次扫描结果相同则调用
第二次扫描键值input_key1
key_get_char获取键码,然后调用 display_num在LED上显示相应键值。
input_key==input_key1 N
Y
获取键码ascii_key
➢ 图中通过如下程序将键盘的row行输出低电平:
在LED上显示按键
unsigned char*
keyboard_port =
(unsigned char*)0x2000000;
*keyboard_port = ~(0x00000001 << row);
row++
N row < 4
Y
12
六 实验过程
实验过程
13
六 实验报告要求
实验报告要求
键盘扫描有哪几种方式,分别说明其基本原理; 思考使用中断方式如何处理键盘输入,试画出流程图。
14
10
五 基础知识
JX44B0的键盘模块
JX44B0具有4×4的软键盘。原理图如下:
11
五 基础知识
实验说明
键盘处理流程图
开始 key_mask = 0x0F
row = 0
将键盘的第row行置为低电平
➢ 依次将键盘的每一行输出低电平,延时一段时间 延时
➢ 然后获取该行中各列的输入情况,如果各列全部
4
四 实验设备
实验设备
JX44B0教学实验箱 ADT1000仿真器和ADT IDE集成开发环境 串口连接线
5
五 基础知识
键盘实现方案
键盘实现方案
➢ 采用专门的芯片实现键盘扫描 ➢ 采用软件实现键盘扫描
软键盘实现方案
➢ 当开关打开时,通过处理器的I/O 口的一个上拉电阻提供逻辑1; 当开关闭合时,处理器的I/O 口的输入将被拉低到逻辑0。
8
五 基础知识
键盘扫描
键盘扫描过程就是让微处理器按有规律的时间间隔查看 键盘矩阵,以确定是否有键被按下
一旦处理器判定有一个键按下,键盘扫描软件将过滤掉 抖动并且判定哪个键被按下
每个键被分配一个称为扫描码的唯一标识符。应用程序 利用该扫描码,根据按下的键来判定应该采取什么行动, 换句话说,扫描码将告诉应用程序按下哪个键
6
五 基础知识
矩阵键盘电路
பைடு நூலகம் 一个瞬时接触开关(按钮)放置在每一行与每一列的交 叉点。每一行由一个输出端口的一位驱动,每一列由一 个电阻器上拉且供给输入端口一位。
7
五 基础知识
按键抖动
开关并不完善,因为当它们被按下或者被释放时,并不 能够产生一个明确的1或者0。尽管触点可能看起来稳定 而且很快地闭合,但与微处理器快速的运行速度相比, 这种动作是比较慢的。当触点闭合时,其弹起就像一个 球。弹起效果将产生如下图所示的好几个脉冲。弹起的 持续时间通常将维持在5ms~30ms 之间。
相关文档
最新文档