- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 GPIO跑马灯实验.doc
实验二 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系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。
[实验步骤]
参考实验一建立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 LPC2103.H’
然后添加C语言函数的框架,见下图
点击保存为gpio.c
然后将该文件添加到项目中,按下图顺序操作
点击Add按钮,点击Close按钮即可。最后工程的界面如下:
如果和上图不一样,检查一下操作步骤。
接下来向main函数中添加代码,实现跑马灯功能。
/*主程序main.c*/
#define LEDCON 0x000000ff // P0.0~7引脚控制LED
/****************************************************************************
* 名 称:DelayNS()
* 功 能:长软件延时。
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void DelayNS(int dly)
{
int i;
for(; dly0; dly--)
{
for(i=0; i5000; i++);
}
}
int main()
{
int i;
PINSEL0 = 0 // 设置管脚连接GPIO
IODIR = LEDCON; // 设置I/O为输出
while(1) //此处设置跑马灯的各种闪烁动作,同学们可以自由修改
{
for(i=0;i16;i++){
IOSET = LEDCON;
DelayNS(100);
IOCLR = LEDCON;
DelayNS(100);
}
for(i=0;i256;i++){
IOCLR = ~i;
IOSET = i;
DelayNS(30);
文档评论(0)