ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:101.31KB ,
资源ID:5056718      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5056718.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式系统课程设计报告 精品.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式系统课程设计报告 精品.docx

1、嵌入式系统课程设计报告 精品 嵌入式系统实验设计报告实验一 LED灯显示实验一 实验目的1. 熟悉arm开发板基本组成电路,并通过配套教材熟悉arm芯片特性。了解ADS1.2软件使用,并会用该软件编译调试开发板。2. 了解HJTAG软件原理,利用教材中提供的LED测试程序,完成实验。二 实验器材PC机一台,周立功开发板一块。注意:对LPC2103管脚的寄存器进行配置时,应该对照芯片说明手册,按照索引,找到相关寄存器,对其进行配置。三实验原理 EasyARM2103开发板提供了4个绿色发光二极管用作显示,电路如图1.1所示。显示电路采用了灌电流的方式来驱动发光二极管,由于微控制器LPC2103

2、I/O口提供的灌电流大于其拉电流,采用此驱动方式可以保证二极管发光的亮度。 图1.1 LED电路原理四 实验内容及步骤1. 下面以GPIO的测试程序为例,熟悉EasyJTAG-H软件的使用方法,程序功能设计为控制单路LED闪烁,硬件电路如图1.1所示。 2. 打开示例工程。示例工程路径:配套光盘内容-光盘内容v1.00-3.EasyARM2103安装手册-GPIO Test,将此文件夹复制到其它目录下打开,要求存放目录必须无中文路径。打开文件夹后,建议用户先删掉“GPIO_Test_Data”文件夹,然后双击打开“GPIO Test.mcp”文件,即打开示例工程。3. 点击“user”文件夹,

3、打开main.c文件,见到示例代码。4. 选择低速GPIO,控制LED灯闪烁,示例程序如程序清单所示。此示例操作需要短接JP4的P0.17,输出控制LED1。5. 编译连接工程。项目目标栏处选择DebugInFlash模式,然后编译连接工程。6. 仿真调试 。将计算机并口与Easy JTAG-H仿真器相连,然后再将Easy JTAG-H仿真器的JTAG接口连接到Easy ARM2103目标板上,打开H-JTAG,检测到芯片内核信息后,选择Auto Download选项,此时会自动启动H-Flasher软件,选择目标芯片的型号,将当前的配置信息保存起来,建议将配置信息保存到安装路径下的Hconf

4、ig文件夹内。7. 设置完成后,关闭H-JTAG Server和H-Flasher(注意:不能使用Exit项关闭)。启动AXD,打开【Options】-【Configure Target.】,弹出Choose Target窗口,点击“ADD”添加仿真器的驱动程序,在添加文件窗口选择如D:Program FilesH-JTAG 目录下的H-JTAG .dll,点击“打开”即可。8. 在AXD环境点击运行,即可看到led亮。附加:编写程序实现四个LED灯循环闪烁的功能。五 实验程序及结果1 一个led灯亮的源代码如下:#include config.h# define LED1 1 0; uiDl

5、y-) for(i = 0; i 50000; i+); /* Function name: main* Descriptions: 跳线JP4短接,LED1闪烁* input parameters: 无* output parameters: 无* Returned value: 无*/int main (void) PINSEL1 = PINSEL1 & (0x03 2); /* 将P0.17设置为GPIO */ IO0DIR = LED1; /* 设置LED控制口为输出 */ IO0SET = LED1; /* LED1熄灭 */ while (1) IO0SET = LED1; /*

6、LED1熄灭 */ DelayNS(50); /* 延时 */ IO0CLR = LED1; /* LED1点亮 */ DelayNS(50); /* 延时 */ return 0;/* End Of File */运行程序后,可以看到第一个LED灯亮。2 四个LED灯循环闪烁的源代码如下:#include config.h# define LED1 1 17 /* P0.17控制LED1 */# define LED2 1 18 /* P0.18控制LED2 */# define LED3 1 19 /* P0.19控制LED3 */# define LED4 1 0; uiDly-) fo

7、r(i = 0; i 50000; i+); int main (void) PINSEL1 = PINSEL1 & (0x03 2); /* 将P0.17设置为GPIO */ PINSEL1 = PINSEL1 & 0x0FFFFFFE7; /* 将P0.18设置为GPIO */ PINSEL1 = PINSEL1 & 0x0FFFFFF9F; /* 将P0.19设置为GPIO */ PINSEL1 = PINSEL1 & 0x0FFFFFE7F; /* 将P0.20设置为GPIO */ while (1) IO0DIR = LED1; IO0SET = LED1; /* LED1熄灭 */

8、 DelayNS(50); /* 延时 */ IO0CLR = LED1; /* LED1点亮 */ DelayNS(50);IO0DIR = LED2; /* LED2熄灭 、延时、点亮、延时 */ IO0SET = LED2; DelayNS(50); IO0CLR = LED2; DelayNS(50); IO0DIR = LED3; /* LED3熄灭 、延时、点亮、延时 */ IO0SET = LED3; DelayNS(50); IO0CLR = LED3; DelayNS(50); IO0DIR = LED4; /* LED4熄灭 、延时、点亮、延时 */ IO0SET = LE

9、D4; DelayNS(50); IO0CLR = LED4; DelayNS(50); return 0;/* End Of File */运行程序后,可看到四个LED一个接一个的亮,实现了跑马灯的功能。实验二 中断实验一 实验目的1. 熟悉arm开发板中断原理。并产生中断。2. 了解快速中断和普通中断。编写嵌套中断实验。二 实验器材PC机一台,周立功开发板一块三实验原理同实验一四 实验内容及步骤参照实验一中步骤1-8。 附加:1. 编写程序实现三个按钮分别控制三个LED灯亮灭的功能。2. 自行编写一段实现中断嵌套的程序,阐明嵌套过程。五 实验程序及结果1一个按钮控制一个LED灯亮灭的源代码

10、#include config.h#define LED 1 17/* Function name: Eint0IRQ* Descriptions: 外部中断0服务程序* input parameters: 无* ouput parameters: 无* Returned value: 无*/void _irq Eint0IRQ(void) /* 进入中断取反LED */ if (IO0PIN & (1 17) = 0) IO0SET = 1 17; /* 熄灭发光二极管 */ else IO0CLR = 1 17; /* 点亮发光二极管 */ while(IO0PIN & (1 16) =

11、0); /* 等待按键松开 */ EXTINT = 0x01; /* 清中断标志 */ VICVectAddr = 0x00; /* 通知VIC中断处理结束*/* Function name: main* Descriptions: P0.16低电平触发外部中断主函数* input parameters: 无* ouput parameters: 无* Returned value: 无*/int main (void) PINSEL1 = PINSEL1 & (0x03); PINSEL1 = PINSEL1 | 0x01; /* 设置P0.16为外部中断0管脚 */ INSEL1 = PI

12、NSEL1 & (0x03 2); /* 设置P0.17为GPIO功能 */ IO0DIR = LED; /* 设置P0.17为输出 */ IO0SET = LED; /* 设置输出为高电平 */ IRQEnable(); /* IRQ中断使能 */ EXTMODE = 0x00; /* 设置外部中断为低电平触发 */ EXTPOLAR = 0x00; VICIntSelect = 0 14; /* 选择EINT0为IRQ中断 */ VICVecttl0 = 0x20 | 14; /* 将外部中断0分配给向量中断0 */ VICVectAddr0 = (uint32)Eint0IRQ; /*

13、设置中断服务程序地址 */ VICIntEnable = 1 14; /* 使能EINT0中断 */ EXTINT = 0x01; /* 清除EINT0中断标志 */ while(1); return 0;运行程序后,按下按钮,LED灯亮;再按一次,灯灭;再按一次,灯亮;再按一次,灯灭;如此循环。2 三个按钮分别控制三个LED灯亮灭的源代码#include config.h#define LED1 1 17#define LED2 1 18#define LED3 1 19void _irq Eint0IRQ(void) /*进入中断取反LED */ if (IO0PIN & (1 17) =

14、 0) IO0SET = 1 17; /* 熄灭发光二极管*/ else IO0CLR = 1 17; /* 点亮发光二极管 */ while(EXTINT & 0x01)!= 0) EXTINT = 0x01; /* 按键松开清中断标志*/ VICVectAddr = 0x00; /*通知VIC中断处理结束*/void _irq Eint1IRQ(void) /*进入中断取反LED */ if (IO0PIN & (1 18) = 0) IO0SET = 1 18; /* 熄灭发光二极管 */ else IO0CLR = 1 18; /* 点亮发光二极管 */ while(EXTINT &

15、0x02)!= 0) EXTINT = 0x02; /* 按键松开清中断标志*/ VICVectAddr = 0x00; /*通知VIC中断处理结束*/void _irq Eint2IRQ(void) /*进入中断取反LED */ if (IO0PIN & (1 19) = 0) IO0SET = 1 19; /*熄灭发光二极管 */ else IO0CLR = 1 19; /* 点亮发光二极管 */ while(EXTINT & 0x04)!= 0) EXTINT = 0x04; /*按键松开清中断标志*/ VICVectAddr = 0x00; /*通知VIC中断处理结束*/int mai

16、n (void) PINSEL1 = PINSEL1 & (0x03); PINSEL1 = PINSEL1 | 0x01; /* 设置P0.16为外部中断0管脚 */ PINSEL0 = PINSEL0 & (0x03 30); PINSEL0 = PINSEL0 | ( 0x01 30); /* 设置P0.15为外部中断2管脚 */ PINSEL0 = PINSEL0 & (0x0328); PINSEL0 = PINSEL0 | (0x0128); /* 设置P0.14为外部中断1管脚 */ PINSEL1 = PINSEL1 & (0x03 2); /* 设置P0.17为GPIO功能

17、*/ PINSEL1 = PINSEL1 & (0x03 4); /* 设置P0.18为GPIO功能 */ PINSEL1 = PINSEL1 & (0x03 6); /* 设置P0.19为GPIO功能 */IO0DIR = LED1|LED2|LED3; IO0SET = LED1|LED2|LED3; IRQEnable(); /* IRQ中断使能 */ EXTMODE = 0x00; /* 设置外部中断为低电平触发 */ EXTPOLAR = 0x00; VICIntSelect = 0x00; /* 选择EINT0,EINT1,EINT2为IRQ中断 */ VICVecttl0 = 0

18、x20 | 14; /* 将外部中断0分配给向量中断0 */ VICVecttl1 = 0x20 | 15 /* 将外部中断1分配给向量中断1 */ VICVecttl2 = 0x20 | 16; /* 将外部中断2分配给向量中断2 */ VICVectAddr0 = (uint32)Eint0IRQ; /* 设置中断服务程序地址 */ VICVectAddr0 = (uint32)Eint1IRQ; VICVectAddr2 = (uint32)Eint2IRQ; VICIntEnable = (1 14) | (115)| (1【发送数据】,在弹出的发送数据窗口中点击“高级”即可打开接收窗

19、口。五 实验源程序及运行结果/*#include config.h# define UART_BPS 115200 /* 串口通信波特率 */volatile uint8 uiGRcvNew; /* 串口接收新数据的标志 */uint8 uiGRcvBuf30 = 0; /* 串口接收数据缓冲区 */uint32 uiGNum; /* 串口接收数据的个数 */* 函数名称: DelayNS* 函数功能: 延时函数* 入口参数: uiDly 值越大,延时时间越长* 出口参数: 无* 返回值: 无*/void DelayNS (uint32 uiDly) uint32 i; for (; uiDl

20、y 0; uiDly-) for(i = 0; i 50000; i+); /* 函数名称: UART0_IRQ* 函数功能: 串口中断服务函数* 入口参数: 无* 出口参数: 无* 返回值: 无*/void _irq UART0_IRQ (void) uiGNum = 0; while (U0IIR & 0x01) = 0) /* 判断是否有中断挂起 */ switch (U0IIR & 0x0E) /* 判断中断标志 */ case 0x04: /* 接收数据中断 */ uiGRcvNew = 1; /* 置接收新数据标志 */ for (uiGNum = 0; uiGNum 8; uiG

21、Num+) /* 连续接收8个字节 */ uiGRcvBufuiGNum = U0RBR; break; case 0x0C: /* 字符超时中断 */ uiGRcvNew = 1; while (U0LSR & 0x01) = 0x01) /* 判断数据是否接收完毕 */ uiGRcvBufuiGNum = U0RBR; uiGNum+; break; default: break; VICVectAddr = 0x00; /* 函数名称: UARTInit* 函数功能: 串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率为115200* 入口参数: uiDly 值越大,延时时间越

22、长* 出口参数: 无* 返回值: 无*/void UARTInit (void) uint16 uiFdiv; U0LCR = 0x83; /* 允许设置波特率 */ uiFdiv = (Fpclk / 16) / UART_BPS; /* 设置波特率 */ U0DLM = uiFdiv / 256; U0DLL = uiFdiv % 256; U0LCR = 0x03; /* 锁定波特率 */* 函数名称: UART0SendByte* 函数功能: 向串口发送子节数据,并等待数据发送完成,使用查询方式* 入口参数: uiDat 要发送的数据* 出口参数: 无* 返回值: 无*/void UART0SendByte (uint8 uiDat) U0THR = uiDat; /* 写入数据 */ while (U0LSR & 0x20) = 0); /* 等待数据发送完毕 */*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1