陈云061124嵌入式系统实验.docx
《陈云061124嵌入式系统实验.docx》由会员分享,可在线阅读,更多相关《陈云061124嵌入式系统实验.docx(26页珍藏版)》请在冰豆网上搜索。
![陈云061124嵌入式系统实验.docx](https://file1.bdocx.com/fileroot1/2023-6/8/7b14c414-3226-46e3-aef4-62ddb1e506e4/7b14c414-3226-46e3-aef4-62ddb1e506e41.gif)
陈云061124嵌入式系统实验
嵌入式系统设计实验报告
班级:
20090611
学号:
2009061124
姓名:
陈云
成绩:
指导教师:
武俊鹏刘书勇
1.实验一
1.1实验名称
博创UP-3000实验台基本结构及ADS1.2软件开发环境使用方法
1.2实验目的
1.通过本次课程学习各个外设的原理和使用方法
2.为今后各个接口实验打下夯实基础
1.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、串口线。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
1.4实验内容及要求
1.了解嵌入式系统开发流程
2.熟悉UP-net3000实验平台的核心硬件电路和外设
3.了解ARM,JTAG的安装与使用
4.通过操作系统自带的通讯软件超级终端,检验各个外设的工作状态
1.5实验设计与实验步骤
熟悉实验环境以及检查实验台,并在电脑上安装编译环境UP-NETARM3000嵌入式开发平台支持ARMSDT2.5和ADS1.2两个编译环境。
超级终端是Windows自带程序,在附件中的通讯目录下,了解超级终端的使用方法,并安装JTAG驱动程序。
1.6实验过程与分析
1.运行Windows系统下的超级终端(HyperTerminal)应用程序,新建一个通信终端。
2.在接下来的对话框中选择ARM开发平台实际连接的PC机串口(如COM1),
设置通信的格式和协议。
3.完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存。
4、启动开发板,按住开发板上键盘的任意按键,使开发板进入BIOS设置状态。
5.该画面上提示了该BIOS的版本等信息。
ShellMenu是平台的检测菜单,每个条目的最左边字母是该功能的快捷键,按PC机键盘相应键将执行对应功能。
6.用户可以按超级终端的提示尝试部分测试功能。
其中:
l:
测试LCD的文本和图形显示。
执行该命令后LCD上会打出文本提示,然后进入图形模
式并显示一幅彩色条形图案,然后在超级终端上看提示按任意键返回文本模式,并退出LCD
测试返回测试菜单。
u:
激活平台的USB连接,开发平台可以被PC机认成一个U盘,从而可以方便的将字库,
应用程序等文件从PC机拷贝到平台的FLASH中。
必须保证USB电缆正确连接。
t:
设置平台RTC时间参数,该时间由平台电池保证持续计时。
请按提示确认修改时间并
分别输入时间。
最后请保存,否则无效。
i:
测试平台的音频电路,执行该命令后可以听到一段从平台扬声器发出的音乐。
请适当调
节音量电位器。
m:
测试平台的两个电机,需要打开电机附近的电机电源开关,按提示分别测试直流电机
和步进电机。
b:
引导FLASH中的应用程序system.bin。
执行该功能将退出BIOS状态,把控制交给应
用程序。
7、按PC键盘的u键(要使超级终端处于活动状态)这时,在“我的电脑”中可以发现多了一个“可移动磁盘”,这就是开发板的海量存储器16M非线性Flash。
开发板就像一个U盘,可以通过“我的电脑”进行操作。
把上两节内容中生成的system.bin文件通过USB下载到嵌入式开发板中,复位系统,运行并检查输出结果。
1.7实验结果总结
了解嵌入式系统开发流程,熟悉UP-net3000实验平台的核心硬件电路和外设,学会了使用超级终端,检验各个外设的工作状态,确认实验台的确认性以及完整性。
1.8心得体会
本次试验十分简单易懂,只要了解外设的基本原理和使用方法,就能了解整个接口实验涉及到的一些知识,虽然简单好懂但是要注意细节,了解整个流程,不能疏忽任何步骤,才能很好的做出实验。
2.实验二
2.1实验名称
ADS1.2软件开发环境使用方法
2.2实验目的
1.熟悉ADS1.2开发环境,学会ARM仿真器的使用。
2.使用ADS编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。
2.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、串口线。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
2.4实验内容及要求
本次实验使用ADS集成开发环境。
新建一个简单的工程文件,并编译这个工程文件。
学习ARM仿真器的使用和开发环境的设置。
下载已经编译好的文件到嵌入式控制器中运行。
学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。
2.5实验设计与实验步骤
1.新建工程,将“Exp2ARM串口实验”中的文件添加到工程中,这些是启动时所需要的文件。
2.定义与UART有关的各个寄存器地址和一些特殊的位命令。
初始化开发板,把LCD显示模式转换为文本显示模式并清屏。
完成向液晶屏输出步骤。
主要有以下各寄存器(44b.h):
/*UART的最小模式*/
#definerULCON0(*(volatileunsigned*)0x1d00000)
#definerULCON1(*(volatileunsigned*)0x1d04000)
#definerUTXH0(*(volatileunsignedchar*)0x1d00020)
#definerUTXH1(*(volatileunsignedchar*)0x1d04020)
#definerURXH0(*(volatileunsignedchar*)0x1d00024)
#definerUFCON1(*(volatileunsigned*)0x1d04008)
#definerUMCON0(*(volatileunsigned*)0x1d0000c)
#defineWrUTXH0(ch)(*(volatileunsignedchar*)0x1d00020)=(unsignedchar)(ch)
#defineWrUTXH1(ch)(*(volatileunsignedchar*)0x1d04020)=(unsignedchar)(ch)
#defineRdURXH0()(*(volatileunsignedchar*)0x1d00024)
#defineRdURXH1()(*(volatileunsignedchar*)0x1d04024)
#defineUTXH0(0x1d00020)//byte_accessaddressbyBDMA
#defineUTXH1(0x1d04020)
#defineURXH0(0x1d00024)
3.编写串口驱动函数(MyUart.c)
图2.1串口初始化
图2.2发送数据图2.3接收数据
4.在主函数中实现将从串口0接收到的数据发送到串口0(Main.c)其流程图如图2.4所示:
图2.4主函数
2.6实验过程与分析
编写Helloworld!
intmain(void)
{ARMTargetInit();//开发版初始化
LCD_Init();
LCD_ChangeMode(DspTxtMode);//转换LCD显示模式为文本显示模式
LCD_Cls();//文本模式下清屏命令
LCD_printf("Helloworld!
\n");//向液晶屏输出
Uart_Printf("\nHelloworld!
\n");//向串口输出
while
(1);
}
实现ARM和计算机之间的串行通讯
Uart_SendByte(0,0xa);//换行
Uart_SendByte(0,0xd);//回车
err=Uart_Getch(c1,0,0);//从串口采集数据
Uart_SendByte(0,c1[0]);//显示采集的数据
2.7实验结果总结
LCD显示屏输出了“HelloWorld!
”语句,实现了文本方式的LCD输出,并实现了ARM和计算机之间的串行通讯。
2.8心得体会
通过本实验,了解了ARM和计算机之间的串行通讯,也学会ADS1.2的配置条件,掌握了LCD文本输出的方法。
3.实验三
3.1实验名称
键盘控制方法及LED驱动设计
3.2实验目的
1.学习键盘及LED驱动原理。
2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驱动17键的键盘和8个共阴极LED。
3.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、串口线。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
3.4实验内容及要求
1.通过ZLG7289芯片驱动17键的键盘和8个共阴极LED,将按键值在LED上显示出来。
要求从右至左循环显示至少四位数字。
2.基本功能实现之后可考虑实现从左至右显示四位及四位以上数字(最大八位),并可设置清零键等扩展功能。
3.5实验设计与实验步骤
1.新建工程,将“Exp3键盘及LED驱动实验”中的文件添加到工程。
2.定义ZLG7289寄存器(ZLG7289.h)
#defineZLG7289_CS(0x20)//GPB5
#defineZLG7289_KEY(0x10)//GPG4
#defineZLG7289_ENABLE()do{ZLG7289SIOBand=rSBRDR;ZLG7289SIOCtrl=rSIOCON;
rSIOCON=0x31;rSBRDR=0xff;rPDATB&=(~ZLG7289_CS);}while(0)
#defineZLG7289_DISABLE()do{rPDATB|=ZLG7289_CS;rSBRDR=ZLG7289SIOBand;
rSIOCON=ZLG7289SIOCtrl;}while(0)
3.编写ZLG7289驱动函数(ZLG7289.c)
4.定义键盘映射表:
(Keyboard16.c)
unsignedcharKeyBoard_Map[]=
{4,8,11,0,0,0,0,0,5,9,12,15,1,0,0,0,6,10,13,16,2,3,0,0,7,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//64键值映射表,通过查找键盘映射表来确定键盘扫描码对应的按键值。
图3.1ZLG7289复位图3.2从ZLG7289读取键值
5.定义键值读取函数,流程图如图3-3所示。
(Keyboard16.c)
图3.3键值读取函数
6.编写主函数,将按键值在数码管上显示,流程图如图3-4所示。
图3.4主函数
3.6实验过程与分析
key=GetKey();//得到按键值
Delay(5000);
ZLG7289_ENABLE();//使zlg7289占有同步串口
Delay(100);//延时
WriteSDIO(ZLG7289_CMD_DATA0|7);//数码管以方式0译码,第一个数码管亮
WriteSDIO(key);
Delay(100);//延时
WriteSDIO(ZLG7289_CMD_CLSHIFT);//循环左移
WriteSDIO(ZLG7289_CMD_HIDE);//使个位数码管显示
WriteSDIO
(1);
Uart_Printf("\nARMTargetInitOK.");
ZLG7289_DISABLE();//zlg7289放弃同步串口控制
清零命令为如下两行代码。
WriteSDIO(ZLG7289_CMD_RST);//清零
Zlg7289_Reset();//zlg7289复位
3.7实验结果总结
成功在LED上显示键盘输入的值,实现从右至左循环显示八位数字,并可以清零。
3.8心得体会
学会了LED的显示方法,进一步理解了实验环境,掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驱动17键的键盘和8个共阴极LED。
4.实验四
4.1实验名称
电机转动控制及中断实验
4.2实验目的
1.熟悉ARM本身自带的六路即三对PWM,掌握相应寄存器的配置。
2.编程实现ARM系统的PWM输出和I/O输出,前者用于控制直流电机,后者用于控制步进电机。
3.了解直流电机和步进电机的工作原理,学会用软件的方法实现步进电机的脉冲分配,即用软件的方法代替硬件的脉冲分配器。
4.了解44B0处理器上中断的应用。
5.学习在44B0处理器上中断的应用。
6.进一步熟悉平台外围硬件及其驱动程序的编写。
4.3实验环境
UP-net3000实验平台;ADS1.2开发环境
4.4实验内容及要求
1.编程实现ARM芯片的一对PWM输出用于控制直流电机的转动,通过A/D旋钮控制其转动方式。
2.编程实现ARM的四路I/O通道,实现环形脉冲分配用于控制步进电机的转动,通过A/D旋钮控制步进电机的转角。
3.通过键盘控制直流电机与步进电机的切换。
4.设置并启动定时器。
5.设置中断,编写定时器中断服务程序,对中断次数进行计数并在LED上显示结果。
4.5实验设计与实验步骤
1.新建工程,将“Exp6电机转动控制实验”中的文件添加到工程。
2.编写直流电机初始化数(MotorCtrl.c)如图4.1所示
3.控制直流电机如图4.3所示
4.控制步进电机如图4.2所示
图4.1直流电机初始化数图4.2控制步进电机
图4.3控制直流电机
4.6实验过程与分析
1.对直流电机进行编程和测试,掌握转速和旋转方向的设定方法。
2.对步进电机进行编程和测试,掌握ARM的四路I/O通道,实现环形脉冲分配用于控制步进电机的转动,通过A/D旋钮控制步进电机的转角。
3.对主函数进行编程,用键盘响应直流电机与步进电机的切换控制。
4.掌握中断相关语句的应用,弄清定义的中断向量、中断向量号,编写中断响应函数,并完成中断响应控制。
以下为控制电机的主要代码:
for(;;)
{
begin:
for(;;)
{if((rUTRSTAT0&0x1))//有输入,则跳出
{*Revdata=RdURXH0();
gotonext;}}
next:
SetPWM(0);
lastADData=GetADresult(0);
for(;;)
{loop:
if((rUTRSTAT0&0x1))//有输入,则返回
{*Revdata=RdURXH0();
gotobegin;}
if(abs(lastADData-ADData)<20)
gotoloop;
if(count>=0)//转角大于零
{…}
else//转角小于零
{…}
lastADData=ADData;
}
}
4.7实验结果总结
实现了直流电机与步进电机的基本设置和控制,可以通过键盘控制电机之间的切换。
完成了中断的响应和定时中断。
4.8心得体会
通过本次实验,掌握了电机工作原理,了解了中断的意义和实现方法,实现了简单了中断处理程序。
了解直流电机和步进电机的工作原理,学会用软件的方法实现步进电机的脉冲分配,即用软件的方法代替硬件的脉冲分配器。
5.实验五
5.1实验名称
LCD驱动及触摸屏驱动实验
5.2实验目的
1.了解触摸屏的基本概念与原理。
2.理解触摸屏与LCD的关系。
3.编程实现对触摸屏的控制。
5.3实验环境
UP-net3000实验平台;ADS1.2开发环境
5.4实验内容及要求
1.了解触摸屏基本原理,理解对触摸屏进行输出标定、与LCD显示器配合的过程。
2.通过编程实现触摸两点自动在两点间划直线。
3.通过编程实现在触摸屏上动态画出曲线。
5.5实验设计与实验步骤
1.新建工程,将“Exp7LCD驱动控制实验”中的文件添加到工程中。
2.定义有关常量与宏(lcd320.h,lcd320.c)
#defineLCDWIDTH320
#defineLCDHEIGHT240
U32*pLCDBuffer16=(U32*)0xc000000;//一级缓存指针
U32LCDBuffer[LCDHEIGHT][LCDWIDTH];//二级缓存
将其定义为32位是为了与RGB颜色兼容。
3.编写LCD初始化函数(lcd320.c)。
设置各功能寄存器,清空显示缓存区。
4.编写LCD刷新函数(lcd320.c)。
此函数主要是将二级缓存LCDBuffer的数据由32位彩色图形信息转换成8位256色的图形信息,然后放到pLCDBuffer16指向的一级缓存。
转换公式:
pixcolor=(pbuf[0]&0xe0)|((pbuf[1]>>3)&0x1c)|(pbuf[2]>>6)。
其中,pbuf[0]、pbuf[1]、pbuf[2]是一个象素的32位彩色数据的前24位,分别代表R、G、B。
5.编写主函数(main.c)
在LCD上显示256色图形的关键是填充二级显示缓冲,将显示象素的24位颜色信息写入LCDBuffer。
将RGB三种基本颜色按一定比例混合即可构成更复杂的颜色,每个象素的三种基本颜色分别占一个字节,可以方便的在程序里改写各基本颜色的数值,从而改变该象素。
5.6实验过程与分析
1.在定义触屏响应功能的函数中对点击触屏进行响应函数的修改,在其中添加修改点颜色的函数,修改得到的触摸点的颜色,并显示在LCD上。
2.获取第一个点坐标并储存,获取第二个点坐标并储存,编写划线函数,取得两点间直线上所有点的坐标,并对其改变颜色,显示在LCD上,即完成划直线功能。
3.将划线函数应用到响应触屏移动消息的函数下,即可对连续获得的触摸坐标进行连续的画短直线,连接成曲线,完成动态划线功能。
下面是实验中主函数的部分代码。
其中jcolor为颜色的代码
jcolor=0x000000ff;
for(i=0;i<240;i++)
{if(i==80||i==160)
jcolor<<=8;
for(j=288;j<320;j++)
LCDBuffer[i][j]=jcolor;
}
LCD_Refresh();
while
(1);
return0;
5.7实验结果总结
了解了触摸屏响应动作消息的函数的工作原理,通过修改实现了触摸屏响应不同动作进行画点、划线、动态划线的功能。
5.8心得体会
通过这次实验,掌握了通过编程驱动触摸屏以及触摸屏响应时间,实现了触摸屏对不同动作消息的响应。
6.实验六
6.1实验名称
UCOS-Ⅱ在ARM微处理器上的裁剪
6.2实验目的
1.了解UCOS-Ⅱ内核的主要结构。
2.掌握UCOS-Ⅱ裁剪的基本原理与嵌入式编程实现方法。
3.学习如何根据具体情况对UCOS-Ⅱ操作系统进行裁剪。
4.通过对UCOS-Ⅱ配置文件(OS_CFG.H)中相关的配置常量进行设置,实现对UCOS-Ⅱ的裁剪。
6.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、串口线。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
6.4实验内容及要求
对UCOS-Ⅱ内核进行裁剪并移植到ARM7微处理器上。
掌握μcos-II裁剪的基本原理与嵌入式编程实现方法。
学习如何根据具体情况对μcos-II操作系统进行裁剪,从而得到即满足需要,又非常紧凑的应用软件系统。
通过对μcos-II配置文件(OS_CFG.H)中相关的配置常量进行设置,实现对μcos-II的裁剪。
给出裁剪的详细过程与裁剪结果说明,并生成裁剪后的操作系统文件。
6.5实验设计与实验步骤
1.添加并打开工程。
2.按照要求,载入STARTUP目录下文件,完成系统初始化、环境配置。
3.载入UCOS-Ⅱ的全部源码,与处理器架构相关的文件位于arch目录下。
4.在os_cpu.h中编写与处理器和编译器相关的代码。
5.编写与操作系统和处理器相关的函数。
6.6实验结果总结
按照要求进行了裁剪,得到了满足需要又紧凑的应用软件系统。
6.7心得体会
了解了UCOS-Ⅱ内核的主要结构,掌握了UCOS-Ⅱ裁剪的基本原理与嵌入式编程实现方法,学会了如何根据具体情况对UCOS-Ⅱ操作系统进行裁剪。
7.实验七
7.1实验名称
UCOS-Ⅱ在ARM微处理器上的移植和编译
7.2实验目的
1.了解UCOS-Ⅱ内核的主要结构。
2.掌握将UCOS-Ⅱ内核移植到ARM7处理器上的基本方法。
7.3实验环境
硬件:
ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上、串口线。
软件:
PC机操作系统win98、Win2000或WinXP、ARMSDT2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
7.4实验内容及要求
1.将UCOS-Ⅱ内核进行移植到ARM7微处理器上。
2.编写两个简单任务,在超级终端上观察两个任务的切换。
7.5实验设计与实验步骤
1.该实验的文件分为两类,其一是STARTUP目录下的系统初始化、配置等文件,其二是uCOS-II的全部源码,arch目录下的3个文件是和处理器架构相关的。
2.设置os_cpu.h中与处理器和编译器相关的代码
typedefunsignedcharBOOLEAN;
typedefunsignedcharINT8U;
typedefsignedcharINT8S;
typedefunsignedintINT16U;
typedefsignedintINT16S;
typedefunsignedlongINT32U;
typedefsignedlongINT32S;
1)与编译器相关的数据类型。
因为不同的微处理器有不同的字长,所以uCOS-II的移植包括了一系列的类型定义以确保其可移植性。
2)OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。
与所有的实时内核一样,uCOS-II需要先禁止中断再访问代码的临界区,并且在访问完毕后重新允许中断。
3)OS_STK_GROWTH。
uCOS-II被设计成