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

📄 lcm.asm

📁 60秒ISD2560语音芯片的汇编源程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		$INCLUDE   (t89c51cc01.INC)					 


		LCMRS		EQU		P2.6					;L:存取缓存器,H:存取DDRAM
		LCMWR		EQU		P2.7					;L有效
		LCMBC		EQU		P3.6
		LCMCS		EQU		P3.7				    ;L有效

		REGNAME		EQU		30H
		REGDATA		EQU		31H
		REGDATA1	EQU		32H
		LCM_X		EQU		33H
		LCM_Y		EQU		34H
		LCM_DATA1	EQU		35H
		LCM_DATA2	EQU		36H
		COUNT1		EQU		37H
		COUNT2		EQU		38H
;****************************************************
			ORG		0000H
			AJMP	MAIN
			ORG		0100H
MAIN:		
			MOV		SP,#60H
			LCALL	DELAY2					;延时等待LCM上电复位
			LCALL	LCM_INIT
			LCALL	LCM_CLR
			CLR		LCMBC	
;****************************************************
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LGS0:		LCALL	LCM_CLR
			MOV		DPTR,#TAB0
			LCALL	PHO_DISP
			LCALL	DELAY1
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;			LJMP	LGS0

INFDISP:	LCALL	LCM_CLR

			LCALL	DELAY5MS

			MOV		REGNAME,#0F0H
			MOV		REGDATA,#0A0H
			LCALL	REG_WRITE
				    			
			MOV		REGNAME,#10H
			MOV		REGDATA,#78H
			LCALL	REG_WRITE

			MOV		REGNAME,#00H
			MOV		REGDATA,#0CDH
			LCALL	REG_WRITE

			MOV		REGNAME,#0F1H
			MOV		REGDATA,#5FH
			LCALL	REG_WRITE


			MOV		LCM_X,#06H
			MOV		LCM_Y,#10H
			LCALL	WR_ZB
			MOV		A,#0C7H
			LCALL	DDR_WRITE
			MOV		A,#0C7H
			LCALL	DDR_WRITE

			MOV		LCM_X,#0EH
			MOV		LCM_Y,#10H
			LCALL	WR_ZB
			MOV		A,#0B4H
			LCALL	DDR_WRITE
			MOV		A,#0F3H
			LCALL	DDR_WRITE
			
			MOV		LCM_X,#16H
			MOV		LCM_Y,#10H
			LCALL	WR_ZB
			MOV		A,#0C0H
			LCALL	DDR_WRITE
			MOV		A,#0D7H
			LCALL	DDR_WRITE
			
			LCALL	DELAY1
			LJMP	LGS0		
;****************************************************
LCM_INIT:	MOV		COUNT1,#00H			;初始化
			MOV		COUNT2,#27H
LCM_INIT1:	MOV		DPTR,#INITTAB1
			MOV		A,COUNT1
			MOVC	A,@A+DPTR
			MOV		REGNAME,A
			MOV		DPTR,#INITTAB2
			MOV		A,COUNT1
			MOVC	A,@A+DPTR
			MOV		REGDATA,A
			LCALL	REG_WRITE
			INC		COUNT1
			DJNZ	COUNT2,LCM_INIT1
			RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LCM_CLR:	MOV		REGNAME,#0E0H			;清屏
			MOV		REGDATA,#00H
			LCALL	REG_WRITE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;			
;			MOV		A,#0A0H					;A0H为当前【F0H】的值
;			ORL		A,#08H				    
			MOV		REGDATA,#0A8H
			MOV		REGNAME,#0F0H
			LCALL	REG_WRITE

			MOV		REGNAME,#00H
			MOV		REGDATA,#0C5H
			LCALL	REG_WRITE
			MOV		LCM_X,#00H
			MOV		LCM_Y,#00H
			LCALL	WR_ZB
			MOV		A,#00H
			LCALL	DDR_WRITE
			RET
;****************************************************
CHRT_DISP:	MOV		LCM_X,#00H			;全屏显示中文或字符
			MOV		LCM_Y,#00H
			LCALL	WR_ZB
			MOV		COUNT1,#08H
CHRT_DISP1:	MOV		COUNT2,#1EH
CHRT_DISP2:	CLR		A
			MOVC	A,@A+DPTR
			LCALL	DDR_WRITE
			INC		DPTR
			DJNZ	COUNT2,CHRT_DISP2
			DJNZ	COUNT1,CHRT_DISP1
			RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
PHO_DISP:	MOV		LCM_X,#00H			;全屏显示图形
			MOV		LCM_Y,#00H
			LCALL	WR_ZB
			MOV		COUNT1,#80H
PHO_DISP1:	MOV		COUNT2,#1EH
PHO_DISP2:	CLR		A
			MOVC	A,@A+DPTR
			LCALL	DDR_WRITE
			INC		DPTR
			DJNZ	COUNT2,PHO_DISP2
			DJNZ	COUNT1,PHO_DISP1
			RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
LAT_DISP:	MOV		LCM_X,#00H			;全屏显示点阵
			MOV		LCM_Y,#00H
			LCALL	WR_ZB
			MOV		COUNT1,#20H

LAT_DISP1:	MOV		COUNT2,#3CH
LAT_DISP2:	MOV		A,LCM_DATA1
			LCALL	DDR_WRITE
			DJNZ	COUNT2,LAT_DISP2

			MOV		COUNT2,#3CH
LAT_DISP3:	MOV		A,LCM_DATA2
			LCALL	DDR_WRITE
			DJNZ	COUNT2,LAT_DISP3

			DJNZ	COUNT1,LAT_DISP1
			RET
;****************************************************
WR_ZB:		MOV		REGNAME,#60H				;定坐标
			MOV		REGDATA,LCM_X
			LCALL	REG_WRITE
			MOV		REGNAME,#70H
			MOV		REGDATA,LCM_Y
			LCALL	REG_WRITE
			RET
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
REG_WRITE:	MOV		A,REGNAME			;写资料到缓存器
			LCALL	REG_WR
			MOV		A,REGDATA
			LCALL	REG_WR
			RET

REG_WR:		MOV		P0,A
			CLR		LCMCS
;			SETB	LCMRD
			CLR		LCMRS
			CLR		LCMWR
			NOP
			NOP
			SETB	LCMWR
			SETB	LCMRS
			SETB	LCMCS
			RET

DDR_WRITE:	MOV		P0,A
			CLR		LCMCS
			SETB	LCMRS
			CLR		LCMWR
			NOP
			NOP
			SETB	LCMWR
			SETB	LCMRS
			SETB	LCMCS
			RET
;****************************************************
DELAY1:		MOV		R5,#16H
DEL11:		MOV		R6,#0FFH
DEL12:		MOV		R7,#0FFH
DEL13:		DJNZ	R7,DEL13
			DJNZ	R6,DEL12
			DJNZ	R5,DEL11
			RET

DELAY2:		MOV		R6,#0EAH
DEL21:		MOV		R7,#0FFH
DEL22:		DJNZ	R7,DEL22
			DJNZ	R6,DEL21
			RET

DELAY5MS:	MOV 	R7,#10					;延时5ms
D1:			MOV		R6,#248
			DJNZ	R6,$
			DJNZ	R7,D1
			NOP
			NOP
			RET		
;****************************************************
INITTAB1:
DB 000H,001H,002H,003H,010H,011H,012H,021H,031H,041H,051H,020H,030H,040H,050H,060H
DB 061H,070H,071H,072H,080H,081H,091H,090H,0A0H,0A1H,0A2H,0A3H,0B0H,0B1H,0C0H,0C1H
DB 0C8H,0C9H,0CAH,0D0H,0E0H,0F0H,0F1H
INITTAB2:
DB 0C9H,0F2H,010H,080H,068H,010H,091H,01DH,07FH,000H,000H,01DH,07FH,000H,000H,000H
DB 000H,000H,000H,07FH,0AAH,040H,000H,00AH,011H,000H,000H,000H,01DH,07FH,000H,00AH
DB 080H,080H,000H,080H,000H,0A0H,00FH

TAB0:
;--  调入了一幅图像:  --
;--  宽度x高度=240x128  --
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB  000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H

⌨️ 快捷键说明

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