实验报告书6

  • 格式:docx
  • 大小:26.75 KB
  • 文档页数:8

电子信息学院

实验报告书

课程名: 《嵌入式系统与应用 》

题 目: 5×4键盘控制实验

班 级:

学 号:

姓 名:

实验时间

评语:

学习态度:【很好】 【一般】 【较差】

程序编写:【完整】 【部分完整】 【不完整】

得出结论:【正确】 【部分正确】 【不正确】

报告书写:【规范】 【一般】 【不规范】

成绩: 指导教师: 李健

批阅时间: 年 月 日 《 嵌入式系统与应用 》实验报告 - 1 -

1、实验内容

 使用实验板上5x4 用户键盘,编写程序接收键盘中断。

 通过IIC 总线读入键值,并将读到的键值发送到串口。

2、实验目的与要求

 通过实验掌握键盘控制与设计方法。

 熟练编写ARM 核处理器S3C44B0X 中断处理程序

3、实验步骤与源程序

⑴ 实验步骤

⑵ 源代码

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

* File: 8led.c

* Author: embest

* Desc: 8-segment digit LED control functions

* History:

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

#include "44b.h"

#include "44blib.h"

#include "def.h"

#include "iic.h"

/*------------------------------------------------------------------------------------------*/

/* global variables

*/

/*------------------------------------------------------------------------------------------*/

int f_nKeyPress;

《 嵌入式系统与应用 》实验报告 - 2 -

/*------------------------------------------------------------------------------------------*/

/* function declare

*/

/*------------------------------------------------------------------------------------------*/

void keyboard_test(void);

void keyboard_int(void);

UINT8T key_set(UINT8T ucChar);

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

* name: keyboard_test

* func: test 8led

* para: none

* ret: none

* modify:

* comment:

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

void keyboard_test(void)

{

int i, j, k;

UINT8T ucChar, t;

iic_init();

// set EINT2 interrupt handler

pISR_EINT2 = (int)keyboard_int;

for(;;)

{

f_nKeyPress = 0;

rINTMSK = rINTMSK & (~(BIT_GLOBAL|BIT_EINT2)); // enable EINT2 int

while(f_nKeyPress == 0);

iic_read(0x70, 0x1, &ucChar);

if(ucChar !=0)

{ 《 嵌入式系统与应用 》实验报告 - 3 -

ucChar = key_set(ucChar);

if(ucChar==0)

led1_on();

if(ucChar==1)

led2_on();

if(ucChar==2)

led3_on();

if(ucChar==3)

led4_on();

if(ucChar < 10) ucChar += 0x30;

else if(ucChar < 16) ucChar += 0x37;

if(ucChar < 255)

uart_printf("press key %c\n", ucChar);

if(ucChar == 0xFF)

{

uart_printf(" press key FUN (exit now)\n\r");

return;

}

}

}

while(1);

}

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

* name: keyboard_int

* func: keyboard interrupt handler

* para: none

* ret: none

* modify:

* comment:

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

void keyboard_int(void)

{ 《 嵌入式系统与应用 》实验报告 - 4 -

UINT8T ucChar;

delay(1000);

rINTMSK = rINTMSK | BIT_EINT2; // disable EINT2 int

rI_ISPC = BIT_EINT2;

f_nKeyPress = 1;

}

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

* name: key_set

* func: keyboard setting

* para: none

* ret: none

* modify:

* comment:

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

UINT8T key_set(UINT8T ucChar)

{

switch(ucChar)

{

case 1:

case 2:

case 3:

case 4:

case 5:

ucChar-=1; break;

case 9:

case 10:

case 11:

case 12:

case 13:

ucChar-=4; break;

case 17:

case 18:

case 19:

case 20:

case 21: 《 嵌入式系统与应用 》实验报告 - 5 -

ucChar-=7; break;

case 25: ucChar = 0xF; break;

case 26: ucChar = '+'; break;

case 27: ucChar = '-'; break;

case 28: ucChar = '*'; break;

case 29: ucChar = 0xFF; break;

default: ucChar = 0xFE;

}

return ucChar;

}

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

* File: main.c

* Author: embest

* Desc: c main entry

* History:

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

#include "44blib.h"

#include "44b.h"

/*------------------------------------------------------------------------------------------*/

/* extern function

*/

/*------------------------------------------------------------------------------------------*/

extern void keyboard_test();