arm9开发板实验报告1

  • 格式:doc
  • 大小:388.00 KB
  • 文档页数:19

郑州轻工业学院

实 训 报 告

实训名称:

项目一:编写从A/D转换器的通道x获取模拟数据,并将转换后

的数字量以波形的形式在LCD上显示的程序

项目二: 触摸屏驱动程序设计

姓 名: 张克歌

院 (系): 计算机与通信工程学院

专业班级: 嵌入式09--01

学 号: 0151

指导教师: 韩雪琴

成 绩:

时间:2011年 8月 29日至 2011年 9 月 7 日

一、需求说明

1. 巩固和强化学生的嵌入式系统的基本概念和开发流程,掌握基本知识和基本技能。

2. 掌握硬件开发平台、开发资源和软件开发环境,尤其是裸机嵌入式系统开发方法。掌握汇编和C语言混合编程技巧,熟悉系统启动引导过程,能够成功移植嵌入式系统引导程序。培养和训练学生综合利用所学基本知识和基本技能进行小型裸机程序开发的技能。

3. 明确思路和任务,查询相关书籍、资料,综合了解ARM的AD转换器和LCD 驱动器,重点分析时S3C2440的LCD 驱动器的工作原理和初始化方法。分析与AD转换相关的寄存器,编写AD转换器的初始化函数,编写获取AD转换结果的函数。分析与LCD相关的寄存器,编写LCD 驱动器的初始化函数,配置显示方式。分析LCD绘图的API函数。编写主函数,将AD转换结果在LCD上以波形的方式显示,同时以串口输出到PC机。进入调试。实现转换数据实时输出,实现串口输出数据与LCD 波形显示的一致。

4. 明确思路和任务,查询相关书籍、资料,重点分析S3C2440的触摸屏接口工作原理和相关寄存器。编写触摸屏初始化函数,确定XY位置转换模式。编写触摸屏中断初始化函数,中断服务函数。编写屏幕校准函数。确定坐标计算公式。编写触点数据采集函数。编写主函数,进入调试。实现触摸屏坐标点x、y的正确读取。

二、功能描述

项目一:编写从A/D转换器的通道x获取模拟数据,并将转换后的数字量以波形的形式在LCD上显示的程序。

项目二:通过对AD转换器的配置——触摸屏自动测试x/y位置模式,选择进入到触摸屏驱动函数。在进行触摸屏测试时,先进入函数内判断是否启动A/D转换,如果不是的话就跳出此函数,如果是的话进行下面的判断,看A/D转换是否结束,如果是,跳出函数,如果不是运行程序,并输出x、y的值。再回到触摸屏驱动函数,测试结束,清屏。

三、系统设计及实现

项目一:

一.项目一系统设计

1. 编写AD转换器的初始化函数;

2. 设计函数,获取AD转换的结果;

3. 初始化LCD相关寄存器;

4. 设计函数,使单个象素的显示数据输出,在LCD上显示。

二.项目一流程图

Y N

开始

编写AD转换器的初始化函数

在ReadAdc函数中选择0通道

编写单个像素显示数据输出函数在TFT_LCD_Test函数中调用PutPixel,以便在LCD屏幕上输出

在Test_Adc函数中,是否按退出键

利用可调电阻,通过0通道进行A/D转化,并调用TFT_LCD_Test函数,在LCD屏幕上打点

三.项目一实现

LCD清屏及单个像素显示函数

延长一定时间

结束 编写Test Adc函数,期间调用了Lcd_ClearScr PutPixe两个函数

添加H-JTag

选择.axf文件,并打开

将其程序下载到开发板中

实验程序代码经过调试,没有错误,进入运行阶段

在超级终端中显示测试结果

在LCD中显示的结果,由于没有改变电阻,因此看到了在极小范围内变化的点

项目二:

一.项目二系统设计

1. 对触摸屏相关寄存器进行初始化,确定XY位置转换模式;

2. 对中断初始化,设计中断服务函数;

3. 通过校正函数和坐标计算公式,得出坐标。

二.项目二流程图

开始

在main函数中调用Test_Touchpanel函数

对ADC相关寄存器进行配

N

Y

N Y

三.项目二实现

对ADC相关寄存器,中断进行设置 设置中断,进行数据采集

开中断,AD转换是否开启

AD转换是否结束

进行数据转换,并输出数据

等待中断

结束

中断服务函数

在主函数中直接调用Test_Touchpanel函数

最终测试结果,每碰触一下触摸屏,就在终端中显示一对XP,YP值

四、实训心得

两周时间转瞬即逝,在这两周里,我们潜心研究,以MINI2440开发板为实验硬件平台,采用ADS集成开发环境,是我们在课程内容基础上,加强对嵌入式系统的理解和裸机应用的设计。在此过程中,需要我们分析嵌入式CPU引导程序的功能和引导过程,学会裸机驱动程序的开发以及简单应用程序的设计。从而深化我们的专业基本技能,加强我们的动手能力。

通过本次实训,我们了解到了团队的力量。小组以积极认真的态度应对,遵纪守纪,发现问题,解决问题,同时也培养了自己的独立工作能力。通过本次实训,我们基本掌握了嵌入式系统的特点,性能,掌握了开发板的硬件资源,熟悉了S3C2440的功能和接口。通过本次实训,我们还熟练了ADS集成开发环境的使用,掌握了ADS开发和调试裸机程序的过程和方法。同时,实训培养了我们学生一定的查阅教材,数据手册和各类相关资料的能力,进而养成自我学习的习惯,掌握底层硬件资源的驱动开发过程。

在此实训中也遇到了很多问题。比如,在函数调用中会出现没有提前声明函数;在使用时会出现重复定义;尤其是在触摸屏程序设计中,一直对校正函数无法下手,后来才了解到在MINI2440中是直接转化的。

总之,本次实训对我们作用巨大,影响深远,不仅巩固了现阶段所学的知识,而且为以后的工作生活做足充分准备。也对“学海无涯”有了更深一步的体会,在以后的学习中,要更加踏实,更加努力! 五、附录(代码)

/**********************项目一代码******************************************

NAME:

DESC: u2440mon entry point,menu,download

HISTORY:

S3C2400X is ported for S3C2410X.

DMA is enabled.

isDownloadReady flag is added.

- Selecting menu is available in the waiting loop.

So, isDownloadReady flag gets not needed

- UART can be selected for the console.

revision number change ->

To remove the power noise in the USB signal, the unused CLKOUT0,1 is disabled.

****************************************************************/

#define GLOBAL_CLK 1

#include <>

#include <>

#include ""

#include ""

#include ""

#include ""

#include ""

#include ""

#include ""

#include ""

extern char Image$$RO$$Limit[];

extern char Image$$RO$$Base[];

extern char Image$$RW$$Limit[];

extern char Image$$RW$$Base[];

extern char Image$$ZI$$Limit[];

extern char Image$$ZI$$Base[];

void Isr_Init(void);

void HaltUndef(void);

void HaltSwi(void);

void HaltPabort(void);

void HaltDabort(void);

void ClearMemory(void);

void Clk0_Enable(int clock_sel);

void Clk1_Enable(int clock_sel);

void Clk0_Disable(void);

void Clk1_Disable(void);

freq. = %dHz\n",preScaler);

preScaler = /ADC_FREQ -1; Uart_Init( 0,115200 );

Uart_Select( consoleNum );

Beep(2000, 100);