首页 基于LPC1768嵌入式系统设计实验报告

基于LPC1768嵌入式系统设计实验报告

举报
开通vip

基于LPC1768嵌入式系统设计实验报告基于LPC1768嵌入式系统设计实验报告 学 院: 专 业: 班 级: 姓 名: 学 号: 指导老师: 第 1 页 实验一 系统节拍定时器实验 【实验目的】 ,1, 掌握LPC1768芯片的使用 ,2, 在开发平台上开发第一个程序 ,3, 熟悉lpc1768的GPIO控制 【实验内容】 控制开发平台的蜂鸣器周期性(1秒)交替鸣叫。 【实验原理】 【原理图】 【实验步骤】 1使用Realview MDK创建一个新的工程,经过一系列配置后 2新建一个文件,点击File 菜单下的N...

基于LPC1768嵌入式系统设计实验报告
基于LPC1768嵌入式系统 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 学 院: 专 业: 班 级: 姓 名: 学 号: 指导老师: 第 1 页 实验一 系统节拍定时器实验 【实验目的】 ,1, 掌握LPC1768芯片的使用 ,2, 在开发平台上开发第一个程序 ,3, 熟悉lpc1768的GPIO控制 【实验内容】 控制开发平台的蜂鸣器周期性(1秒)交替鸣叫。 【实验原理】 【原理图】 【实验步骤】 1使用Realview MDK创建一个新的工程,经过一系列配置后 2新建一个文件,点击File 菜单下的New。输入代码,点击保存 3 对工程进行配置完成以后,编译、链接、下载到开发板上 程序代码 #include "LPC17xx.h" /**************************************************************** ***************************************** 宏定义 ***************************************************************** ****************************************/ #define BEEP (1ul <<26) uint32_t GulSystick = 0; uint32_t GucDelay1S = 0; /**************************************************************** 第 2 页 ***************************************** ** Function name: myDelay ** Descriptions: 软件延时 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ //void myDelay (uint32_t ulTime) //{ // uint32_t i; //while (ulTime--) { // for (i = 0; i < 5000; i++); //} //} /********************************************************************************************************* ** Function name: GPIOInit ** Descriptions: GPIO初始化 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void GPIOInit( void ) { LPC_PINCON->PINSEL1 &= ~(0x3 << 20); /* 将P0.26初始化为GPIO功能 */ LPC_GPIO0->FIODIR |= BEEP; /* 将P0.26方向设置为输出 */ LPC_GPIO0->FIOSET |= BEEP; /* 将P0.26初始化输出高电平 */ } /********************************************************************************************************* ** Function name: SysTick_Handler ** Descriptions: 系统节拍定时器中断服务函数 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void SysTick_Handler(void) { 第 3 页 if (GulSystick++ >= 99) { /* 配置一秒的延时 */ GulSystick = 0; GucDelay1S = 1; } } /**************************************************************** ***************************************** ** Function name: main ** Descriptions: 系统节拍定时器例程。短接P0.26与BEEP,启动程序,蜂鸣器隔1秒交替鸣叫 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 ***************************************************************** ****************************************/ int main (void) { SystemInit(); /* 系统初始化,切勿删除 */ GPIOInit(); SysTick_Config(100000000/100); while (1) { while(GucDelay1S == 0); GucDelay1S = 0; LPC_GPIO0->FIOSET |= BEEP; while(GucDelay1S == 0); GucDelay1S = 0; LPC_GPIO0->FIOCLR |= BEEP; } } 引脚功能选择寄存器1(PINSEL1 - 0x4002 C004) PINSEL1寄存器控制端口0高半部分的位功能。仅当引脚选择使用GPIO功能时,FIO0DIR寄存器中的方向控制位才有效。对于其它功能来说,方向是自动控制的。对于100引脚封装,引脚功能选择寄存器1的位功能描述如 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 所述。 第 4 页 【实验现象】 将程序下载到开发板上之后,关闭开发板开关,然后打开,可以听见蜂鸣器每一秒钟会响一次。 【实验心得和体会】 通过这次实验我们大致掌握LPC1768芯片的使用,熟悉了lpc1768的GPIO的控制。学会配置引脚功能寄存器PINSEL,当引脚配置为GPIO功能时,GPIO的方向位有效。 第 5 页 实验二、 GPIO控制实验 【实验目的】 1、学习LPC系列处理器GPIO口的使用 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ; 2、学习用Keil软件开发ARM程序方法和步骤。 3、理解基于ARM内核的LPC1768实验开发平台的管脚链接及原理。 【实验要求】 1、了解LPC系列处理器GPIO口的功能原理; 2、在Keil中设计ARM程序,实现对流水灯的控制; 3、下载到实验平台,并成功运行。 4、附加要求:实现LED的各种不同移动、闪烁效果 【实验内容操作步骤】 1、启动keil新建工程。 2、新建C源文件,添加到工程,编写C文件。 、配置生成目标。 3 4、编译连接工程。 5、JTAG调试。 【实验原理】 1、 LPC系列处理器GPIO口的原理 PINSEL(x) 管脚功能选择寄存器 IOPIN(,) GPIO引脚值寄存器 IOSET(,) GPIO输出置位寄存器 IODIR(,) GPIO方向控制寄存器 IOCLR(,) GPIO输出清零寄存器 2、实验电路原理图 实验电路的连接如下图,4个LED是利用LPC1368的GPIO口的P1.14到P1.17 来控制的。引脚输出高电平则LED点亮,输出低电平则LED熄灭(因为LED的 另一端接地)。 第 6 页 对管脚的操作实际上就是对控制管脚寄存器的操作,所以可以通过对管脚寄存器的操作,实现管脚的不同输出(即高低电平),从而控制LED的状态(亮、灭)。 程序代码 #include "LPC17xx.h" volatile uint32_t msTicks; /* counts 1ms timeTicks */ void SysTick_Handler(void) { msTicks++; /* increment counter necessary in Delay() */ } __INLINE static void Delay (uint32_t dlyTicks) { uint32_t curTicks; curTicks = msTicks; while ((msTicks - curTicks) < dlyTicks); } __INLINE static void LED_Config(void) { LPC_GPIO2->FIODIR = 0x000000ff; /* LEDs PORT2 are Output */ // LPC_GPIO0->FIODIR = 0x00200000; // LPC_GPIO0->FIOPIN |= 0x00200000; } /*------------------------------------------------------------------- ----------- Switch on LEDs *-------------------------------------------------------------------- ----------*/ __INLINE static void LED_On (uint32_t led) { LPC_GPIO2->FIOPIN |= (led); /* Turn On LED */ } /*------------------------------------------------------------------- ----------- Switch off LEDs 第 7 页 *------------------------------------------------------------------------------*/ __INLINE static void LED_Off (uint32_t led) { LPC_GPIO2->FIOPIN &= ~(led); /* Turn Off LED */ } /*---------------------------------------------------------------------------- MAIN function *----------------------------------------------------------------------------*/ int main (void) { uint8_t location; if (SysTick_Config(SystemCoreClock / 1000)) { /* Setup SysTick Timer for 1 msec interrupts */ //SystemCoreClock while (1); /* Capture error */ } LED_Config(); while(1) { LED_On (0xff); Delay (500); LED_Off(0xff); for(location=0;location<8;location++) { LED_On ((1< EXTINT = 1; /* 清中断 */ count = eint0_counter%8 ; i = 1 << count; LPC_GPIO2->FIOSET = i; /*点亮灯第i个灯*/ LPC_GPIO2->FIOCLR = ~i; /*熄灭第i个灯之外的灯*/ eint0_counter++; /* 计数值加1 */ } /******************************************************************** ************ * 函数名称 :uint32_t EINTInit( void ) * 函数功能 : 外部中断0初始化函数 * 入口参数 : 无 * 出口参数 : 返回TURE或FALSE * 备 注 :如果是返回false则说明中断入口函数没有在中断向量表中建立 ********************************************************************* **********/ uint32_t EINTInit( void ) { LPC_PINCON -> PINSEL4 = 0x00100000; /*将P2.10脚设置为EINT0即第二功能 */ LPC_GPIOINT -> IO2IntEnF = 0x200; /* 设置为下降沿触发 */ LPC_SC -> EXTMODE = 1; /* 外部中断模式选择为边沿触发 */ 第 10 页 LPC_SC -> EXTPOLAR = 0; /* 外部中断1极性设置,此处选默认的低电平或下降沿 */ NVIC_EnableIRQ(EINT0_IRQn); /* 使能外部中断0 */ return( 1 ); } /******************************************************************** ************ * 函数名称 :void PortInit(void) * 函数功能 : 端口初始化 * 入口参数 : 无 * 出口参数 : 无 * 备 注 :无 ********************************************************************* **********/ void PortInit(void) { LPC_PINCON->PINSEL4 &= ~0xCCCC; /*将P2.0~P2.7初始化为GPIO功能 */ LPC_GPIO2->FIODIR |= 0xFF; /* 将P2.0~P2.7方向设置为输出 */ LPC_GPIO2->FIOCLR |= 0xFF; /* 关闭所有的灯 */ } /******************************************************************** ************ * 函数名称 :int main(void) * 函数功能 : 主函数 * 入口参数 : 无 * 出口参数 : 无 * 备 注 :无 ********************************************************************* **********/ int main(void) { SystemInit(); /* 系统初始化,函数在system_LPC17xx.c文件夹中定义 */ /* 在core_cm3.h中定义*/ 第 11 页 PortInit(); /* 端口初始化 */ EINTInit(); while(1); } 【实验现象】 将程序下载到开发板上之后,按压INT0按键,每按一次led灯就往左移动,即按第一下的时候第一个led灯亮,按第二个第二个的时候,第二个亮,当第八个灯亮的时候,再按一下第一灯就会点亮。 【实验心得和体会】 通过本次实验进行了NVIC的设置并理解掌握;掌握了外部中断引脚功能设置及外部中断工作模式设置。本次实验的核心是中断服务函数的编写,所以会得到实验操作现象 第 12 页 实验四 串口通讯实验 【实验目的】 1、学习LPC1768处理器UART的使用方法; 2、学习用Keil软件开发ARM程序方法和步骤。 3、了解PC机上超级终端在串口通讯中的使用。 【实验要求】 1、了解LPC系列处理器UART的功能原理; 2、在Keil中设计ARM程序,实现串口通讯; 3、串口接收与发送字符。 串口发送字符串 【操作步骤】 1、启动keil新建工程。 2、新建C源文件,添加到工程,编写C文件。 3、配置生成目标。 4、编译连接工程。 、JTAG调试。 5 【实验原理】 1、LPC系列处理器UART的寄存器 RBR 接收缓冲 THR 发送缓冲 IER 中断使能 IIR 中断ID FCR FIFO控制 LCR 线控制 LSR 线状态 SCR 高速缓存 DLL 除数LSB DLM 除数MSB 2、实验电路原理图 实验电路的连接如下图。 第 13 页 程序代码 #include #define FOSC 12000000 // 振荡器频率 #define FCCLK (FOSC * 8) // 主时钟频率<=100Mhz FOSC的整数倍 #define FPCLK (FCCLK / 4) // 外设时钟频率 ,FCCLK的1/2、1/4 或与FCCLK相同 int m; //接收到的数 据 void Uart2Init(uint32_t bps) { LPC_SC->PCONP |= (1<<24); //打开UART2电源控制位 LPC_PINCON->PINSEL0 = 0X500000; //P0.10 P0.11设置为串口 LPC_UART2->LCR = 0x83; //设置串口数据格式,8位字符长度, 1个停止位,无校验,使能访问除数锁存器 ,设定波特率 LPC_UART2->DLM = ((FPCLK/16)/bps) / 256; //除数高八位 , 没有小数 情况 LPC_UART2->DLL = ((FPCLK/16)/bps) % 256; //除数第八位 LPC_UART2->LCR = 0x03; //禁止访问除数锁存器,锁定波特率 LPC_UART2->IER = 0x01; //使能接收中断 NVIC_EnableIRQ(UART2_IRQn); // 使能UART2中断通道 } int Uart2RecvByte(void) 第 14 页 { while(!((LPC_UART2->LSR) & 0x01)); //等待判断LSR[0]是否是1,1时表示RBR中接收到数据 return(LPC_UART2->RBR); //读取接收数据 } int Uart2SendByte(int buf) { while(!((LPC_UART2->LSR) & 0x20)); //等待判断LSR[5](即THRE)是否是1,1时表示THR中为空 LPC_UART2->THR = buf; //发送数据 return 0; } void UART2_IRQHandler(void) { m =Uart2RecvByte(); //读取接收数据 Uart2SendByte(m); //发送接收到的数据 } int main(void) { SystemInit(); Uart2Init(115200); while(1); } 【实验现象】 将程序下载到开发板上以后,打开电脑桌面的串口调试助手,在下面的编辑栏里敲上几个字符,点击发送,就可以看到串口调试助手上面的方框里出现了你在下方敲的字符。 【实验心得和体会】 通过本次实验我们学习LPC1768处理器UART的使用方法;学习用Keil软件开发ARM程序方法和步骤。了解PC机上超级终端在串口通讯中的使用。关于串口的配置主要涉及到引脚的配置,波特率的配置,帧格式的设置及FIFO设置。此次实验进行了串口的接收与发送字符,及发送字符串,均能在串口调试助手上成功实现。 第 15 页
本文档为【基于LPC1768嵌入式系统设计实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_650122
暂无简介~
格式:doc
大小:124KB
软件:Word
页数:19
分类:企业经营
上传时间:2017-09-30
浏览量:51