实验二 GPIO跑马灯实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二 I/O接口实验

[实验目的]

1.熟悉ARM芯片I/O口配置方法

2.通过实验掌握ARM芯片I/O控制LED显示的方法

[实验仪器]

1.Proteus仿真的LPC2000系列的ARM处理器

2.软件:PC机操作系统Win98、Win2000或WinXP,Keil for ARM(MDK)集成开发环境

[实验原理]

根据LPC2000系列ARM芯片的特点,可以将P0口的功能设置为GPIO,用来驱动LED等设备或者接受矩阵键盘的输入等。

[实验内容]

设计一个ARM驱动LED的电路,使用LPC2000的GPIO功能,编写一个LED跑马灯程序,并且在Proteus上仿真运行。

[预备知识]

LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。

通过引脚连接模块PINSELx控制引脚功能

[实验步骤]

一、参考实验一建立ARM的GPIO电路,图中使用P0口的低八位驱动八个发光二极管,元件参

元件元件参数

Res1~8 51欧

Cap1~4 22P(仿真时候没有影响)

晶振1,2 11.0592MHz和32768(仿真时候没有影响)

LED 红绿黄蓝颜色的各两个

二、使用Keil MDK软件和C语言编写LED的驱动程序:

按照实验一创建一个Keil项目,项目名称叫GPIO,不过在提示下图时候选择是,而不是否。此处使用Keil提供的汇编启动文件来启动arm处理器,不再使用自己编写的汇编语言了。

创建项目后界面如下:

在项目配置的界面下,linker页按如下设置,不按照实验一的设置进行。其余的设置按照实验一设定。

双击打开 Startup.s文件,见下图

这个文件有两种编辑方式,一种是使用文本方式,就是上图中的TextEditor。另一种是菜单界面的配置方式Configuration Wizard,用来配置ARM处理器的运行时候的设置。点击Configuration Wizard(上图的编辑区的下方)如下图

按照图上设置,取消锁相环的设置。(同样的方式也可以设置其它选项,大家做实验的时候可以分别展开各个选项查看并熟悉一下,以后实验备用)。

新建一个文本文件,保存并且命名为gpio.c,并添加到该项目中。按照如下操作进行:

弹出如下窗口

像该文本中添加代码

在文本编辑区中右击一下,选择Insert ‘#include ’然后添加C语言函数的框架,见下图

点击保存为gpio.c

然后将该文件添加到项目中,按下图顺序操作

点击Add按钮,点击Close按钮即可。最后工程的界面如下:

如果和上图不一样,检查一下操作步骤。

接下来向main函数中添加代码,实现跑马灯功能。

/*主程序main.c*/

#define LEDCON 0x000000ff // P0.0~7引脚控制LED

/**************************************************************************** * 名称:DelayNS()

* 功能:长软件延时。

* 入口参数:dly 延时参数,值越大,延时越久

* 出口参数:无

****************************************************************************/ void DelayNS(int dly)

{

int i;

for(; dly>0; dly--)

{

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

}

}

int main()

{

int i;

PINSEL0 = 0x00000000; // 设置管脚连接GPIO

IODIR = LEDCON; // 设置I/O为输出

while(1) //此处设置跑马灯的各种闪烁动作,同学们可以自由修改

{

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

IOSET = LEDCON;

DelayNS(100);

IOCLR = LEDCON;

DelayNS(100);

}

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

IOCLR = ~i;

IOSET = i;

DelayNS(30);

}

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

IOCLR = ~(i|(i<<4));

IOSET = i|(i<<4);

DelayNS(100);

}

}

return 0;

}

将生成的Hex文件加载到Proteus中的ARM处理器中,运行。观察LED的闪烁情况,找出与代码中对应的部分。对LED的闪烁情况做记录。

[思考与分析]

1.将跑马灯的闪烁变成左右来回移动的方式,每次只有一个led亮。试着修改代码完成对此功能。

2.查找上课笔记,采用数组的方式实现led的闪烁,闪烁规律自定义。

3.在P0.8引脚上添加一个琴键开关,并将P0.8设置为输入。当琴键开关按下的时候,出现一种跑马灯的闪烁规律,当琴键开关没按下(抬起)的时候,跑马灯以另外一种形式在闪烁。见下图

相关文档
最新文档