基于ARM9S3C2440的数字相框的设计 精品.docx
- 文档编号:24386039
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:72
- 大小:2.24MB
基于ARM9S3C2440的数字相框的设计 精品.docx
《基于ARM9S3C2440的数字相框的设计 精品.docx》由会员分享,可在线阅读,更多相关《基于ARM9S3C2440的数字相框的设计 精品.docx(72页珍藏版)》请在冰豆网上搜索。
基于ARM9S3C2440的数字相框的设计精品
课程设计任务书
(指导教师填写)
课程设计名称专业综合课程设计学生姓名甄保珠专业班级电信103
设计题目基于ARM9-S3C2440的数字相框的设计
一、课程设计目的
1.掌握ARM9的S3C2440微处理器的工作原理。
2.熟悉常用显示器件的工作原理。
3.掌握ARM编程和调试方法。
二、设计内容、技术条件和要求
1.设计内容:
基于ARM9-S3C2440平台在TFTLCD屏上显示汉字及图片
2.技术条件:
1)XYD2440开发平台
2)J-LINK仿真器
3)USB转RS232转换器
4)GSM&GPRS模块
5)配套配件
3.要求:
1)以S3C2440芯片为核心,结合TFTLCD原理,完成一个简单的接口电路设计。
给出系统的组成方案,利用PROTEL完成原理图的设计。
2)完成工作流程和软件的设计。
1)显示自己的名字,名字分别用红黄蓝三种颜色、并满屏滚动。
2)选择5幅图片,使其轮流显示;
3)分别实现图像的横屏及竖屏显示.
三、时间进度安排.
1嵌入式ARM基础及模块实训阶段1天
1)KEIL新建工程、工具、开发平台使用;
2)GPIO实验讲解和五种流水灯程序实验;
2.资料查阅与学习、讨论2天
1)CPUS3C2440用户手册
2)Norflash_SST39VF1601用户手册
3)LCD_W35_ZQ3506_LQ035Q1DG06用户手册
3.电路设计2天
1)最小系统设计1天
2)接口电路设计1天
4.程序设计3天
1)常用显示器件类别、点像素概念、取模软件使用1天
2)TFTLCD屏显示原理、时序分析、虚拟屏、实际屏、视图分析:
1天
3.寄存器分析、初始化源程序分析:
半天
4.汉字显示程序分析半天
5.图片显示程序分析1天
5.调试,成果验收2天
四、主要参考文献
1、S3C2440用户手册.
2、王诚等编著,ARM9嵌入式系统原理与开发,人民邮电出版社
3、王波波等,ARM9完全手册,化学工业出版社
指导教师签字:
年月日
基于ARM9-S3C2440的数字相框的设计
摘要
本设计使用ARM9的S3C2440芯片,在对该芯片的工作原理及其外围电路有一定了解的基础上,实现在TFTLCD屏上显示自己的汉字名字并使其满屏滚动的功能;和制作数字相框,实现自动播放5张320*240图片功能,查看上一张、下一张照片的功能,以及横屏竖屏转换看图功能。
用到的知识点有LCD控制器、模数转换器及触摸屏接口、中断控制器等内容。
数码相框是展示数码照片而非纸质照片的相框。
众多的数码摄影产生的相片保存起来后,查看过程繁琐不方便,大量打印出来又非常浪费,如果用数码相框直接插上相机的存储卡展示照片,就非常酷了。
数码摄影必然推动数码相框的发展。
根据目前国内外对嵌入式的研究和开发,结合实际的实验条件,本项目使用硬件平台ARM9的上S3C2440A开发板作为目标机,使用安装WindowsXP的PC机作为宿主机,并在宿主机安装Keil+MDK补丁,及J-Flash软件作为开发环境。
主要实现工作包括:
在宿主机上安装交叉编译工具,建立交叉编译环境,建立嵌入式软件平台。
进行一个可以浏览与管理图片功能,且能进行幻灯片播放的课程设计。
针对项目需求实现对驱动程序的完善和移植,制作适合此开发板的根文件系统,最后将设计的应用程序程植到开发板上,实现个人图片的掌上管理。
关键字:
ARM9S3C2440LCD电阻触摸屏ADC数模转换TFT驱动
一硬件部分介绍
一.ARM9的S3C2440微处理器简介
Micro2440开发板由核心板Micro2440和底板Micro2440SDK组成,简称为Micro2440开发板。
Micro2440核心板其实是一个最小系统板,它具有最基本的系统配置:
◆CPU-三星S3C2440,运行于400Mhz
图1Micro2440开发板
◆NORFLASH–2M,很多公司为了节省成本并不提供NORFLASH,这对开发和产量是很不利的;
◆NANDFLASH-256M(可根据用户需求更改为64M-1G);
◆SDRAM–64M,由2片16-bit宽度的32MSDRAM组成;
◆1个电源指示等和4个用户指示灯;
◆专业复位芯片;
◆在板JTAG;
◆专业电压调节芯片;
电源系统:
本开发板的电源系统比较简单,直接使用外接的5V电源,通过降压芯片产生整个系统所需要的三种电压:
3.3V、1.25V。
如图2所示。
复位系统:
Micro2440核心板自带复位电路,采用专业的复位芯片MAX811实现CPU所需要的低电平复位,见下图:
本设计使用的核心芯片为三星公司的16/32位精简指令集(RISC)微处理器S3C2440A。
三星公司的S3C2440A为手持设备和普通应用提供了低功耗和高性能的小型芯片微控制器的解决方案。
为了降低整体系统成本,S3C2440A还提供了以下丰富的内部设备。
用户LED:
LED是开发中最常用的状态指示设备,Micro2440具有4个用户可编程LED,它们直接与CPU的GPIO相连接,低电平有效(点亮),详细的资源占用如上表:
S3C2440A基于ARM920T核心,0.13µm的CMOS标准宏单元和存储器单元。
低功耗,简单,精致,且全静态设计特别适合于对成本和功率敏感型的应用。
它采用了新的总线架构如先进微控制总线构架(AMBA)。
S3C2440A的突出特点是其处理器核心,是一个由AdvancedRISCMachines(ARM)公司设计的16/32位ARM920T的RISC处理器。
ARM920T实现了MMU,AMBA总线和哈佛结构高速缓冲体系结构。
这一结构具有独立的16KB指令高速缓存和16KB数据高速缓存。
每个都是由具有8字长的行(line)组成。
通过提供一套完整的通用系统外设,S3C2440A减少整体系统成本和无需配置额图2S3C2440A方框图
外的组件。
S3C2440A集成了以下片上功能:
●1.2V内核供电,1.8V/2.5V/3.3V储存器供电,3.3V外部I/O供电,具备16KB的指令缓存和16KB的数据缓存和MMU的微处理器
●外部存储控制器(SDRAM控制和片选逻辑)
●LCD控制器(最大支持4K色STN和256K色TFT)提供1通道LCD专用DMA
●4通道DMA并有外部请求引脚
●3通道UART(IrDA1.0,64字节发送FIFO和64字节接收FIFO)
●2通道SPI
●1通道IIC总线接口(支持多主机)
●1通道IIS总线音频编码器接口
●AC’97编解码器接口
●兼容SD主接口协议1.0版和MMC卡协议2.11兼容版
●2通道USB主机/1通道USB设备(1.1版)
●4通道PWM定时器和1通道内部定时器/看门狗定时器
●8通道10位ADC和触摸屏接口
●具有日历功能的RTC
●摄像头接口(最大支持4096×4096像素输入;2048×2048像素输入支持缩放)
●130个通用I/O口和24通道外部中断源
●具有普通,慢速,空闲和掉电模式
●具有PLL片上时钟发生器
二.LCD屏基本知识
LCD屏的像素位:
黑白屏:
1bit像素位;灰度屏:
2,4bit像素位;假(伪)彩:
8bit像素位,借助调色板显示。
黑白屏->灰度屏->假彩->真彩。
真彩:
16bit像素位,65K色(65536色),RGB(5:
6:
5),0xF800-全红,0x07e0-全绿,0x001F-全蓝,0x0000-黑色,0xffff-白色;
24bit像素位,RGB(8:
8:
8),0xff0000-全红,0x00ff00-全绿,0x0000ff-全蓝;
32bit像素位,RGB(8:
8:
8+阿尔法通道)。
显存:
用一块内存存储当前屏幕的像素色彩。
3.TFT屏构造
开发板屏从上向下:
4线电阻触摸屏、LCD屏+驱动IC、PCB+接口。
四.TFT屏驱动接口信号
1.视频数据线VD0-VD23:
直接从现存提取数据;
2.像素时钟线VCLK作用:
切换像素与像素的时钟线,换下一个像素;
3.行同步时钟HSYNC:
下一行扫描开始;
4.场同步时钟VSYNC:
下一个画面开始;
5.数据使能VDEN
五.2440TFT驱动器输出时序图分析及相关参数
1.VSPW:
场同步时钟宽度,是行同步的
2.VBPD:
场后无效行个数
3.VBFD:
场前无效行个数
4.HSPW:
行同步始终宽度--是像素时钟VCLK的倍数
5.HBPD:
行后无效像素个数
6.HFPD:
行前无效像素个数
7.HOZVAL:
一行点数,W35是(320-1)
8.LINEAL:
有多少行,W35是(240-1)
以上八个参数都需要查找规格书填到相应寄存器。
六.相关寄存器的设置
1.控制寄存器LCDCON1
[17_8]:
像素时钟分频值CLKVAL;VCLK看规格书:
6.4MHZ;HCLK:
CPU内部时钟,启动代码设为100MHZ
[7]:
=0
[6_5]:
11
[4_1]:
1101
[0]:
0-->1
2.控制寄存器2LCDCON2
设:
场后CBPD,行数LINEVAL,场前VFPD,场宽VSPW。
//以上也是从规格书中看,填到相应寄存器中。
3.控制寄存器3LCDCON3设置:
HBPD、HOZVAL、HFPD。
4.控制寄存器4LCDCON4[7_0]:
HSPW
5.控制寄存器5LCDCON5设置时钟极性,字节交换;某些信号线是否使能(背光控制)
6.帧缓冲器开始地址寄存器1(告诉显存地址在哪里)
[29_21]:
显存地址的[30_22]
[20_0]:
显存地址的[21_1]
申请显存,定义一个二维数组
U16LCDBUFF[行][列]
7.帧缓冲器地址寄存器2(告诉显存的结束地址)
[20_0]:
显存结束地址的[21_1]
8.帧缓冲器地址寄存器3
[21_11]:
OFFSIZE,当显存大于LCD屏时,每行无效的字节数/2
[10_0]:
有效宽度的字节数/2
七.汉字取模软件使用
打开软件“字模提取V2.1CopyLeftByHorse2000”,在文字输入区输入要取模的汉字,按下“Ctrl+Enter”。
参数设置→其他选项:
勾选横向取模,去掉字节倒序。
取模方式选择C51格式。
模拟动画→放大格点。
汉字取模宽度*高度:
16*16(默认),14*14,12*12。
ASCII字符:
A—Z,0—9,8*16点阵。
例如:
/*--文字:
甄--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x00,0x00,0x08,0x00,0x00,0x20,0xFE,0xFC,0x0B,0xF8,0x01,0x20,0x28,0x40,0x0A,0x08,
0xFD,0x20,0x28,0x40,0x12,0x08,0x11,0xFC,0xFE,0x40,0x12,0x08,0x11,0x20,0xAA,0x78,
/*--文字:
保--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x33,0xF8,0x12,0x20,0xAA,0x48,0x30,0x40,0x7C,0x20,0xFE,0x48,0x50,0x40,0x13,0xFE,
0x10,0xA8,0x97,0xFC,0x10,0x70,0x10,0x98,0x10,0xE0,0x10,0xA8,0xFE,0x88,0x11,0x50,
/*--文字:
珠--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=16x16--*/
0x10,0xA8,0x10,0x88,0x12,0x48,0x1D,0x24,0x10,0xAA,0x14,0x44,0xE1,0x24,0x1E,0xCA,
0x18,0x42,0x42,0x22,0xF0,0x8A,0x10,0x40,0x00,0x20,0x40,0x06,0x10,0x40,0x00,0x20,
八.字库的使用原理
ZI.C里汉字模数组排列顺序按GB2312。
do-汉字的区码,c5-汉字的位码。
Pos=94*(*chs-161)+(*(chs+1)-161);//汉字在字库中的首个字母
九.TFT屏显示图片
图片取模软件的使用:
使用“Image2Lcdv3.2”软件。
1、打开要取模的图片,按如下设置。
2、输出数据类型:
C语言数组(*.c);
3、扫描方式:
水平扫描;
4、输出灰度:
16位真彩色;
5、最大宽度和高度:
图片实际大小;
6、去掉“包含图像头数据”,勾选高位在前。
7、输出图像调整选择16位彩色,颜色位数选择R:
5bits,G:
6bits,B:
5bits。
8、保存在“ARM工程模板”下的“Source”文件夹下,以“*.c”命名。
检查字节数是否符合方法:
(以320*240图片为例)若结果符合320(weight)*240(hight)*2(字节),则说明图片取模正确。
图片有失真情况,一般都是模取错了。
应该先改参数,在选择图片。
二建立裸机工程
(1)、新建文件夹,命名为“ARM工程模板”,打开裸机例程,复制其中的Debug和include文件到ARM工程模板。
Debug里是在内存调试时的初始化脚本;include里放的是头文件,可以是自己创建的和系统提供的。
(2)新建List和Output文件夹。
List存编译时输出*.list中间文件;Output中存放烧录的*.hex文件和调试文件axf。
(3)新建Source文件夹,存放源代码“*.c”、“*.cpp”文件。
(4)直接复制Startup文件夹,里面放的是汇编启动代码。
打开KeilμVision4软件,点击Project→NewμVisionProject…,找到目标路径,文件名写为“TFT”并保存。
在弹出的对话框中选择Sumsung下的S3C2440A芯片;点击“OK”。
在弹出的如右图对话框所示,选择“否”即可;
(5)代码分组,设置IFlash和IRam的菜单选项。
点击
按钮,将弹出如左图所示对话框。
按右图设置该对话框。
(6)书写源码并添加到工程中。
方法如右图所示。
(7)IRam下的工程设置。
1、将“SelectTarget”选为IRam模式,点击
按钮,弹出如下对话框:
2、在弹出的选项卡中下的“Device”中选择Sumsung下的S3C2440A;
3、“Target”中在Read/OnlyMemoryAreas下勾选ROM1的default项,填写Start和Size,选上Startup;在Read/WriteMemoryAreas下勾选RAM1的default项,填写Start和Size;
4、“Output”中点击“SelectFolderforObjects...”将文件定位到Output文件夹下;“NameofExecutable:
”后填写TFT_IRam并勾选“CreateHEXFile”;
5、“Listing”中点击“SelectFolderforListings...”将文件定位到List文件夹下;
6、
“C/C++”下将“IncludePaths”设定为“.\Include”;
7、“Linker”下保证勾选左上角的“UseMemoryLayoutfromTargetDialog”;
8、“Debug”下按照右图设置并添加Debug文件夹下的*.ini文件;
9、“Utilities”下去掉“UpdateTargetbeforeDebugging”前面的对勾,点选“UseTargetDriverforFlashProgramming”,选择“J-LINK/J-TRACE”,点击“Settings”按钮,添加“AM29F160DBFlash”并点击“ok”即可。
(8)IFlash下的工程设置。
与IRam大致相同,将“SelectTarget”选为IFlash模式,“Target”中在Read/OnlyMemoryAreas下勾选ROM1的default项,按照下图重新填写Start和Size,选上Startup;在Read/WriteMemoryAreas下勾选RAM1的default项,按照下图重新填写Start和Size;“NameofExecutable:
”后填写TFT_IFlash;“Debug”下“InitializationFile”什么也不选,其它内容的设置同IRam下的工程设置。
三裸机程序的下载、调试
1.程序下到内存中调试方法:
将“SelectTarget”选为IRam模式,完成设置后,点击组建、编译按钮,无误后接上板子,点击
调试按钮,完成调试后,即可运行程序,查看结果。
2.程序烧录到ROM中:
将“SelectTarget”选为IFlash模式,完成设置后,这时注意将板子上面的Norflash/Nandflash按钮搬到Norflash处,然后点击组建、编译按钮,无误后接上板子,组建、编译,不要调试,点击
下载按钮,程序即被下载到板子上。
拔下J-LINK下载线,重启板子,即可看到刚下载到板子上的程序的结果。
四课程设计完成过程及情况
1.显示自己的名字,名字分别用红黄蓝三种颜色、并满屏滚动。
实现方法:
(以名字向左滚动为例进行说明,如图9)。
首先在LCD屏上绘制汉字名字,用for循环实现汉字在屏上的移动,接下来实现名字移动后的背景像素的拖尾擦除。
用两层for循环将从名字后面位置开始的宽度为319-48,高度大于汉字高度的区域的像素填充为背景色白色,并嵌套在汉字移动的for循环内让该区域跟随汉字一起移动。
汉字满屏滚动原理同上所述。
程序流程图如图10所示:
完成情况结果如下图所示:
图10程序流程图图9实现名字满屏滚动部分源码
2.选择5幅图片,使其轮流显示。
触摸屏校正:
电阻触摸屏三点校正法。
校正原理:
描述2个因素的相互关系:
y=kx+b。
描述一个因素与另外两个因素的相互关系:
x:
设为x轴实际坐标点,校正时打的十字叉;D,E,F:
分别为三个系数。
x=D*x轴电压+E*y轴电压+F;(三元一次方程,要采集三组样本)
y=A*x轴电压+B*y轴电压+C;
三组样本的位置设定:
小.中.大(左上、右中、下中)
程序中出现的符号变量:
yd[0_1_2]:
存y轴三组十字形坐标样本
xd[0_1_2]:
存x轴三组十字形坐标样本
xt[0_1_2]:
存x轴点击后读取的AD值
yt[0_1_2]:
存y轴点击后读取的AD值
公式变换,以采集x轴为例
x=D*x轴电压+E*y轴电压+F
(24,32),(289,120),(160,210)
24=D*86+E*70+Fxd[0]=D*xt[0]+E*yt[0]+F
290=D*1000+E*500+Fxd[1]=D*xt[1]+E*yt[1]+F
160=D*600+E*900+Fxd[2]=D*xt[2]+E*yt[2]+F
4线电阻触摸屏的结构:
1、上(x)下(y)2层透明分布均匀电阻模;2、x电阻层左右引线(X+,X-)y电阻层上下引线(Y+,Y-)4线。
测量过程:
以测量X方向为例,
1、+接V+,X-接地,Y+接ADC输入通道;Y-断开,高阻态
2、用户点击后,X层的分压由Y层正极导出进入ADC
测量Y方向电压,由X正极导出,原理类同
电路连接:
YP->AD通道5XM->AD通道6XP->AD通道7
相关寄存器:
1、ADC控制寄存器ADCCON
2、触摸屏控制寄存器ADCTSC
[8]:
笔尖起落中断选择
[7]:
YM开关控制0:
断开1:
接通
[6]:
YP开关控制0:
接通1:
断开
[5]:
XM开关控制0:
断开1:
接通
[4]:
XP开关控制0:
接通1:
断开
[3]:
XP线上拉电阻使能0:
使能1:
不使能
[2]:
自动x,y测量控制
[1_0]:
测量模式11
3、数据寄存器0ADCDAT0[9_0]:
x方向结果
4、数据寄存器1ADCDAT1[9_0]:
y方向结果
5、启动延时寄存器ADCDLY
6、起落中断检测寄存器ADCUPDN
[1]:
是否出现抬起动作
[0]:
是否出现落下动作
功能实现描述:
首先进行屏幕校准,校准完成后开始绘制图片。
在屏幕上方绘制时间,当前图片序号/图片
总数。
在屏幕下方绘制四个按钮,分别为上一张、自动播放、竖屏、下一张按钮,当点击这四个按钮时,按钮变为红色背景黄色字,自动播放按钮按下后,5张图片将轮流播放,按钮变为“STOP”,按下“STOP”后,自动播放停止。
如果在自动播放模式下按下上一张或下一张按钮,则退出自动播放,并转到上一张或下一张图片。
程序分析:
显示指定大小图片的功能函数如下图所示:
完成结果如图所示:
3.分别实现图像的横屏及竖屏显示.
功能实现描述:
点击横屏模式下的竖屏按钮,图片将变为竖屏显示模式,点击竖屏模式下的屏幕下方的“N”按钮,图片将转变回原来的横屏模式。
在竖屏模式下,点击屏幕下方的“F”和“B”按键,将分别跳转到上一张、下一张图片。
竖屏显示图片功能函数如右图所示。
程序流程图如下图所示:
完成结果展示:
五课程设计中出现的问题及解决办法
注意事项:
1.图片取模后产生的.c文件名需与main.c中定义的图片名一致。
2.当出现目标没有创建的错误时,一般是由于程序中有错误没有改正。
3.出现溢出异常时,可以改大ROM和RAM的Size。
4.可通过单步调试法查看程序出错原因。
5.避免调用的函数嵌套太深,以致程序执行到该处时出现死机情况。
扩展功能:
当图片尺寸小于320*240时,使图片居中显示。
六心得体会
通过本次课程设计,我学会了如何建立自己的裸机工程,并对Keil软件,J-Link下载,汉字取模软件,图片取模软件有了一定的了解,弄懂了屏幕坐标系与其它坐标系的区别。
在老师的耐心细致的讲解下,我学会了阅读芯片手册,看tft时序图,并通过完成作业,进一步熟悉了使用Protel软件绘制原理图,对S3C2440A芯片的最小系统及其工作原理有了一定程度的理解。
这次课程设计给了我很多益处。
虽然比起平时只是坐在教室里听老师讲课来说,这个课程设计让我着实感觉劳累,但是它能让我们学到知识,让我感到充实。
1.核心板认识(S3C2440最小系统)。
最小系统:
一个处理器能够工作最小硬件条件。
CPU:
s3c2440A,内部RAM4K字节,内置ROM0字节,工作频率最高553MHZ
SDRAM:
32M字节*2片=64M,程序调试
总线地址空间:
0x30
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于ARM9S3C2440的数字相框的设计 精品 基于 ARM9S3C2440 数字 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)