实验三 4x4键盘控制实验

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

实验报告

课程名称嵌入式系统实验名称4x4键盘控制实验

姓名王闯学号200907040318 专业班级软件

0903

实验日期年月日成绩指导教师王彩玲

一、实验目的

1 、通过实验掌握中断式键盘控制与设计方法;

2 、掌握中断式键盘检测程序的设计思路;

3 、熟练编写 ARM 核处理器 S3C44B0X 中断程序;

二、实验设备

1 、硬件: EMBEST S3CEV40 实验平台, Embest ARM 标准 / 增强型仿真器套件, PC 机;

2 、软件: Embest IDE 200

3 集成开发环境, Windows 98/2000/NT/XP 操作系统。

三、实验内容

使用实验板上 4 × 4 用户键盘,编写程序通过中断的方式读入键值,并在实验板的 LE D

数码管上显示读到的键值。

四、实验原理

键盘接口电路如图所示,板上扩展了一个4×4行列式矩阵键盘接口。该键盘是采用中断扫描的方式进行工作,行线选用了4个数据线,列线选用了4个地址线。行线接上拉电阻保持高电平,并通过与门74HC08将输出信号与MCU的中断EXINT1连接;列线接下拉电阻保持低电平。当有键盘按下时,该行线被拉为低电平,使得EXINT1输入也为低电平,MCU产生中断。中断产生后通过对键盘的行和列进行扫描的方法可以计算出是哪个键按下,并跳到相应的键盘处理程序中去。芯片74HC541是通过片选信号nGCS3来选通的,这样可以保证在键盘不使用的情况下MCU读不到行线的输入信息。

123456784*4KEYBOARD

CON7

VDD331213

11U13D 74HC08

9

108

7

14

U13C

74HC084

5

6

U13B 74HC08VDD33

L0

L1

L2L3

EXINT1R354.7K R364.7K R374.7K R384.7K

D71N4148D8

1N4148

D91N4148

D101N4148G1

1A12

A23A34Y217Y118G219VCC 20

A45A56A67A78Y613Y514Y415Y316A89GND 10Y811

Y712U10074HC541

VDD33

D0D1D2

D3

A1A2A3A4L0

L1L2L3NGCS3GND

GND 1A

11Y 2

2A

32Y 45A

11

6Y 126A

13

VCC 143A

5

3Y 6GND

74Y 84A

9

5Y 10U101

74HC17R200

10K R20110K R20210K R20310K R204

10K

R20510K GND GND VDD33GND

GND

五、实验操作步骤

( 1 )准备实验环境。使用 Embest 仿真器连接目标办,使用 Embest S3CEV40 实验板 附

带的串口线连接实验板上的 UART0 和 PC 机串口。

( 2 )在 PC 机上运行 Windows 自带的超级终端串口通信程序(设置波特率为 115220b/ s,1

各停止位,无校验位,无硬件流控位);或者使用其他的串口通信程序。 ( 3 )使用 Embest IDE 并通过 Embest 仿真器连接实验板,打开实验例程目录下

Keyboard_test 子目录中的 Keyboard_Test.ews 例程。编译、连接通过后,连接目标板 , 下载并运行它。

( 4 )在 PC 上观察超级终端程序主窗口,可以看到如下显示: Embest 44B0X Evalution Board(S3CEV40) Keyboard Test Example

Please press one key on keyboard and look at LED...

(5) 用户可以按下实验系统中的 4 × 4 键盘,在 8 段数码管上观察显示结果。

六、实验源程序

1 、变量初始化

硬件使用外部中断 1 ,程序设计可以先进行初始化,例如变量及相关中断控制寄存器等。

volatile UCHAR *keyboard_base=(UCHAR *)0x06000000; // 键盘访问硬件基地址

#define KEY_VALUE_MASK 0x0F; // 初始数据状态

2 、键盘控制初始化

* 函数名称: init_keyboard

* 函数功能:键盘控制初始化部分

* 参数:无

* 返回:无

void init_keyboard()

{

rINTMOD=0x0; //IRQ 模式

rINTCON=0x1; // 允许 IRQ 中断

rINTMSK=~(BIT_GOBAL|BIT_EINT1); // 开外部中断 EINT1

pISR_EINT=(int)KeyboardInt; // 键盘中断入口函数

/*PORT G/

rPCONG=0xffff; //PG 口配置为 EINT7 ~ 0

rPUPG=0x0; // 上拉使能

rEXTINT=rEXTINT|0x20;//EINT1 // 下降沿有效

rI_ISPC=BIT_EINT1; // 中断清除

rEXTINTPND=0xf; // 清寄存器 EXTINTPND

3 、中断服务程序

/******************************************************************************

* 函数名称: KeyboardInt

* 函数功能:键盘中断服务程序

* 参数:无

相关文档
最新文档