山东交通学院。
院(系) 别。
班级。学号。
姓名。指导教师。
时间。实验三通用 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 ...