当前位置:文档之家› LCD1602液晶显示器

LCD1602液晶显示器

实验11:1602液晶显示屏显示(字符型液晶显示器)字符型液晶显示器用于数字、字母、符号并可显示少量自定义符号。

这类液晶显示器通常有16根接口线,下表是这16根线的定义。

字符型液晶接口说明编号符号引脚说明编号符号引脚说明1 Vss 电源地 9 D2 数据线22 Vdd 电源正 10 D3 数据线33 VL 液晶显示偏压信号 11 D4 数据线44 RS 数据/命令选择端 12 D5 数据线55 R/W 读/ 写选择端 13 D6 数据线66 E 使能信号 14 D7 数据线77 D0 数据线0 15 BLA 背光源正极8 D1 数据线1 16 BLK 背光源负极(本学习板配的内部已经接地)下图是字符型液晶显示器与单片机的接线图。

这用了P0口的8根线作为液晶显示器的数据线,用P20、P21、P22做为3根控制线。

字符型液晶显示器与单片机的接线图字符型液晶显示器的使用,字符型液晶显示器一般采用HD44780芯片做为控制器的。

1.字符型液晶显示器的驱动程序这个驱动程序适用于1602型字符液晶显示器,1) 初始化液晶显示器命令(RSTLCD)设置控制器的工作模式,在程序开始时调用。

参数:无。

2) 清屏命令(CLRLCD)清除屏幕显示的所有内容参数:无3) 光标控制命令(SETCUR)用来控制光标是否显示及是否闪烁参数:1个,用于设定显示器的开关、光标的开关及是否闪烁。

4) 写字符命令(WRITECHAR)在指定位置(行和列)显示指定的字符。

参数:共有3个,即行值、列值及待显示字符,分别存放在XPOS、YPOS和A中。

其中行值与列值均从0开始计数,A中可直接写入字符的符号,编译程序自动转化为该字符的ASCII值。

5) 字符串命令(WRITESTRING)在指定位置显示指定的一串字符。

参数:共有3个,即行值、列值和R0指向待显示字符串的内存首地址,字符串须以0结尾。

如果字符串的长度超过了从该列开始可显示的最多字符数,则其后字符被截断,并不在下行显示出来。

以下是驱动源程序;**************************************************;连线图:; DB0---DPROT.0 DB4---DPROT.4 RS-------------P2.0; DB1---DPROT.1 DB5---DPROT.5 RW-------------P2.1; DB2---DPROT.2 DB6---DPROT.6 E--------------P2.2; DB3---DPROT.3 DB7---DPROT.7 VLCD接1K电阻到GND*;系统晶振为11.0592;**************************************************RS BIT P2.0RW BIT P2.1E BIT P2.2DPORT EQU P0XPOS EQU R1 ;列方向地址指针YPOS EQU R2 ;行方向地址指针CUR EQU R3 ;设定光标参数NoDisp EQU 0 ;无显示NoCur EQU 1 ;有显示无光标CurNoFlash EQU 2 ;有光标但不闪烁CurFlash EQU 3 ;有光标且闪烁WriteString:MOV A,@R0JZ WS_RETCALL WriteCharMOV A,XPOSCJNE A,#15,WS_1 ;如果XPOS中的值未到15(可显示的最多位)JMP WS_RETWS_1:INC R0INC XPOSJMP WriteStringWS_RET:RET;光标设置命令SetCur:MOV A,CURJZ S_1 ;参数为0,转关显示DEC AJZ S_2 ;参数为1,转开显示,但无光标DEC AJZ S_3 ;参数为2,转开显示且有光标,无闪烁DEC AJZ S_4 ;参数为3,转开显示,光标闪烁JMP S_RET ;否则返回S_1:MOV A,#00001000B ;关显示CALL LCDWCJMP S_RETS_2:MOV A,#00001100B ;开显示但无光标CALL LCDWCJMP S_RETS_3:MOV A,#00001110B ;开显示有光标但不闪烁CALL LCDWCJMP S_RETS_4:MOV A,#00001111B ;开显示有光标且闪烁CALL LCDWCS_RET:RET;清屏命令ClrLcd:MOV A,#01HCALL LCDWCRET;在指定的行与列显示指珲的字符,xpos,行,ypos,列 A,待显示字符WriteChar:CALL LCDPOSCALL LCDWDRET;系统资源一个堆栈WaitIdle: ;正常读写操作之前必须检测LCD控制器状态PUSH ACCMOV DPORT,#0FFHCLR RSSETB RWSETB ENOPW_1:MOV A,DPORTANL A,#80HJZ W_2JMP W_1W_2:CLR EPOP ACCRET;系统资源 aLcdWd: ;写字符子程序CALL WAITIDLESETB RSCLR RWMOV DPORT,A ;以A为数据传递SETB ENOPCLR ERET;系统资源 aLcdWc: ;送控制字子程序(检测忙信号)CALL WaitIdleLcdWcn: ;送控制字子程序(不检测忙信号)CLR RSCLR RWMOV DPORT,ASETB ENOPCLR ERET;系统资源:一个堆栈LCDPOS: ;设置第(XPOS,YPOS)个字符的DDRAM地址PUSH ACCMOV A,XPOSANL A,#0FH ;X位置范围(0到15)MOV XPOS,AMOV A,YPOSANL A,#01H ;Y位置范围(0到1)MOV YPOS,ACJNE A,#00,LPS_LAY ;(第一行)X: 第0----15个字符 MOV A,XPOS ; DDRAM: 0----0FHJMP LPS_LAXLPS_LAY:MOV A,XPOS ;(第二行)X: 第0----15个字符 ADD A,#40H ;DDRAM: 40----4FHLPS_LAX:ORL A,#80H ;设置DDRAM地址CALL LCDWCPOP ACCRET;系统资源 aRSTLCD:MOV R6,#15 ;如果使用12M或以下晶振,此数值不必改,如用24M晶振,须用30CALL DELAY ;延时15毫秒MOV A,#38HCALL LCDWCNMOV R6,#5 ;延时5毫秒,如晶振频率高于12M,加大该值CALL DELAYCALL LCDWCNMOV R6,#5 ;延时5毫秒,如晶振频率高于12M,加大该值CALL DELAYCALL LCDWCNMOV A,#38H ;显示模式设置CALL LCDWCMOV A,#08H ;显示关闭CALL LCDWCMOV A,#01H ;显示清屏CALL LCDWCMOV A,#06H ;显示光标移动位置CALL LCDWCMOV A,#0CH ;显示开及光标设置CALL LCDWCRET;系统资源:r4,r5,r6DELAY:D_1: MOV R5,#25 ;延时子程序(1MS)D_2: MOV R4,#20DJNZ R4,$DJNZ R5,D_2DJNZ R6,D_1 ;R6用作参数传递RETEND该驱动程序占用资源:A、R0、R4、R5和R6。

2.字符型液晶显示器驱动程序的应用参考程序:显示”Welcome!MCUEU ”RS bit P2.0RW bit P2.1E bit P2.2DPORT EQU P0XPOS EQU R1 ;列方向地址指针 YPOS EQU R2 ;行方向地址指针CUR EQU R3 ;设定光标参数NoDisp EQU 0 ;无显示 NoCur EQU 1 ;有显示无光标CurNoFlash EQU 2 ;有光标但不闪烁CurFlash EQU 3 ;有光标且闪烁ORG 0000HJMP STARTORG 30HSTART:MOV SP,#5FHCALL RSTLCDMOV 20H,#'W'MOV 21H,#'e'MOV 22H,#'l'MOV 23H,#'c'MOV 24H,#'o'MOV 25H,#'m'MOV 26H,#'e'MOV 27H,#'!'MOV 28H,#'M'MOV 29H,#'C'MOV 2AH,#'U'MOV 2BH,#'E'MOV 2CH,#'U'MOV 2DH,#' 'MOV 2EH,#0MOV Cur,#CurFlashCALL SETCURMOV R0,#20HMOV r1,#1MOV r2,#0CALL WRITESTRINGJMP $;测试主程序到此结束WriteString:MOV A,@R0JZ WS_RETCALL WriteCharMOV A,XPOSCJNE A,#15,WS_1 ;如果XPOS中的值未到15(可显示的最多位)JMP WS_RETWS_1:INC R0INC XPOSJMP WriteStringWS_RET:RET;光标设置命令SetCur:MOV A,CURJZ S_1 ;参数为0,转关显示DEC AJZ S_2 ;参数为1,转开显示,但无光标DEC AJZ S_3 ;参数为2,转开显示且有光标,无闪烁DEC AJZ S_4 ;参数为3,转开显示,光标闪烁JMP S_RET ;否则返回S_1:MOV A,#00001000B ;关显示CALL LCDWCJMP S_RETS_2:MOV A,#00001100B ;开显示但无光标CALL LCDWCJMP S_RETS_3:MOV A,#00001110B ;开显示有光标但不闪烁CALL LCDWCJMP S_RETS_4:MOV A,#00001111B ;开显示有光标且闪烁CALL LCDWCS_RET:RET;清屏命令ClrLcd:MOV A,#01HCALL LCDWCRET;在指定的行与列显示指珲的字符,xpos,行,ypos,列 A,待显示字符WriteChar:CALL LCDPOSCALL LCDWDRET;系统资源一个堆栈WaitIdle: ;正常读写操作之前必须检测LCD控制器状态PUSH ACCMOV DPORT,#0FFHCLR RSSETB RWSETB ENOPW_1:MOV A,DPORTANL A,#80HJZ W_2JMP W_1W_2:CLR EPOP ACCRET;系统资源 aLcdWd: ;写字符子程序CALL WAITIDLESETB RSCLR RWMOV DPORT,A ;以A为数据传递SETB ENOPCLR ERET;系统资源 aLcdWc: ;送控制字子程序(检测忙信号)CALL WaitIdleLcdWcn: ;送控制字子程序(不检测忙信号)CLR RSCLR RWMOV DPORT,ASETB ENOPCLR ERET;系统资源:一个堆栈LCDPOS: ;设置第(XPOS,YPOS)个字符的DDRAM地址PUSH ACCMOV A,XPOSANL A,#0FH ;X位置范围(0到15)MOV XPOS,AMOV A,YPOSANL A,#01H ;Y位置范围(0到1)MOV YPOS,ACJNE A,#00,LPS_LAY ;(第一行)X: 第0----15个字符MOV A,XPOS ; DDRAM: 0----0FHJMP LPS_LAXLPS_LAY:MOV A,XPOS ;(第二行)X: 第0----15个字符ADD A,#40H ;DDRAM: 40----4FHLPS_LAX:ORL A,#80H ;设置DDRAM地址CALL LCDWCPOP ACCRET;系统资源 aRSTLCD:MOV R6,#15 ;如果使用12M或以下晶振,此数值不必改,如用24M晶振,须用30CALL DELAY ;延时15毫秒MOV A,#38HCALL LCDWCNMOV R6,#5 ;延时5毫秒,如晶振频率高于12M,加大该值CALL DELAYCALL LCDWCNMOV R6,#5 ;延时5毫秒,如晶振频率高于12M,加大该值CALL DELAYCALL LCDWCNMOV A,#38H ;显示模式设置CALL LCDWCMOV A,#08H ;显示关闭CALL LCDWCMOV A,#01H ;显示清屏CALL LCDWCMOV A,#06H ;显示光标移动位置CALL LCDWCMOV A,#0CH ;显示开及光标设置CALL LCDWCRET;系统资源:r4,r5,r6DELAY:D_1: MOV R5,#25 ;延时子程序(1MS)D_2: MOV R4,#20DJNZ R4,$DJNZ R5,D_2DJNZ R6,D_1 ;R6用作参数传递RETEND下载 (37.77 KB)2009-7-23 20:37 收藏分享评分。

相关主题