51单片机 液晶显示资料

上传人:bin****86 文档编号:54860516 上传时间:2018-09-20 格式:PPT 页数:89 大小:4.47MB
返回 下载 相关 举报
51单片机 液晶显示资料_第1页
第1页 / 共89页
51单片机 液晶显示资料_第2页
第2页 / 共89页
51单片机 液晶显示资料_第3页
第3页 / 共89页
51单片机 液晶显示资料_第4页
第4页 / 共89页
51单片机 液晶显示资料_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《51单片机 液晶显示资料》由会员分享,可在线阅读,更多相关《51单片机 液晶显示资料(89页珍藏版)》请在金锄头文库上搜索。

1、课题四 液晶显示,任务一 1602液晶显示 任务二 12864液晶显示,课题目标本课题的任务是用单片机实现液晶显示,演示效果如图5-1所示。通过编程,学会在单片机上实现液晶显示控制方法,以及不同数据显示的程序编写方法。,图5-1 液晶显示效果图,任务一 1602液晶显示方式,本任务就是将单片机与1602液晶接成图5-2所示电路图,编程实现。用液晶显示出”I LIKE MCU”“WWW.CQWU.EDU.CN”,图5-2 液晶显示电路图,一、液晶显示原理,1、液晶显示器及其特点液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,没有电磁辐射、寿命长等优点,在袖珍式仪表和低功耗应用系统

2、中得到越来越广泛的应用。 这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。,2、液晶引脚定义,表5-1 LCD1602引脚功能,3、字符代码与显示字符关系1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表5-2所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵

3、字符图形显示出来,我们就能看到字母“A” 。,表5-2 字符发生存储器字符代码与显示字符关系,4、LCD1602指令表,1602液晶模块内部的控制器共有11条控制指令,如表5-3所示。,表5-3 1602指令表,液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表5-4是DM-1602的内部显示地址。 表5-4 1602地址表,比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒

4、定为高电平1所以实际写入的数据应该是 01000000B(40H)+10000000B(80H)=11000000B(C0H),二、时序图,1、1602基本操作时序2、写操作时序,图5-5 操作时序图,3、时序时间表,表5-5 时序表, 初始化通过初始化设置堆栈栈底为60H,调用LCD初始化子程序完成对LCD的初始化设置。 字符显示完成对LCD初始化后,调用LCD字符显示子程序显示第一行字符和第二行字符。主程序设计流程图如图6.5所示。,【项目实践】,3程序设计(1) 主程序设计主程序主要完成硬件初始化、子程序调用等功能。,图6.5 主程序流程图,(2) 写入显示数据到LCD子程序模块设计当L

5、CD1602的寄存器选择信号RS为1时,选择数据寄存器;当LCD1602的读写选择线R/W为0时,进行写操作;当LCD1602的使能信号E至高电平后再过两个时钟周期至低电平,产生一个下降沿信号,往LCD写入显示数据。写入显示数据到LCD子程序设计流程图如图6.6所示。,图6.6 写入显示数据到LCD子程序流程图,(3) 写入指令数据到LCD子程序模块设计当LCD1602的寄存器选择信号RS为0时,选择指令寄存器;当LCD1602的读写选择线R/W为0时,进行写操作;当LCD1602的使能信号E至高电平后再过两个时钟周期至低电平,产生一个下降沿信号,往LCD写入指令代码。写入指令数据到LCD子程

6、序设计流程图如图6.7所示。,图6.7 写入指令数据到LCD子程序流程图,(4) 字符显示子程序模块设计设置LCD的DDRAM地址,调用写入指令到LCD子程序设置DDRAM地址指针;然后设置显示数据个数R7,设置显示数据索引值R6,将显示数据表地址送入DPTR中,用查表指令查表取得显示数据,调用写入显示数据到LCD子程序,使数据显示在LCD上;显示数据个数R7减1,显示数据索引值R6加1,按照上面的步骤显示下一个数据,直到显示数据个数R7为0,所有字符均显示在LCD上。字符显示子程序设计流程图如图6.8所示。,图6.8 字符显示子程序流程图,【项目实践】,(5) LCD初始化子程序模块设计16

7、02字符型LCD的初始化过程为:延时15ms,写指令38H(不检测忙信号);延时5ms,写指令38H(不检测忙信号);延时5ms,写指令38H(不检测忙信号);以后每次写指令、读/写数据操作均需要检测忙信号;写指令38H:显示模式设置;写指令08H:显示关闭;写指令01H:显示清屏;写指令06H:显示光标移动设置;写指令0CH:显示开及光标设置。根据它的初始化过程,LCD初始化子程序设计流程图如 图6.9所示。,【项目实践】,图6.9 LCD 初始化 子程序 流程图,【项目实践】,(6) 延时子程序模块设计 延时子程序模块设计请参考项目1。,4汇编源程序 * ;项目名称:字符型LCD接口实验

8、;功能:在1602字符型液晶第一行显示:I LIKE MCU; ;在第二行显示: ;作者: ;日期: * ;1602LCD信号接口定义 E BIT P2.2 ;LCD使能信号 RW BIT P2.1 ;读/写选择信号R/W:0为写入数据;1为读出数据 RS BIT P2.0 ;数据/命令选择信号R/S:0为指令;1为数据,【项目实践】,LCDPORT EQU P1 ;液晶的数据线DB7DB0CMD_BYTE EQU 30H ;写命令入口参数DAT_BYTE EQU 31H ;写显示数据入口参数 ;主程序ORG 0000HAJMP MAINORG 0050H MAIN:MOV SP,#60H ;

9、设置堆栈指针LCALL INITLCD ;调用LCD初始化子程序LCALL DISPMSG1 ;调用液晶字符显示程序LCALL DISPMSG2 ;调用液晶字符显示程序SJMP $ ;LCD1602要用到的一些子程序 ;函数功能:写入指令到LCD1602子程序 ;入口参数CMD_BYTE ;出口参数:,【项目实践】,WRITE_CMD: CLR RS ;当RS=0,RW=0时,写指令CLR RWMOV A,CMD_BYTE;把写命令入口参数CMD_BYTE传给AMOV LCDPORT,A;LCDPORT为液晶数据线DB7DB0SETB E ;打开液晶使能信号ENOPNOPCLR E ;关闭液晶

10、使能信号ELCALL DELAY ;调用延时子程序RET ;函数功能:写入显示数据到LCD1602子程序 ;入口参数:DAT_BYTE ;出口参数: WRITE_DAT: SETB RS ;当RS=1,RW=0时,写入数据到LCDCLR RWMOV A,DAT_BYTE;把写数据入口参数DAT_BYTE传给AMOV LCDPORT,A;LCDPORT为液晶数据线DB7DB0,【项目实践】,SETB E ;打开液晶使能信号ENOPNOPCLR E ;关闭液晶使能信号ELCALL DELAY ;调用延时子程序RET ;函数功能:写入显示数据到LCD1602子程序 ;入口参数:DAT_BYTE;出口

11、参数: WRITE_DAT:SETB RS ;当RS=1,RW=0时,写入数据到LCDCLR RWMOV A, DAT_BYTE;把写数据入口参数DAT_BYTE传给AMOV LCDPORT,A ;LCDPORT为液晶数据线DB7DB0SETB E ;打开LCD使能信号ENOPNOPCLR E ;关闭LCD使能信号ELCALL DELAY ;调用延时子程序RET,;函数功能:LCD显示初始化子程序 ;入口参数:;出口参数: INITLCD: MOV CMD_BYTE, #30HLCALL WRITE_CMD ;调用写命令子程序MOV CMD_BYTE,#30HLCALL WRITE_CMD ;

12、调用写命令子程序MOV CMD_BYTE, #30HLCALL WRITE_CMD ;调用写命令子程序MOV CMD_BYTE, #38H ;设定工作方式LCALL WRITE_CMD ;调用写命令子程序MOV CMD_BYTE, #0CH ;显示状态设置LCALL WRITE_CMD ;调用写命令子程序MOV CMD_BYTE, #01H ;RS=0,RW=0时,DB7DB0=01H为清屏LCALL WRITE_CMD ;调用写命令子程序MOV CMD_BYTE, #06H ;输入方式设置LCALL WRITE_CMD ;调用写命令子程序RET,【项目实践】,;函数功能:液晶字符显示程序1

13、;在第一行显示表格TB1的内容 DISPMSG1: MOV CMD_BYTE,#80H ;设置DDRAM的地址LCALL WRITE_CMD ;调用写命令子程序MOV R7, #10 ;R7为显示数据个数MOV R6, #00H ;R6表头地址MOV DPTR, #TAB1 DISPMSG1_1:MOV A, R6MOVC A, A+DPTR ;查表MOV DAT_BYTE, A ;从A把数据传给写数据入口参数DAT_BYTELCALL WRITE_DAT ;调用写数据子程序INC R6 ;下一个数据的地址DJNZ R7, DISPMSG1_1 ;判断是否显示完毕RET,【项目实践】,;函数功

14、能:液晶字符显示程序2 ;在第二行显示表格TB2的内容 DISPMSG2: MOV CMD_BYTE, #0C0H ;设置DDRAM的地址LCALL WRITE_CMD ;调用写命令子程序MOV R7,#0fHMOV R6,#00HMOV DPTR,#TAB2 DISPMSG2_1:MOV A,R6MOVC A, A+DPTRMOV DAT_BYTE, ALCALL WRITE_DAT ;调用写数据子程序INC R6DJNZ R7, DISPMSG2_1RET,;函数功能:延时子程序 ;入口参数: ;出口参数: DELAY: MOV R5, #0A0H DELAY1: NOPDJNZ R5,

15、DELAY1RETORG 0200H ;要显示的内容 TAB1: DB “ I LIKE MCU “ TAB2: DB “ “END,三、C语言程序,#include #define uchar unsigned char #define uint unsigned int sbit lcden=P22; sbit lcdrs=P20; sbit lcdrw=P21; uchar num; uchar code table=“I LIKE MCU!“; uchar code table1=““; void delay(uint z) uint x,y;for (x=z;x0;x-)for(y=110;y0;y-); void write_com(uchar com)lcdrs=0; P1=com;delay(5);lcden=1;delay(5);lcden=0; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号