⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s19-3.asm

📁 LCD液晶显示驱动模块液晶显示计时时钟单片机源程序
💻 ASM
字号:
;********89C51引脚定义********
	RS BIT P3.3
	R_W BIT P3.4
	E BIT P3.5
	DB0_DB7 EQU P1
;*******定义时、分、秒及50mS单元********
	DI_DA DATA 20H
	SEC DATA 21H
	MIN DATA 22H
	HOUR DATA 23H
;*******程序开始*******
	ORG 0000H
	LJMP MAIN
	ORG 000BH
	LJMP CLOCK
	ORG 030H
MAIN:	MOV TMOD,#01H
	MOV TL0,#0B0H
	MOV TH0,#3CH
	SETB ET0
	SETB TR0
	MOV DI_DA,#00H
	SETB EA
	MOV SP,#60H
	LCALL INITIAL
	LCALL CLS
;*****显示--Beijing Time--*****
	MOV A,#10000000B
	LCALL WRITE_COM
	MOV DPTR,#LINE0
	LCALL DISP
;******************************
	MOV A,#11000000B
	LCALL WRITE_COM
	MOV DPTR,#LINE1
	LCALL DISP
;******************************
	MOV A,#11001100B
	LCALL WRITE_COM
	MOV DPTR,#LINE1
	LCALL DISP
;*******计时开始********
BEGIN:	MOV P3,#7FH
	MOV A,P3
	CJNE A,#7FH,NEXT
	SETB P3.7
	ACALL CONV
	ACALL DIS
	AJMP BEGIN
NEXT:	ACALL KEY
	AJMP BEGIN
;*******扫描按键********
KEY:	ACALL DEL10MS
	JB P3.0,HOUR_KEY
MIN_ADJ:CLR C
	MOV A,MIN
	INC A
	DA A
	CJNE A,#60H,X1
	CLR A
X1:	MOV MIN,A
	ACALL DIS
	ACALL DEL200MS
	MOV P3,#7FH
	JNB P3.0,MIN_ADJ
HOUR_KEY:	JB P3.1,X2
HOUR_ADJ:	CLR C
	MOV A,HOUR
	INC A
	DA A
	CJNE A,#24H,X3
	CLR A
X3:	MOV HOUR,A
	ACALL DIS
	ACALL DEL200MS
X2:	MOV P3,#7FH
	JNB P3.1,HOUR_ADJ
	SETB P3.7
	RET
;*******计时转换*******
CONV:	MOV A,DI_DA
	CJNE A,#14H,DONE
	MOV DI_DA,#00H
	MOV A,SEC
	ADD A,#01H
	DA A
	MOV SEC,A
	CJNE A,#60H,DONE
	MOV SEC,#00H
	MOV A,MIN
	ADD A,#01H
	DA A
	MOV MIN,A
	CJNE A,#60H,DONE
	MOV MIN,#00H
	MOV A,HOUR
	ADD A,#01H
	DA A
	MOV HOUR,A
	CJNE A,#24H,DONE
	MOV HOUR,#00H
DONE:	RET
;*******显示时间*******
DIS:	MOV A,#11000100B
	LCALL WRITE_COM
	MOV A,HOUR
	SWAP  A
	ANL A,#0FH
	ADD A,#30H
	LCALL WRITE_DATA
	MOV A,HOUR
	ANL A,#0FH
	ADD A,#30H
	LCALL WRITE_DATA
	MOV A,#3AH
	LCALL WRITE_DATA
	MOV A,MIN
	SWAP  A
	ANL A,#0FH
	ADD A,#30H
	LCALL WRITE_DATA
	MOV A,MIN
	ANL A,#0FH
	ADD A,#30H
	LCALL WRITE_DATA
	MOV A,#3AH
	LCALL WRITE_DATA
	MOV A,SEC
	SWAP  A
	ANL A,#0FH
	ADD A,#30H
	LCALL WRITE_DATA
	MOV A,SEC
	ANL A,#0FH
	ADD A,#30H
	LCALL WRITE_DATA
	RET
;*******50mS定时中断服务子程序*******
CLOCK:	MOV TL0,#0B0H
	MOV TH0,#3CH
	INC DI_DA
	RETI
;*******显示字符串到LCM子程序********
DISP:	PUSH ACC
DISP_LOOP:	CLR A
	MOVC A,@A+DPTR
	JZ END_DISP
	LCALL WRITE_DATA
	INC DPTR
	SJMP DISP_LOOP
END_DISP:	POP ACC
	RET
;****** 启动LCM子程序******
INITIAL:MOV A,#00111000B
	LCALL WRITE_COM
	MOV A,#00001100B 
	LCALL WRITE_COM 
	MOV A,#00000110B 
	LCALL WRITE_COM 
	RET
;******查询忙碌标志信号子程序******
CHECK_BUSY: 	PUSH ACC
BUSY_LOOP:	CLR E
	SETB R_W
	CLR RS
	SETB E
	MOV A, DB0_DB7
	CLR E
	JB ACC.7,BUSY_LOOP
	POP ACC
	LCALL DEL
	RET
;****** 写指令到LCM子程序******
WRITE_COM: 	LCALL CHECK_BUSY
	CLR E
	CLR RS 
	CLR R_W
	SETB E
	MOV DB0_DB7,A
	CLR E
	RET
;****** 写数据到LCM子程序******
WRITE_DATA: 	LCALL CHECK_BUSY
	CLR E
	SETB RS 
	CLR R_W
	SETB E
	MOV  DB0_DB7,A
	CLR E
	RET
;*******清除LCM子程序*******
CLS:	MOV A,#00000001B
	LCALL WRITE_COM
	RET
;****延时2.7mS子程序****
DEL:	MOV R6,#5
L1:	MOV R7,#248
	DJNZ R7,$
	DJNZ R6,L1
	RET
;******* 延时10mS子程序********
DEL10MS:MOV R5,#10H
TX1:	MOV R4,#0FFH
	DJNZ R4,$
	DJNZ R5,TX1
	RET
;******** 延时200mS子程序********
DEL200MS:MOV R3,#14H
TX2:	ACALL DEL10MS
	DJNZ R3,TX2
	RET
;*******字符串************
LINE0:	DB "--Beijing Time--",00H
LINE1:	DB "----",00H
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -