版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、12864LCD 液晶显示原理及使用方法液晶简介液晶是一种在一定温度范围内呈现既不同于固态液态又不同于气态的特殊 物质态,它既具有各向异性的晶体所特有的双折射性又具有液体的流动性液晶显 示器件 (英文的简写为 LCD)就是利用液晶态物质的液晶分子排列状态在电场中 改变而调制外界光的被动型显示器件。点阵式图形液晶显示屏是 LCD 的一种能够动态显示图形汉字以及各种符号 信息为各种电子产品提供了友好的人机界面点阵式图形液晶显示屏的主要特点 如下(这些特点也就是 LCD 的特点 ):工作电压低、微功耗、体积小、可视面积 大、无电磁辐射、数字接口、寿命长等特点。12864LCD是一种图形点阵液晶显示器
2、,它主要由行驱动器 / 列驱动器及128×64 全点阵液晶显示器组成。 可完成图形显示, 也可以显示 8×4 个(16 ×16 点 阵)汉字或者显示 16×4个(8×16 点阵 )ASCII码。分为两种,带字库的和不带字库 的。不带字库的 LCD 需要自己提供字库字模, 此时可以根据个人喜好设置各种字 体显示风格,设计上较为灵活。带字库的 LCD 提供字库字模,但是只能显示 GB2312的宋体。各有优缺点,根据不同应用场景灵活选择。其液晶模块原理图 如下所示。12864LCD点阵图形液晶模块原理框图面给出了其应用连接电路,分别介绍其各引脚的功能
3、和作用如下表所示: 12864LCD 的引脚说明管脚号管脚名称LEVER管脚功能描述1GND0电源地2VCC+5.0V电源电压3VLCD-液晶显示器驱动电压4RS (D/I) H/LD/I=“,H表”示 DB7 DB0 为显示数据D/I= “ L,”表示 DB7 DB0 为显示指令数据5R/W H/L R/W= “ H,”E=“ H”数据被读到 DB7DB0R/W=“ L”,E=“ H L”数据被写到 IR 或 DR6ENH/L R/W= “L,”E 信号下降沿锁存 DB7 DB0R/W=“ H”,E=“ H” DDRAM 数据读到 DB7DB0 7DB0 H/L 数据线 8DB1 H/L 数
4、据线 9DB2 H/L 数据线10DB3 H/L 数据线11DB4 H/L 数据线12DB5 H/L 数据线13DB6 H/L 数据线14DB7 H/L 数据线15CS1 H/L H: 选择芯片 (右半屏)信号16CS2 H/L H: 选择芯片 (左半屏)信号17RET H/L 复位信号 ,低电平复位18VEE -10VLCD 驱动负电压 19LED+-LED 背光板电源20LED-LED 背光板电源12864LCD点阵图形液晶模块应用连接电路液晶驱动设置在理解 12864LCD硬件原理和管脚功能之后,可以针对 LCD进行驱动的编写,分 两种情况:仿真环境下和实物开发板编程仿真驱动定义如下:#
5、defineuint8 unsigned char#defineuint32 unsigned int#defineLCD_databus P0 /LCD8 位数据口sbitDI =P22; /DI 为 0 写指令或读状态; 1 数据sbitRW= P21; /RW 为 1 写; 0 读sbitEN =P20; / 使能端sbitCS1= P24; /片选 1 低电平有效,控制左半屏sbitCS2= P23; /片选 1 低电平有效,控制右半屏实物开发板驱动接线和定义如下#defineLCD_PORT_NUM0 /LCD 端口 P0#defineDATA_PORT_NUM1 / 数据端口 P1
6、#defineCS1_PIN23/ 片选 1 低电平有效,控制左半屏#defineCS2_PIN24/ 片选 1 低电平有效,控制右半屏#defineRST_PIN21/复位信号低电平有效#defineRW_PIN20/RW 为 1 写; 0 读#defineDI_PIN19/DI 为 0 写指令或读状态; 1 数据#defineEN_PIN22/使能端uchar DIN8 = 24, 23, 20, 21, 28, 29, 19, 22;/8 位数据线的接线方式 P2.24, P2.23, P2.22对于 D0,D1, D7低, 位到高位涉及到的一些控制指令:0x3E关显示, 0x3F开显示
7、; 总共有八页,一页占八行点阵点,页的首地址为 0xB8; 行的起始地址为 0xC0,有规律的改变起始行号可以实现滚屏的效果; 列的起始地址为 0x40一直到 0x7F共64列;读状态指令时,数据位最高位 D7为1内部忙,为 0空闲;对应接线为 P2.22; 通过GPIO_ReadValue获取P2端口的 32位数据 P2.0到P2.31,然后进行相应的与或 操作进行判断。仿真环境下的驱动程序编写: void delay(uint8 i) / 延时函数 while(-i); void Read_busy() /读忙函数 数据位的最高位 D7 为 1 则忙 P0 = 0X00;DI = 0;RW
8、 = 1;EN = 1while(P0 & 0x80) EN = 0;void write_LCD_command(uint8 value) / 写命令函数 Read_busy(); / 每次读写都要忙判断DI = 0; /选择命令RW = 0; /读操作LCD_databus = value;EN = 1; /EN 由 10 锁存有效数据_nop_();_nop_();EN = 0;void write_LCD_data(uint8 value) / 写数据函数 Read_busy();DI = 1; /选择数据 RW = 0;LCD_databus = value;EN = 1;
9、/EN 由 10 锁存有效数据 _nop_();_nop_();EN = 0; void Set_page(uint8 page) /设置显示起始页 page = 0xB8 | page; /页的首地址为 0xB8 wite_LCD_command(page);void Set_line(uint8 startline) /设置显示的起始行 startline = 0xC0 |startline; write_LCD_command(startline);void Set column(uint8 column) / 设置显示的列column = column & 0x3F; /列的最
10、大值为 64 column = column | 0x40; / 列的首地址为 0x40 write_LCD_command(column);void SetOnOff(uint8 onoff) / 显示开关函数; 0x3E 是关显示, 0x3F 是开显示 onoff = 0x3E | onoff; write_LCD_command(onoff);void SelectScreen(uint8 screen) /选择屏幕 switch(screen) case 0:CS10; CS2 =0; break;/全屏case 1:CS10; CS2 =1; break;/左半屏case 2:CS1
11、1; CS2 =0; break;/右半屏default: break;void ClearScreen(uint8 screen) /清屏 uint8i, j; SelectScreen(screen); for(i=0;i<8;i+) Set_page(i); Set_column(0);for(j=0;j<64;j+)write_LCD_data(0x00); /写入 0,地址指针自动加 1 void InitLCD() /LCD 初始化 Read_busy();SelectScreen(0);SetOnOff(0); /关显示SelectScreen(0);SetOnOff
12、(1); /开显示 SelectScreen(0); ClearScreen(0);Set_line(0);连接开发板实物的底层应用程序:voidLCD_Check_Busy(void) unsignedint value = 0, rvalue = 0;GPIO_SetDir(DATA_PORT_NUM, 0x31F80000L, 0); GPIO_ClearValue(LCD_PORT_NUM, (1 << DI_PIN); GPIO_SetValue(LCD_PORT_NUM, (1 << RW_PIN);GPIO_SetValue(LCD_PORT_NUM, (
13、1 << EN_PIN);while (1) value = GPIO_ReadValue(DA TA_PORT_NUM);/ 获取值为 32 位 P2.0到 P2.31 /*数据位最高位 D7为 1内部忙,为 0空闲;对应接线为 P2.22*/ rvalue = value & 0x400000;if (0x0 = rvalue) break; GPIO_ClearValue(LCD_PORT_NUM, (1 << EN_PIN); GPIO_SetDir(DATA_PORT_NUM, 0x31F80000L, 1); data_setpin(0);其他的函数
14、按照上面的进行设置,其中函数 GPIO_SetValue 将对应的位置 1,;函 数GPIO_ClearValue 将对应的位置 0;函数 GPIO_ReadValue 获取对应端口的数 据,函数 GPIO_SetDir 设置相应端口的相应位的方向 输入输出。字库原理及其制作在前面我们分析了如何点亮一个或者多个点阵, 通过有意识的点亮一些点阵 可以在液晶屏上看到数字、 字母和汉字的显示。 那么一个字母或者汉字对应着那 些位置的点阵呢,是否可以通过计算得到其字模数据?现在可以在网上下载到各种字模软件,对单个的字符取模,也可以对 ASCII 码、汉字库取模生成字库 bin文件。在取模之前要对其进行
15、相应的设置,以便能 够正确的显示(当取模方式和液晶屏的设置不一样时会显示出乱码) 。需要注意 的是横纵向取模的区别,字节正序和字节倒序的差别。下面介绍字模的数据的获取,字节正序和倒序、横纵向取模的差别。 字模是一组数字, 但它的意义却与数字的意义有了根本的变化, 它是用数字的各 位信息来记载英文或汉字的形状,如英文的 'A' 在字模的记载方式如图 1 所示: 8×16的ASCII 码点阵,左边的为横行取模,字节正序(即高位在前) ,右边的为纵 向取模,字节倒序(即高位在下)。图1 “A字”模图而中文的 “你”在字模中的记载却如图 2 所示:下面的取模方式只介绍了横向
16、取模、字节正序。如果要对其进行纵向取模、字节倒序,方法类似于“ A ”字模。图2 “你”字模图 当通过字模软件生成字库 bin文件之后如何对其进行应用? 可以通过以下方法:1. 把字库放入 SD卡中。需要带SD卡,需要使用文件系统, 软硬件成本较高。2. 把字库放入代码中一起编译,后下载到单片机中。对单片机的 FLASH 要 求比较大,而且代码编写调式速度比较慢。3. 购买字库 IC。不够灵活。4. 把字库放入 FLASH IC 中。这种方法比较灵活, 可以设置各种字体风格。下面详细介绍将字库放入 FLASH IC 中的步骤。 在写入字库到 FLASH IC 之前,先擦除原 FLASH IC
17、中的内容,此时可以根据字 库文件大小计算所需檫除扇区大小,待擦除完毕之后,开始写入 bin 文件,写入 时采用 USB传输到 FLASH IC 中去。首先设置好 USB 相应的驱动、初始化工作, 调用写数据函数。之后 download程序到单片机中,待程序运行起来之后,通过 USB数据线连接 FLASH IC ,打开 HIDDriver 程序,选择 bin 文件,设置传输速 度,开始传输。机内码、区位码对于英文、数字等字符的显示,由于其种类较少,只需要一个字节表示即可, ASCII码的低128专供其使用,当计算机读取字符时,其存储的 8为二进制大小为 其ASCII码值,同时称为字符的内码,那么
18、其字符的字模首地址在字库中存储位 置为内码乘以 16。首地址开始的 16个字节数据为该字符的字模数据。一个汉字由 2个字节组成,那么其在计算机中是如何存在? 计算机中只能识别 01二进制编码,而国家标准信息交换用汉字字符集GB2312-80共收录了汉字、图形符号等共 7445个,其中汉字 6763个,按照汉字使用 的频度分为两级,其中一级汉字 3755个,二级汉字 3008个。由于英文字符较少加 上其他字符也不到 128个,采用ASCII码的低128个表示足够,而 ASCII码的高128 个却很少用,因此可以采用两个高 128ASCII码组合表示一个汉字。汉字在计算机中是采用机内码的形式进行存
19、储的,每一个汉字占2个字节,其中第一个字节为机内码的区码,汉字、各种图形符号机内码的区码范围是从 0A1H (十六进制)开始,对应区位码中区码的第一区;而机内码的第二个字节 为机内码的位码,范围也是从 0A1H (十六进制)开始,对应某区中的第一个位 码。就是说将汉字机内码减去 0A0AH就得到该汉字的区位码。例如汉字“北”的机 内码是十六进制的“B1B1”,其中前两位“B1”表示机内码的区码,后两位 “B1表” 示机内码的位码。所以“北”的区位码为 0B1B1H 0A0A0H=1111H ,将区码和位 码分别转换为十进制,得汉字“北”的区位码为“1717。”即“北”的点阵位于第 17区 的第
20、 17个字的位置,在文件 HZK16 中的位置为第 32× ( 17-1) ×94+( 17 1)=48640D以后的32个字节为“北”的显示点阵。用RF-1800编程器读入二进制文 件hzk16j.bin后利用其编辑功能中的缓冲区编辑查找到 BE00 H(48640D是十进 制,将其转变为十六进制后得 BE00 H)开始的32个字节: 04 80 04 80 04 88 04 98 04 A0 7C C0 04 80 04 80 04 80 04 80 04 80 04 80 1C 82 E4 82 44 7E 00 0(0以上全 为十六进制),将其写在 16×
21、16点阵方格纸上。汉字、图形符号根据其位置将其分为 94个“区”,每个区包含 94个汉字字符, 每个汉字字符又称为“位”。其中“区”的序号由01区至94区,“位”的序号也由 01位 至94位。若以横向表示“位”号,纵向表示“区” 号,则“区”和“位”构成一个二维坐 标。给定一个“区”值和“位”值就可以确定一个惟一的汉字或图形符号。即 4位阿 拉伯数字就可以惟一地确定一个汉字或符号。如 “北”字的区位码是“1717(”区位 码是十进制表示,机内码是十六进制表示)。前两位是“区”号,后两位是“位”号。 其中1至15区是各种图形符号、制表符和一些主要国家的语言字母,16区至87区是汉字,其中 16区
22、至55区是一级汉字, 56至87区是二级汉字。那么计算机是如何识别汉字和 ASCII字符呢?当其读到的 ASCII码值大于 0A1H时,先暂不处理而是继续读取下一字节,如果也是大于 0A1H时,则识别为汉字或者图形符号,两个合起来组成机内码。 计算机读取一个汉字的机内码时,先将其转换为区位码(第一个字节减去0B1H,得到区码;第二节字节也减去 0B1H,得到位码),再根据区位码计算该 汉字字模在字库中的存储首地址 (计算公式为 32×( 区码 1)×94+(位码 1) 分别读取其后的 32个字节数据在液晶屏相应位置点亮其点阵, 从而得到我们想要 的效果。GUI 图形用户界面
23、GUI 为 Graphics User Interface的缩写,即图形用户界面, 已经广泛的应用于 嵌入式产品中。通过窗口、图标和菜单等图形界面方便快捷的实现人机交互功能。移植 GUI 到 LCD12864 液晶上,我们采用的是 ZLG/GUI( 周立功开发的 )。 里面提供一些基本图形操作、颜色转换、 ASCII 码和汉字显示、菜单和窗口操作 函数等等。ZLG/GUI 可以分为三个层次,第一层为硬件驱动层,也即是底层驱动。它 主要负责硬件驱动, 将显示数据转换并发送给图形显示设备。 第二层为基本图形 层。它提供一些基本的作图功能,如画线、圆形、矩形和椭圆等。第三层为高级 接口层。主要是在基
24、本绘图之上为用户提供窗口、图标和菜单等图形接口。移植过程中我们主要是针对底层驱动的基本函数进行修改, 在驱动头文件中 根据实际液晶屏的大小设置 X ,Y 轴的大小,定义相应的操作地址(主要用于写 命令和数据),设置相应操作命令字的宏定义。在驱动源文件中根据液晶屏大小 修改缓冲区大小。 由于前面已经介绍过 LCD12864液晶基本显示原理, 因此可以 直接采用其中的驱动设置,完成基本的读写命令和数据的功能,然后调用 GUI 的上层函数实现窗口、菜单等复杂功能。在 ZLG/GUI 中主要是针对横向字节正序字模的显示设置,高位在前,因此 其字节设置如下 uint8 const DCB_HEX_TAB
25、8 = 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01;而在我们所采用的 LCd12864 中主要是纵向字节倒序,高位在 下,因此其字节设置为 uint8 const DCB_HEX_TAB8 = 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80;同时应注意 X 轴的八位组成一个字节应改为 Y 轴的八位构成一个字节。 在编写画线函数时应分四种情况考虑,水平线,垂直线, X 轴增长较大的斜 线,Y 轴增长较大的斜线。在绘画直线时应注意覆盖的问题,对于垂直线,由于 我们采用的 12864LCD 是纵轴 8 位组成一个字节, 而对于水平线, 直接画线, 这 样直线上下原有的内容会被覆盖。 为了避免这个问题, 我们在对数据进行操作时 要先读取原位置上的数据, 然后对其做或运算, 这样可以在不破换原数据图形的 基础上绘画我们想要的直线。其他斜线的绘画也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南师范大学《园林建筑速写》2024-2025学年第二学期期末试卷
- 湖南大学《PROTEL》2024-2025学年第二学期期末试卷
- 湖南文理学院芙蓉学院《Python数据采集与处理课程实验》2024-2025学年第二学期期末试卷
- 烟台科技学院《古典作品临摹》2024-2025学年第二学期期末试卷
- 山西应用科技学院《蔬菜功能营养与保健》2024-2025学年第二学期期末试卷
- 江西环境工程职业学院《医疗器械注册与质量管理》2024-2025学年第二学期期末试卷
- 培训教育机构备课制度
- 山西师范大学《土壤肥料学实验》2024-2025学年第二学期期末试卷
- 云南工贸职业技术学院《计算机网络基础》2024-2025学年第二学期期末试卷
- 吉首大学《设计工作坊》2024-2025学年第二学期期末试卷
- 建筑工程项目部 2026 年春节节后复产复工实施方案
- JJF 1245.1-2010安装式电能表型式评价大纲通用要求
- 陈静《村镇规划课程》村镇规划课程第一章-学科背景和发展历程
- 雨季道路、管道工程施工专项措施
- 《中国人民站起来了》课件-统编版高中语文选择性必修上册
- 大学生创业教育说课课件
- 反垄断法及反不正当竞争法课件
- (中职)机械基础2、认识材料力学的基础知识教学课件
- 部编版六年级上册阅读专项训练:了解文章点面结合的场面描写方法
- 班主任专业能力大赛书面测试小学组
- 磷石膏堆场项目库区工程施工组织设计(171页)
评论
0/150
提交评论