




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目六
LCD1602显示
原理及实现项目描述
数码管显示的内容十分有限,只能显示“0~9”的数字及几个简单的字母,当要显示文字、图形或输出信息量比较大时用数码管无法满足要求,必须采用液晶显示器来实现。本项目利用LCD1602显示“Hello!”、“Goodmorning!”等字样,并显示项目四所设计的实时时钟。
液晶显示器的基本知识6.1.11602字符型液晶显示模块(LCM)的基本组成 LCM1602液晶点阵字符显示器用5×7点阵图形来显示西文字符。单片机通过写控制方式访问并驱动控制器来实现对显示屏的控制。 1602液晶,可以显示2行,每行16个西文字符。它的工作电压是4.5V~5.5V,在设计电路的时候,直接按照5V系统设计,但是保证5V系统最低不能低于4.5V。在5V工作电压下测量它的工作电流是2mA,注意,这个2mA仅仅是指液晶,而它的黄绿背光都是用LED做的,所以功耗不会太小的,一二十毫安还是有的。
液晶显示器的基本知识6.1.2LCM1602字符型液晶显示器引脚及功能管脚编号名称方向功能操作1VSS电源电源接地0V2VDD电源电源正极+5V3VL电源LCD亮度调整电压输入电压越低,屏幕越亮4RS输入寄存器选择信号1=选择数据寄存器0=选择指令寄存器5R/W输入Read/Write1=Read/读取0=Write/写入6E输入LCD/响应信号1=响应LCD0=禁用LCD7~10DB0~DB3输入/输出低四位总线可用4bit输入数据、命令及地址11~14DB4~DB7输入/输出高四位总线配合DB0~DB3的8位输入数据、命令及地址15LED+输入背光源正极+5V16LED-输入背光源负极0V
液晶显示器的基本知识
液晶的电源1脚2脚以及背光电源15脚16脚,接+5V和地。 3脚叫做液晶显示偏压信号,3脚就是用来调整显示的黑点和不显示的之间的对比度,调整好了对比度,就可以让显示更加清晰一些。 4脚是数据命令选择端。对于液晶,有时候我们要发送一些命令,让它实现我们想要的一些状态,有时候我们要发给它一些数据,让它显示出来,液晶就通过这个引脚来判断接收到的是命令还是数据,这个引脚我们接到了ADDR0上,通过跳线帽和P1.0连接在一起。大家注意学会读手册,看到这个引脚描述里:数据/命令选择端,而后跟了括号(H/L),他的意思就是当这个引脚是H(High)高电平的时候,是数据,当这个引脚是L(Low)低电平的时候,是命令。
液晶显示器的基本知识 5脚和4脚用法类似,功能是读写选择端。液晶本身内部有RAM,实际上我们送给液晶的命令或者数据,液晶需要先保存在缓存里,然后再写到内部的寄存器或者RAM中,这个就需要一定的时间。所以我们进行读写操作之前,首先要读一下液晶当前状态,是不是在“忙”,如果不忙,我们可以读写数据,如果在“忙”,我们就需要等待液晶忙完了,再进行操作。 6脚是使能信号,液晶的读写命令和数据,都要靠它才能正常读写。 7到14引脚就是8个数据引脚了,我们就是通过这8个引脚读写数据和命令的。我们统一接到了P0口上。
液晶显示器的基本知识
液晶显示器的基本知识6.1.3LCD指令码工作说明
用单片机来控制LCD模块,方法十分方便。LCD模块其内部可以看成两组寄存器,一个为指令寄存器IR,另一个为数据寄存器DR,由RS引脚来控制。所有对指令寄存器或数据寄存器的存取均需检查LCD内部的忙碌标志BF的状态,此标志用来告知LCD内部正在工作,并不允许接收任何控制命令。而此位的检查可以令RS=0,用读取DB7来加以判断。当DB7为0时,才可以写入指令寄存器或数据寄存器。LCD控制器共有11种指令,LCD指令码控制表下表所示。
液晶显示器的基本知识序号指令操作RSR/WDB7DB6DB5DB4DB3DB2DB1DB01清除显示屏000000000×2光标回到原点000000001×3进入模式设定00000001I/DS4显示ON/OFF0000001DCB5显示/光标移位000001S/CR/L××6功能设定00001DLNF××7设定字符发生器(CGRAM)地址
0001A5A4A3A2A1A08设置(DDRAM)显示地址001A6A5A4A3A2A1A09忙碌标志位BF01BFD6D5D4D3D2D1D010写入数据寄存器(显示数据)10D7D6D5D4D3D2D1D011读取数据寄存器11D7D6D5D4D3D2D1D0
液晶显示器的基本知识1602内部RAM结构图
第一行的地址是0x00H到0x27,第二行的地址从0x40到0x67,其中第一行0x00到0x0F是与液晶上第一行16个字符显示位置相对应的,第二行0x40到0x4F是与第二行16个字符显示位置相对应的。而每行都多出来一部分,是为了显示移动字幕设置的。1602字符液晶是显示字符的,因此它跟ASCII字符表是对应的。
液晶显示器的基本知识
与单片机寄存器的用法类似,1602液晶在使用的时候,我们首先要进行初始的功能配置,1602液晶有以下几个指令需要了解。①显示模式设置。
写指令0x38,设置16Х2显示,5Х7点阵,8位数据接口。这条指令对我们这个液晶来说是固定的,必须写0x38,大家仔细看会发现我们的液晶实际上内部点阵是5Х8的,还有一些1602液晶还兼容串行通信,用2个IO口即可,但是速度慢,我们这个液晶就是固定的0x38模式。
液晶显示器的基本知识②显示开/关以及光标设置指令。
这里有2条指令,第一条指令,一个字节中8位,其中高5位是固定的0b00001,低3位我们分别用DCB从高到低表示,D=1表示开显示,D=0表示关显示;C=1表示显示光标,C=0表示不显示光标;B=1表示光标闪烁,B=0表示光标不闪烁。
第二条指令,高6位是固定的0b000001,低2位我们分别用NS从高到低表示,其中N=1表示读或者写一个字符后,指针自动加1,光标自动加1,N=0表示读或者写一个字符后指针自动减1,光标自动减1;S=1表示写一个字符后,整屏显示左移(N=1)或右移(N=0),以达到光标不移动而屏幕移动的效果,如同我们的计算器输入一样的效果,而S=0表示写一个字符后,整屏显示不移动。
液晶显示器的基本知识③清屏指令。
固定的,写入0x01表示显示清屏,其中包含了数据指针清零,所有的显示清零。写入0x02则仅仅是数据指针清零,显示不清零。④RAM地址设置指令
该指令码的最高位为1,低7位为RAM的地址,RAM地址与液晶上字符的关系如图6.3所示。通常,我们在读写数据之前都要先设置好地址,然后再进行数据的读写操作。
液晶显示器的基本知识6.1.4LCD控制器接口时序说明
液晶有一个状态字字节,我们通过读取这个状态字的内容,就可以知道1602液晶的一些内部情况。
这个状态字节有8个位,最高位表示了当前液晶是不是“忙”,如果这个位是1表示液晶正“忙”,禁止我们读写数据或者命令,如果是0,则可以进行读写。而低7位就表示了当前数据地址指针的位置。
液晶显示器的基本知识 1602的基本操作时序,一共有4个,我们这里要做1602液晶的程序,因此先把用到的总线接口做一个统一声明:#defineLCD1602_DBP0sbitLCD1602_RS=P1^0;sbitLCD1602_RW=P1^1;sbitLCD1602_E=P1^5;①读状态:RS=L,R/W=H,E=H。这是个很简单的逻辑,就是说,我们直接写LCD1602_DB=0xFF;LCD1602_RS=0;LCD1602_RW=1;LCD1602_E=1;sta=LCD1602_DB;
液晶显示器的基本知识②读数据:RS=H,R/W=L,E=H。这个逻辑也很简单,但是读数据不常用,大家了解一下就可以了,这里就不详细解释了。③写指令:RS=L,R/W=L,D0~D7=指令码,E=高脉冲。④写数据:RS=H,R/W=L,D0~D7=数据,E=高脉冲。
液晶显示器的基本知识6.1.5LCD初始化设置(1)初始化设置
①显示器清屏
②显示器开/关及光标设置
③显示光标移动设置(2)数据控制
控制器内部设有一个数据地址指针,用户可通过它们来访问内部全部80字节RAM。
①数据指针设置,数据地址指针:80H+地址码(00H~27H,40H~67H)
②读数据:
③写数据:
源程序编写
用单片机的定时器功能设计电子时钟在第四章已经做了详细介绍,此项目将数码管显示换为LCD显示,要注意的是LCD1602自带了ASCII字符库,如果要显示数字,需先将数字转换为ASCII字符(ASCII字符表见附录A),源程序如下:#include<reg52.h>#defineucharunsignedchar#defineLCD1602_DBP0sbitLCD1602_RS=P1^0;sbitLCD1602_RW=P1^1;sbitLCD1602_E=P1^5;voidInitLcd1602();voidLcdShowStr(ucharx,uchary,uchar*str);voidLcdShowDat(ucharx,uchary,uchardat);ucharcnt=0;//定义一个计数变量,记录T0溢出次数ucharsec=0,min=0,hour=0;
源程序编写voidmain(){ uchartemp; ucharstr[]="Goodmorning!"; TMOD=0x01;//设置T0为模式1 TH0=0x4C; TL0=0x00; //50ms定时 IE=0x82; //允许T0中断 TR0=1;//启动T0 InitLcd1602(); LcdShowStr(2,0,str); while(1) { temp=hour/10; temp+=0x30; //将待显示的数字转换成ASCII码,再送1602的显示RAM LcdShowDat(4,1,temp); temp=hour%10;
源程序编写 temp+=0x30; LcdShowDat(5,1,temp); temp=0x3A; //0x3A是":"的ASCII码 LcdShowDat(6,1,temp); temp=min/10; temp+=0x30; LcdShowDat(7,1,temp); temp=min%10; temp+=0x30; LcdShowDat(8,1,temp); temp=0x3A; LcdShowDat(9,1,temp); temp=sec/10; temp+=0x30; LcdShowDat(10,1,temp); temp=sec%10; temp+=0x30; LcdShowDat(11,1,temp); }}
源程序编写/*等待液晶准备好*/voidLcdWaitReady(){ ucharsta; LCD1602_DB=0xFF; LCD1602_RS=0; LCD1602_RW=1; do { LCD1602_E=1; sta=LCD1602_DB;//读取状态字 LCD1602_E=0; }while(sta&0x80);//bit7=1表示液晶正忙,重复检测直到其等于0为止}
源程序编写/*向LCD1602液晶写入一字节命令,cmd为待写入命令值*/voidLcdWriteCmd(ucharcmd){ LcdWaitReady(); LCD1602_RS=0; LCD1602_RW=0; LCD1602_DB=cmd; LCD1602_E=1; LCD1602_E=0;}
源程序编写/*向LCD1602液晶写入一字节数据,cmd为待写入数据值*/voidLcdWriteDat(uchardat){ LcdWaitReady(); LCD1602_RS=1; LCD1602_RW=0; LCD1602_DB=dat; LCD1602_E=1; LCD1602_E=0;}
源程序编写/*设置显示RAM起始地址,(x,y)-对应屏幕上的字符坐标*/voidLcdSetCursor(ucharx,uchary){ ucharaddr; if(y==0) //由输入的屏幕坐标计算显示RAM的地址 addr=0x00+x; //第一行字符地址从0x00起始 else addr=0x40+x; //第二行字符地址从0x40起始 LcdWriteCmd(addr|0x80);//设置RAM地址}/*在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,*/voidLcdShowStr(ucharx,uchary,uchar*str){ LcdSetCursor(x,y); //设置起始地址 while(*st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产业投资协议合同范本
- 个人储罐出售合同范本
- 临时雇用合同范本
- 共有房产过户合同范本
- 专升本培训协议合同范本
- 七匹狼合同范本
- 产品合同范例网
- 2025年中国家庭网关行业深度分析及投资规划研究建议报告
- 2025年中国尿促卵泡素行业发展趋势预测及投资战略咨询报告
- 采购砂合同范本
- 新质生产力课件
- 传播学研究方法
- 1.1公有制为主体 多种所有制经济共同发展 课件-高中政治统编版必修二经济与社会
- 青春期的妇科知识讲座
- 《社区康复》课件-第三章 社区康复的实施
- 中职生心理健康教育全套教学课件
- JC-T 2704-2022 聚酯纤维装饰吸声板
- WTE朗文英语2B 单词卡片
- 初三物理复习计划详细计划
- 汽车悬架概述
- 心房颤动的教学查房课件
评论
0/150
提交评论