您好,欢迎来到年旅网。
搜索
您的当前位置:首页单片机:LCD(1602)动态显示(汇编)

单片机:LCD(1602)动态显示(汇编)

来源:年旅网
单片机:LCD(1602)动态显示(汇编) 2009年06月13日 星期六 15:31 作者:gguoqing 出处:伟纳电子

http://www.willar.com/mcu_view.asp?id=15

显示内

容: CHINESE * ;* NEW

YEAR *

;* * ;* 显示方

式: *

;* 1、LCD第一行显示:

CHINESE *

;* LCD第二行显示: NEW

YEAR * ;* 2、先将两行字符写入DDRAM中,然后从右至左逐字移出显示。 *

;* 3、在指定位置停留1.6秒后,闪烁2次,清

屏。 * ;* 4、反复循环上述显示方

式。 * ;*******************************************************************

LCD_RS EQU P1.0 LCD_RW EQU P1.1 LCD_EN EQU P1.2

;******************************************************************* ORG 0000H AJMP MAIN ORG 0030H

;******************************************************************* MAIN:

MOV SP,#60H

ACALL LCD_INIT ;LCD初始化 MAIN1:

ACALL CLR_LCD ;清LCD

MOV A,#90H ;在第一行第17列的位置 ACALL LCD_CMD

MOV DPTR,#LINE1 ;第一行字符串的起始地址送入DPTR。 ACALL WRITE

MOV A,#0D0H ;在第二行第17列的位置 ACALL LCD_CMD

MOV DPTR,#LINE2 ;第二行字符串的起始地址送入DPTR。 ACALL WRITE

MOV R3,#10H ;向左移动16格 LOOPA:

MOV A,#18H ;字符同时左移一格 ACALL LCD_CMD

MOV R5,#03H ;延时375MS ACALL DELAY125MS DJNZ R3,LOOPA

ACALL DELAY4 ;延时1.6s ACALL DELAY4

MOV R4,#02H ;设置闪烁次数 ACALL FLASH ;开始闪烁 AJMP MAIN1 LINE1:

DB \" CHINESE \LINE2:

DB \" NEW YEAR \

;***************************************************************

;LCD初始化设定子程序

;*************************************************************** LCD_INIT:

ACALL DELAY5MS ;延时15MS

ACALL DELAY5MS ;等待LCD电源稳定 ACALL DELAY5MS

MOV A,#38H ;16*2显示,5*7点阵,8位数据 ACALL LCD_CMD_NC ;不进行LCD忙检测

ACALL DELAY5MS

MOV A,#38H ;16*2显示,5*7点阵,8位数据 ACALL LCD_CMD_NC ;不进行LCD忙检测 ACALL DELAY5MS

MOV A,#38H ;16*2显示,5*7点阵,8位数据 ACALL LCD_CMD_NC ;不进行LCD忙检测 ACALL DELAY5MS

MOV A,#08H ;显示关

ACALL LCD_CMD ;进行LCD忙检测 MOV A,#01H ;清除屏幕

ACALL LCD_CMD ;进行LCD忙检测 MOV A,#0CH ;显示开,关光标 ACALL LCD_CMD ;进行LCD忙检测

RET

;*************************************************************** ;清LCD子程序

;*************************************************************** CLR_LCD:

MOV A,#01H ;清除屏幕

ACALL LCD_CMD ;进行LCD忙检测 RET

;***************************************************************

;写指令数据到LCD

;RS=L,RW=L,D0-D7=指令码,E=高脉冲

;*************************************************************** LCD_CMD:

CALL CHECKBUSY LCD_CMD_NC:

CLR LCD_RS CLR LCD_RW MOV P0,A

SETB LCD_EN NOP NOP

NOP NOP

CLR LCD_EN RET

;***************************************************************

;写显示数据到LCD

;RS=H,RW=L,D0-D7=数据,E=高脉冲

;*************************************************************** LCD_WDATA:

ACALL CHECKBUSY SETB LCD_RS CLR LCD_RW MOV P0,A SETB LCD_EN NOP NOP NOP NOP

CLR LCD_EN RET

;***************************************************************

;检测LCD控制器忙状态 ;读数据

;RS=L,RW=H,E=H,输出:D0-D7=数据

;P0.7=1,LCD忙,等待。P0.7=0,LCD闲,可以进行读写操作。

;*************************************************************** CHECKBUSY:

PUSH ACC

MOV P0,#0FFH CLR LCD_RS SETB LCD_RW SETB LCD_EN BUSYLOOP: NOP

JB P0.7,BUSYLOOP CLR LCD_EN POP ACC RET

;***************************************************************

; 发送字符串子程序

;*************************************************************** WRITE:

PUSH ACC WRITE1:

CLR A

MOVC A,@A+DPTR JZ WRITE2 INC DPTR

ACALL LCD_WDATA JMP WRITE1 WRITE2:

POP ACC RET

;*************************************************************** ;闪烁子程序

;*************************************************************** FLASH:

MOV A,#08H ;关闭显示 ACALL LCD_CMD ACALL DELAY4

MOV A,#0CH ;开显示,关闭光标 ACALL LCD_CMD ACALL DELAY4

DJNZ R4,FLASH RET

;*************************************************************** ;延时5MS子程序 ;LCD初始化使用

;*************************************************************** DELAY5MS:

MOV R6,#10 DL1:

MOV R7,#249 DL2:

DJNZ R7,DL2 DJNZ R6,DL1 RET

;*****************************************************

**********

;延时125MS子程序 ;字符串移动时使用

;*************************************************************** DELAY125MS: DL3:

MOV R6,#250 DL4:

MOV R7,#249 DL5:

DJNZ R7,DL5 DJNZ R6,DL4 DJNZ R5,DL3 RET

;***************************************************************

;延时800MS子程序 ;闪烁时使用

;*************************************************************** DELAY4:

MOV R5,#40 DL6:

MOV R6,#100 DL7:

MOV R7,#100 DL8:

DJNZ R7,DL8 DJNZ R6,DL7 DJNZ R5,DL6 RET

;*************************************************************** END

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务