嵌入式课程设计报告.docx

上传人:b****5 文档编号:3562024 上传时间:2022-11-23 格式:DOCX 页数:19 大小:1.09MB
下载 相关 举报
嵌入式课程设计报告.docx_第1页
第1页 / 共19页
嵌入式课程设计报告.docx_第2页
第2页 / 共19页
嵌入式课程设计报告.docx_第3页
第3页 / 共19页
嵌入式课程设计报告.docx_第4页
第4页 / 共19页
嵌入式课程设计报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

嵌入式课程设计报告.docx

《嵌入式课程设计报告.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。

嵌入式课程设计报告.docx

嵌入式课程设计报告

成绩_______

指导教师评定成绩:

审定成绩:

 

重庆邮电大学移通学院

课程设计报告

设计题目:

LCD显示实验

学校:

重庆邮电大学移通学院

********

专业:

电气工程与自动化

班级:

学号:

指导教师:

 

设计时间:

2015年10月

重庆邮电大学移通学院

《嵌入式系统》课程设计任务书

引言:

嵌入式系统课程设计是自动化专业的一个重要教学环节,既有别于毕业设计,又不同于课堂教学。

它需要学生统筹运用所学各个专业的基本理论、基本方法对现实生活中的实际问题进行设计和调试。

一、设计题目:

LCD显示实验

本次设计LCD显示汉字和字母,要求掌握嵌入式系统设计的基本方法,巩固和加深对理论课中知识的理解,提高对所学知识的综合运用能力。

二、设计内容

(1)编写图形显示函数,在LCD上显示图形

(2)编写HZK16读取函数,在LCD上显示汉字

三、设计目的

(1)了解LCD显示的基本原理

(2)了解LCD的接口与控制方法

(3)掌握LCD显示图形的方法

(4)掌握LCD显示字符的方法(本次实验显示汉字)

四、实验设备

(1)JXARM9-2440教学实验箱

(2)ADT1000仿真器和ADTIDE集成开发环境

(3)串口连接线

五、设计步骤:

(1)对系统进行需求分析;

(2)初始化配置(各种寄存器);

(3)编写各种相关的中断程序并在主函数中调用这些程序;

(4)编译程序;

(5)使用仿真器进行调试。

六、设计要求

1.作业由两人一组完成,作业完成时要提交设计报告书、固化在教学平台中的可执行代码(附录)。

2.设计报告书要求:

(1)对设计题目的描述。

(2)设计思路说明,包括功能实现方法要点,硬件资源的使用,显示符号的约定说明等。

(3)软件总体结构,层次,功能划分等,核心代码注解。

(4)软件的调试修改过程,其中遇到的问题如何解决的,有什么技术难点问题。

(5)对完成的设计进行总结,说明哪些地方没有达到设计要求,是什么原因;哪些地方超过了设计要求,有什么优点和特色;有哪些改进设想和建议。

3.程序代码固化在平台的片内flash中,上电后可以自动运行。

4.结课时收纸质版作业。

摘要

LCD液晶显示器由于具有体积小、重量轻、低电压、低功耗等特点,因此适合于结合大规模集成电路开发出各种便携式显示产品,具有十分广阔的市场前景。

LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。

因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过。

S3C44B0中具有内置的LCD控制器,它具有将显示缓存中的图象数据传输到外部LCD驱动电路的逻辑功能。

在嵌入式系统中,数据和命令通过网络接口或串行口经过ARM程序处理后,或显示在LCD上,或传输到远端PC上,LCD是实现人机交互的一个重要通道。

关键词:

嵌入式系统ARM液晶屏LCD

 

一、绪论

随着计算机技术、微电子技术和网络技术的迅速发展,嵌入式系统在工农业等诸多领域得到了广泛的应用。

传统的8位单片机已经暴露了本身资源有限的缺点,越来越不能适应日渐复杂的应用需求,而随着32位处理器价格的不断下降,采用更高性能的32位处理器作为嵌入式系统的核心成为更加合理的选择。

ARM处理器是目前公认的业界领先的32位嵌入式RISC微处理器,已成为许多行业嵌入式解决方案的RISC标准[1]。

开发一个集嵌入式控制、高速数据采集和网络通信于一体,并提供友好的人机操作界面的硬件平台和多种总线接口,对于提高智能嵌入式系统可靠性、组网灵活性很有意义。

据此本文主要完成了以太网接口,USB接口,UART接口,含触摸屏的LCD显示接口,IIS音频接口以及电源管理单元电路的嵌入式系统的硬件设计。

1.1ARM的含义

ARM是AdvancedRISCMachines的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

1991年ARM公司成立于英国剑桥,本身不直接从事芯片生产,主要出售芯片设计技术的授权半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。

目前,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。

1.2ARM微处理器的特点及应用 

ARM架构是面向低预算市场设计的第一款RISC微处理器,除了RISC的一些特点外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗。

ARM微处理器具有体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集;大量使用寄存器,指令执行速度更快;大多数数据操作在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定等特点。

 

ARM微处理器主要应用在工业控制、无线通讯、网络应用、消费电子、成像产品、安全产品、存储产品、汽车行业等八个领域。

 

1.3嵌入式系统的定义 

嵌入式系统被定义为以应用为中心,以计算机技术为基础、软件硬件可裁剪、适用于应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统[1]。

嵌入式系统的最大特点是其所具有的目的性或针对性,即每一套嵌入式系统的开发设计都有其特殊的应用场合与特定功能,这也是嵌入式系统与通用计算机系统最主要的区别。

 

1.4S3C2440微处理器概述 

S3C2440是Samsung公司设计的一款高性价比16/32位ARM9系列微处理器,内含一个由ARM公司设计的16/32位ARM920T RISC处理器核,采用五级流水线和哈佛体系结构,工作频率最高可达533MHz;同时还具备体积小、成本低、功耗低、资源众多等诸多特点。

内部集成的常用资源[4

]主要有:

外部存储控制器(SDRAM控制和片选逻辑);LCD控制器(最大支持4K色STN和256K色TFT屏),提供1通道LCD专用DMA;4通道DMA并有外部请求引脚;3通道UART(IrDA1.0,64字节TxFIFO和64字节RxFIFO);2通道SPI;1通道IIC-BUS接口(支持多主机);1通道IIS-BUS音频编码解码器接口;AC’97解码器接口;兼容SD卡接口协议1.0版和MMC卡2.11版;2端口USB主机和1端口USB设备;4通道PWM定时器和1通道内部定时器,看门狗定时器;8通道10比特ADC和触摸屏接口;具有日历功能的RTC;相机接口(最大支持4096*4096像素);130个通用I/O口和24通道外部中断源等资源[4]。

这些资源大大的方便了应用系统的开发,同时节约开发成本,缩短开发周期,提高了系统的性价比。

 

二、系统分析及硬件设计

2.1S3C2440芯片介绍

2.1.1工作原理

LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。

因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。

光源的提供方式有两种:

透射式和反射式。

笔记本电脑的LCD显示屏即为透射式,屏后面有一个光源,因此外界环境可以不需要光源。

而一般微控制器上使用的LCD为反射式,需要外界提供光源,靠反射光来工作

2.1.2LCD的驱动控制

(1)总线驱动方式

一般带有驱动模块的LCD显示屏使用总线驱动方式,这种LCD可以方便地与各种低档单片机进行接口,如8051系列单片机。

由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。

驱动模块具有八位数据总线,外加一些电源接口和控制信号。

而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。

由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。

(2)扫描器控制方式

扫描器控制方式LCD显示屏没有驱动电路,需要与驱动电路配合使用。

这种LCD体积小,但需要另外的驱动芯片。

通常可以使用带有LCD驱动能力的高档MCU驱动,如ARM系列的S3C2440。

S3C2440中具有内置的LCD控制器,它具有将显示缓存中的图象数据传输到外部LCD驱动电路的逻辑功能。

S3C2440中内置的LCD控制器可支持灰度LCD和彩色LCD。

可以支持单色、4级灰度和16级灰度模式的灰度LCD以及256级彩色。

对于不同尺寸的LCD,具有不同数量的垂直和水平象素、数据接口的数据宽度、接口时间及刷新率,而LCD控制器可以进行编程控制相应的寄存器值,以适应不同的LCD显示板。

2.1.3S3C2440LCD控制器逻辑框图

2.1.4S3C2440LCD控制器外部接口信号

2.1.4JXARM9-2440LCD图形显示方式

JXARM9-2440的LCD显示模块由S3C2440的LCD控制器和256色彩色LCD显示器组成。

其显示方式以直接操作显示缓冲区的内容进行,LCD控制器会通过DMA从显示缓冲区中获取数据,不需要CPU干预。

本系统采用的LCD分辨率为320X240,工作在256色彩色显示模式,在该模式下,显示缓冲区中的一个字节数据代表LCD上的一个点的颜色信息,因此,所需要的显示缓冲区大小为320X240X1字节。

其中每个字节的彩色数据格式如下图所示

 

2.1.5JXARM9-2440LCD控制器初始化

初始化LCD端口,由于LCD控制端口与CPU的GPIO端口是复用的,因此必须设置相应寄存器为LCD驱动控制端口

申请显示缓冲区,大小为320X240X1字节

初始化LCD控制寄存器,包括设置LCD分辨率,扫描频率,显示缓冲区等

2.1.6LCD字符显示

LCD字符显示就是将字库(汉字字库、英文字库或者其他语言字库)中的字模以图形方式显示在LCD上,其显示原理和图形显示没有差别,只要把汉字当成一幅画,画在显示屏上就可以了。

关键在于如何取得字符的图形,也就是字符的点阵字模。

在常用的汉字点阵字库文件。

例如常用的16×16点阵HZK16文件,按汉字区位码从小到大依次存有国标区位码表中的所有汉字。

2.1.7汉字字模

一个汉字字模占用的字节数根据汉字库的汉字大小不同而不同。

以HZK16点阵字库为例,字模中每一点使用一个二进制位(Bit)表示,如果是1,则说明此处有点,若是0,则说明没有。

这样,一个16×16点阵的汉字总共需要16*16/8=32个字节表示。

字模的表示顺序为:

先从左到右,再从上到下,也就是先画左上方的8个点,再是右上方的8个点,然后是第二行左边8个点,右边8个点,依此类推,画满16×16个点。

因此,HZK16中汉字在汉字库中具体位置的计算公式为:

(94*(qh-1)+(wh-1))*32。

汉字“房”的机内码为十六进制的“B7BF”,其中“B7”表示区码,“BF”表示位码。

所以“房”的区位码为0B7BFH-0A0A0H=171FH。

将区码和位码分别转换为十进制得汉字“房”的区位码为“2331”,即“房”的点阵位于第23区的第31个字的位置,相当于在文件HZK16中的位置为第32×[(23-1)×94+(31-1)]=67136B以后的32个字节为“房”的显示点阵。

2.2系统电路设计

2.2.1硬件系统结构 

为降低开发难度,方便二次开发,系统采用核心板加底板的设计方案,核心板和底板之间通过连接器相连。

这样可以在核心板不变动的情况下,更改底板的功能组成,以适用不同的功能。

同时,由于核心板采用多层PCB 板设计,而底板采用双层板即可,从而大大的降低了系统的成本。

系统硬件结构如图1

微处理器:

即S3C2440A,为系统的控制中心; 

Flash电路:

用于存放嵌入式操作系统及用户应用程序,其特点是系统掉电后数据不易丢失; 

SDRAM电路:

系统代码的运行场所,其特点是系统掉电后数据即丢失; 

晶振电路:

12MHz 的无源晶振通过芯片内部的PLL电路为S3C244A0芯片提供高达533MHz的时钟频率

JTAG接口:

采用ARM公司的提供的标准20脚JTAG仿真调试接口电路,S3C2440A芯片内部有JTAG核,因此,可以通过外部JTAG调试电缆或仿真器与开发系统连接调试和编程。

 

复位电路:

为系统提供复位信号。

 为防止干扰信号引起误复位操作,常采用专用复位芯片来产生复位信号。

如:

MAX811等。

2.2.2LCD控制器电路

LCD控制器用来传输图像数据并产生相应的控制信号,S3C2440ALCD控制器能支持高达4K色STN屏和256K色TFT屏,支持1024×768分辨率下的各种液晶屏,具有LCD专用DMA。

LCD控制器产生的控制信号和数据信号主要有:

VFRAME:

LCD控制器和LCD驱动器之间的帧同步信号,LCD控制器在一个完整帧显示完成后插入一个VFRAME信号,开始新一帧的显示。

VLINE:

LCD控制器和LCD驱动器之间的行同步信号,LCD控制器在整行数据移入LCD驱动器后插入一个VLINE信号。

VCLK:

LCD控制器和LCD驱动器之间的像素时钟信号,由LCD控制器送出的数据在VCLK的上升沿处送出,在VCLK的下降沿处被LCD驱动器采样。

VM:

数据输出使能信号,在VM信号跃变成高电平后行数据信号开始由LCD控制器输出至LCD驱动器,当VM信号跃变为低电平后数据输出停止。

数据线:

也就是RGB信号线,S3C2440ALCD控制器有VD[0:

23]共24根数据线,数据格式不同,接线方式就不同。

本文用的是RGB565方式,只需要16根数据线(红色5根,绿色6根,蓝色5根)。

其数据线接线方式所示:

图2-1LCD控制器电路

2.2.3时序和数据匹配电路 

由于S3C2440A 的LCD控制器与LCD屏LQ035Q7DH01在数据格式及显示时序上无法匹配,需要选用一种时序控制IC或者用CPLD(也就是通常所说的LCD伴侣芯片)来对不同数据格式的数据接口进行映射。

但CPLD面积较大、成本较高,因而通常只在需要对电路进行灵活配置的情况下才使用。

本文时序控制IC选用夏普公司的LZ9FC22。

该芯片专用于对TFT型QVGA屏幕(屏幕分辨率320×240)的LCD进行时序控制。

这是一个18bit(R6G6B6)的控制器,由于本文采用的是RGB565 16位工作模式,所以将其输入引脚R0和B0接地。

时序和数据匹配电路如图所示:

图2-2时序和数据匹配电路

2.3电路原理图

2.3.1电路图

图2-3电路图

2.3.2多路电压产生电路

LCD屏所需各电压及产生方式:

图2-4多路电压产生电路

2.3.3显示驱动和LQ035Q7DH01的接口电路

电路如图所示:

图2-5显示驱动和LQ035Q7DH01的接口电路

三、系统软件设计

3.1系统流程图

图3-1液晶显示主流程图

图3-2初始化流程图

3.2系统程序设计

3.2.1LCD初始化控制端口模块设计

数据和控制端口初始化函数portinit(),主要对端口C控制寄存器和端口D控制寄存器进行配置。

从而完成对数据端口VD[15:

0]和控制端口GPC、GPD初始化工作。

初始化端口模块流程图如图3-2所示。

图3-3端口初始化模块流程图

具体代码如下:

staticvoidLcd_Port_Init(void)

{

rGPCUP=0xffffffff;//禁止上拉电阻

rGPDUP=0xffffffff;//禁止上拉电阻

rGPCCON=0xaaaa02a8;//初始化VD[7:

0]

rGPDCON=0xaaaaaaaa;//初始化VD[15:

8]

}

3.2.2LCD初始化功能模块设计

LCD要能正常工作,需根据其参数对其进行初始化。

LCD初始化功能模块

Lcd_Init(),通过配置LCDCON[5:

1]5个控制寄存器,完成模块初始化工作,主要包括以下3个部分:

1.设定VCLK参数、显示模式为LCD面板、色彩模式为16BPP、禁止LCD

控制信号和视频输出;

2.设定VBPD、VFPD、HBPD、HFPD参数值;

3.设置扫描LCD时的帧缓冲器开始、结束地址,设定虚拟屏幕的偏移尺寸和结束初始化端口C控制寄存器初始化数据端口VD[15:

0]开始初始化端口D控制寄存器第四章LCD全彩显示设计31帧中的视口宽度参数,禁止帧同步、FIFO中断和临时调色板。

初始化模块流程图如图3-3所示。

图3-4初始化功能模块流程图

具体代码如下:

voidLcd_Init(void)

{

/*CLKVAL=7,16BPP,显示模式:

TFT*/

rLCDCON1=(LCD_PIXCLOCK<<8)|(3<<5)|(12<<1);

/*VBPD=20,VFPD=3,VSPW=2*/

rLCDCON2=(LCD_UPPER_MARGIN<<24)|((LCD_HEIGHT–1)<<14)

|(LCD_LOWER_MARGIN<<6)|(LCD_VSYNC_LEN<<0);

/*HBPD=4,HFPD=3*/

rLCDCON3=(LCD_RIGHT_MARGIN<<19)|((LCD_WIDTH-1)<<8)|

(LCD_LEFT_MARGIN<<0);

/*HSPW=18*/

rLCDCON4=0x12;

四、系统调试

4.1LCD汉字显示实验步骤 

1.参照创建好的模板工程dispchar,新建一个工程dispchar,参照dispchar修改dispchar的工程设置,并添加LCD显示函数文件。

 

2.创建dispchar.c并加入到工程dispchar中。

 

3.编辑dispchar.c文件,添加Main函数,并在其中执行lcd_init操作。

 

4.编写一个hzk16显示函数voidlcd_disp_hzk16(intx,inty,char*s,int

 colour),将字符串s以colour颜色显示到LCD的(x,y)处,所使用的汉字库在include\hzk16.h中以hzk16数组表示。

 

5.在Main函数中,LCD初始化后,调用lcd_disp_hzk16显示一串汉字。

 

6.编译dispchar,成功后,下载并运行,观察结果

4.2显示字母和汉字

显示字母‘A’显示汉字‘你’

图4-1显示字母和汉字

 

五、总结

在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

课程设计是我们专业课程知识综合应用的实践训练,也是我们迈向社会,从事职业工作前一个必不少的过程。

通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。

在这次设计过程中,体现出设计ARM驱动程序的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

在此感谢我们的课设老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪。

同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持。

 

参考文献

【1】TDO35STEBITFTLEDspecification[Z].ToppolyOptoelec·tronicsCorp,2000.

【2】张蛤.32位嵌入式系统硬件设计与调试[M].北京:

机械工业出版社,2005.

【3】孙天泽,袁文菊,张海峰.嵌入式设计及Linux驱动开发设计——基于ARM9处理器[M].北京:

电子工业出版社,2005.

【4】CorbetJ,RubiniA,eta1.Linux设备驱动程序(第二版)[M].魏永明,骆刚,等译.北京:

中国电力出版社,2002.

【5】唐泽圣,周嘉玉,李新友.计算机图形学基础[M].北京:

清华大学出版社,1995.

 

附录

一、源程序

#defineGLOBAL_CLK1

#include"def.h"

#include"option.h"

#include"2440addr.h"

#include"2440lib.h"

#include"2440slib.h"

#include"word.h"

/*

*#defineLCD_W35

*

*#elifdefined(LCD_W35)

*

*#defineLCD_WIDTH320宽//在option.h文件里面有他们的定义

*#defineLCD_HEIGHT240高

*#defineLCD_PIXCLOCK4时钟参数

*#defineLCD_RIGHT_MARGIN0x44右边沿

*#defineLCD_LEFT_MARGIN0x04左边沿

*#defineLCD_HSYNC_LEN0x01行无效脉冲宽度

*#defineLCD_UPPER_MARGIN10上边沿

*#defineLCD_LOWER_MARGIN4下边沿

*#defineLCD_VSYNC_LEN1列无效脉冲宽度

*#defineLCD_CON5((1<<11)|(1<<8)|(1<<9)|(1<<0))

*/

unsignedintlcd_buf[LCD_HEIGHT][LCD_WIDTH];//24bpp,定义为(unsignedint)32位

voiddelay(unsignedinttimes);

voidlcd_init(void);

voidlcd_brush_background(unsignedintcolor);

voidlcd_draw_circle(unsignedintcolor,unsignedintradius);

voidlcd_draw_word(unsignedintx,unsignedinty,unsignedintcolor,constunsignedcharch[]);

voidlcd_draw_ascii(unsignedintx,unsignedinty,unsignedintcolor,constunsignedcharch[]);

voidlcd_put_pixel(unsignedintx,unsignedinty,unsignedintcolor);

intMain(void)

{

lcd_init();

lcd_brush_background(0xffffff);

lcd_draw_word(8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1