ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:218.99KB ,
资源ID:2284735      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2284735.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(12864LCD液晶显示原理及使用方法.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

12864LCD液晶显示原理及使用方法.docx

1、12864LCD液晶显示原理及使用方法12864LCD液晶显示原理及使用方法液晶简介液晶是一种在一定温度范围内呈现既不同于固态液态又不同于气态的特殊物质态,它既具有各向异性的晶体所特有的双折射性又具有液体的流动性液晶显示器件(英文的简写为LCD)就是利用液晶态物质的液晶分子排列状态在电场中改变而调制外界光的被动型显示器件。点阵式图形液晶显示屏是 LCD 的一种能够动态显示图形汉字以及各种符号信息为各种电子产品提供了友好的人机界面点阵式图形液晶显示屏的主要特点如下(这些特点也就是LCD 的特点):工作电压低、微功耗、体积小、可视面积大、无电磁辐射、数字接口、寿命长等特点。12864LCD是一种图

2、形点阵液晶显示器,它主要由行驱动器/列驱动器及12864 全点阵液晶显示器组成。可完成图形显示,也可以显示84 个(1616 点阵)汉字或者显示164个(816 点阵)ASCII码。分为两种,带字库的和不带字库的。不带字库的LCD需要自己提供字库字模,此时可以根据个人喜好设置各种字体显示风格,设计上较为灵活。带字库的LCD提供字库字模,但是只能显示GB2312的宋体。各有优缺点,根据不同应用场景灵活选择。其液晶模块原理图如下所示。12864LCD点阵图形液晶模块原理框图下面给出了其应用连接电路,分别介绍其各引脚的功能和作用。如下表所示:12864LCD 的引脚说明管脚号管脚名称LEVER 管脚

3、功能描述1GND 0 电源地2VCC+5.0V 电源电压3VLCD - 液晶显示器驱动电压4RS (D/I) H/LD/I=“H”,表示DB7DB0 为显示数据D/I=“L”,表示DB7DB0 为显示指令数据5R/W H/L R/W=“H”,E=“H”数据被读到DB7DB0R/W=“L”,E=“HL”数据被写到IR 或DR6EN H/L R/W=“L”,E 信号下降沿锁存DB7DB0R/W=“H”,E=“H”DDRAM 数据读到DB7DB07DB0 H/L 数据线8DB1 H/L数据线9DB2 H/L 数据线10DB3 H/L 数据线11DB4 H/L数据线12DB5 H/L数据线13DB6

4、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进行驱动的编写,分两种情况:仿真环境下和实物开发板编程。仿真驱动定义如下:#define uint8 unsigned char#define uint32 unsigned int#define LCD_d

5、atabus P0 /LCD8位数据口sbitDI = P22; /DI为0写指令或读状态;1数据sbit RW = P21; /RW为1写;0读sbit EN = P20; /使能端sbit CS1 = P24; /片选1低电平有效,控制左半屏sbit CS2 = P23; /片选1低电平有效,控制右半屏实物开发板驱动接线和定义如下#define LCD_PORT_NUM 0 /LCD端口P0#define DATA_PORT_NUM 1 /数据端口P1#define CS1_PIN 23 /片选1低电平有效,控制左半屏#define CS2_PIN 24 /片选1低电平有效,控制右半屏#d

6、efine RST_PIN 21 /复位信号低电平有效#define RW_PIN 20 /RW为1写;0读#define DI_PIN 19 /DI为0写指令或读状态;1数据#define EN_PIN 22 /使能端uchar DIN8 = 24, 23, 20, 21, 28, 29, 19, 22; /8位数据线的接线方式P2.24, P2.23,P2.22对于D0,D1,D7,低位到高位涉及到的一些控制指令:0x3E关显示,0x3F开显示;总共有八页,一页占八行点阵点,页的首地址为0xB8;行的起始地址为0xC0,有规律的改变起始行号可以实现滚屏的效果;列的起始地址为0x40一直到0

7、x7F共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 = 1;EN = 1while(P0 & 0x80);EN = 0;void write_LCD_command(uint8 value) /写命令函数Read_busy(); /每次读写都要忙

8、判断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; /EN由10锁存有效数据_nop_();_nop_();EN = 0; void Set_page(uint8 page) /设置显示起始页page = 0xB8 | page; /页的首地址为0xB8wite_LCD_

9、command(page);void Set_line(uint8 startline) /设置显示的起始行startline = 0xC0 |startline;write_LCD_command(startline);void Set_column(uint8 column) /设置显示的列column = column & 0x3F; /列的最大值为64column = column | 0x40; /列的首地址为0x40write_LCD_command(column);void SetOnOff(uint8 onoff) /显示开关函数;0x3E是关显示,0x3F是开显示onoff

10、= 0x3E | onoff;write_LCD_command(onoff);void SelectScreen(uint8 screen) /选择屏幕switch(screen) case 0: CS1 = 0; CS2 = 0; break; /全屏case 1: CS1 = 0; CS2 = 1; break; /左半屏case 2: CS1 = 1; CS2 = 0; break; /右半屏default: break;void ClearScreen(uint8 screen) /清屏uint8i, j;SelectScreen(screen);for(i=0;i8;i+)Set_

11、page(i);Set_column(0);for(j=0;j64;j+)write_LCD_data(0x00); /写入0,地址指针自动加1void InitLCD() /LCD初始化Read_busy();SelectScreen(0);SetOnOff(0); /关显示SelectScreen(0);SetOnOff(1); /开显示SelectScreen(0);ClearScreen(0);Set_line(0);连接开发板实物的底层应用程序:voidLCD_Check_Busy(void) unsignedint value = 0, rvalue = 0;GPIO_SetDir

12、(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, (1 EN_PIN);while (1) value = GPIO_ReadValue(DATA_PORT_NUM);/获取值为32位P2.0到P2.31 /*数据位最高位D7为1内部忙,为0空闲;对应接线为P2.22*/rvalue = value & 0x400000;if (0x0 = rvalue) brea

13、k; GPIO_ClearValue(LCD_PORT_NUM, (1 EN_PIN);GPIO_SetDir(DATA_PORT_NUM, 0x31F80000L, 1);data_setpin(0); 其他的函数按照上面的进行设置,其中函数GPIO_SetValue将对应的位置1,;函数GPIO_ClearValue将对应的位置0;函数GPIO_ReadValue获取对应端口的数据,函数GPIO_SetDir设置相应端口的相应位的方向输入输出。字库原理及其制作在前面我们分析了如何点亮一个或者多个点阵,通过有意识的点亮一些点阵可以在液晶屏上看到数字、字母和汉字的显示。那么一个字母或者汉字对应

14、着那些位置的点阵呢,是否可以通过计算得到其字模数据?现在可以在网上下载到各种字模软件,对单个的字符取模,也可以对ASCII码、汉字库取模生成字库bin文件。在取模之前要对其进行相应的设置,以便能够正确的显示(当取模方式和液晶屏的设置不一样时会显示出乱码)。需要注意的是横纵向取模的区别,字节正序和字节倒序的差别。下面介绍字模的数据的获取,字节正序和倒序、横纵向取模的差别。字模是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的A在字模的记载方式如图1 所示:816的ASCII码点阵,左边的为横行取模,字节正序(即高位在前),右边的为纵向取模,字节倒序(即高位在下)。图1 “A”字模图而中文的“你”在字模中的记载却如图2 所示:下面的取模方式只介绍了横向取模、字节正序。如果要对其进行纵向取模、字节倒序,方法类似于“A”字模。图2 “你”字模图当通过字模软件生成字库bin文件之后如何对其进行应用?可以通过以下方法:1.把字库放入SD卡中。需要带SD卡,需要使用文件系统,软硬件成本较高。2.把字库放入代码中一起编译,后下载到单片机中。对单片机的FLASH要求比较大,而且代码编写调式速度比较慢。3.购买字库IC。不够灵活。4.把字库放入FLASH IC 中。这种方法比较灵活

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

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