嵌入式系统实验报告

发布 2022-10-21 09:48:28 阅读 7423

山东交通学院。

院(系) 别。

班级。学号。

姓名。指导教师。

时间。实验三通用 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, -0n

编写 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 编写键盘扫描程序。

分为主程序和读键子程序两个部分。主程序以一定的时间间隔反复调用读键子程序,以实时响应用户的键入。在进行编程之前,阅读 头文件,其中定义了 s3c44b0x 所具有的所有功能寄存器。

3.3.1 主程序。

3.3.2 读键子程序。

键值**:const char keyboard[4][4] =

子程序流程图:

由于按键可能出现抖动,因此,可以采用下述方法来消除抖动、确认键真正被按下了:

如果测到有键并确定了键值后,延时一段时间再次测键,如果两次得到的键值相同,说明该键确实被按下了。

按照上述流程图编写程序,并进行**调试(或**到armsys上运行),完成实验要求。

4 程序清单。

#include <>

#include <>

#include "target\"

#include "target\"

const char keyboard[4][4] =

charreadkeybd(void)

unsignedintpconfback=0;

unsignedintpupfback=0;

unsigned char scanvalue[4] =

unsigned char i,j,x,temp;

charkeyvalue=0;

pconfback = rpconf;

rpconf = 0x55;//pf0-pf3:output, pf4-pf7:input

pupfback=rpupg;

rpupf=0xff;//disable pull-up

rpdatf=0xf0;//pf0-pf3:0

if((temp=(rpdatf&0xf0))!0xf0)

rpconf=pconfback;

rpupf=pupfback;

returnkeyvalue;

void main(void)

char aa,ch1=0,ch2=0;

unsigned char keyflg=0;

port_init();

led_display(0xf);

beep(0x1);

uart_printf("

beep(0x0);

uart_printf("立宇泰电子。

uart_printf("s3c44b0x功能部件:i/o测试(4*4矩阵键盘。

uart_printf("version 1.21

uart_printf("\

uart_printf("uart config--com:115.2kbps,8bit,np,uart0

uart_printf("begin to start io test,ok? (y/n

led_display(0x0);

aa= uart_getch();

if((aa=='y')|aa=='y'))

elsedelay(1000);

嵌入式系统实验报告

嵌入式系统实验报告内容。第一章 arm2410cl嵌入式系统基础实验。实验一arm2410cl嵌入式教学实验系统。实验报告要求 简述嵌入式linux开发的流程。实验二。嵌入式linux开发环境的配置。实验报告要求 1 简述嵌入式linux开发环境配置的具体步骤。2 简述网络文件系统 nfs 第二章 ...

嵌入式系统实验报告

本科实验报告。1.实验原理 本实验使用xmanager enterprise软件来连接老师配置好的linux服务器,以完成实验中使用linux完成编译和 运行一个嵌入式系统。实验中使用u boot作为系统的bootloader,使一个嵌入式linux系统完成编译并模拟在另一台机器上 并执行操作。u ...

嵌入式系统实验报告

姓名 班级 学号 实验一 流水灯。实验要求 编写一个程序,是开发板上的的3个led灯按流水灯方式闪烁。实验工具 超级终端开发板,电脑。实验程序如下 汇编指令实验 定义端口e寄存器预定义。rgpbcon equ 0x56000010 rgpbdat equ 0x56000014 rgpbup equ ...