嵌入式系统设计实验报告.doc

上传人:土8路 文档编号:9953668 上传时间:2021-04-06 格式:DOC 页数:38 大小:201.50KB
返回 下载 相关 举报
嵌入式系统设计实验报告.doc_第1页
第1页 / 共38页
嵌入式系统设计实验报告.doc_第2页
第2页 / 共38页
嵌入式系统设计实验报告.doc_第3页
第3页 / 共38页
嵌入式系统设计实验报告.doc_第4页
第4页 / 共38页
嵌入式系统设计实验报告.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《嵌入式系统设计实验报告.doc》由会员分享,可在线阅读,更多相关《嵌入式系统设计实验报告.doc(38页珍藏版)》请在三一文库上搜索。

1、西安邮电大学嵌入式系统设计实验报告专 业班 级学 号学生姓名指导教师学 期2013-2014学年第2学期完成日期2014-06-25基于lpc2131的模拟电梯控制实验1、 实验目的1、 熟悉ARM & ADS V1.2 的环境2、 理解LPC2131芯片引脚功能的选择3、 理解GPIO的使用设置、输入驱动方法4、 理解SPI全双工同步串行通信原理,学习ARM SPI资源的驱动编程5、 学习在LPC2131上移植ucos系统2、 实验内容及要求1、 通过键盘输入楼层,输入之后数码管从当前位置向上或向下运行,流水灯表示运动方向。2、 流水灯在运行中显示电梯正在运行的方向,并且在电梯到达时在该楼层

2、闪烁3次。3、 电梯运行到对应楼层,数码管显示楼层号。4、 流水灯表示电梯运行楼层。5、 系统可同时满足多用户需求。达到该系统与现实电梯系统的一致性。3、 系统总体设计(总体方案及系统框图)主要是创建了四个任务,分别为电梯总任务、按键检测任务、电梯方向改变任务及电梯向上或向下运行任务,然后启动多任务环境,通过事件标志组发送和接收消息,进而实现电梯的一些基本的功能。蜂鸣器模块数码管显示模块SPI串口模块LPC2131LED显示与键盘模块4、 系统详细设计(模块详细设计及流程图)5、 系统测试(数据测试结果及分析) 通过键盘按键输入楼层数,发送到开发板,数码管和LED灯初始化时会停留在电梯的第一层

3、。接受到数据后数码管会自动变化到该楼层,并且LED灯在数码管变化的同时会显示电梯当前的运动状态,上或者下。在程序运行的任何期间都可以从键盘输入电梯的楼层数。而且程序会自动判断要满足的用户的优先级。此次试验达到的效果基本与现实中电梯的运行模式达到了一致。六、总结在整个课程设计中,我们组员一起认真地查找相关资料,然后又对书中的相关内容仔细翻阅,通过虚心请教和不懈的努力,最终完成了整个设计,心中的喜悦实在无以言表。此刻,我非常感谢我们组长的鼓励和帮助,感谢同学们诸多的帮助!本次设计不仅让我收获了许多,也让我对以前所学习的ARM知识有了进一步的深化与巩固,最关键的是,它给了我一份自信。但我很明白,作品

4、中还存在着比较多的不足,这些都需要进一步的改善,我会不骄傲,不气馁,用着自信与执着尽最大努力将其完善。7、 附录(代码+注释)#include config.h#include stdlib.h#defineKEY11 16 / P0.16连接KEY1#defineKEY21 17 / P0.17连接KEY2#defineKEY31 18 / P0.18连接KEY3#defineKEY41 19 / P0.19连接KEY4#defineKEY51 20 / P0.20连接KEY5#defineKEY61 21 / P0.21连接KEY6#define BEEP 1 7 / P0.7控制蜂鸣器B

5、EEP#define HC595_CS (1 29) /P0.29口为74HC595的片选#defineTaskStkLengh64/Define the Task0 stack length 定义用户任务0的堆栈长度 int semaphore7 = 0, 0, 0, 0, 0, 0, 0; /定义一个信号量数组int current_floor; int work_count = 0;int direction;int is_working;uint8 const DISP_TAB10 = 0XC0, 0XF9, 0XA4, 0XB0, 0X99, 0X92, 0X82, 0XF8, 0X

6、80, 0X90; /数码管显示数字列表OS_STKTaskStk TaskStkLengh;/Define the Task0 stack 定义用户任务0的堆栈OS_STKTask0Stk TaskStkLengh;OS_STKTask1Stk TaskStkLengh;OS_STKTask2Stk TaskStkLengh;OS_FLAG_GRP *direct_chan; /事件标志组OS_EVENT *u_d;void Elevator(void *pdata); /电梯总任务声明void Is_button_press(void *pdata); /检测按键任务声明void Dire

7、ction_change(void *pdata); /电梯方向改变任务声明void Up_down(void *pdata);/电梯向上、向下运行任务声明void MSPI_Init(void) PINSEL0 = (PINSEL0 & 0xFFFF00FF) | 0x00005500;/ 设置管脚连接SPI/PINSEL0 = (PINSEL0 & (0xFF 8) | (0x15 8) ; SPI_SPCCR = 0x52; / 设置SPI时钟分频 SPI_SPCR = (0 3) |/ CPHA = 0, 数据在SCK 的第一个时钟沿采样 (1 4) |/ CPOL = 1, SCK

8、为低有效 (1 5) |/ MSTR = 1, SPI 处于主模式 (0 6) |/ LSBF = 0, SPI 数据传输MSB (位7)在先 (0 7);/ SPIE = 0, SPI 中断被禁止uint8 MSPI_SendData(uint8 data) IOCLR = HC595_CS; / 片选74HC595 SPI_SPDR = data; while( 0 = (SPI_SPSR & 0x80);/ 等待SPIF置位,即等待数据发送完毕 IOSET = HC595_CS; return(SPI_SPDR);int main(void)INT8U error;OSInit ();u

9、_d = OSSemCreate(0); /创建向上或向下的信号量direct_chan = OSFlagCreate(0, &error); /创建方向改变的事件标志组OSTaskCreate (Elevator,(void *)0, &TaskStkTaskStkLengh - 1, 2); /创建电梯总任务OSStart (); /启动多任务环境return 0;void Elevator(void *pdata)pdata = pdata;TargetInit (); /初始化目标板PINSEL1 = 0x00000000; /选择管脚连接到GPIOIO0DIR = BEEP; /设置

10、蜂鸣器为输出IO0DIR = (0x3F) 16; /选择按键作为输入PINSEL2 &= 0x08; /选择管脚连接到GPIOIO1DIR = 0xFF 18; /选择流水灯作为输出IO1SET = 0xFF 18; /使流水灯处于高电平,灯熄灭MSPI_Init(); /SPI初始化IODIR = HC595_CS; /将SPI作为输出IO0DIR = (0x3F) 16; /将p0.16p0.21作为输入OSTaskCreate (Is_button_press,(void *)0, &Task0StkTaskStkLengh - 1, 4); /创建任务OSTaskCreate (Di

11、rection_change,(void *)0, &Task1StkTaskStkLengh - 1, 5);OSTaskCreate (Up_down,(void *)0, &Task2StkTaskStkLengh - 1, 3);while (1)OSTimeDly(10); /延时void Is_button_press(void *pdata) /判断按键任务INT8U error;pdata = pdata;TargetInit (); /目标板初始化化while (1)if (IO0PIN & KEY1) = 0) /按下1号键 if (semaphore1 != 1) / I

12、O1CLR = 1 18; /使第一个流水灯点亮semaphore1 = 1; /将信号量置位work_count+; /电梯工作量增加else if (IO0PIN & KEY2) = 0) /按下2号键时 if (semaphore2 != 1) IO1CLR = 1 19; /使第二个流水灯点亮semaphore2 = 1;work_count+;else if (IO0PIN & KEY3) = 0) /按下3号键时 if (semaphore3 != 1) IO1CLR = 1 20; /使第三个流水灯点亮semaphore3 = 1;work_count+; else if (IO

13、0PIN & KEY4) = 0) /按下4号键时 if (semaphore4 != 1) IO1CLR = 1 21; /使第四个流水灯点亮semaphore4 = 1;work_count+;else if (IO0PIN & KEY5) = 0) /按下5号键时 if (semaphore5 != 1) IO1CLR = 1 22; /使第五个流水灯点亮 semaphore5 = 1;work_count+;else if (IO0PIN & KEY6) = 0) /按下6号键时 if (semaphore6 != 1) IO1CLR = 1 23;semaphore6 = 1;wor

14、k_count+;if (is_working = 1) /判断电梯是否运行 OSTimeDly(OS_TICKS_PER_SEC * 0.2);/延时0.2秒else if (work_count != 0) OSFlagPost(direct_chan, 0x02, OS_FLAG_SET, &error); /事件标志组发送出去OSTimeDly(OS_TICKS_PER_SEC * 0.2);/延时0.2秒else direction = 0;void Direction_change(void *pdata)uint8 error;int floor_temp;int up, dow

15、n;pdata = pdata;TargetInit (); /目标板初始化direction = 0;while (1)OSFlagPend(direct_chan, 0x03, OS_FLAG_WAIT_SET_ALL + OS_FLAG_CONSUME, 0, &error); /接收事件标志组发送的消息if (direction = 1) for (floor_temp = current_floor + 1; floor_temp = 1 & !semaphorefloor_temp; floor_temp-);if (floor_temp = 0) /如果楼层已到达底层时,改变方向

16、向上运行 direction = 1;else if (direction = 0) is_working = 1;OSTimeDly(OS_TICKS_PER_SEC);is_working = 0;if (work_count = 1) for (floor_temp = 1; floor_temp floor_temp) direction = -1;else direction = 1;else if (current_floor = 1) direction = 1;else if (current_floor = 6) direction = -1;else for (floor_

17、temp = current_floor + 1; floor_temp = 1 & !semaphorefloor_temp; floor_temp-);down = floor_temp;if (up - current_floor current_floor - down) /首先响应距离较近的楼层 direction = -1;else if (up - current_floor current_floor - 1) direction = -1;else if (6 - current_floor current_floor - 1) direction = 1;else dire

18、ction = 1;OSSemPost(u_d);void Up_down(void *pdata)int count;uint8 error;pdata = pdata;TargetInit (); /目标板初始化current_floor = 1;MSPI_SendData(DISP_TABcurrent_floor); IO1CLR = 1 18; /使第一个流水灯点亮OSFlagPost(direct_chan, 0x01, OS_FLAG_SET, &error);while (1) OSSemPend(u_d, 0, &error); /接收信号量OSTimeDly(OS_TICK

19、S_PER_SEC); /延时IO1SET = 1 (17 + current_floor); /将当前楼层灯熄灭if (direction = 1) current_floor+;else if (direction = -1) current_floor-;IO1CLR = 1 (17 + current_floor); /使当前楼层灯点亮MSPI_SendData(DISP_TABcurrent_floor); /向数码管发送楼层消息if (semaphorecurrent_floor = 1) count = 3;while (count) /到达目标楼层后灯闪三下 OSTimeDly

20、(OS_TICKS_PER_SEC / 2);IO1SET = 1 (17 + current_floor); /OSTimeDly(OS_TICKS_PER_SEC / 2);IO1CLR |= 1 (17 + current_floor);count-;work_count-;semaphorecurrent_floor = 0; /信号量还原为0 OSFlagPost(direct_chan, 0x01, OS_FLAG_SET, &error); 基于lpc2131的模拟MP3播放器实验1、 实验目的6、 熟悉ARM & ADS V1.2 的环境7、 理解LPC2131芯片引脚功能的选

21、择8、 理解GPIO的使用设置、输入驱动方法9、 理解PWM的通信原理,学习ARM PWM资源的通信编程10、 学习在LPC2131上移植ucos系统2、 实验内容及要求 (1)通过键盘输入,进入MP3播放器相应的功能选项。 (2)MP3播放器具备的功能选项为:播放、暂停、停止、音量控制、音乐下载。 (3)MP3播放器响应进入各功能状态时,蜂鸣器蜂鸣。 (4)流水灯表示MP3播放器当前所处的功能状态。 (5)蜂鸣器蜂鸣声音的大小代表音量的大小,音量控制状态和音乐下载状态可分别与其他3种状态同事存在。 (6)数码管数字大小表示执行MP3各功能状态的时间。3、 系统总体设计(总体方案及系统框图)系

22、统主要创建了六个任务,分别为MP3总任务、判断按键任务、播放音乐任务、控制音量任务、播放上一曲或下一曲任务及暂停或停止任务,然后启动多任务环境,通过创建的消息邮箱发送并接收消息,进而实现MP3播放的一些简单功能。蜂鸣器模块数码管显示模块LPC2131PWM串口模块LED显示与键盘模块4、 系统详细设计(模块详细设计及流程图)5、 系统测试(数据测试结果及分析)通过键盘按键输入相应功能,发送到开发板,数码管和LED灯接收到数据后,数码管会自动变化到该按键号,并且相应的LED灯在数码管变化的同时会点亮。在程序运行的任何期间都可以从键盘输入相应功能,而且程序会自动判断要满足的用户的优先级。此次试验实

23、现了简单的基本MP3功能。6、 总结通过这次课程设计,使我对以前完全陌生的ARM 软件有了初步的接触,我学到了如何在ARM中实现基本的MP3播放功能。原先我对嵌入式系统并没有很深刻的了解,在做完课程设计后,我对数码管、蜂鸣器及流水灯的结构和功能有了更进一步的了解,并且知道了一些相关函数的功能与运用,真正的把所学的东西运用到了实际中,更好的把课本知识与实际相结合,对我以后的学习有很大帮助。7、 附录(代码+注释)#include config.h#include stdlib.h#include music.h#defineKEY11 16 / P0.16连接KEY1#defineKEY21 1

24、7 / P0.17连接KEY2#defineKEY31 18 / P0.18连接KEY3#defineKEY41 19 / P0.19连接KEY4#defineKEY51 20 / P0.20连接KEY5#defineKEY61 21 / P0.21连接KEY6#define BEEP 1 7 / P0.7控制蜂鸣器BEEP#define HC595_CS (1 29) /P0.29口为74HC595的片选#defineTaskStkLengh64/Define the Task0 stack length 定义用户任务0的堆栈长度OS_EVENT *voice; OS_EVENT *b_n;

25、OS_EVENT *p_s; /歌曲曲谱 虹彩妹妹 const uint32 HCMM1 = _LA,_SO,_MI,_LA,_SO,_MI,_LA, _LA, _SO, _LA,_LA, _SO, _MI, _LA, _SO, _MI,_RE, _RE, _DO, _RE,_MI, _MI, _SO, _LA, _DO1, _LA, _SO,_MI, _MI, _SO, _DO,_MI, _MI, _MI, _MI, _MI,_1LA,_1LA,_1SO,_1LA,;/* 歌曲节拍 */const uint32 HCMM_L1 =_4, _8, _8, _4, _8, _8,_8, _4,

26、_8, _2,_4, _8, _8, _4, _8, _8,_8, _4, _8, _2,_4, _8, _8, _8, _8, _8, _8,_8, _4, _8, _2,_4, _4, _4, _8, _8,_8, _4, _8, _2,;/ 歌曲曲谱 倩女幽魂const uint32 HCMM2 = _LA, _SO, _MI, _MI,_MI, _RE, _DO, _SO,_LA, _DO, _LA, _LA,_DO1, _DO1,_LA, _LA, _MI,_DO1,_DO, _1TI, _DO, _1TI,_1LA,_DO1, _DO1,_MI,_SO,_DO,_DO,_LA,_S

27、O, _SO, _MI, _DO,_1LA,_RE,_DO1, _DO1,_RE, _RE, _RE, _FA, _DO1, _FA, _MI, _FA, _LA,_MI,_RE, _DO, _DO1,_FA, _MI, _RE,_1TI, _1TI, _FA,_MI, _RE,_DO,_1LA, _1SO, _1LA, _1LA, _1LA,;/ 歌曲节拍 const uint32 HCMM_L2 =_16, _16,_8, _2d,_4d, _4, _4, _8,_16, _16,_8, _2d, _4, _4,_4d, _8, _1, _4,_8, _8, _4d, _8,_1, _4,

28、 _4,_4, _4, _4, _2, _4,_8, _4,_8,_4, _4, _1, _4, _4,_8, _4, _8,_1, _4, _8, _8, _4, _4, _4d,_8, _2, _4d, _8, _4, _4,_4, _2, _4,_4d, _8, _2,_4d, _8,_4, _4,_1,;/当年情const uint32 HCMM3 = _MI, _MI, _RE, _MI, _MI,_RE, _MI, _SO, _SO, _LA,_SO,_FA, _MI,_FA, _FA, _MI, _FA,_RE,_DO, _TI,_LA, _TI,_MI, _RE, _MI,_M

29、I, _RE, _MI, _MI,_RE,_MI, _LA,_LA,_TI,_LA, _LA,_RE, _MI,_RE, _DO,_RE, _RE,_MI,_RE, _DO, _1LA,_DO,_DO,_MI,_MI,_RE,_MI,_MI,_RE,_MI,_SO,_SO,_LA,_SO,_SO,_MI,_MI,_FA,_MI,_MI,_FA,_MI,_DO,_RE, _DO1,_DO1,_MI,_MI,_RE,_MI,_MI,_RE,_MI,_LA,_LA,_TI,_LA,_LA,_RE,_DO,_RE,_RE,_DO,_MI,_RE,_DO,_SO, _DO1,_SO, _SO,_FA,_

30、MI,_MI,_RE,_MI,_MI,_RE,_MI,_SO,_SO,_LA,_SO,_SO,_MI,_MI,_FA,_MI,_MI,_FA,_MI,_DO,_RE, _DO1,_DO1, _MI,_MI,_RE,_MI,_MI,_RE,_MI,_LA,_LA,_TI,_LA,_LA,_RE,_DO,_RE,_RE,_DO,_RE,_MI,_1LA,_DO,_DO,_DO, _DO1,_DO1,_DO, _MI, _FA, _FA,_DO, _DO,_TI, _LA,_SO,_TI, _MI,_MI, _LA, _DO, _RE, _DO,_RE, _MI, _FA,_MI, _1TI,_RE

31、, _1TI,_1TI, _DO, _MI,_FA,_FA, _DO,_DO, _TI,_DO, _TI,_MI, _LA, _LA, _DO,_RE, _DO1, _MI,_MI, _1TI,_RE, _1TI,_1TI,_1SO, _1TI, _1LA, _1LA,_1LA,_DO1, _DO1, _DO1,_DO1, _DO1, _DO, _MI,_FA,_FA, _DO,_DO, _TI, _LA,_SO, _TI,_MI, _MI, _LA, _DO,_RE, _DO,_RE, _MI, _FA,_MI, _1TI,_RE, _1TI,_1TI, _DO, _MI,_FA,_FA,

32、_DO,_DO, _TI, _DO,_TI, _MI,_LA, _LA, _DO,_RE, _DO1, _MI,_MI, _LA,_SO, _TI, _LA, _LA,_DO1,_SO,_FA, _MI,_MI,_RE,_MI,_MI,_RE, _MI,_SO,_SO,_LA,_SO,_FA,_MI, _FA,_FA,_MI,_FA,_RE,_DO, _TI,_LA,_LA,_MI,_RE, _MI,_MI,_RE,_MI,_MI,_RE, _MI,_LA,_LA,_TI,_LA,_RE,_DO, _RE,_RE,_DO,_RE,_MI,_RE,_DO, _SO, _LA, _MI,_LA,_

33、LA, _TI,_LA,_LA,_MI,_RE,_DO, _RE,_RE,_MI,_RE,_DO,_LA,_DO, _DO, _DO, ;/歌曲节拍const uint32 HCMM_L3 = _4d, _16, _16, _4d, _16,_16, _8, _8, _8d, _16,_4d,_16, _16,_4d, _16, _16, _8,_4,_8, _4d,_8, _4d,_16, _16, _4d,_16, _16, _4d, _16,_16,_8, _8,_8d,_16,_4, _16,_16, _16,_16, _16,_4d, _16,_16,_8, _8, _16,_8d,

34、_1,_4d,_16,_16,_4d,_16,_16,_8,_8,_8,_16,_16,_4d,_16,_16,_4d,_16,_16,_8,_4,_8,_2, _4,_4,_4d,_16,_16,_4d,_16,_16,_8,_8,_8,_16,_16,_4d,_16,_16,_4d,_16,_16,_8,_4,_8,_2, _8,_8, _8,_8,_4d,_16,_16,_4d,_16,_16,_8,_8,_8,_16,_16,_4d,_16,_16,_4d,_16,_16,_8,_4,_8,_2, _4,_4,_4d,_16,_16,_4d,_16,_16,_8,_8,_8,_16,_

35、16,_4d,_16,_16,_4d,_16,_16,_8,_8,_8,_16,_16,_2, _4,_4,_4d, _16, _16, _4d,_16, _16,_8, _8,_8,_16, _16,_2, _4d, _8, _4d, _16,_16, _8, _8,_8, _8,_8, _8,_4, _4d, _16,_16,_4d, _16,_16, _8,_8, _8,_8, _2, _4d, _8,_2, _8, _8,_8, _8,_8, _8,_8,_8, _16, _16, _8,_2,_4, _4, _4,_4, _4, _4d, _16,_16,_4d, _16,_16,

36、_8, _8,_8, _16,_16, _2, _4d, _8,_4d, _16,_16, _8, _8,_8, _8,_8, _8,_4, _4d, _16,_16,_4d, _16,_16, _8, _8,_8, _8,_2, _4d, _8,_2, _8, _8,_8, _8,_4d, _8, _1, _2,_4,_8,_8, _4d,_16,_16,_4d,_16,_16, _8,_8,_8d,_16,_4d,_16,_16, _4d,_16,_16,_8,_4,_8, _4d,_8,_4d,_16,_16, _4d,_16,_16,_4d,_16,_16, _8,_8,_8d,_16,_4d,_16,_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1