嵌入式系统 各实验实验报告.docx
《嵌入式系统 各实验实验报告.docx》由会员分享,可在线阅读,更多相关《嵌入式系统 各实验实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
嵌入式系统各实验实验报告
嵌入式系统设计实验报告
班级:
XXXXXXXXXX
学号:
XXXXXXXXXX
姓名:
XXXXXXX
成绩:
指导教师:
XXXXXXXXXXX
1.实验一
1.1实验名称
博创UP-net3000实验台基本结构及使用方法
1.2实验目的
熟悉UP-net3000实验平台的核心硬件电路和外设
通过操作系统自带的通讯软件超级终端,检验各个外设的工作状态
1.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统Windows、ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
1.4实验内容及要求
一、内容
①嵌入式系统开发流程概述
②熟悉UP-net3000实验平台的核心硬件电路和外设
③ARMJTAG的安装与使用
④通过操作系统自带的通讯软件超级终端,检验各个外设的工作状态
二、要求
通过本次课程对各个外设的了解,为今后各个接口实验打下基础。
1.5实验设计与实验步骤
一、JTAG的驱动程序的安装:
执行armJtag目录下armJtagSetup.exe程序,选择安装目录,安装JTAG软件。
二、通过通讯软件超级终端来检验外设的工作状态:
①运行Windows系统下的超级终端(HyperTerminal)应用程序,新建一个通信终端。
为所建超级终端取名为arm,可以为其选择第一个图标。
单击“确定”按钮。
②在接下来的对话框中选择ARM开发平台实际连接的PC机串口(如COM1),按确定按钮后出现属性对话框,设置通信的格式和协议。
波特率为115200,数据位8,无奇偶校验,停止位1,无数据流控制。
按确定完成设置。
③完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置保存为一个特定超级终端到桌面上,以备后用。
用串口线将PC机串口和平台UART0正确连接后,就可以在超级终端上看到程序输出的信息了。
④启动开发板,按住开发板上键盘的任意按键,使开发板进入BIOS设置状态。
⑤最后分别在按电脑键盘上的相应按键对各个外设的工作状态进行检验。
1.6实验过程与分析
当在电脑键盘上分别按下相应按键时,试验台有相应反应,说明外设工作正常。
1.7实验结果总结
了解了UP-net3000实验平台的核心硬件电路和外设,ARMJTAG驱动程序的安装与使用。
最后通过操作系统自带的通讯软件超级终端,检验了各个外设的工作状态正常与否。
1.8心得体会
通过本次实验,我了解了嵌入式系统开发的基本流程,知道了怎样通过操作系统自带的通讯软件超级终端来检验各个外设的工作状态。
第一次实验没有难度,轻松加愉快地完成了,通过了检验,方便了以后实验可以正常进行。
2.实验二
2.1实验名称
ADS1.2软件开发环境使用方法
2.2实验目的
①学习串行通讯原理,了解串行通讯控制器。
②掌握ARM的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。
2.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统Windows、ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
2.4实验内容及要求
学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。
编程实现ARM和计算机实现串行通讯:
ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。
2.5实验设计与实验步骤
①在新建工程时ADS创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。
②选中所有目录拖动到任务栏上的ADS任务条上,不要松开鼠标当ADS窗口恢复后再拖动到工程文件窗口,松开鼠标。
这样ADS将以子目录名建立同名文件组并以此对文件分类。
③双击Main.c打开该文件。
④利用上个实验中的通讯软件超级终端来将生成的文件放到嵌入式开发平台中。
2.6实验过程与分析
按PC键盘,发现超级终端上显示的与键盘按下的是一致的,说明ARM监视串行口,将接收到的字符再发送给串口。
2.7实验结果总结
本实验首先将LCD显示模式转换为文本显示模式,然后在文本模式下清屏命令,最后向液晶屏和向串口输出。
ARM监视串行口;将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的);即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。
2.8心得体会
通过本次实验,我掌握了串行通讯原理、并且了解了串行通讯控制器、熟悉ARM系统硬件的UART相关接口。
明白了ADS1.2软件开发环境的使用方法,到目前为止,实验难度不大,蛮开心的。
3.实验三
3.1实验名称
键盘及LED实验UP-3000实验台基本结构及使用方法
3.2实验目的
①熟悉ZLG7289芯片的内部结构
②掌握用ZLG7289驱动键盘和LED的方法
③掌握ARM汇编语言和C语言的编程方法
④编写出一段程序,要求能在LED上显示出小键盘上按下的4位数字
3.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统Windows、ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
3.4实验内容及要求
内容:
编写出一段程序,通过ZLG7289芯片驱动的键盘和8个共阴极LED,将在小键盘上按下的4位数字按键值在LED上显示出来。
要求:
从右至左循环显示至少四位数字,基本功能实现之后实现从左至右显示数字。
3.5实验设计与实验步骤
①新建工程,将“Exp3键盘及LED驱动实验”中的文件添加到工程。
②定义键值读取函数。
编写主函数,将按键值在数码管上显示。
③通讯软件超级终端来将生成的文件放到嵌入式开发平台中。
3.6实验过程与分析
以下是核心代码:
Delay(5);//延时
WriteSDIO(ZLG7289_CMD_DATA0|0);//数码管以方式0译码,第一个数码管亮
WriteSDIO(key%10);//显示个位
Delay
(1);//延时
if(key>9)
{//键值大于9显示十位
WriteSDIO(ZLG7289_CMD_DATA0|2);//发送十位数据
WriteSDIO((unsignedchar)(key/10));
Delay
(1);
WriteSDIO(ZLG7289_CMD_HIDE);//使一、二两位数码管显示
WriteSDIO(4);
}
else
{//键值小于10不显示十位
WriteSDIO(ZLG7289_CMD_HIDE);//使个位数码管显示
WriteSDIO
(1);
}
ZLG7289_DISABLE();//zlg7289放弃同步串口控制权
据老师要求,又将8位的改成了2位的,成功实现实验要求。
3.7实验结果总结
通过本次实验,我熟悉ZLG7289芯片的内部结构,掌握了用ZLG7289驱动键盘和LED的方法,掌握了ARM汇编语言和C语言的编程方法,达到实验目的。
3.8心得体会
实验过程中的编码耗时较长,自己的编程能力不足,在同学的协助下才完成,往后要加强这方面的练习。
4.实验四
4.1实验名称
电机转动控制及中断实验
4.2实验目的
①熟悉ARM自带的六路(三对)PWM
②了解直流电机和步进电机的工作原理
③熟悉ARM自带的A/D转换器的工作原理及编程方法
④利用A/D转换器实现对直流电机和步进电机
4.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统Windows、ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
4.4实验内容及要求
内容:
学习步进电机和直流电机的工作原理,了解实现两个电机转动对于系统的软件和硬件要求。
学习ARM知识,掌握PWM的生成方法,同时掌握I/O的控制方法。
要求:
①编程实现ARM芯片的一对PWM输出用于控制直流电机的转动,通过A/D旋钮控制其正反转及转速。
②编程实现ARM的四路I/O通道实现环形脉冲分配用于控制步进电机的转动,通过A/D旋钮转角控制步进电机的转角。
③通过超级终端来控制直流电机与步进电机的切换。
4.5实验设计与实验步骤
首先,新建工程,将“Exp6电机转动控制实验”中的文件添加到工程。
其次,编写直流电机初始化数(MotorCtrl.c),设置寄存器TCFG0、TCFG1、TCNTB0、TCON,再次,控制直流电机,还有,初始化开发板,初始化直流电机,初始化AD转换器,采样AD值,延时,设置相应的脉冲宽度,延时。
最后,采样AD值,延时,采样AD值,延时,根据AD旋钮转角确定步数及转动方向,发出步进电机控制命令,保存本次采样值。
4.6实验过程与分析
核心代码如下
voidinit_ADdevice()
{//初始化
rADCPSR=20;
rADCCON=ADCCON_SLEEP;
}
intGetADresult(intchannel)
{
rADCCON=(channel<<2)|ADCCON_ENABLE_START;
Delay(10);
while(!
(rADCCON&ADCCON_FLAG));//转换结束
returnrADCDAT;//返回采样值
}
voidinit_MotorPort()
{
rTCFG0=(0<<24)|2;
rTCFG1=0;
rTCNTB0=MOTOR_CONT;
rTCMPB0=MOTOR_MID;
rTCON=0x2;
rTCON=0x19;
}
voidSetPWM(intvalue)
{
rTCMPB0=MOTOR_MID+value;
}
4.7实验结果总结
实现了ARM芯片的一对PWM输出用于控制直流电机的转动,通过A/D旋钮控制其正反转及转速。
实现ARM的四路I/O通道实现环形脉冲分配用于控制步进电机的转动,通过A/D旋钮转角控制步进电机的转角。
通过超级终端来控制直流电机与步进电机的切换。
通过键盘来控制直流电机的转动或停止。
4.8心得体会
通过本次实验,熟悉了ARM自带的六路。
了解了直流电机和步进电机的工作原理。
熟悉了ARM自带的A/D转换器的工作原理及编程方法。
掌握了利用A/D转换器实现对直流电机和步进电机的控制。
因为看到自己努力的成果,我不由得多按了几次键盘来控制直流电机。
5.实验五
5.1实验名称
LCD驱动及触摸屏实验
5.2实验目的
①掌握LCD显示原理及显示驱动的嵌入式系统编程实现方法
②学习基于ARM的LCD显示驱动控制方法,通过对ARM内置的LCD控制器进行编程实现驱动LCD显示屏。
③学习触摸屏基本原理,理解触摸屏的输出标定以及与LCD显示器配合的过程
5.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统Windows、ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
5.4实验内容及要求
内容:
学习基于ARM的LCD显示驱动控制方法,通过对ARM内置的LCD控制器进行编程实现驱动LCD显示屏。
学习触摸屏基本原理,理解触摸屏的输出标定以及与LCD显示器配合的过程,编程实现对触摸屏的控制。
要求:
①点击触摸屏上两点后,两点之间画出一条直线。
②点击触摸屏并在其上移动,显示移动轨迹。
5.5实验设计与实验步骤
①新建工程,将“Exp8触摸屏驱动实验”中的文件添加到工程。
②在头文件中定义宏及常量(tchscr.c,tchscr.h)
③定义驱动函数(tchscr.c)
读取触摸点x轴电压值:
发送读取x电压值,控制字SendSIOData,等待8个时钟节拍,读取采样值高8位,ReadSIOData,发送读取x电压值,控制字SendSIOData,将第一次采样值左移8位,读取低8位并与以前高8位组成16位数据,去掉低4位,保留12位有效数据。
读取触摸点坐标:
打开ADS7843,读取触摸点x轴电,压值4次取平均值,读取触摸点y轴电压值4次取平均值,打开ADS7843,对采样结果进行转换。
④编写测试函数(tchscr.c)
将触摸动作及触摸点坐标在超级终端上显示出来。
⑤校准触摸屏坐标输出,转换坐标,与LCD紧密配合
⑥通讯软件超级终端来将生成的文件放到嵌入式开发平台中。
5.6实验过程与分析
核心代码如下:
voidTchScr_GetScrXY(int*x,int*y,U8bCal)
{//获得触摸点坐标
unsignedinttemp;
rPDATF&=~ADS7843_PIN_CS;//打开ADS7843
SendSIOData(ADS7843_CMD_X);//发送读取x电压值控制字
SendSIOData(0);//等待8个时钟节拍,因为完成一转换需要16个时钟
temp=ReadSIOData();//读取采样值高8位
SendSIOData(ADS7843_CMD_X);
temp<<=8;
temp|=ReadSIOData();//读取低8位并与以前高8位组成16位数据
*x=(temp>>4);//去掉低4位,保留12位有效数据
SendSIOData(0);
temp=ReadSIOData();
SendSIOData(ADS7843_CMD_X);
temp<<=8;
temp|=ReadSIOData();
*x+=(temp>>4);
SendSIOData(0);
temp=ReadSIOData();
SendSIOData(ADS7843_CMD_X);
temp<<=8;
temp|=ReadSIOData();
*x+=(temp>>4);
SendSIOData(0);
temp=ReadSIOData();
SendSIOData(ADS7843_CMD_Y);
temp<<=8;
temp|=ReadSIOData();
*x+=(temp>>4);
*x>>=2;//采样4次取平均值
//读取y电压值
SendSIOData(0);
temp=ReadSIOData();
SendSIOData(ADS7843_CMD_Y);
temp<<=8;
temp|=ReadSIOData();
*y=(temp>>4);
SendSIOData(0);
temp=ReadSIOData();
SendSIOData(ADS7843_CMD_Y);
temp<<=8;
temp|=ReadSIOData();
*y+=(temp>>4);
SendSIOData(0);
temp=ReadSIOData();
SendSIOData(ADS7843_CMD_Y);
temp<<=8;
temp|=ReadSIOData();
*y+=(temp>>4);
SendSIOData(0);
temp=ReadSIOData();
SendSIOData(0);
temp<<=8;
temp|=ReadSIOData();
*y+=(temp>>4);
*y>>=2;
rPDATF|=ADS7843_PIN_CS;//关闭ADS7843
if(bCal)
{//对采样结果进行转换
*x=(*x-TchScr_Xmin)*LCDWIDTH/(TchScr_Xmax-TchScr_Xmin);
*y=(*y-TchScr_Ymin)*LCDHEIGHT/(TchScr_Ymax-TchScr_Ymin);
}
}
5.7实验结果总结
点击触摸屏任何部位,都能显示出点,再点击触摸屏之后,第一个点会与点击的第二个点迅速连成直线。
5.8心得体会
通过本次实验,学习了基于ARM的LCD显示驱动控制方法,通过对ARM内置的LCD控制器进行编程实现了驱动LCD显示屏。
学习了触摸屏基本原理,理解了触摸屏的输出标定以及与LCD显示器配合的过程,编程实现了对触摸屏的控制。
从以往的学习状态又上升了一个层次
6.实验六
6.1实验名称
ucos-II裁剪实验
6.2实验目的
①掌握μcos-II裁剪的基本原理与嵌入式编程实现方法。
②学习根据具体情况对μcos-II操作系统进行裁剪,从而得到即满足需要,又非常紧凑的应用软件系统。
。
6.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统Windows、ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
6.4实验内容及要求
内容:
①根据μcos-II裁剪的基本原理与嵌入式编程实现方法,
②根据具体情况对μcos-II操作系统进行裁剪,从而得到即满足需要,又非常紧凑的应用软件系统。
③通过对μcos-II配置文件(OS_CFG.H)中相关的配置常量进行设置,实现对
μcos-II的裁剪。
给出裁剪的详细过程与裁剪结果说明,并生成裁剪后的操作系统文件。
要求:
得到即满足需要,又非常紧凑的应用软件系统。
6.5实验设计与实验步骤
找到文件夹Exp12Aucos中的ucos-ii文件夹,将其中的os_cfg.h文件打开,部分代码如下所示。
#defineOS_ARG_CHK_EN0
#defineOS_CPU_HOOKS_EN1
#defineOS_DEBUG_EN
#defineOS_EVENT_NAME_SIZE32
#defineOS_LOWEST_PRIO63
#defineOS_MAX_EVENTS100
#defineOS_MAX_FLAGS50
#defineOS_MAX_MEM_PART50
#defineOS_MAX_QS20
#defineOS_MAX_TASKS60
#defineOS_SCHED_LOCK_EN1
#defineOS_TASK_IDLE_STK_SIZE512
#defineOS_TASK_STAT_EN0
#defineOS_TASK_STAT_STK_SIZE512
#defineOS_TASK_STAT_STK_CHK_EN1
#defineOS_TICK_STEP_EN0
#defineOS_TICKS_PER_SEC1000
可对以上的相关的配置常量进行设置,实现对μcos-II的裁剪。
6.6实验过程与分析
对μcos-II的裁剪就是将μcos-II配置文件(OS_CFG.H)中相关的配置常量进行设置。
将适合要求配置常量为“1”的改为“0”。
6.7实验结果总结
通过对μcos-II配置文件(OS_CFG.H)中相关的配置常量进行设置,实现对μcos-II的裁剪。
得到满意的应用软件系统。
6.8心得体会
通过本次实验,我掌握了μcos-II裁剪的基本原理与嵌入式编程实现方法。
并且了解了根据具体情况对μcos-II操作系统进行裁剪的方法。
得到满意的应用软件系统。
实验难度倒是很低。
7.实验七
7.1实验名称
ucos-II移植实验
7.2实验目的
①了解µC/OS-II内核的主要结构,掌握ARM的C语言和汇编语言的编程方法。
②了解ARM7处理器结构,掌握将µC/OS-II内核移植到ARM7处理器上的基本原理与嵌入式编程实现方法。
7.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统Windows、ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
7.4实验内容及要求
内容:
①弄清µC/OS-II内核的主要结构和ARM7处理器结构,掌握µC/OS-II内核移植到ARM7处理器上的基本原理与嵌入式编程实现方法。
②使用ARM的C语言和汇编语言的编程方法,将µC/OS-II内核移植到ARM7处理器上,并编写两个简单任务,在超级终端上观察两个任务的切换。
要求:
①掌握ARM的C语言和汇编语言的编程方法。
②掌握将µC/OS-II内核移植到ARM7处理器上的基本原理与嵌入式编程实现方法。
7.5实验设计与实验步骤
①该实验的文件分为两类,其一是STARTUP目录下的系统初始化、配置等文件,其二是uCOS-II的全部源码,arch目录下的3个文件是和处理器架构相关的。
②设置os_cpu.h中与处理器和编译器相关的代码。
③用C语言编写6个操作系统相关的函数(OS_CPU_C.C)。
④用汇编语言编写4个与处理器相关的函数(OS_CPU.ASM)。
⑤编写一个简单的两个任务对程序来测试。
⑥编译并下载移植后的uCOS-II。
7.6实验过程与分析
编写任务函数内容,以下是核心代码:
voidTaskName(void*Id)
{
//添入任务初始化语句
for(;;)
{//添入任务循环内容
OSTimeDly(SusPendTime);//挂起一定时间,以使其他任务可以占用CPU
}
}
uCOS-II至少要有一个任务,这里首先创建一个系统任务SYS_Task,其中由语句
OSRunning=TRUE;//使能uCOS-II运行
uHALr_InstallSystemTimer();
启动系统时钟和多任务切换。
7.7实验结果总结
使用ARM的C语言和汇编语言的编程方法,将µC/OS-II内核移植到ARM7处理器上的基本原理与嵌入式编程实现方法。
实现了ucos-II移植。
7.8心得体会
通过本实验,我了解µC/OS-II内核的主要结构和ARM7处理器结构,掌握了将µC/OS-II内核移植到ARM7处理器上的基本原理与嵌入式编程实现方法。
为以后的实验打下了基础。
8.实验八
8.1实验名称
各接口模块相互衔接综合实验
8.2实验目的
(1)回顾串口、键盘、LED接口、A/D、电机转动、定时器中断、LCD接口及触摸屏驱动控制等接口模块驱动设计及开发方法。
(2)提高开发综合应用系统的能力。
8.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。
软件:
PC机操作系统Windows、ADS