ARM课程设计LCD显示 2Word文档下载推荐.docx
《ARM课程设计LCD显示 2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ARM课程设计LCD显示 2Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
1.1.2RVDS简介
RealViewDevelopmentSuite(RVDS)是ARM公司继SDT与ADS1.2之后主推的新一代开发工具。
RVDS集成的RVCT是业内公认的能够支持所有ARM处理器,并提供最好的执行性能的编译器。
RealViewDeveloperSuite支持所有ARM系列核心,并与众多第三方实时操作系统及工具商合作简化开发流程。
RVDS包含有四个模块:
(1)IDE:
RVDS中集成了EclipseIDE,用于代码的编辑和管理。
支持语句高亮和多颜色显示,以工程的方式管理代码,支持第三方Eclipse功能插件。
(2)RVCT:
RVCT是业界最优秀的编译器,支持全系列的ARM和XSCALE架构,支持汇编、C和C++。
(3)RVD:
是RVDS中的调试软件,功能强大,支持Flash烧写和多核调试,支持多种调试手段,快速错误定位。
(4)RVISS:
是指令集仿真器,支持外设虚拟,可以使软件开发和硬件开发同步进行,同时可以分析代码性能,加快软件开发速度。
RVDS具有代码小执行效率高、支持Linux操作系统、调试功能强大、可虚拟外设等优点,同时还具有内容丰富的在线文档。
1.1.3芯片LPC2106简介
LPC2106/2105/2104包含一个支持仿真的ARM7TDMI-SCPU、与片内存储器控制器接口的ARM7局部总线、与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI外设总线(VPB,ARMAMBA总线的兼容超集)。
LPC2106/2105/2104将ARM7TDMI-S配置为小端(little-endian)字节顺序。
AHB外设分配了2M字节的地址范围,它位于4G字节ARM存储器空间的最顶端。
每个AHB外设都分配了16k字节的地址空间。
LPC2106/2105/2104的外设功能(中断控制器除外)都连接到VPB总线。
AHB到VPB的桥接将VPB总线与AHB总线相连。
VPB外设也分配了2M字节的地址范围,从3.5GB地址点开始。
每个VPB外设在VPB地址空间内都分配了16k字节地址空间。
它拥有以下特性:
◆ARM7TDMI-S处理器
◆128k字节片内Flash程序存储器,具有ISP和IAP功能。
◆Flash编程时间:
1ms可编程512字节,扇区擦除或整片擦除只需400ms。
◆64/32/16K字节静态RAM(LPC2106/2105/2104)
◆向量中断控制器
◆仿真跟踪模块,支持实时跟踪
◆RealMonitor模块支持实时调试
◆标准ARM测试/调试接口,兼容现有工具
◆极小封装:
TQFP48(7×
7mm2)
◆双UART,其中一个带有完全的调制解调器接口
◆I2C串行接口
◆SPI串行接口
◆两个定时器,分别具有4路捕获/比较通道
◆多达6路输出的PWM单元
◆实时时钟
◆看门狗定时器
◆通用I/O口
◆CPU操作频率可达60MHz
◆双电源
-CPU操作电压范围:
1.65V~1.95V(1.8V±
8.3%)
-I/O电压范围:
3.0V~3.6V(3.3V±
10%)
◆两个低功耗模式:
空闲和掉电
◆通过外部中断将处理器从掉电模式中唤醒
◆外设功能可单独使能/禁止,实现功耗最优化
◆片内晶振的操作频率范围:
10MHz~25MHz
◆片内PLL允许CPU以最大速度运行,可以在超过整个晶振操作频率范围的情况下使用。
由于拥有以上特性,LPC2106适用于nternet网关、串行通信协议转换器、访问控制、工业控制、医疗设备及其它各种类型的应用。
1.2LCD显示原理和初始化流程图
1.2.1LCD特点
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:
发光管、LED数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:
◆显示质量高
由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
◆数字式接口
液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
◆体积小、重量轻
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
◆功耗低
相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
1.液晶显示屏(LCD)
液晶屏(LCD:
LiquidCrystalDisplay)主要用于显示文本及图形信息。
液晶显示屏具有轻薄、体积小、低耗电量、无辐射危险、平面直角显示以及影像稳定不闪烁等特点,因此在许多电子应用系统中,常使用液晶屏作为人机界面。
主要类型及性能参数:
液晶显示屏按显示原理分为STN和TFT两种:
STN(SuperTwistedNematic,超扭曲向列)液晶屏
STN液晶显示器与液晶材料、光线的干涉现象有关,因此显示的色调以淡绿色与橘色为主。
STN液晶显示器中,使用X、Y轴交叉的单纯电极驱动方式,即X、Y轴由垂直与水平方向的驱动电极构成,水平方向驱动电压控制显示部分为亮或暗,垂直方向的电极则负责驱动液晶分子的显示。
STN液晶显示屏加上彩色滤光片,并将单色显示矩阵中的每一像素分成三个子像素,分别通过彩色滤光片显示红、绿、蓝三原色,也可以显示出色彩。
单色液晶屏及灰度液晶屏都是STN液晶屏。
TFT(ThinFilmTransistor,薄膜晶体管)彩色液晶屏
随着液晶显示技术的不断发展和进步,TFT液晶显示屏被广泛用于制作成电脑中的液晶显示设备。
TFT液晶显示屏既可在笔记本电脑上应用(现在大多数笔记本电脑都使用TFT显示屏),也常用于主流台式显示器。
使用液晶显示屏时,主要考虑的参数有外形尺寸、分辨率、点宽、色彩模式等。
以下是EmbestArmEduKitII实验板所选用的液晶屏(LRH9J515XASTN/BW)主要参数:
可视屏幕的尺寸及参数示意如图5-1所示:
液晶屏外形如图5-2所示:
驱动与显示
液晶屏的显示要求设计专门的驱动与显示控制电路。
驱动电路包括提供液晶屏的驱动电源和液晶分子偏置电压,以及液晶显示屏的驱动逻辑;
显示控制部分可由专门的硬件电路组成,也可以采用集成电路(IC)模块,比如EPSON的视频驱动器等;
还可以使用处理器外围LCD控制模块。
实验板的驱动与显示系统包括S3C44B0X片内外设LCD控制器、液晶显示屏的驱动逻辑以及外围驱动电路。
2.S3C44B0XLCD控制器
介绍S3C44B0X处理器集成了LCD控制器,支持4位单扫描、4位双扫描和8位单扫描工作方式。
处理器使用内部RAM区作为显示缓存,并支持屏幕水平和垂直滚动显示。
数据的传送采用DMA(直接内存访问)方式,以达到最小的延迟。
根据实际硬件水平和垂直像素点数、传送数据位数、时间线和帧速率方式等进行编程以支持多种类型的液晶屏。
可以支持的液晶类型有:
单色液晶
1.4级或16级灰度屏(基于时间抖动算法或帧速率控制--FRC)
2.256色彩色液晶(STN液晶)
显示控制LCD控制器主要提供液晶屏显示数据的传送、时钟和各种信号的产生与控制功能。
S3C44B0X处理器的LCD控制器主要部分框图如图5-3所示:
(1)LCD控制器接口说明
(2)LCD控制器信号时序
(3)扫描模式支持
S3C44B0X处理器LCD控制器扫描工作方式通过DISMOD(LCDCON1[6:
5])设
置。
4位单扫描---显示控制器扫描线从左上角位置进行数据显示。
显示数据从VD[3:
0]获得;
彩色液晶屏数据位代表RGB色
4位双扫描---显示控制器分别使用两个扫描线进行数据显示。
0]获得高扫描数据;
VD[7:
4]获得低扫描数据;
8位单扫描---显示控制器扫描线从左上角位置进行数据显示。
显示数据从VD[7:
(4)数据的存放与显示
液晶控制器传送的数据表示了一个像素的属性:
4级灰度屏用两个数据位;
16级灰度屏时使用4个数据位;
RGB彩色液晶屏使用8个数据位(R[7:
5]、G[4:
2]、B[1:
0])。
显示缓存中存放的数据必须符合硬件及软件设置,即要注意字节对齐方式。
在4位或8位单扫描方式时,数据的存放与显示如图5-8所示:
在4位双扫描方式时,数据的存放与显示如图5-9所示:
(5)LCD控制器寄存器
S3C44B0XLCD处理器所包含的可编程控制寄存器共有18个。
表5-4LCD控制器寄存器列表
注:
以下实验说明中只是简单地介绍控制寄存器的含义,详细使用请参考S3C44B0X处理器数据手册。
(6)LCD控制器主要参数设定
正确使用S3C44B0XLCD控制器,必须设置控制器所有18个寄存器。
控制器信号VFRME、VCLK、VLINE和VM要求配置控制寄存器LCDCON1/2;
液晶屏的显示与控制,以及数据的存取控制要求配置其他相关寄存器,详见以下说明。
设置VM、VFRAME、VLINEVM信号通过改变液晶的行列电压的极性来控制像素的显示,VM速率可以配置LCDCON1寄存器的MMODE位及LCDCON2寄存器的MVAL[7:
0]。
VM速率=VLINE速率/(2*MVAL)
VFRAME和VLINE信号可以根据液晶屏的尺寸及显示模式,配置LCDCON2寄存器的HOZVAL和LINEVAL值,即:
HOZVAL=(水平尺寸/VD数据位)–1
彩色液晶屏时:
水平尺寸=3*水平像素点数;
VD数据位:
=4---4位单/双扫描模式;
=8---8位单扫描模式
LINEVAL=垂直尺寸–1单扫描模式
LINEVAL=(垂直尺寸/2)-1双扫描模式
设定VCLK
VCLK是LCD控制器的时钟信号,S3C44B0X处理器在66MHz时钟频率时最高频率为16.5MHz,这可以支持现在所有液晶屏类型。
VCLK的计算需要先计算数据传送速率,并由此设定的一个大于数据传送速率的值为VCLKVA(LCDCON1[21:
12])。
数据传送速率=水平尺寸x垂直尺寸x帧速率x模式值(MV)
表5-5模式值
帧速率可由以下公式得到
VCLK(Hz)=MCLK/(CLKVALx2)LKVAL大于数据传送速率且不小率(Hz)=((1/VCLK)x(HOZVAL+1)+(1/MCLK)x(WLH+WDLY+LINEBLANK))x(LINEVAL+1)]-1VCLK(Hz)=(HOZVAL+1)/[(1/(帧速率x(LINEVAL+1)))-((WLH+WDLY+LINEBLANK)/MCLK)]
LINEBANK----水平扫描信号LINE持续时间设置(MCLK个数)
LINEVAL----显示屏的垂直尺寸
VCLK的计算还可以使用以下公式:
设定数据帧显示控制(LCDBASEU、LCDBASEL、PAGEWIDTH、OFFSIZE、
LCDBANK)
(1)LCDBASEU设置显示扫描方式中的开始地址(单扫描方式)或高位缓存地址(双扫描方式);
(2)LCDBASEL是设置双扫描方式的低位缓存开始地址。
可用以下计算公式:
LCDBASEL=LCDBASEU+(PAGEWIDTH+OFFSIZE)x(LINEVAL+1)
(3)PAGEWDTH是显示存储区的可见帧宽度(半字数)
(4)OFFSIZE半字数。
是显示存储区的前行最后半字和后行第一个半字之间的半字数
(5)LCDBANK是访问显示存储区的地址A[27:
22]值。
ENVID=1时该值不能改变。
(7)液晶屏的支持与设定
对于4级灰度屏(2位数据),LCD控制器通过设置BULELUT[15:
0]指定使用
的灰度级,并且从0–4级使用BULELUT的4个数据位。
16级灰度屏使用BULELUT的每一位来表示灰度级别。
使用16级灰度屏时,LCD控制器参数设定可参考:
参考1LCD液晶屏:
320*240;
16级灰度;
单扫描模式
数据帧首地址=0xc300000;
偏移点数=2048点(512个半字);
LINEVAL=240-1=0xEF;
PAGEWIDTH=320*4/16=0x50;
OFFSIZE=512=0x200;
LCDBANK=0xc300000>
>
22=0x30;
LCDBASEU=0x100000>
1=0x80000;
LCDBASEL=0x80000+(0x50+0x200)*(0xef+1)=0xa2b00;
参考2LCD液晶屏:
双扫描模式
LINEVAL=120-1=0x77;
LCDBASEL=0x80000+(0x50+0x200)*(0x77+1)=0x91580;
彩色屏的LCD控制器参数设定参考实验程序。
五.实验设计
1.电路设计
进行液晶屏控制电路设计时必须提供电源驱动、偏压驱动以及LCD显示控制器。
由于S3C44B0X处理器本身自带LCD控制器,而且可以驱动实验板所选用的液晶屏,所以控制电路的设计可以省去显示控制电路,只需进行电源驱动和偏压驱动的电路设计即可。
液晶电路结构框图
引脚说明
表5-6液晶屏管脚
控制电路设计
由前述可知实验板所选用的液晶屏的驱动电源是21.5V,因此直接使用实验系统的3V或5V电源时需要电压升压控制,实验系统采用的是MAX629电源管理模块,以提供液晶屏的驱动电源。
偏压电源可由系统升压后的电源分压得到。
以下是S3CEV40实验板的电源驱动和偏压驱动参考电路。
2.软件程序设计
由于实验要求在液晶显示屏上显示包括矩形、字符和位图文件,所以实验程序设计主要包括三大部分。
设计思路
使用液晶屏显示最基本的是像素控制数据的使用,像素控制数据的存放与传送形式,决定了显示的效果。
这也是所有显示控制的基本程序设计思想。
图形显示可以直接使用像素控制函数实现;
把像素控制数据按一定形式存放即可实现字符显示,比如ASCII字符、语言文字字符等。
EmbestARM教学系统的像素控制函数按如下设计:
位图文件显示
通过把位图文件转换成一定容量的显示数组,并按照一定的数据结构存放。
与字符的显示一样,传送的数据需要设计软件控制程序。
EmbestARM教学系统位图显示的存放数据结构及控制程序:
constINT8Ug_ucBitmap[]={//位图文件数据};
位图显示(请参考样例程序)
voidbitmap_view320x240x256(UINT8T*pBuffer);
1.3Proteus仿真电路
使用Proteus进行仿真电路设计,下面依次介绍仿真细节。
1.3.1Proteus仿真元件清单
元件名称
规格型号
单位
数量
ARM7芯片
LPC2106
片
1
LCD1602
LM016L
个
瓷片电容
CAP-ELEC
电源
+3.3V
+1.8V
电阻
10K欧姆
只
2
1.3.2Proteus仿真电路图截图
1.4程序代码分模块介绍
实验的C语言程序代码如下所示(附注释):
//main.c
/****************************************************************************
*File:
main.c
*功能:
向LCD输出HelloWorld
****************************************************************************/
#include"
config.h"
#definers(1<
<
8)
#definerw(1<
9)
#defineen(1<
10)
#definebusy(1<
7)
uint8txt[]={"
HelloWorld"
};
*名称:
ChkBusy()
检查总线是否忙
voidChkBusy()
{
IODIR=0x700;
while
(1)
{
IOCLR=rs;
IOSET=rw;
IOSET=en;
if(!
(IOPIN&
busy))break;
IOCLR=en;
}
IODIR=0x7ff;
}
WrOp()
写函数
voidWrOp(uint8dat)
ChkBusy();
IOCLR=rs;
//全部清零
IOCLR=rw;
IOCLR=0xff;
//先清零
IOSET=dat;
//再送数
IOSET=en;
IOCLR=en;
WrDat()
写数据函数
voidWrDat(uint8dat)
IOSET=rs;
lcd_init()
lcd初始化函数
voidlcd_init(void)
WrOp(0x38);
WrOp(0x06);
//光标加1
WrOp(0x0c);
//开显示
/*********************************************************************