PS-2 PC键盘编程参考资料

PS-2 PC键盘编程参考资料
PS-2 PC键盘编程参考资料

PS/2 PC键盘编程参考资料一.电气特性

键盘接口时序(a) 键盘发送时序;(b) 键盘接收时序

注:在时钟的下降沿读取数据.以下可做具体写程序参考

从PS/2向PC机发送一个字节可按照下面的步骤进行:

(1)检测时钟线电平,如果时钟线为低,则延时50μs;

(2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1);

(3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据);

(4)延时20μs(如果此时正在发送起始位,则应延时40μs);

(5)输出起始位(0)到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送;

(6)输出8个数据位到数据线上;

(7)输出校验位;

(8)输出停止位(1);

(9)延时30μs(如果在发送停止位时释放时钟信号则应延时50μs);

通过以下步骤可发送单个位:

(1)准备数据位(将需要发送的数据位放到数据线上);

(2)延时20μs;

(3)把时钟线拉低;

(4)延时40μs;

(5)释放时钟线;

(6)延时20μs。

PS/2设备从PC机接收一个字节

由于PS/2设备能提供串行同步时钟,因此,如果PC机发送数据,则PC机要先把时钟线和数据线置为请求发送的状态。PC机通过下拉时钟线大于100μs来抑制通讯,并且通过下拉数据线发出请求发送数据的信号,然后释放时钟。当PS/2设备检测到需要接收的数据时,它会产生时钟信号并记录下面8个数据位和一个停止位。主机此时在时钟线变为低时准备数据到数据线,并在时钟上升沿锁存数据。而PS/2设备则要配合PC机才能读到准确的数据。具体连接步骤如下:

(1)等待时钟线为高电平。

(2)判断数据线是否为低,为高则错误退出,否则继续执行。

(3)读地址线上的数据内容,共8个bit,每读完一个位,都应检测时钟线是否被PC机拉低,如果被拉低则要中止接收。

(4)读地址线上的校验位内容,1个bit。

(5)读停止位。

(6)如果数据线上为0(即还是低电平),PS/2设备继续产生时钟,直到接收到1且产生出错信号为止(因为停止位是1,如果PS/2设备没有读到停止位,则表明此次传输出错)。

(7输出应答位。

(8)检测奇偶校验位,如果校验失败,则产生错误信号以表明此次传输出现错误。

(9)延时45μs,以便PC机进行下一次传输。

读数据线的步骤如下:

(1)延时20μs;

(2)把时钟线拉低

(3)延时40μs

(4)释放时钟线

(5)延时20μs

(6)读数据线。

下面的步骤可用于发出应答位;

(1)延时15μs;

(2)把数据线拉低;

(3)延时5μs;

(4)把时钟线拉低;

(5)延时40μs;

(6)释放时钟线;

(7)延时5μs;

(8)释放数据线。

四.键盘返回值介绍:

注意:键盘的返回值并不是和一般ASCII码相对应!

键盘的处理器如果发现有键被按下释放或按住键盘将发送扫描码的信息包到计算机扫描码有两种不同的类型通码和断码当一个键被按下或按住就发送通码当一个键被释放就发送断码每个按键被分配了唯一的通码和断码这样主机通过查找唯一的扫描码就可以测定是哪个按键每个键一整套的通断码组成了扫描码集有三套标准的扫描码集分别是第一套第二套和第三套所有现代的键盘默认使用第二套扫描码

虽然多数第二套通码都只有一个字节宽但也有少数扩展按键的通码是两字节或四字节宽这类的通码第一个字节总是为E0h

正如键按下通码就被发往计算机一样只要键一释放断码就会被发送每个键都有它自己唯一的通码它们也都有唯一的断码幸运的是你不用总是通过查表来找出按键的断码在通码和断码之间存在着必然的联系多数第二套断码有两字节长它们的第一个字节是F0h 第二个字节是这个键的通码扩展按键的断码通常有三个字节它们前两个字节是E0h,F0h 最后一个字节是这个按键通码的最后一个字节作为一个例子我在下面列出了几个按键的第二套通码和断码

No.KEY通码(第二套)断码(第二套)

1"A"1C F0 1C

2"5"2E F0 2E

3"F10"09F0 09

4Right Arrow E0 74E0 F0 74

5Right "Ctrl"E0 14E0 F0 14

一个键盘发送值的例子:

通码和断码是以什么样的序列发送到你的计算机从而使得字符G 出现在你的字处理软件里的呢因为这是一个大写字母需要发生这样的事件次序按下Shift 键按下G键释放G 键释放Shift 键与这些时间相关的扫描码如下Shift 键的通码12hG 键的通码34h G 键的断码F0h 34h Shift 键的断码F0h 12h 因此发送到你的计算机的数据应该是

12h 34h F0h 34h F0h 12h

五:第二套扫描码:

101 102 和104 键的键盘:

KEY通码断码KEY通码断码KEY通码断码

A 1C F0 1C9 46 F0 46 [ 54 F0 54

B 32F0 32` 0E F0 0E INSERT E0 70 E0 F0 70

C 21F0 21- 4E F0 4E HOME E0 6C E0 F0 6C D23F0 23= 55 F0 55 PG UP E0 7

D E0 F0 7D E24F0 24\ 5D F0 5D DELET

E E0 71 E0 F0 71

F 2B F0 2B BKSP 66 F0 66 END E0 69 E0 F0 69

G 34 F0 34 SPACE 29 F0 29 PG DN E0 7A E0 F0 7A

H 33 F0 33 TAB 0D F0 0D U ARROW E0 75 E0 F0 75

I 43 F0 43 CAPS 58 F0 58 L ARROW E0 6B E0 F0 6B J 3B F0 3B L SHFT 12 F0 12 D ARROW E0 72 E0 F0 72 K 42 F0 42 L CTRL 14 F0 14 R ARROW E0 74 E0 F0 74 L 4B F0 4B L GUI E0 1F E0 F0 1F NUM 77 F0 77

M 3A F0 3A L ALT 11 F0 11 KP / E0 4A E0 F0 4A N 31 F0 31 R SHFT 59 F0 59 KP * 7C F0 7C

O 44 F0 44 R CTRL E0 14 E0 F0 14 KP - 7B F0 7B

P 4D F0 4D R GUI E0 27 E0 F0 27 KP + 79 F0 79

Q 15 F0 15 R ALT E0 11 E0 F0 11 KP EN E0 5A E0 F0 5A R 2D F0 2D APPS E0 2F E0 F0 2F KP 71 F0 71

S 1B F0 1B ENTER 5A F0 5A KP 0 70 F0 70

T 2C F0 2C ESC 76 F0 76 KP 1 69 F0 69

U 3C F0 3C F1 05 F0 05 KP 2 72 F0 72

V 2A F0 2A F2 06 F0 06 KP 3 7A F0 7A

W 1D F0 1D F3 04 F0 04 KP 4 6B F0 6B

X 22 F0 22 F4 0C F0 0C KP 5 73 F0 73

Y 35 F0 35 F5 03 F0 03 KP 6 74 F0 74

Z 1A F0 1A F6 0B F0 0B KP 7 6C F0 6C

0 45 F0 45 F7 83 F0 83 KP 8 75 F0 75

1 16 F0 16 F8 0A F0 0A KP 9 7D F0 7D

2 1E F0 1E F9 01 F0 01 ] 58 F0 58

3 26 F0 26 F10 09 F0 09 ; 4C F0 4C

4 2

5 F0 25 F11 78 F0 78 ' 52 F0 52

5 2E F0 2E F12 07 F0 07 , 41 F0 41

6 36 F0 36 PRNT

SCRN

E0 12

E0 7C

E0 F0

7C E0

F0 12

. 49 F0 49

7 3D F0 3D SCROLL 7E F0,7E / 4A F0 4A

8 3E F0 3E PAUSE E1 14 77

E1 F0 14

F0 77

-NONE-

ACPI 扫描码:

KEY通码断码

Power E0, 37E0, F0, 37

Sleep E0, 3F E0, F0, 3F

Wake E0, 5E E0, F0, 5E

Windows 多媒体扫描码:

KEY通码断码Next Track E0, 4D E0, F0, 4D Previous Track E0, 15E0, F0, 15 Stop E0, 3B E0, F0, 3B Play/Pause E0, 34 E0, F0, 34 Mute E0, 23 E0, F0, 23 Volume Up E0, 32 E0, F0, 32 Volume Down E0, 21 E0, F0, 21 Media Select E0, 50 E0, F0, 50 E-Mail E0, 48 E0, F0, 48 Calculator E0, 2B E0, F0, 2b My Computer E0, 40 E0, F0, 40 WWW Search E0, 10 E0, F0, 10

WWW Home E0, 3A E0, F0, 3a WWW Back E0, 38 E0, F0, 38 WWW Forward E0, 30 E0, F0, 20 WWW Stop E0, 28 E0, F0, 28 WWW Refresh E0, 20 E0, F0, 20 WWW Favorites E0, 18 E0, F0, 18

键盘与LED显示实验

实验三键盘及LED显示实验 一、实验内容 利用8255可编程并行接口控制键盘及显示器,当有按键按下时向单片机发送外部中断请求(INT0,INT1),单片机扫描键盘,并把按键输入的键码一位LED显示器显示出来。 二、实验目的及要求 (一)实验目的 通过该综合性实验,使学生掌握8255扩展键盘和显示器的接口方法及C51语言的编程方法,进一步掌握键盘扫描和LED显示器的工作原理;培养学生一定的动手能力。 (二)实验要求 1.学生在实验课前必须认真预习教科书与指导书中的相关内容,绘制流程图,编写C51语言源程序,为实验做好充分准备。 2.该实验要求学生综合利用前期课程及本门课程中所学的相关知识点,充分发挥自己的个性及创造力,独立操作完成实验内容,并写出实验报告。 三、实验条件及要求 计算机,C51语言编辑、调试仿真软件及实验箱50台套。 四、实验相关知识点 1.C51编程、调试。 2.扩展8255芯片的原理及应用。 3.键盘扫描原理及应用。 4.LED显示器原理及应用。

5.外部中断的应用。 五、实验说明 本实验仪提供了8位8段LED 显示器,学生可选用任一位LED 显示器,只要按地址输出相应的数据,就可以显示所需数码。 显示字形 1 2 3 4 5 6 7 8 9 A b C d E F 段 码 0xfc 0x60 0xda 0xf2 0x66 0xb6 0xbe 0xe0 0xfe 0xf6 0xee 0x3e 0x9c 0x7a 0x9e 0x8e 六、实验原理图 01e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1GND2DS29 LG4041AH 234 567 89A B C D E F e 1d 2dp 3 c 4g 56 b 78 9 a b c g d dp f 10a b f c g d e dp a 11GND3a b f c g d e dp 12 GND4 a b f c g d e dp GND1 GND2DS30 LG4041AH 1 2 3 4 5 6 7 8 JP4112345678 JP4712345678JP42 SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGH A C B 12345678 JP92D 5.1K R162 5.1K R163VCC VCC D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC7 10 RD 5WR 36A09A18RESET 35CS 6 U36 8255 D0D1D2D3D4D5D6D7WR RD RST A0A1PC5PC6PC7 PC2PC3PC4PC0PC1CS 12345678JP56 12345678JP53 12345678 JP52 PA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7 (8255 PB7)(8255 PB6)(8255 PB5)(8255 PB4)(8255 PB3)(8255 PB2)(8255 PB1)(8255 PB0) (8255 PC7)(8255 PC6)(8255 PC5)(8255 PC4)(8255 PC3)(8255 PC2)(8255 PC1)(8255 PC0) (8255 PA0) (8255 PA1) (8255 PA2) (8255 PA3) (8255 PA4) (8255 PA5) (8255 PA6) (PA7) I N T 0(P 3.2) I N T 0(P 3.3) 七、连线说明

矩阵键盘的工作原理和扫描确认方式

9.3.1 矩阵键盘的工作原理和扫描确认方式 来源:《AVR单片机嵌入式系统原理与应用实践》M16华东师范大学电子系马潮 当键盘中按键数量较多时,为了减少对I/O 口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图9-7 所示,它由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU 通过检测行或列线上的电平变化可以确定哪个按键被按下。 图9-7 为一个 4 x 3 的行列结构,可以构成12 个键的键盘。如果使用 4 x 4 的行列结构,就能组成一个16 键的键盘。很明显,在按键数量多的场合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O 口线。 矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU 的时间,所以较好的方式也是采用状态机的方法来设计,尽量减少键盘查询过程对MCU 的占用时间。 下面以图9-7 为例,介绍采用行扫描法对矩阵键盘进行判别的思路。图9-7 中,PD0、PD1、PD2 为3 根列线,作为键盘的输入口(工作于输入方式)。PD3、PD4、PD5、PD6 为4根行线,工作于输出方式,由MCU(扫描)控制其输出的电平值。行扫描法也称为逐行扫描查询法,其按键识别的过程如下。 √将全部行线PD3-PD6 置低电平输出,然后读PD0-PD2 三根输入列线中有无低电平出现。只要有低电平出现,则说明有键按下(实际编程时,还要考虑按键的消抖)。如读到的都是高电平,则表示无键按下。 √在确认有键按下后,需要进入确定具体哪一个键闭合的过程。其思路是:依

键盘扫描显示实验原理及分析报告

键盘扫描显示实验原理及分析报告 一、实验目的-------------------------------------------------------------1 二、实验要求-------------------------------------------------------------1 三、实验器材-------------------------------------------------------------1 四、实验电路-------------------------------------------------------------2 五、实验说明-------------------------------------------------------------2 六、实验框图-------------------------------------------------------------2 七、实验程序-------------------------------------------------------------3 八、键盘及LED显示电路---------------------------------------------14 九、心得体会------------------------------------------------------------- 15 十、参考文献--------------------------------------------------------------15

按键的基础编程

按键程序编写的基础 从这一章开始,我们步入按键程序设计的殿堂。在基于单片机为核心构成的应用系统中,用户输入是必不可少的一部分。输入可以分很多种情况,譬如有的系统支持PS2键盘的接口,有的系统输入是基于编码器,有的系统输入是基于串口或者USB或者其它输入通道等等。在各种输入途径中,更常见的是,基于单个按键或者由单个键盘按照一定排列构成的矩阵键盘(行列键盘)。我们这一篇章主要讨论的对象就是基于单个按键的程序设计,以及矩阵键盘的程序编写。◎按键检测的原理 常见的独立按键的外观如下,相信大家并不陌生,各种常见的开发板学习板上随处可以看到他们的身影。

(原文件名:1.jpg) 总共有四个引脚,一般情况下,处于同一边的两个引脚内部是连接在一起的,如何分辨两个引脚是否处在同一边呢?可以将按键翻转过来,处于同一边的两个引脚,有一条突起的线将他们连接一起,以标示它们俩是相连的。如果无法观察得到,用数字万用表的二极管挡位检测一下即可。搞清楚这点非常重要,对于我们画PCB的时候的封装很有益。它们和我们的单片机系统的I/O口连接一般如下:

(原文件名:2.jpg) 对于单片机I/O内部有上拉电阻的微控制器而言,还可以省掉外部的那个上拉电阻。简单分析一下按键检测的原理。当按键没有按下的时候,单片机I/O通过上拉电阻R接到VCC,我们在程序中读取该I/O的电平的时候,其值为1(高电平); 当按键S按下的时候,该I/O被短接到GND,在程序中读取该I/O的电

平的时候,其值为0(低电平) 。这样,按键的按下与否,就和与该按键相连的I/O的电平的变化相对应起来。结论:我们在程序中通过检测到该I/O口电平的变化与否,即可以知道按键是否被按下,从而做出相应的响应。一切看起来很美好,是这样的吗? ◎现实并非理想 在我们通过上面的按键检测原理得出上述的结论的时候,其实忽略了一个重要的问题,那就是现实中按键按下时候的电平变化状态。我们的结论是基于理想的情况得出来的,就如同下面这幅按键按下时候对应电平变化的波形图一样:

单片机矩阵键盘设计方案

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 0000H LJMP START ORG 0003H RETI ORG 000BH RETI ORG 0013H RETI ORG 001BH RETI ORG 0023H RETI ORG 002BH RETI ;;;;;;;;;;主程序入口;;;;;;;;;; ORG 0100H START: LCALL CHUSHIHUA LCALL PANDUAN LCALL XIANSHI LJMP START ;;;;;;;;;;初始化程序;;;;;;;;;;

实验五 键盘显示控制实验

实验五键盘显示控制实验 一、实验目的 1、掌握8255控制键盘及显示电路的基本功能及编程方法 2、2、掌握一般键盘和显示电路的工作原理 二、实验内容 8255单元与键盘及数码管显示单元连接,扫描键盘输入,并将结果送数码管显示。键盘采用4*4键盘,每个数码管显示值可为0~F共16个数。具体实验内容为:将键盘警醒编号,记作0~F,当按下一个键时,将该键对应的编号在下一个数码管上显示出来。再按下一个键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。键盘与显示的字符的对应关系如下: 接线: PC7~PC0/8255 接行3~列0/4x4键盘 PA7~PA0/8255 接dp~a/led数码管 CS/8255 接Y1/IO地址 +5v 接S0/LED数码管 GND 接S3~S1/LED数码管 三、实验过程 1、设置8255C口键盘输入、A口为数码管段码输出 2、实验流程图如下图所示

N Y Y N 未找到 找到 程序代码如下图所示: ;*********************; ;* 键盘显示 8255LED *; ;*********************; ;********************; ;* 8255薄膜按键实验 *; ;********************; a8255 equ 288H ;8255 A 口 c8255 equ 28aH ;8255 C 口 k8255 equ 28bH ;8255控制口 data segment table1 dw 0770h,0B70h,0D70h,0E70h,07B0h,0BB0h,0DB0h,0EB0h dw 07D0h,0BD0h,0DD0h,0ED0h,07E0h,0BE0h,0DE0h,0EE0h ;键盘扫描码表 LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH DB 39h,5EH,79h,71h,0ffh ;LED 段码表, 开始 行线输出 是否有按键按下 列线输出 是否有按键按下 查找键码 查询键盘号 显示键盘号

单片机键盘输入编程(C语言)

学习过单片机技术的人都知道,单片机的按键输入一般可分为简单的独立式按键输入及行列式键盘输入两种。图1为简单的独立式键盘输入示意图,独立式键盘输入适合于按键输入不多的情况(<5个按键),具有占用口线较少、软件编写简单容易等特点。 图2为行列式键盘输入示意图,列线接P1.0~P1.3,行线接P1.4~P1.7。行列式键盘输入适合于按键输入多的情况,如有16个按键输入,用简单按键输入用要占用2个输入口(共16位),而使用行列式键盘输入只需占用一个输入口(8位)。但行列式键盘输入软件编写较复杂,对初学者而言有一定的难度。

以上略谈了一下按键输入的情况。在很多状态下,按键输入的值要同时要在LED数码管上显示出来。如一个按键设计为输入递增(加法)键,可以设计成每点按一下,数值递增加1,同时在LED数码管上显示出来;也可设计成持续按下时,数值以一定时间间隔(如0.3秒)累加。但是当欲输入值较大时(如三位LED数码管作输入显示时的输入值最大为999),则可能按下键的时间太长(最长达300秒),看来这种方式只适用于一位或至多两位数值(最大99)的输入。当然你也可多设几个键,每个键只负责一位数值的输入,但这样会占用较多的口线,浪费宝贵的硬件资源。 大家可能见到过,一些进口的温度控制器(如日本RKC INSTRUMENT INC. 生产的REX_C700温控器)的面板设计为:温度测量值用4位LED数码管显示,输入设定值显示也用4位

LED数码管,输入按键只有4个,一个为“模式设定键”,一个为“左移键”,另两个为“加法键”、“减法键”。欲输入设定值(温控值)时,按一下“模式设定键”,程序进入设定状态,此时输入设定值显示的4位LED数码管中,个位显示最亮(稳定显示),而十、百、千位显示较暗(有闪烁感),说明可对个位进行输入。按下“加法键”或“减法键”,即可输入个位数的值;点按一下“左移键”,变为十位显示最亮,而个、百、千位显示较暗,说明可对十位进行输入。按下“加法键”或“减法键”,即可输入十位数的值;……这样可完成4位数的输入。完成输入后,再按一下“模式设定键”,程序即退出设定状态,进入工作运行。用这种输入方法,不仅输入4位数用4个键即可,再多位(5位至24位)的输入也用这4个键就够了。 大家了解了这种新颖的按键输入方式后,一定很感兴趣,也想掌握设计方法。为了便于大家理解,这里结合笔者设计的一款“节能时控器”,详细进行讲解。“节能时控器”用于定时控制大功率电器工作,因现采用分时计费方法,可起到节约开支的作用,对工业生产成效显著。 图3为“节能时控器”硬件构成原理图。“节能时控器”共有4个输入按键:set--模式设定键,left--左移键,up—加法键,on/off--定时1、2启动/关闭键。单片机IC1(AT89C2051)只有15条I/O线,由于受I/O线数量限制,因此P1口中的 P1.0~P1.3既作为驱动4位LED数码管的数据输出一部分,同

矩阵键盘设计实验报告

南京林业大学 实验报告 基于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、检查验证结果。

汇编实验-显示与键盘实验

汇编语言与接口技术实验报告 开课实验室:实验中心微机原理与接口技术实验室2014年12月1 日 学院计算机科 学教育软 件学院 年级、专 业、班姓名成绩 课程名称汇编语言 与接口技 术 实验项目 名称显示与键盘实验 指导老师 签名古鹏 一、实验要求 1.硬件实验十六八段数码管显示 利用实验仪提供的显示电路,动态显示一行数据. 2.硬件实验十七键盘扫描显示实验 在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。 实验程序可分成三个模块。 ①键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 ②显示模块:将显示单元的内容在显示器上动态显示。 ③主程序:调用键输入模块和显示模块。 二、实验目的 1. 硬件实验十六八段数码管显示 1.了解数码管动态显示的原理。 2.了解用总线方式控制数码管显示 2. 硬件实验十七键盘扫描显示实验 1、掌握键盘和显示器的接口方法和编程 方法。 2、掌握键盘扫描和LED八段码显示器的 工作原理。 三、实验电路及连线 1. 硬件实验十六八段数码管显示连线连接孔1 连接孔2 1 KEY/LED_CS CS0 位选通 信号 段码输 出 (0x004 数据总线

2. 硬件实验十七键盘扫描显示实验 连线连接孔1 连接孔2 1 KEY/LED_CS CS0 四、使用仪器、材料 计算机一台 Wave6000试验仪 五、实验程序、过程 1.硬件实验十六八段数码管显示 代码: OUTBIT equ 08002h ; 位控制口 OUTSEG equ 08004h ; 段控制口 data segment LEDBuf db 6 dup(?) ; 显示缓冲 Num db 1 dup(?) ; 显示的数据 DelayT db 1 dup(?) LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h data ends code segment assume cs:code, ds:data Delay proc near push ax ; 延时子程序 push cx

矩阵式键盘程序设计

矩阵式键盘程序设计 (1)定义字型码表和10ms延时程序设计。4X4矩阵键盘的16个键分别对应0~9、A~F 十六个字符,由于数码管显示使用共阴极LED数码管,所以字型码采用共阴极字型码。定义字型码表和软件去抖的10ms延时程序如下: #include /*定义0~9,A~F十六个字符的字型码表*/ unsigned char table[]= {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; /*10ms延时程序*/ void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } (2)矩阵式键盘主程序设计。4X4矩阵键盘的各行接P0口的P0.0~P0.3,矩阵键盘的各列接P0口的P0.4~P0.7,P1口的P1.0~P1.7接数码管的各段。矩阵式键盘主程序如下:void main() { char k=0; unsigned char tmp,key; P1=0x00; P0=0x0f; // P0口低四位做输入口,先输出全1 tmp=P0; while(1) { while(tmp==0x0f) //循环判断是否有键按下 { P0=0x0f; //所有列输出低电平 tmp=P0; //读行信号 } delay10ms(); //延时10ms去抖 P0=0x0f; //所有列输出低电平 tmp=P0; //再次读键盘状态 if(tmp==0x0f) continue; //如果无键按下则认为是按键抖动,重新扫描键盘 key=scan_key( ); //有键按下,调用键盘扫描程序,并把键值送key while(k!=-1) {delay10ms();k=scan_key();} P1=table[key]; //查表或字型编码送P1口,数码管显示闭合按键的编码 } (3)矩阵式键盘扫描程序设计 unsigned char scan_key(void) //键盘扫描子程序

单片机课程设计4X4矩阵键盘显示

长沙学院 《单片机原理及应用》 课程设计说明书 题目液晶显示4*4矩阵键盘按键号 程序设计 系(部)电子与通信工程系 专业(班级)电气1班 姓名龙程 学号09 指导教师刘辉、谢明华、王新辉、马凌 云 起止日期— 长沙学院课程设计鉴定表

《单片机技术及应用》课程设计任务书系(部):电子与电气工程系专业:11级电子一班指导教师:谢明华、刘辉

目录 前言 .......................................................................................................................................... 错误!未定义书签。 一、课程设计目的 .................................................................................................................... 错误!未定义书签。 二、设计内容及原理 ................................................................................................................ 错误!未定义书签。 单片机控制系统原理 ...................................................................................................... 错误!未定义书签。 阵键盘识别显示系统概述 ................................................................................................ 错误!未定义书签。 键盘电路 ............................................................................................................................ 错误!未定义书签。 12864显示器 ................................................................................................................... 错误!未定义书签。 整体电路图 ........................................................................................................................ 错误!未定义书签。 仿真结果 ............................................................................................................................ 错误!未定义书签。 三、实验心得与体会 ................................................................................................................ 错误!未定义书签。 四、实验程序 ............................................................................................................................ 错误!未定义书签。参考文献 .................................................................................................................................... 错误!未定义书签。

按键及显示实验

一、实验原理及电路 1、LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。, 2、由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。驱动模块具有八位数据总线,外加一些电源接口和控制信号。而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。 实验电路图 二、功能说明 设计并实现一4×4键盘的接口,键盘与1602显示单元连接,编写实验程序扫描键盘输入,并将扫描结果送1602显示,键盘采用4×4键盘。将键盘进行编号记作0—F当按下其中一个按键时将该按键对应的编号在一个1602显示出来,当按下下一个按键时便将这个按键的编号1602上显示出来 实验框图

四、实验代码 #include #define uchar unsigned char #define uint unsigned int #define lcd_data P3 sbit lcd_EN=P2^2; sbit lcd_RW=P2^1; sbit lcd_RS=P2^0; uchar key,a; uchar sys_time1[]="good"; uchar sys_time2[]="morning!"; uchar sys_time3[]="play"; uchar sys_time4[]="basketball!"; uchar sys_time5[]="study"; uchar sys_time6[]="hard!"; unsigned char code key_code[]={ 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xB7,0x77 }; void delayms(uint ms) { uchar t; while(ms--) { for(t=0;t<120;t++); } } void delay_20ms(void) { uchar i,temp; for(i = 20;i > 0;i--) { temp = 248; while(--temp); temp = 248; while(--temp); } } void delay_38us(void) { uchar temp;

实验二 矩阵键盘实验

实验二矩阵键盘实验 一、实验目的 (1)掌握矩阵键盘行列设计方法; (2)掌握矩阵键盘识别方法; (3)掌握矩阵键盘去抖原理; (4)掌握矩阵键盘控制LED或数码管的设计方法; 二、实验原理 电路图参考实验板电路。 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个键的反转码建一个表,通过查表就可知道是哪个键被按下了。 三、实验内容 1.编写程序,做到在键盘上每按一个数字键(0-F)用LED数码管将该代码显示出来。按其它键退出。 2.利用Proteus,设计4*4矩阵键盘硬件电路,并仿真实现。

单片机教程26课单片机矩阵式键盘接口技术及程序设计

单片机教程26课:单片机矩阵式键盘接口技术及程序设计 发布:2009-4-04 22:40 | 作者:hnrain | 查看:885 次 在单片机系统中键盘中按钮数量较多时,为了减少I/O 口的占用,常常将按钮排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按钮加以连接。这样,一个端口(如P1 口)就能组成 4*4=16个按钮,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就能组成20键的键盘,而直接用端口线则只能多 出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。 <单片机矩阵式键盘接口技术及编程接口图> 矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O 口作为输出端,而列线所接的I/O 口则作为输入。这样,当按钮没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样, 通过读入输入线的状态就可得知是否有键按下了。具体的识别及编程办法如下所述。 矩阵式键盘的按钮识别办法 确定矩阵式键盘上何键被按下介绍一种行扫描法” 行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按钮识别办法,如上图所示键盘,介绍过程如下。 判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按钮之中。若所有列线均为高电平,则键盘中无键按下。

判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。其办法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按钮就是闭合的按钮。 下面给出一个具体的例程: 图仍如上所示。8031单片机的P1 口用作键盘I/O 口,键盘的列线接到P1 口的低4位,键盘的行线接到P1 口的高4位。列线P1.0-P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0-P1.3设置为输入线,行线P1.4-P .17设置为输出线。4根行线和4根列线形成16个相交点。 检测当前是否有键被按下。检测的办法是P1.4-P1.7输出全0” 读取P1.0-P1.3的状态,若P1.0-P1.3为全1 ”则无键闭合,不然有键闭合。 去除键抖动。当检测到有键按下后,延时一段时间再做下一步的检测判断。若有键被按下,应识别出是哪一个键闭合。办法是对键盘的行线进行扫描。 P1.4-P1.7按下述4种组合依次输出: P1.7 1 1 1 0 P1.6 1 1 0 1 P1.5 1 0 1 1 P1.4 0 1 1 1 在每组行输出时读取P1.0-P1.3,若全为1 ”则表示为0 ”这一行没有键闭合,不然有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值 为了保证键每闭合一次CPU仅作一次处理,必须却除键释放时的抖动。

硬件实验三按键与显示实验

本科实验报告课程名称:微机原理与接口技术 姓 名:张开桓 学 院:信息学院 系 : 控制系 专 业:自动化 学 号 : 3080104703 指导教师:齐杭丽 2010 年12 月15 H

专业:自动化(控制系) 姓名: 张开桓 学号: 3080104703 日期:2010/12/15 地点: 东4-606 课程名称: 微机原理与接口技术 指导老师: 齐杭丽 成 绩:____ 实脸名称:按键与显示实验实验类型:设汁型同组学生姓名: ____________________________ 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 1. 实验目的 ① 熟练运用keil 环境对硬件接口进行调试。 ② 掌握IO 扩展键盘的软硬件设计方法; ③ 掌握数字转换成显示段码的软件译码方法: ④ 掌握静态显示的原理和相关程序的编写。 ⑤ 掌握动态显示的原理和相关程序的编写; 2. 预习要求 ① 理解51单片机IO 实现独立式键盘扩展的工作原理。 ② 理解8段数码管静态显示的电路工作原理,采用静态显示有何优缺点: ③ 理解8段数码管动态显示的电路工作原理,采用动态显示有何优缺点: ④ 理解8段数码管静态显示的10控制方式及同步串行口控制方式如何实现软件设 计; 3. 实验设备 计算机 1台: ZDGDTH-1型8OC51实验开发系统 1套: 2号导线、8P 数据线 若干条。 4. 基础型实验内容 ①査询式键盘和静态显示实验 8个独立式键盘的电路如图2-1所示,串口扩展的6个静态数码管电路如图2-2所示。 设将P0 口连接到键盘接口,则如果有键按下,相应的口线输岀为低,否则输出为髙。单片 机通过读取接口的状态,判断按下什么键。有键按下后,要有一泄的延时,防止由于键盘抖 动而引起误操作。 溯沪乂唆实验报告 件实验三 按键与显示实验

矩阵键盘键信号检测电路设计-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)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。 其后出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与—或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。 这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和E2PROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上又发展了一种通用阵列逻辑(GAL、Generic ArrayLogic),如GAL16V8、GAL22V10等。它采用了EPROM工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。 为了弥补这一缺陷,20世纪80年代中期,Altera和Xilinx分别推出了类似于PAL结构的扩展型

《单片机原理及应用》“实验五 按键及显示实验”任务书

单片机原理及应用 随堂实验报告 实验五按键与显示实验 学院计算机与电子信息学院 专业电子信息工程班级电信12 -1 班 姓名许锐佳学号 指导教师左敬龙 实验报告评分:_______

一、实验原理及电路 实验原理:单片机80c51的P2口接一矩阵键盘,P0和P3口接两个数码管,P1口通过接两个3-8译码器控制16个灯。刚开始时,电路处于扫描按键是否按下的状态,当有某个键按下时,在扫描函数作用下,会有一小段消抖时间,确定没抖动的情况下再次判断是否真的有按键按下,如果真的有按下,通过先检查行,再检查列的方法判断是哪个键按下,判断完后执行对应case后面的语句,即实现相应的功能。下图为实验原理电路图 (此时按下的是第10个按键): 二、功能说明 16个开关形成矩阵键盘,当按下第一个键时,数码管显示1,第一个led灯亮;当按下第二个键时,数码管显示2,第二个led灯亮;当按下第三个键时,数码管显

示3,第三个led灯亮···依次类推,按下第几号键,数码管显示对应号数,对应led灯亮。 三、实验框图: 四、实验代码 #include #define uchar unsigned char

#define uint unsigned int uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 ,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d}; uchar num; void delay(uchar time) { uchar i,j; for(i=0;i

相关文档
最新文档