一、实验目的1、熟悉ARM开发板的基本使用和基本开发流程。
2、加强对嵌入式操作系统的了解,加强对课内知识的使用。
3、熟悉基本的单片机开发环境。
4、锻炼一定团队合作能力以及对嵌入式问题的解决能力。
二、实验仪器及设备安装开发环境的PC机 ARM7实验板及相应链接线 AK Series Emulator 仿真器三、实验内容或任务1、基本实验内容1:ARM(LPC2131)&ADS V1.2环境熟悉LPC2131 硬件环境介绍;ADS 工具简介;要求:了解LPC2131 Demo Board 资源、环境;掌握ADS工具使用。
内容2:ADS 模板工具& ARM C语言程序设计ADS环境中编程模板的理解与使用;使用ADS工具,基于LPC2131进行简单的C程序设计;要求:熟练掌握ADS工具的使用,掌握ARM C程序设计、调试技术;内容3:GPIO Output(LED、Beep)实验理解ARM 芯片引脚功能选择;理解GPIO的使用设置、输出驱动方法;熟练掌握ADS工具,基于LPC2131进行简单的C程序设计;要求:实现一个秒闪航标灯和蜂鸣。
内容4:GPIO Input(Key Input)实验理解ARM 芯片引脚功能选择;理解GPIO的使用设置、输入驱动方法;熟练掌握ADS工具,基于LPC2131进行简单的C程序设计;要求:实现一个秒闪航标灯和可按键控制的蜂鸣器。
内容5:Eint VIC实验理解ARM 芯片引脚功能选择;理解外中断的含义与应用;熟练掌握ADS工具,基于LPC2131进行简单的C程序设计;要求:实现一个秒闪航标灯和可按键控制的蜂鸣器(用外中断方式实现)。
内容6:定时器理解ARM 芯片引脚功能选择;理解GPIO的使用设置、输入/输出驱动方法;熟练掌握ADS工具,基于LPC2131进行简单的C程序设计;要求:基于ucosII的GPIO、定时器、RTC、串口等综合实验。
内容7:异步串行口UART理解ARM 芯片引脚功能选择;理解GPIO的使用设置、输入/输出驱动方法;理解UART串行通信原理,学习ARM UART资源的驱动编程;熟练掌握ADS工具,基于LPC2131进行简单的C程序设计;要求:结合前边内容,实现LPC2131和PC端串行传输数据信息。
2.、选题实验电梯控制系统要求该控制器应具备如下功能:1,通过键盘输入楼层,输入之后数码管从当前位置向上或向下运行。
流水灯表示运动方向。
2,流水灯在运行中显示电梯正在运行的方向,并且在电梯到达时在该楼层亮闪3次。
3,运行到对应楼层,显示楼层号。
4,灯表示运行楼层5,可同时满足多用户需求。
达到该系统与现实电梯系统的一致性。
6,数码管数字大小增减表示向上、向下。
四、设计过程设计方案:本课题需要设计出一个模拟的电梯系统,与现实联系紧密,设计出一个符合人性化的电梯系统,通过键盘输入按键方式模拟用户按键,对不同楼层用户自动选择优先级,与现实中的电梯系统达到一致。
使用AK Series Emulator仿真器连接PC与ARM7开发板,PC连接ARM7供电。
连接实物图如下:其余需要通过编程完成。
程序中的主要模块设计:电梯向上或者向下搜索函数。
主要完成电梯的向上向下搜索任务。
如果还有按键的状态处于按下状态。
则会把按下的楼层数存储于目标楼层中。
int8 searchup(){int8 i;for(i = current; layer[i] == unpressed && i < maxlayer; i++);if( i != maxlayer){target = i;return 1;}return -1;}int8 searchdown(){int8 i;for(i = current; layer[i] == unpressed && i >= 0; i--);if( i >= 0){target = i;return 1;}return -1;}电梯活动任务函数:判断目标楼层与当前楼层关系并且做出判断是电梯进入上升、下降或者停止的活动。
并且控制数码管与电梯楼层一起运动。
void LiftAct(void *pdata){pdata = pdata;MSPI_SendData(DISP_TAB[current]);OSTimeDly(OS_TICKS_PER_SEC << 1);uartInit();while(1){if (target > current){liftstate = up;current ++;}else if(target < current){liftstate = down;current --;}else if(target == current ){layer[current] = unpressed;liftstate = arrive;}MSPI_SendData(DISP_TAB[current]);OSTimeDly(OS_TICKS_PER_SEC << 1);}}找寻下个目标函数:通过电梯的状态。
判断电梯运行的下一个目标。
实现模拟系统与现实电梯的结合。
可判断先满足哪一个用户的需求。
void FindTarget(void *pdata){int8 flag;pdata = pdata;while(1){if(liftstate == up || liftstate == stop){flag = searchup();if(flag == -1) //if not find,find downsearchdown();}else if(liftstate == down){flag = searchdown();if(flag == -1)searchup(); //if not find,find up }}}程序运行流程图:五、实验过程实验步骤:1、连接PC、仿真器与AM7开发板。
安装仿真器AK Series Emulator驱动。
打开ASD环境,加载仿真器驱动。
2、熟悉基本的开发步骤,开始做基本实验,对ARM7开发板的使用做一个基本的了解并且按要求完成基本实验需要达到的要求。
3、熟悉AXD开发环境。
对需要完成的程序列出具体框架。
通过配合完成此次试验电梯系统的大部分代码。
4、将代码加以整合,调试程序,完成既定要求并且烧入开发板。
完成此次实验的要求并且加以优化改善。
遇到的问题:此次试验的过程中,刚开始很难做到满足不同用户的需求,并且选择优先级,与现实中电梯的功能达到一致。
程序调试的过程中用PC输入数据无法到达开发板,未建立按键输入,没有与开发板建立通讯,使程序无法执行。
解决办法:通过使用AXD环境下的U-COSII操作系统对代码进行任务处理。
使部分程序可以并行。
其次通过编写更多模块如:电梯运动模块,电梯向上向下搜索模块,查找下一楼层模块。
达到了电梯运行时的智能化。
可自动满足多用户需求。
程序会自动判断电梯正在运行的状态,通过判断状态,记录下个目标楼层,会优先满足在当前状态下的楼层的用户的需求。
达到了与现实中电梯运行模式的一致。
对代码进行多次调试,找出代码中并不报错但是会影响程序优劣的错误并且加以改善。
找出了其中无法完成开发板与PC机建立通讯的错误。
是程序得以运行。
实验结果:通过键盘按键输入楼层数,发送到开发板,数码管和LED灯初始化时会停留在电梯的第一层。
接受到数据后数码管会自动变化到该楼层,并且LED灯在数码管变化的同时会显示电梯当前的运动状态,上或者下。
在程序运行的任何期间都可以从键盘输入电梯的楼层数。
而且程序会自动判断要满足的用户的优先级。
此次试验达到的效果基本与现实中电梯的运行模式达到了一致。
六、实验总结和实验心得此次试验从开始接触开发到最终完成课题经历了许多问题。
主要是对代码的编写以及调试。
喝多时候代码无法满足该试验的功能,在一次次的不断努力中终于达到了完成此次试验的最终效果。
通过本次试验,是我更加认识到了课本知识的重要性。
理论知识是与实践并行的,同时在试验中也遇到了很多的困难。
不断的查阅资料,不断的对程序需要的代码加以编写、改动。
在试验的过程中,也感受到了一个小团队协作的重要性,虽然仅仅只有两人,但是在合作方面也是需要讲究一定的方式方法和配合分工的。
希望在日后的学习生活中,有更多的这种将理论知识付诸于实践中的课程设计,让我们从理论与能力两个层面上达到更高的层次。
西安邮电学院计算机系嵌入式硬件课程设计过程考核表西安邮电学院计算机系嵌入式硬件课程设计成绩鉴定表欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。