实验二 GPIO跑马灯实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
点击保存为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设置为输入。当琴键开关按下的时候,出现一种跑马灯的闪烁规律,当琴键开关没按下(抬起)的时候,跑马灯以另外一种形式在闪烁。见下图