嵌入式课程设计报告.docx
- 文档编号:3562024
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:19
- 大小:1.09MB
嵌入式课程设计报告.docx
《嵌入式课程设计报告.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
嵌入式课程设计报告
成绩_______
指导教师评定成绩:
审定成绩:
重庆邮电大学移通学院
课程设计报告
设计题目:
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 课程设计 报告