实验2 GPIO控制实验1211.docx

上传人:b****4 文档编号:4077742 上传时间:2022-11-27 格式:DOCX 页数:16 大小:4.25MB
下载 相关 举报
实验2 GPIO控制实验1211.docx_第1页
第1页 / 共16页
实验2 GPIO控制实验1211.docx_第2页
第2页 / 共16页
实验2 GPIO控制实验1211.docx_第3页
第3页 / 共16页
实验2 GPIO控制实验1211.docx_第4页
第4页 / 共16页
实验2 GPIO控制实验1211.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

实验2 GPIO控制实验1211.docx

《实验2 GPIO控制实验1211.docx》由会员分享,可在线阅读,更多相关《实验2 GPIO控制实验1211.docx(16页珍藏版)》请在冰豆网上搜索。

实验2 GPIO控制实验1211.docx

实验2GPIO控制实验1211

实验二GPIO控制实验

【实验目的】

1.熟悉Eclipse开发环境。

2.熟悉在ARM裸机环境下的C语言编程。

3.掌握CVT-A8下,跑马灯和数码管的应用程序编写。

【实验内容】

1.编写程序,练习C语言的使用。

2.实现对开发板上发光二极管LED的跑马灯控制。

3.代码分别在Eclipse的Debug环境下运行。

4.LED灯能按照按照一定的规律依次亮,数码管显示HELLO。

【实验设备】

1.硬件:

CVT-S5PV210嵌入式教学实验箱、PC机;

2.软件:

PC机操作系统Windows98(2000、XP)+Eclipse开发环境。

【基础知识】

按照实验一的内容,熟悉操作Eclipse操作。

LED显示原理

从实验箱边板电路图上我们可以看到,4个发光二极管LED的一端连接到了3.3V电源上,另一端经过一个限流电阻接到XEINT28\29\30\31这四个引脚。

实验电路原理图如下:

继续查找实验箱核心板电路图,可以看到当XEINT28\29\30\31这四个引脚对应S5PV210核心芯片的GPH3IO口GPH3_4/5/6/7这四个引脚。

实验电路原理图如下:

那么我们通过GPH3的这四个引脚的某个输出端为低电平时,对应连接的LED两端产生电压降,这时此LED有电流通过并发光。

反之我们通过GPH3的这四个引脚的某个输出端为高电平时,此LED将熄灭。

注意亮灭之间要有一定的延时,以便人眼能够区分出来。

控制GPH3的相应寄存器GPH3CON和GPH3DAT如下:

实验程序通过设置GPH3CON控制GPH3_4GPH3_5GPH3_6GPH3_7为输出方式,通过GPH3DAT控制输出电平点亮或熄灭4个LED灯,如下:

#include"s5pc210.h"

#include"uart.h"

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

//Functionname:

delay

//Description:

延时子程序

//Returntype:

void

//Argument:

count,延时的数值

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

voiddelay(intcount)

{

intcnt;

for(count=count;count>0;count--)

for(cnt=0;cnt<1000;cnt++);

}

intmain()

{

uart_init();

printf("CVTS5PV210JtagGpioLedTest...\n");

volatileinti,j=0;

GPH3.GPH3CON=0x11110000;

while

(1){

GPH3.GPH3DAT=0xFF;/*灯全灭*/

for(i=0;i<=1000000;i++);

GPH3.GPH3DAT=0x0;

for(i=0;i<=1000000;i++);

for(j=0;j<4;j++){

GPH3.GPH3DAT=~(0x1<<(j+4));

for(i=0;i<=1000000;i++);

}

}

return0;

}

数码管显示原理

发光二极管数码显示器简称LED显示器。

LED显示器具有耗电省、成本低廉、配置简单灵活、安装方便、耐振动、寿命长等优点,目前广泛应用于嵌入式系统中。

7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。

一般共阴极可以不需外接电阻,但共阳极接法中发光二极管必须外接电阻。

LED的结构及连接图见图2-5-1。

图2-5-1LED结构及连接图

当选用共阴极的LED显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。

因此要显示某字形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的数据字来控制LED的显示,此数据称为字符的段码。

字符0、1、2…F与LED码段A、B、C…F以及DP(小数点)的关系如表3-8-2所示:

表3-8-2LED字符与码段对应表

字符

DP

G

F

E

D

C

B

A

段码(共阴)

段码(共阳)

0

0

0

1

1

1

1

1

1

3FH

C0H

1

0

0

0

0

0

1

1

0

06H

F9H

2

0

1

0

1

1

0

1

1

5BH

A4H

3

0

1

0

0

1

1

1

1

4FH

B0H

4

0

1

1

0

0

1

1

0

66H

99H

5

0

1

1

0

1

1

0

1

6DH

92H

6

0

1

1

1

1

1

0

1

7DH

82H

7

0

0

0

0

0

1

1

1

07H

F8H

8

0

1

1

1

1

1

1

1

7FH

80H

9

0

1

1

0

1

1

1

1

6FH

90H

A

0

1

1

1

0

1

1

1

77H

88H

B

0

1

1

1

1

1

0

0

7CH

83H

C

0

0

1

1

1

0

0

1

39H

C5H

D

0

1

0

1

1

1

1

0

5EH

A1H

E

0

1

1

1

1

0

0

1

79H

86H

F

0

1

1

1

0

0

0

1

71H

8EH

-

0

1

0

0

0

0

0

0

40H

BFH

.

1

0

0

0

0

0

0

0

80H

7FH

熄灭

0

0

0

0

0

0

0

0

00H

FFH

说明:

共阴的LED,被选中时的段为高电平有效,熄灭的段码为00H;

共阳的LED,被选中时的段为低电平有效.熄灭的段码为FFH。

LED数码管显示器的接口一般有静态显示与动态显示接口两种方式,下面分别加以介绍。

1)静态显示

LED数码管采用静态接口时,共阴极或共阳极点连接在一起接地或接高电平。

每个显示位的段选线与一个8位并行口线对应相连,只要在显示位上的段选线上保持段码电平不变,则该位就能保持相应的显示字符。

这里的8位并行口可以直接采用并行I/O口,也可以采用串入/并出的移位寄存器或是其它具有三态功能的锁存器等。

2)动态显示

在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。

而共阴(或共阳)极公共端分别由相应的I/O线控制,实现各位的分时选通。

由于各个数码管是共用同一个段码输出口,分时轮流通电的,从而大大简化了硬件线路,降低了成本。

不过这种方式的数码管接口电路中数码管不宜太多,一般在8个以内,否则每个数码管所分配的实际导通时间会太少,显得亮度不足。

若LED位数较多时应采用增加驱动能力以提高显示亮度。

本实验系统中采用的是动态显示接口,其中数码管扫描控制地址为0x88007000,位0-位5每位分别对应一个数码管,将其中某位清0来选择相应的数码管;地址0x88009000为数码管的数据寄存器。

数码管采用共阳方式,向该地址写一个数据就可以控制LED的显示。

实验电路原理图如下:

实验程序如下:

#include"s5pc210.h"

#include"uart.h"

#defineU8unsignedchar

unsignedcharseg7table[16]={

/*01234567*/

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

/*89ABCDEF*/

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,

};

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

//Functionname:

delay

//Description:

延时子程序

//Returntype:

void

//Argument:

count,延时的数值

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

voiddelay(intcount)

{

intcnt;

for(count=count;count>0;count--)

for(cnt=0;cnt<1000;cnt++);

}

intmain()

{

uart_init();

printf("CVTS5PV210JtagSegTest...\n");

inti;

*((U8*)0x88007000)=0x00;/*数码管地址为0x88007000,选通所有数码管*/

for(;;){

/*数码管从0到F依次将字符显示出来*/

for(i=0;i<0x10;i++){

/*查表并输出数据*/

*((U8*)0x88009000)=seg7table[i];

delay(1000);

}

/*数码管从F到0依次将字符显示出来*/

for(i=0xf;i>=0x0;i--){

/*查表并输出数据*/

*((U8*)0x88009000)=seg7table[i];

delay(1000);

}

}

return0;

}

【实验步骤】

1.首先打开Eclipse软件指定工作目录。

2.打开GpioLed工程。

点击eclipse工具栏的“File”,然后点击“Import”。

然后点击“ExistingProjectintoWorkspace”。

再次点击“Browse”按钮。

进入目录D:

\eclipse_projects\GpioLed\。

点击“Finish”按钮。

成功添加工程到Eclipse中。

3.点击工程右键,点击“BulidProject”按钮,对工程进行编译,生成Gpioled.elf文件。

点击工具栏“Run“-“DebugConfiguration”设置工程调试参数,详细设置过程参看实验一内容。

注意在Command选项卡中输入:

load

breakmain

c

编译成功提示如上。

4.连接好仿真器,将仿真器一端使用排线链接试验箱JTAG接口,另一端使用方口USB线连接实验电脑。

5.实验箱通电,迅速打开Jlink安装目录下的JLinkGDBServerCL调试工具,

等待连接成功连接试验箱。

6.点击工具栏“Run—DebugConfigurations“,选择”GpioLedDefault“调试配置选项,然后点击”Debug“按钮进入调试模式。

7.在eclipse调试界面下,可以使用工具提供的调试功能进行程序调试,运行。

【实验结果】

1.四个LED轮流闪烁,实现流水灯效果。

2.六个SEG轮流闪烁,实现从0-F轮流显示。

【实验要求】

1.掌握实验原理

2.能够debug程序,运行结果正确

3.能够分析程序代码,根据要求更改程序

4.循环显示你学号的后六位(在第X个数码管上显示你学号后六位的第x位,比如你的学号后六位为012345,则在最左边数码管显示0,最右边显示5,并循环显示

5.进阶:

静止显示你学号的后六位(012345)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1