ARM的I/O口实验
一、 实验目的
1. 学习LED 显示方法
2. 学习并掌握基于ARM 开发板对I/O 编程的方法。
二、 实验内容
在数码管上,显示的键盘输入的键值(静态显示方式)。
三、 预备知识
1. 掌握在ARM SDT 2.5 集成开发环境中编写和调试程序的基本过程。
2. 会使用Source Insight 3 编辑C 语言源程序。
3. 了解ARM 应用程序的框架结构。
4. 了解UC/OS-II 多任务的原理。
四、 实验设备及工具
硬件:ARM嵌入式开发板、扩展板,用于ARM7TDMI 的JTAG 仿真器、PC 机Pentumn100
以上。
软件:PC 机操作系统win98、ARM SDT 2.51 集成开发环境、仿真器驱动程序、Source
Insight 3.0
五、 实验原理
1.I/O 接口
I/O 接口电路也简称接口电路。它是主机和外围设备之间交换信息的连接部件(电路)。
它在主机和外围设备之间的信息交换中起着桥梁和纽带作用。
设置接口电路的必要性:
a) 解决主机CPU 和外围设备之间的时序配合和通信联络问题。
b) 解决CPU 和外围设备之间的数据格式转换和匹配问题。
c) 解决CPU 的负载能力和外围设备端口选择问题。
I/O 接口的编址方式:
① I/O 接口独立编址:
这种编址方式是将存储器地址空间和I/O 接口地址空间分开设置,互不影响。设有专门
的输入指令(IN)和输出指令(OUT)来完成I/O 操作。
② I/O 接口与存储器统一编址方式:
这种编址方式不区分存储器地址空间和I/O 接口地址空间,把所有的I/O 接口的端口都
当作是存储器的一个单元对待,每个接口芯片都安排一个或几个与存储器统一编号的地址
号。也不设专门的输入/输出指令,所有传送和访问存储器的指令都可用来对I/O 接口操作。
两种编址方式有各自的优缺点,独立编制方式的主要优点是内存地址空间与I/O 接口地
址空间分开,互不影响,译码电路较简单,并设有专门的I/O 指令,所以编程序易于区分,
且执行时间短,快速性好。其缺点是只用I/O 指令访问I/O 端口,功能有限且要采用专用I/O
周期和专用I/O 控制线,使微处理器复杂化。统一编制方式的主要优点是访问内存的指令都
可用于I/O 操作,数据处理功能强;同时I/O 接口可与存储器部分共用译码和控制电路。其
缺点一是I/O 接口要占用存储器地址空间的一部分;二是因不用专门的I/O 指令,程序中较
难区分I/O 操作。
ARM 系统完成I/O 功能的标准方法是使用存储器映射I/O。这种方法使用特定的存储器
地址。当从这些地址加载或向这些地址存储时,它们提供I/O 功能。典型情况下,从存储器
映射I/O 地址加载用于输入,而向存储器映射I/O 地址存储用于输出。
S3C44B0X 有71 个多功能输入\输出管脚,构成了7 个I/O 接口:
两个9 位的输入/输出接口(E 和F)
两个8 位的输入/输出接口(D 和G)
一个16 位的输入/输出接口(C)
一个10 位的输出接口(A)
一个11 位的输出接口(B)
每一个管脚都可以通过软件按各种系统的要求和设计需要进行设置。每一个要用到的管
脚的功能要在系统主程序启动前进行设置。初始化管脚的状态,可以避免一些潜在的错误。
在S3C44B0X 芯片中,由于每个管脚是多路复用的,所以要确定每个管脚的功能。
PCONn(接口控制寄存器)能够定义管脚的功能。如果接口定义为输入功能,则输入的数
据可以从PDATn 读入;如果接口定义为输出功能,则可通过寄存器PDATn 输出数据。
2. LED
在单片机的应用系统中,为了便于人们观察和监视单片机的运行情况,常常需要用显示
器显示运行的中间结果及状态等信息,因此显示器也是不可缺少的外部设备之一。显示器的
种类很多,从液晶显示、发光二极管显示到CRT 显示器,都可以与微机配接。在单片机应
用系统中常用的显示器主要有发光二极管数码显示器简称LED 显示器。LED 显示器具有耗
电省、成本低廉、配置简单灵活、安装方便、耐振动、寿命长等优点。但显示内容有限,不
能显示图形,因而其应用有局限性。近年来对某些要求较高的单片机应用系统也开始配置
简易形式的CRT 显示器接口,但应用最多的还是LED 显示器。
① LED 结构
7 段LED 由7 个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。一般共阴极可以不需外接电阻,但共阳极接法中
发光二极管必须外接电阻。LED 的结构及连接图见图5-1。
② LED 工作原理
当选用共阴极的LED 显示器时(如图5-1(b)),所有发光二极管的阴极连在一起接地,当
某个发光二极管的阳极加入高电平时,对应的二极管点亮。因此要显示某字形就应使此字形
的相应段的二极管点亮,实际上就是送一个用不同电平组合代表的数据字来控制LED 的显
示,此数据称为字符的段码。字符数据字与LED 段码关系如下:
说明:共阴的LED,被选中时的段为高电平有效,熄灭的段码为00H;
共阳的LED,被选中时的段为低平时有效.熄灭的段码为FFH。
LED 显示器与单片机的接口一般有静态显示与动态显示接口两种方式,下面分别加以介
绍。
⑴ LED 数码管静态显示
LED 数码管采用静态显示与单片机接口时,共阴极或共阳极点连接在一起接地或高电
平。每个显示位的段选线与一个8 位并行口线对应相连,只要在显示位上的段选线上保持段
码电平不变,则该位就能保持相应的显示字符。这里的8 位并行口可以直接采用并行I/O
接口片.也可以采用串入/并出的移位寄存器或是其它具有三态功能的锁存器等。
⑵ LED 数码管动态显示
在多位LED 显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一
个8 位I/O 口控制。而共阴(或共阳)极公共端分别由相应的I/O 线控制,实现各位的分时
选通。由于各个数码管是共用同一个段码输出口,分时轮流通电的,从而大大简化了硬件线
路,降低了成本。不过这种方式的数码管接口电路中数码管不宜太多,一般在8 个以内,否
则每个数码管所分配到实际导通时间会太少,显得亮度不足。若LED 位数较多时应采用增
加驱动能力,而提高显示亮度的措施。
3. 可编程并行输入输出接口芯片8255A
⑴ 8255A 具有3 个8 位的数据口(即A 口,B 口和C 口),其中C 口还可作为两个4 位口
来使用。三个数据口均可用软件来设置成输人口或输出口,与外设相连。
⑵ 8255A 具有3 种工作方式:方式0、方式1、方式2。可适应CPU 与外设间的多种数据
传送方式,如无条件传送方式(0 方式,也叫同步传送),异步查询方式和中断方式,以满足
用户的各种应用要求。
⑶ 8255A 具有两条功能强、内容丰富的控制命令,为用户根据外界条件使用8255A 构成
多种不同形式的接口电路和编程环境提供方便。8255A 执行命令过程中和执行命令完毕之后
所产生的状态可保留在状态字中以便查询。
⑷ 8255A 的C 口是一个特殊的端口。当8255A 工作在方式1,2 时,利用对C 口的按位控
制可为A,B 口提供专门的联络控制信息号;当CPU 读取8255 状态时,C 口可作为方式1,
2 时的状态字。
限于篇幅,这里就不对8255A 进行具体介绍了,感兴趣的同学可以找一些微机原理的
书。
扩展板上有两个8255,分别以8255_A、8255_B 表示,8255_A 的A 口、B 口、C 口、
和控制寄存器的地址分别为0x08008000、0x08008002、0x08008004、0x08008006,8255_B
的A 口、B 口、C 口、和控制寄存器的地址分别为0x08010000、0x08010002、0x08010004、
0x08010006。LED 的段选码接到8255_A 的A 口,位选码接到8255_A 的B 口。
六、 实验步骤
1. 不带操作系统的实现
① 按键盘驱动实验1 建立工程。
② 定义向LED 发送数据的端口(EXIO_8255A_PORTA)和对LED 进行片选的端
口(EXIO_8255A_PORTB)及相应的控制寄存器:
#define EXIO_8255A_PORTA (*(volatile unsigned short int*)0x08008000)
#define EXIO_8255A_PORTB (*(volatile unsigned short int*)0x08008002)
#define EXIO_8255A_PORTC (*(volatile unsigned short int*)0x08008004)
#define EXIO_8255A_CTRL (*(volatile unsigned short int*)0x08008006)
③ 定义LED 短码数组:
unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
④ 定义端口和端口工作方式及初始化:
EXIO_8255A_CTRL=0x80;//输入方式
EXIO_8255A_PORTB=0xff;//片选
EXIO_8255A_PORTC=0xff;//不让发光二极管点亮
⑤ 在第一个LED 上静态显示按键值(十六进制):
EXIO_8255A_PORTA=led[key];
EXIO_8255A_PORTB=0x7f;
2. 带操作系统的实现
① 按键盘驱动实验1 建立工程。
② 同不带操作系统的实现的步骤②~⑤,其中④、⑤在onKey()函数中实现。
七、 思考题
1. LED 两种工作方式的区别,及利弊。
2. 尝试用动态显示方式实现。
提示:当键盘扫描码小于10 时,在一个LED 上显示扫描码;当键盘扫描码大于等
于10 时,在二个LED 上显示扫描码。当在二个LED 上显示扫描码时,使LED 的
个位和十位交替点亮一段时间。
评论