嵌入式课程设计报告--基于ARM平台的打地鼠游戏文档格式.docx
- 文档编号:13180064
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:17
- 大小:547.78KB
嵌入式课程设计报告--基于ARM平台的打地鼠游戏文档格式.docx
《嵌入式课程设计报告--基于ARM平台的打地鼠游戏文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告--基于ARM平台的打地鼠游戏文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
l工程源代码
1、课程设计内容
本次课程设计基于课程《物联网与嵌入式系统》的学习,利用现有的硬件知识和计算机软件编程知识从以下三个题目选择一个作为课程设计内容:
测频程序、交通灯演示系统、打地鼠游戏,难度依次递增。
基于个人实力和兴趣的考虑,我选择了打地鼠游戏作为我的课程设计题目。
具体要求如下:
lLCD正确显示需求内容
l触摸屏功能正常使用
l基本的打地鼠游戏环节
l打地鼠游戏流畅运行,无显著BUG
l游戏结束后输出统计数据
2、课程设计实验环境
软件:
WindowsXP\KeiluVision4.72\ARMDeveloperSuite1.2\
H-JTAG\DNW\,其中keil编译优化等级为Level0.
硬件:
飞凌FL2440开发板,4.3寸(480*272)显示屏、USB-
JTAG仿真器
实验室:
中南大学-美国德州仪器联合嵌入式实验室三、课程设计原理分析
1、LCD显示原理分析
S3C2440的LCD控制器由由一个逻辑单元组成,它的作用是:
把
LCD图像数据从一个位于系统内存的videobuffer传送到一个外部的LCD驱动器。
LCD控制器使用一个基于时间的像素抖动算法和侦速率控制思想,可以支持单色,2-bitperpixel(4级灰度)或者4-bit-pixel(16级灰度)屏,并且它可以与256色(8BPP)和4096色
(12BPP)的彩色STNLCD连接。
它支持1BPP,2BPP,4BPP,8BPP的
调色板TFT彩色屏并且支持64K色(16BPP)和16M色(24BPP)
非调色板真彩显示。
LCD控制器是可以编程满足不同的需求,关于水平,垂直方向的像素数目,数据接口的数据线宽度,接口时序和刷新速率。
S3C2440LCD控制器被用来传送视频数据和生成必要的控制信号,比如VFRAME,VLINE,VCLK,VM,等等。
除了控制信号外,这
S3C2440还有作为视频数据的数据端口,它们是如图15-1
所示的VD[23:
0]。
LCD控制器由REGBANK,LCDCDMA,VIDPRCS,
TIMEGEN,和LPC3600(看15-1LCD控制器方块图)组成。
REGBANK由17个可编程的寄存器组和一块256*16的调色板内存组成,
它们用来配置LCD控制器的。
LCDCDMA是一个专用的DMA,它能自动地把在侦内存中的视频数据传送到LCD驱动器。
通过使用这个DMA通道,视频数据在不需要CPU的干预的情况下显示在LCD屏上。
VIDPRCS接收来自LCDCDMA的数据,将数据转换为合适
的数据格式,比如说4/8位单扫,4位双扫显示模式,然后通过数据端口VD[23:
0]传送视频数据到LCD驱动器。
TIMEGEN由可编程的逻辑组成,支持不同的LCD驱动器接口时序和速率的需求。
TIMEGEN块可以产生VFRAME,VLINE,VCLK,VM等等。
数据流描述如下:
LCDCDMA中存在FIFO存储器。
当FIFO为空,或者部分为空的时候,LCDCDMA请求从侦存储器中取得数据,是用突发的存储传输模式取得数据的(每一个突发请求,连续的取4个字
(16bytes)在总线传输过程中,不允许总线控制权交给另一个总线控制)当传输请求被存储控制器中的总线仲裁器接收了后,将会产生连续的4个字的数据传输从系统内存到内部的FIFO。
FIFO
的总共大小为28个字,由12个字的FIFOL和16个字的FIFOH分别组成。
S3C2440有2个FIFOs支持双扫显示模式。
假如是单扫模式,FIFOH将会被用到。
16BPP彩色模式:
1个像素有16个位(5位红,6位绿,5位蓝)视频数据。
但是STN控制器仅仅用到12位色彩数据。
这意味着每一个彩色数据的高4位将被使用,作为像素数据(R[15:
12],G[10:
7],B[4:
1])。
下面的表显示了在字中的数据格式。
2、触摸屏原理
S3C2440A触摸屏控制器
触摸屏的外接电路主要就是要控制上下两层导电层的通断情况以及如何取电压,取电压之后还需要将这个模拟量转换成数字量,这部分工作主要是靠S3C2440A芯片中的模数转换器部分来实现的。
即触摸屏的功能实现实际上分两部分,分别是触摸屏的外接电路部分和S3C2440A芯片自带的A/D转换控制部分。
S3C2440A芯片的
A/D转换器有8个输入通道。
转换结果为10bit数字,转换的过程是在芯片的内部自动实现的,转换的结果可以直接从寄存器中取值出
来,在进行一定的转后就可以得到触摸点的坐标。
触摸屏电路部分占用了ADC8个通道中的两个通道作为X、Y两个坐标轴方向的电压输入。
触摸屏接口模式
1.一般转换模式:
单独的转换模式一般使用来作为通用的ADC转换使用,这种模式可以通过初始化设置寄存器ADCCON,并且读写寄存器ADCDAT0来实现。
2.分别X/Y位置转换模式:
触摸屏控制器可以通过X/Y两个转换模式中的一个来完成,X位置模式写X位置转换数据到寄存
ADCDAT0,这时触摸屏接口产生中断源到中断控制器。
Y位置模式写Y位置转换数据到寄存器ADCDAT1,,这时触摸屏接口产生中断源到中断控制器。
3.自动X/Y位置转换模式:
自动X/Y位置转换模式的工作方式如下:
当触摸屏有触点触发时,触摸屏控制器依次转换X位置和Y位置。
在触摸屏控制器写X位置测试数据到寄存器ADCDAT0和写Y位置测试数据到寄存器ADCDAT1后,触摸屏接口产生中断源到中断控制
器。
4.等待中断模式:
当有触摸笔按下的时候,触摸屏控制器会产生中断信号(INT_TC)。
触摸屏控制器在等待模式时必须设置触摸屏接口XP、XM、YP、YM的状态。
4、课程设计开发计划
l9月2日-9月3日:
开发板连接测试各项功能是否正常
l9月4日-9月6日:
LCD功能开发,实现图片显示
l9月9日-9月10日:
触摸屏功能开发,实现点击中断处理函数
l9月11日-9月12日:
打地鼠游戏逻辑编写,各功能整合
l9月13日:
检查验收五、课程系统设计图
6、课程设计关键源码分析
480*272屏输出控制
#defineVBPD_480_272
(3)
#defineVFPD_480_272
(5)
#defineVSPW_480_272
#defineHBPD_480_272
(33)
#defineHFPD_480_272
(15)
#defineHSPW_480_272
(8)
#defineLCD_BLANK
12
#defineCLKVAL_TFT_480_272(3)
#defineADCPRS9//YH0627
staticvoidLcd_Init(U8size)//标准的LCD初始化函数
{
rGPCUP=0xffffffff;
//DisablePull-upregister
rGPCCON=0xaaaa56a9;
//InitializeVD[7:
0],LCDVF[2:
0],VM,VFRAME,VLINE,VCLK,LEND
rGPDUP=0xffffffff;
//DisablePull-upregisterrGPDCON=0xaaaaaaaa;
//InitializeVD[15:
8]
rLCDCON1=(CLKVAL_TFT_480_272<
<
8)|(MVAL_USED<
7)|(3<
5)|(12<
1)|0;
//比较关键的就是3<
5是将色彩输出模式为16BPP(5:
6:
5)rLCDCON2=(VBPD_480_272<
24)|(LINEVAL_TFT_480_272<
14)|(VFPD_480_272<
6)|
(VSPW_480_272);
rLCDCON3=(HBPD_480_272<
19)|(HOZVAL_TFT_480_272<
8)|(HFPD_480_272);
rLCDCON4=(MVAL<
8)|(HSPW_480_272);
rLCDCON5=(1<
11)|(1<
9)|(1<
8)|(1<
3)|(BSWP<
1)|(HWSWP);
//rLCDCON5=(1<
11)|(0<
9)|(0<
8)|(0<
6)|(BSWP<
//FRM5:
5,HSYNCandVSYNCareinverted
rLCDSADDR1=(((U32)LCD_BUFFER>
>
22)<
21)|M5D((U32)LCD_BUFFER>
1);
rLCDSADDR2=M5D(
((U32)LCD_BUFFER+(SCR_XSIZE_480_272*LCD_YSIZE_480_272*2))>
1);
rLCDSADDR3=(((SCR_XSIZE_480_272-
LCD_XSIZE_480_272)/1)<
11)|(LCD_XSIZE_480_272/1);
rLCDINTMSK|=(3);
//MASKLCDSubInterruptrTPAL=0;
//DisableTempPalette
}
staticvoidPutPixel(U32x,U32y,U32c)//LCDBUFFER区控制,用以输出LCD屏上像素点,为加快编译速度,直接操纵开发板固化内存地址0x30100000,这里也是通过查阅参考手册知道该地址起为LCD数据存取区域,跟显示屏分辨率有关系
if((x<
480)&
&
(y<
272)){
(*(volatileunsignedchar*)(0x30100000+(y*480+x)*2))=c&
0x0ff;
(*(volatileunsignedchar*)(0x30100000+(y*480+x)*2+1))=c>
8;
staticvoidPaint_Bmp(intx0,inty0,inth,intl,unsignedcharbmp[])
{//该函数用以读取图片信息并输出到LCD屏指定位置,其中bmp[]为图片转化为的16进制数组,x0,y0分别为图片起始坐标,h、l分别为图片宽度和高度
intx,y;
U32c;
intp=0;
for(y=0;
y<
l;
y++)
for(x=0;
x<
h;
x++)
c=bmp[p+1]|(bmp[p]<
8);
//这里由于色彩显示为16BPP,所以需要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 课程设计 报告 基于 ARM 平台 地鼠 游戏