广工嵌入式实验报告材料.docx
《广工嵌入式实验报告材料.docx》由会员分享,可在线阅读,更多相关《广工嵌入式实验报告材料.docx(19页珍藏版)》请在冰豆网上搜索。
广工嵌入式实验报告材料
嵌入式系统实验报告
学生学院计算机学院
专业班级计算机科学与技术09(6)班
学号
学生
指导教师
2013年1月18日
实验一LED简单程序
一、实验目的
1.熟悉ADS开发环境、AXD及Multi_ICE调试环境。
2.掌握简单的ARM汇编指令的使用方法。
3.掌握ARM汇编指令和C语言相互调用的方法
二、实验容和要求
1.熟悉ARM开发环境的建立。
2.编写蜂鸣器程序。
三、工具说明
PC机、ARM仿真器、2440实验箱、串口线、USB传输线。
四、系统结构图
五、实验方法、步骤及结构测试
控制发光二极管闪烁和蜂鸣器间断鸣响代码关键部分表述:
ldrr2,=0xfff
SPARK
;将portB全部输出高电平;thepinsofportBishighoutput
ldrr0,=GPBDAT
movr1,r2
strr1,[r0]
mvnr2,r2
ldrr3,=0xfffffff;调整这个值可以改变发光二极管的闪烁频率(关键)
Delay
SUBSr3,r3,#1;r3减一同时修改标志位。
BNEDelay;如果r3减一后不为0,则跳转到Delay继续延迟
BSPARK;如果r3减一后等于0,则跳转到SPARK标号处改变LED状态
实验步骤:
1.连接好实验环境,将仿真器的一端通过并口连接到PC机,将仿真器的另一端
通过JTAG线连接到2440实验箱的JTAG接口。
拔掉实验箱上的J43与J44跳线
帽。
2.将串口线一端接到PC机,另一端接到2440实验箱的COM1接口,打开串口
超级终端dnw.exe,设置串口BaudRate为115200,选择COM1。
3.打开ADSCodeWarrior,在ADSCodeWarrior中打开实验工程目录中的
GEC2440_ASM_C.mcp;并对工程进行编译。
4.打开仿真器驱动程序Multi-ICEserver,并加载配置文件ARM920T.cfg。
5.打开ARM的开发环境AXDDebugger,在AXDDebugger中加载实验工程
目录中的可执行映象文件GEC2440_ASM_C.axf。
6.执行映象文件,并观察实验结果。
注:
若没有Multi-ICE调试,可以采用下面方法测试程序:
1.拔掉实验箱上的J43与J44跳线帽。
重启2440实验箱,实验箱会自动执行
flash中的BIOS程序,打开dnw.exe超级终端。
2.在dnw中,输入“0”,选择“USBdownloadfile”,(使用dnw的usb下载功
能需在PC上先安装USB驱动,已经安装过则忽略此步骤。
)
3.点击“USBPort”“Transmit”选择实验工程目录下的可执行映象文件
GEC2440_ASM_C.bin将该文件下载到SDRAM。
4.下载结束后,会提示是否要立即运行,这时输入“Y”,执行GEC2440_ASM_C.bin。
5.在dnw中观察实验结果。
运行结果:
程序运行后:
通过修改蜂鸣器鸣响的响应参数,即控制输出高或低电平的时间间隔,是蜂鸣器从发出连续声音变为某一个时间间隔的蜂鸣。
程序清单:
;=========================================
;NAME:
ArmjishuLedTest.s
;DESC:
控制发光二极管闪烁和蜂鸣器间断鸣响
;Creat:
2013.01.17:
;HISTORY:
;COPYRIGHT:
.armjishu.
;=========================================
;Led1-4对应于开发板上的GPB5-8管脚
;蜂鸣器对应于开发板上的GPB0管脚
;=================
;I/OPORTforLEDLED对应端口寄存器地址宏定义
;=================
GPBCONEQU0x56000010;已修改为PORTF,原来是PortB0x56000010
GPBDATEQU0x56000014;PortBdata0x56000014
GPBUPEQU0x56000018;Pull-upcontrolB0x56000018
;=================
;INTERRUPT中断寄存器地址宏定义
;=================
INTMSKEQU0x4a000008;Interruptmaskcontrol
INTSUBMSKEQU0x4a00001c;Interruptsubmask
;=================
;WATCHDOGTIMER看门狗寄存器地址宏定义
;=================
WTCONEQU0x53000000;Watch-dogtimermode
CODE32;CODE32告诉编译器将以下代码编译为ARM指令
AREAInit,CODE,READONLY;以下部分的名称为Init,是代码段,只读属性
ENTRY;入口点标示
;bResetHandlexr;上电或复位异常跳转到ResetHandler标号处。
;=====
;Entry
;=====
;ResetHandlexr
;禁止看门狗;disablewatchdog
ldrr0,=WTCON
ldrr1,=0x0
strr1,[r0]
;禁止所有中断;disableallinterrupt
ldrr0,=INTMSK
ldrr1,=0xffffffff
strr1,[r0]
;禁止所有子中断;disableallsubinterrupt
ldrr0,=INTSUBMSK
ldrr1,=0x7fff
strr1,[r0]
;将portB全部配置为输出;ConfiguresthepinsofportBasoutput
ldrr0,=GPBCON
ldrr1,=0x155555
strr1,[r0]
;将portB管脚上拉;EnablePull-upforportB
ldrr0,=GPBUP
ldrr1,=0x00
strr1,[r0]
;以下是控制发光二极管闪烁和蜂鸣器间断鸣响的代码实现.armjishu.
ldrr2,=0xfff
SPARK
;将portB全部输出高电平;thepinsofportBishighoutput
ldrr0,=GPBDAT
movr1,r2
strr1,[r0]
mvnr2,r2
ldrr3,=0xfffffff;调整这个值可以改变发光二极管的闪烁频率
Delay
SUBSr3,r3,#1;r3减一同时修改标志位。
BNEDelay;如果r3减一后不为0,则跳转到Delay继续延迟
BSPARK;如果r3减一后等于0,则跳转到SPARK标号处改变LED状态
END;END关键字告诉编译器,汇编指令到此结束
实验二、触摸屏
一、实验目的
1.了解触摸屏的基本概念与原理
2.编程实现并掌握对触摸屏的控制
二、实验容和要求
1.编程实现触摸屏坐标到LCD坐标的校准
2.编程实现触摸屏坐标采集以及LCD坐标计算
3.编写程序,实现在触摸的任意位置画矩形
三、工具说明
GEC2440BOXV1.0实验箱、ADS1.2集成开发环境,ARM仿真器、串口连接线
四、实验原理
4.1触摸屏的工作原理
触摸屏由触摸检测部件和触摸屏控制器组成;触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,接受后送触摸屏控制器;而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU,它同时能接收CPU发来的命令并加以执行。
4.2触摸屏的主要类型
按照触摸屏的工作原理和传输信息的介质,我们把触摸屏分为四种,它们分别为电阻式、电容感应式、红外线式以及表面声波式。
每一类触摸屏都有其各自的优缺点,要了解哪种触摸屏适用于哪种场合,关键就在于要懂得每一类触摸屏技术的工作原理和特点。
五、实验方法、步骤及实验代码
编程流程与相关函数
实验步骤
1.连接好实验环境,将仿真器的一端通过并口连接到PC机,将仿真器的另
通过JTAG线连接到2440实验箱的JTAG接口。
2.将串口线一端接到PC机,另一端接到2440实验箱的COM1接口,打
口超级终端dnw.exe,设置串口BaudRate为115200,选择COM1。
3.打开ADSCodeWarrior,在ADSCodeWarrior中打开实验工程目录中的
3.1.17-GEC2440_TC目录下的GEC_TC.mcp;并对工程进行编译。
4.打开仿真器驱动程序Multi-ICEserver,并加载配置文件ARM920T.cfg。
5.打开ARM的开发环境AXDDebugger,在AXDDebugger中加载可执行
文件GEC_TC.axf。
6.执行映象文件,并观察实验结果。
注:
若没有Multi-ICE调试,可以采用下面方法测试程序:
1.重起2440实验箱,实验箱会自动执行flash中的BIOS程序,打开dnw.e
级终端。
2.在dnw中,输入“0”,选择“USBdownloadfile”,(使用dnw的usb下载
需在PC上先安装USB驱动,已经安装过则忽略此步骤。
)
3.点击“USBPort”“Transmit”选择3.1.17-GEC2440_TC目录下的GEC_TC
目录中的DebugRel文件夹中的可执行映象文件GEC2440_TC.bin将该文件下
SDRAM。
4.下载结束后,会提示是否要立即运行,这时输入“Y”,执行GEC2440_TC
5.在dnw中观察实验结果。
实验关键代码:
/**************************************************************
在LCD屏幕上用颜色填充一个矩形
**************************************************************/
voidGlib_FilledRectangle(intx1,inty1,intx2,inty2,intcolor)
{
inti;
for(i=y1;i<=y2;i++)
Glib_Line(x1,i,x2,i,color);
}
/***