嵌入式应用实验报告,实验四 LCD显示实验信科10级cumt
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四LCD显示实验
一、LCD显示原理
LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。
光源的提供方式有两种:透射式和反射式。笔记本电脑的LCD显示屏即为透射式,屏后面有一个光源,因此外界环境可以不需要光源。而一般微控制器上使用的LCD为反射式,需要外界提供光源,靠反射光来工作。
LCD的驱动控制–总线驱动方式:
一般带有驱动模块的LCD显示屏使用总线驱动方式,这种LCD可以方便地与各种低档单片机进行接口,如8051系列单片机。由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。驱动模块具有八位数据总线,外加一些电源接口和控制信号。而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。由于只有八条数据线,
因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。
扫描器控制方式LCD显示屏没有驱动电路,需要与驱动电路配合使用。这种LCD体积小,但需要另外的驱动芯片。通常可以使用带有LCD驱动能力的高档MCU驱动,如ARM系列的S3C44B0。
S3C44B0中具有内置的LCD控制器,它具有将显示缓存中的图象数据传输到外部LCD驱动电路的逻辑功能。S3C44B0中内置的LCD控制器可支持灰度LCD和彩色LCD。可以支持单色、4 级灰度和16 级灰度模式的灰度LCD以及256级彩色。对于不同尺寸的LCD,具有不同数量的垂直和水平象素、数据接口的数据宽度、接口时间及刷新率,而LCD控制器可以进行编程控制相应的寄存器值,以适应不同的LCD显示板。
二JXARM9-2410 LCD图形显示原理:
JXARM9-2410的LCD显示模块由S3C2410的LCD控制器和256色其显示方式以直接操作显示缓冲区的内容进行,LCD控制器会通过DMA从显示缓冲区中获取数据,不需要CPU干预。彩色LCD显示器组成。本系统采用的LCD分辨率为320X240,工作在256色彩色显示模式,在该模式下,显示缓冲区中的一个字节数据代表LCD上的一个点的颜色信息,因此,所需要的显示缓冲区大小为320X240X1字节。其中每个字节的彩色数。
其中每个字节的彩色数据格式如下图所示:
JXARM9-2410 LCD控制器初始化:
初始化LCD端口,由于LCD控制端口与CPU的GPIO端口是复用的,因此必须设置相应寄存器为LCD驱动控制端口。
申请显示缓冲区,大小为320X240X1字节。
初始化LCD控制寄存器,包括设置LCD分辨率,扫描频率,显示缓冲区等。
HZK组成:每个汉字占用32个字节,每个区为94个汉字。
在计算机中,汉字是以机内码的形式存储的,每个汉字占用两个字节:第一个字节为区码(qh),为了与ASCII码区别,范围从十六进制的0A1H开始(小于80H的为ASCII码字符),对应区位码中区码的第一区;第二个字节为位码(wh),范围也是从0A1H开始,对应某区中的第一个位码。
这样,将汉字机内码减去0A0AH就得该汉字的区位码。因此,汉字在汉字库中的具体位置计算公式为:
location = (94*(qh-1)+wh-1)*一个汉字字模占用字节数
一个汉字字模占用的字节数根据汉字库的汉字大小不同而不同。以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个字节为“房”的显示点阵。
三、实验基本步骤:
1.将仿真器及usb线,com串行线,S3C2410实验板与电脑连接好。
2.添加asm、common、include、misc、五个文件,在软件ADT中新建文件,建立工程。
3.设置运行所需要的参数:将一般设置设为arm9usb,添加相应的脚本文件。
4.main函数及显示函数如下:
********************************************************************* /
void Main(void)
{
/* 配置系统时钟*/
ChangeClockDivider(1,1); // 1:2:4
ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz
/* 初始化端口*/
Port_Init();
/* 初始化串口*/
Uart_Init(0,115200);
Uart_Select(0);
/* 打印提示信息*/
PRINTF("\n---LCD测试程序---\n");
PRINTF("\n请将UART0与PC串口进行连接,然后启动超级终端程序(115200, 8, N, 1)\n");
/* LCD初始化*/
Lcd_Port_Init();
#ifdef STN_LCD
Lcd_Init(MODE_CSTN_8BIT);
Glib_Init(MODE_CSTN_8BIT);
Lcd_CstnOnOff(1);
Glib_ClearScr(0xff, MODE_CSTN_8BIT);
#else
#ifdef TFT_8_0
rGPCCON &= ~(3<<8);
rGPCCON |= (2<<8);
Lcd_Init(MODE_TFT_16BIT_640480);
Glib_Init(MODE_TFT_16BIT_640480);
Glib_ClearScr(0xffff, MODE_TFT_16BIT_640480);