1602液晶初始化程序(汇编)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

〔原创〕1602液晶初始化程序(2007-12-22 18:10:40)

标签:1602液晶it/科技汇编语言

液晶初始化,显示数字,按秒计数

RS EQU P2.0

RW EQU P2.1

E EQU P2.2

IN_0 EQU P0

SECL EQU 40H ;秒低位

SECH EQU 41H ;秒高位

MH1 EQU 42H ;冒号

MINL EQU 43H ;分低位

MINH EQU 44H ;分高位

MH2 EQU 45H ;冒号

HOURL EQU 46H ;时低位

HOURH EQU 47H ;时高位

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

ORG 0000H

AJMP START

ORG 000BH

AJMP INTT_0

START:MOV SP,#70H

MOV R2,#20

ACALL INIT_LCD ;初始化液晶

MOV R5,#00H

MOV IN_0,#84H ;写入显示起始地址(第一行第五个位置 ACALL ENABLE

MOV TH0,#3fH ;50MS

MOV TL0,#0b0H

MOV TMOD,#01H

ACALL SJCZ

START1:SETB EA

SETB ET0

SETB TR0

LCALL WDATA

AJMP START1

;*****时间初值*******

SJCZ: MOV 40H,#8 ;显示初值是 08:08:08

MOV 41H,#0

MOV 42H,#10

MOV 43H,#8

MOV 44H,#0

MOV 45H,#10

MOV 46H,#8

MOV 47H,#0

RET

;****T0定时器中断****

INTT_0: PUSH ACC

MOV TL0,#0b0H ;送定时初值

MOV TH0,#3fH

DJNZ R2,TT

MOV R2,#20

INC SECL ;秒记数,到60S就清0 MOV A,SECL

CJNE A,#0AH,TT

INC SECH

MOV SECL,#0

MOV A,SECH

CJNE A,#06H,TT

MOV SECH,#0

INC MINL ;分记数,到60分请0 MOV A,MINL

CJNE A,#0AH,TT

MOV MINL,#0

INC MINH

MOV A,MINH

CJNE A,#06H,TT

MOV MINH,#0

INC HOURL ;时记数,到24时清0 MOV A,HOURL

CJNE A,#04H,TT2

MOV A,HOURH

CJNE A,#02H,TT1

MOV HOURL,#0

MOV HOURH,#0

AJMP TT

TT2: CJNE A,#0AH,TT

MOV HOURL ,#0

INC HOURH

AJMP TT

TT1: MOV A,HOURL

CJNE A,#0AH,TT

MOV HOURL ,#0

INC HOURH

AJMP TT

TT: POP ACC

RETI

;*******液晶初始化*****

INIT_LCD:

CALL DELAYL ;延时20ms,等待LCD完成电源的启动

MOV IN_0,#01H ;清屏并光标复位

ACALL ENABLE

MOV IN_0,#38H ;设置显示模式:8位2行5x7点阵

ACALL ENABLE

MOV IN_0,#0FH ;显示器开、光标开、光标允许闪烁

ACALL ENABLE

MOV IN_0,#06H ;文字不动,光标自动右移

ACALL ENABLE

MOV IN_0,#0C0H ;写入显示起始地址(第二行第一个位置) ACALL ENABLE

RET

;******写数据程序***

WDATA: MOV IN_0,#84H ;写入显示起始地址(第一行第五个位置

ACALL ENABLE

MOV R1,#8

MOV R0,#47H

WDATA1: MOV A,@R0

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV IN_0,A ;写入数据

SETB RS

CLR RW

CLR E

ACALL CHECKBUSY

SETB E ; 忙检测

DEC R0

DJNZ R1,WDATA1

MOV R1,#8

RET

;*******显示字母表********

TABLE: DB 30H,31H,32H,33H,34H,35H ;0 1 2 3 4 5

DB 36H,37H,38H,39H,3AH,80H,2EH ;6 7 8 9 : 空格 .

;*********写指令*****

ENABLE: CLR RS ;写入控制命令的子程序

CLR RW

CLR E

ACALL CHECKBUSY

SETB E

RET

;*******程序忙检测***

CHECKBUSY:

MOV IN_0,#0FFH ;判断液晶显示器是否忙的子程序

CLR RS

SETB RW

CLR E

NOP

SETB E

JB P0.7,CHECKBUSY ;如果P1.7为高电平表示忙就循环等待 RET

;******延时程序****

DELAY: MOV R6,#50

DEL: MOV R7,#48

DJNZ R7,$

DJNZ R6,DEL

RET

DELAYL: MOV R7,#100 ;长延时20ms

D1: MOV R6,#98

DJNZ R6,$

DJNZ R7,D1

相关文档
最新文档