您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 实验2-GPIO实现LED流水灯
实验二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寄存器其位域定义如表所列。位域符号描述2:0FUNC选择管脚功能000:选择功能1001:选择功能2(如果未定义功能2,则保留)010:选择功能3(如果未定义功能3,则保留)011:选择功能4(如果未定义功能4,则保留)100~111:保留4:3MODE选择功能模式(片内上拉/下拉电阻控制)00:无效模式(无上拉和下拉电阻被允许)01:允许下拉电阻10:允许上拉电阻11:中继模式5HYS滞后模式1:禁止0:允许6-保留,复位值为17ADMODE选择模拟/数字模式(无AD功能,则保留,复位值为1)0:模拟输入模式1:数字功能模式9:8I2CMODE选择为I2C模式00:标准I2C模式/快速I2C模式(默认)01:标准I/O功能10:FM+I2C模式11:保留31:8-保留,复位值为04.各引脚IOCON寄存器的位[2:0]配置不同的值所相应功能。5.GPIO寄存器GPIO数据寄存器用于读取输入管脚的状态数据,或配置输出管脚的输出状态,表5-5对GPIOnDATA寄存器位进行描述。位符号访问描述11:0DATAR/W管脚PIOn_0~PIOn_11输入数据(读)或输出数据(写)31:12--保留GPIO的数据方向的设置是通过对GPIOnDIR寄存器的位进行与或操作实现的,LPC1100微处理器和8051单片机的GPIO不同,在使用前一定要先设置数据方向才能使用,位符号访问值描述11:0IOR/W0引脚PIOn_0~PIOn_11配置为输入1引脚PIOn_0~PIOn_11配置为输出31:12---保留6.发光二级管的工作电压和工作电流如何?_______________________________________________________________________________________________________________________________________________________________________________________________________________________________。7.发光二极管的限流电阻如何计算?__________________________________________________________________________。五、实验原理图:六、实验步骤:一、基本要求1、默写发光二极管闪烁程序。二、扩展要求1.查找关于呼吸灯的资料,弄懂呼吸灯工作原理。2.自行编写呼吸灯代码,在实验板子上面验证。七、程序框图:八、供参考程序:/*************************************************************************/#includeLPC11XX.H//头文件#defineLED1_ON()(LPC_GPIO1-DATA&=~(10))//点亮连接到P1.0的LED#defineLED1_OFF()(LPC_GPIO1-DATA|=(10))//熄灭连接到P1.0的LED#defineLED2_ON()(LPC_GPIO1-DATA&=~(11))//点亮连接到P1.1的LED#defineLED2_OFF()(LPC_GPIO1-DATA|=(11))//熄灭连接到P1.1的LED/***************************************************************************FunctionName:Delay()*Description:延时函数*EntryParameter:None*ReturnValue:None**************************************************************************/voidDelay(){uint16_ti,j;for(i=0;i5000;i++)for(j=0;j200;j++);}/***************************************************************************FunctionName:LedInit()*Description:初始化LED引脚*EntryParameter:None*ReturnValue:None**************************************************************************/voidLedInit(void){LPC_SYSCON-SYSAHBCLKCTRL|=(116);//使能IOCON时钟LPC_IOCON-R_PIO1_0&=~0x07;LPC_IOCON-R_PIO1_0|=0x01;//把P1.0脚设置为GPIOLPC_IOCON-R_PIO1_1&=~0x07;LPC_IOCON-R_PIO1_1|=0x01;//把P1.1脚设置为GPIOLPC_SYSCON-SYSAHBCLKCTRL&=~(116);//禁能IOCON时钟LPC_GPIO1-DIR|=(10);//把P1.0设置为输出引脚LPC_GPIO1-DATA|=(10);//把P1.0设置为高电平LPC_GPIO1-DIR|=(11);//把P1.1设置为输出引脚LPC_GPIO1-DATA|=(11);//把P1.1设置为高电平}/***************************************************************************FunctionName:main()*Description:主函数*EntryParameter:None*ReturnValue:None**********************************************************************/intmain(void){LedInit();while(1){Delay();LED1_ON();LED2_OFF();Delay();LED1_OFF();LED2_ON();}}
本文标题:实验2-GPIO实现LED流水灯
链接地址:https://www.777doc.com/doc-5305867 .html