实验2 IO口实现流水灯

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

实验二IO口实现LED灯闪烁

一、实验目的:

1.正确安装keil软件

2.正确安装调试驱动,熟悉实验板的用法

3.学习IO口的使用方法。

二、实验设备:

单片机开发板、学生自带笔记本电脑

三、实验内容:

利用单片机IO口做输出,接发光二极管,编写程序,使发光二极管按照要求点亮。

四、实验原理:

1.LPC1114一共有42个GPIO,分为4个端口,P0、P1、P2口都是12位的宽度,引脚

从Px.0~Px.11,P3口是6位的宽度,引脚从P3.0~P3.5。引脚的内部构造如图所示。

其中Rpu为上拉电阻、Rpd为下拉电阻。

2.为了节省芯片的空间和引脚的数目,LPC1100系列微处理器的大多数引脚都采用功

能复用方式,用户在使用某个外设的时候,要先设置引脚。控制引脚设置的寄存器

称之为IO配置寄存器,每个端口管脚PIOn_m都分配一个了一个IO配置寄存器IOCON_PIOn_m,以控制管脚功能和电气特性。

3.IOCON_PIOn_m寄存器其位域定义如表所列。

4.各引脚IOCON寄存器的位[2:0]配置不同的值所相应功能。

5.GPIO寄存器

GPIO数据寄存器用于读取输入管脚的状态数据,或配置输出管脚的输出状态,表5-5

对GPIOnDATA寄存器位进行描述。

GPIO的数据方向的设置是通过对GPIOnDIR寄存器的位进行与或操作实现的,

LPC1100微处理器和8051单片机的GPIO不同,在使用前一定要先设置数据方向才能使用,

6.发光二级管的工作电压和工作电流如何?

___________________________________________________________________________ ___________________________________________________________________________ _________________________________________________________________________。

7.发光二极管的限流电阻如何计算?

__________________________________________________________________________。

五、实验原理图:

六、实验步骤:

一、基本要求

1、默写发光二极管闪烁程序。

二、扩展要求

1.查找关于呼吸灯的资料,弄懂呼吸灯工作原理。

2.自行编写呼吸灯代码,在实验板子上面验证。

七、程序框图:

八、供参考程序:

/*************************************************************************/ #include "LPC11XX.H" // 头文件

#define LED1_ON() (LPC_GPIO1->DATA &= ~(1<<0)) // 点亮连接到P1.0的LED

#define LED1_OFF() (LPC_GPIO1->DATA |= (1<<0)) // 熄灭连接到P1.0的LED

#define LED2_ON() (LPC_GPIO1->DATA &= ~(1<<1)) // 点亮连接到P1.1的LED

#define LED2_OFF() (LPC_GPIO1->DATA |= (1<<1)) // 熄灭连接到P1.1的LED

/************************************************************************** * FunctionName : Delay()

* Description : 延时函数

* EntryParameter : None

* ReturnValue : None

**************************************************************************/ void Delay()

{

uint16_t i,j;

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

for(j=0;j<200;j++);

}

/************************************************************************** * FunctionName : LedInit()

* Description : 初始化LED引脚

* EntryParameter : None

* ReturnValue : None

**************************************************************************/ void LedInit(void)

{

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟

LPC_IOCON->R_PIO1_0 &= ~0x07;

LPC_IOCON->R_PIO1_0 |= 0x01; //把P1.0脚设置为GPIO

LPC_IOCON->R_PIO1_1 &= ~0x07;

LPC_IOCON->R_PIO1_1 |= 0x01; //把P1.1脚设置为GPIO

LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟

LPC_GPIO1->DIR |= (1<<0); // 把P1.0设置为输出引脚

LPC_GPIO1->DATA |= (1<<0); // 把P1.0设置为高电平

LPC_GPIO1->DIR |= (1<<1); // 把P1.1设置为输出引脚

LPC_GPIO1->DATA |= (1<<1); // 把P1.1设置为高电平

}

/************************************************************************** * FunctionName : main()

* Description : 主函数

* EntryParameter : None

* ReturnValue : None

**********************************************************************/ int main(void)

{

LedInit();

while(1)

{

Delay();

LED1_ON();

LED2_OFF();

Delay();

LED1_OFF();

LED2_ON();

}

}

相关文档
最新文档