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

📄 t6963.asm

📁 12864LCD驱动 12864LCD驱动 12864LCD驱动 12864LCD驱动 12864LCD驱动 12864LCD驱动 12864LCD驱动 12864LCD驱动
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;********************************************************
;        温度传感
;	2003.10.27
;********************************************************
PARA        EQU         1EH             ; LCD每行显示字符数
D_ADD       EQU         0000h           ; 数据通道地址
C_ADD       EQU         4000h           ; 指令通道地址
;
HIN         EQU         P1.0            ; 系统状态查询
DHO         EQU         P1.1            ; 系统状态标志
KT          EQU         P1.2            ; 加热控制输出
TEMPOV      EQU         P1.3            ; 温度超出警告
FM          EQU         P1.4            ; 蜂鸣器输出
RUN         EQU         P1.5            ; 运行状态标记
;
LCDRST      EQU         P1.6            ; LCD复位信号
CD          EQU         P2.6            ; 数据/指令通道选择信号
CS          EQU         P2.7            ; 片选信号
LCDRD       EQU	        P3.7		; 读操作信号
LCDWR       EQU         P3.6		; 写操作信号
LCDBUS	    EQU	        P0		; 数据总线
;
SYSSTA      EQU         30H             ; 运行状态
CONNECT     EQU         31H             ; 联机状态
;
TMST        EQU         30H             ; 时间设定值
TPST        EQU         31H             ; 温度设置值
TIME        EQU         32H             ; 运行时间
TEMP        EQU         33H             ; 实际温度
TMSTBCD     EQU         34H             ; 时间设定值BCD码
TPSTBCD     EQU         35H             ; 温度设置值BCD码
TIMEBCD     EQU         36H             ; 运行时间BCD码
TEMPBCD     EQU         37H             ; 实际温度BCD码
;
COM         EQU         40H             ; 指令码寄存器
DAT1        EQU         41H             ; 数据寄存器1
DAT2        EQU         42H		; 数据寄存器2
COUNT1      EQU         43H             ; 字符属性地址
COUNT2      EQU         44H		; 计数器地址
;
O_XL        EQU         50H		; 行地址(00~07)
O_YL        EQU         51H             ; 列地址(00~1E)
ACODE       EQU         52H		; 字符代码地址
STX         EQU         53H             ; 字符串开始X
STY         EQU         54H             ; 字符串开始Y
STCOD       EQU         55H             ; 字符串开始COD
SLONG       EQU         56H             ; 字符串长度
;********************************************************
;程序开始
;********************************************************
	ORG	0000H
 	LJMP    MAIN
;********************************************************
;间接控制方式,读状态字子程序
;********************************************************
PR0:    MOV	DPTR,   #C_ADD
        MOVX    A,      @DPTR
	RET
;-------------------------------------------------------
; 判状态位S1,S0 子程序(读写指令和读写数据状态)
;-------------------------------------------------------
ST01:   LCALL   PR0
 	JNB     ACC.0,	ST01
	JNB     ACC.1,	ST01
	RET
;-------------------------------------------------------
; 判状态位S2子程序(数据自动读状态)
;-------------------------------------------------------
ST2:    LCALL   PR0
	JNB     ACC.2,	ST2
	RET
;-------------------------------------------------------
; 判状态位S3子程序(数据自动写状态)
;-------------------------------------------------------
ST3:    LCALL   PR0
	JNB     ACC.3,	ST3
	RET
;-------------------------------------------------------
; 判状态位S6子程序(屏读/屏拷贝状态)
;-------------------------------------------------------
ST6:    LCALL   PR0
	JB      ACC.6,	ERR
	RET
ERR:    LJMP    ST6			; 出错处理程序
;******************************************************
; 写指令和写数据子程序
;******************************************************
PR1:    LCALL   ST01            	; 双字节参数指令写入入口
	MOV     A,	DAT1		; 取第一参数单元数据
	LCALL   PR13			; 写入参数
PR11:   LCALL   ST01            	; 单字节参数指令写入入口
	MOV     A,	DAT2		; 取第二参数单元数据
	LCALL   PR13			; 写入参数
PR12:   LCALL   ST01            	; 无参数指令写入入口
	MOV     A,	COM		; 取指令代码单元数据
	LJMP    PR14			; 写入指令代码
PR13:	MOV     DPTR,   #D_ADD
PR14:   MOVX	@DPTR,  A
	RET
;******************************************************
; 读数据子程序
;******************************************************
PR2:    LCALL   ST01            	; 判状态位
	MOV     DPTR,   #D_ADD
	MOVX    A,      @DPTR
	MOV     DAT2,   A
	RET
;******************************************************
; 延时5秒 DLY_5S
;******************************************************
DLY_5S: MOV     R7,     #00H
        MOV     R6,     #00H
        MOV     R5,     #20H
D5S:    DJNZ    R7,     D5S
        DJNZ    R6,     D5S
        DJNZ    R5,     D5S
        RET
;******************************************************
; LCD初始化子程序一INTLCD1,图形模式下显示
;******************************************************
INTLCD1:MOV     DAT1,	#00H		; 设置文本显示区域首地址
	MOV     DAT2,	#00H
	MOV     COM,	#40H
	LCALL   PR1
	MOV     DAT1,	#1EH		; 设置文本显示区域宽度
	MOV     DAT2,	#00H		; 即一行显示所占字节数
	MOV     COM,	#41H
	LCALL   PR1
	MOV     DAT1,	#00H		; 设置图形显示区域首地址
	MOV     DAT2,	#00H		; 或为文本属性区域首地址
	MOV     COM,	#42H
	LCALL   PR1
	MOV     DAT1,	#1EH		; 设置图形显示区域宽度
	MOV     DAT2,	#00H		; 或为文本属性区域宽度
	MOV     COM,	#43H		; 即一行显示所占字节数
	LCALL   PR1
	MOV     COM,	#0A7H		; 光标形状设置
	LCALL   PR12
	MOV     COM,	#80H		; 显示方式设置逻辑"或"合成
	LCALL   PR12
	MOV     COM,	#98H		; 显示开关设置开图形显示
	LCALL   PR12
	RET
;******************************************************
; LCD初始化子程序二INTLCD2,文本模式下显示
;******************************************************
INTLCD2:MOV     DAT1,	#00H		; 设置文本显示区域首地址
	MOV     DAT2,	#00H
	MOV     COM,	#40H
	LCALL   PR1
	MOV     DAT1,	#1EH		; 设置文本显示区域宽度
	MOV     DAT2,	#00H		; 即一行显示所占字节数
	MOV     COM,	#41H
	LCALL   PR1
	MOV     DAT1,	#00H		; 设置图形显示区域首地址
	MOV     DAT2,	#08H		; 或为文本属性区域首地址
	MOV     COM,	#42H
	LCALL   PR1
	MOV     DAT1,	#1EH		; 设置图形显示区域宽度
	MOV     DAT2,	#00H		; 或为文本属性区域宽度
	MOV     COM,	#43H		; 即一行显示所占字节数
	LCALL   PR1
	MOV     COM,	#0A7H		; 光标形状设置
	LCALL   PR12
	MOV     COM,	#80H		; 显示方式设置文本特征
	LCALL   PR12
	MOV     COM,	#94H		; 显示开关设置开文本显示
	LCALL   PR12
	RET
;******************************************************
; 清LCD内部空间子程序CLRLCD
;******************************************************
CLRLCD:	MOV     DAT1,	#00H		; 设置显示RAM 首地址
	MOV     DAT2,	#00H
	MOV     COM,	#24H
	LCALL   PR1
	MOV     R3,	#00H		; 设置循环量(8K字节)
	MOV     R4,	#0FH
	MOV     COM,	#0B0H		; 设置自动写方式
	LCALL   PR12
CLRLCD1:LCALL   ST3			; 判状态位S2
	MOV     A,	#00H		; 置数据"0"
	LCALL   PR2			; 写入数据
	DJNZ    R3,	CLRLCD1		; 循环
	DJNZ    R4,	CLRLCD1
	MOV     COM,	#0B2H		; 设置自动写结束指令
	LCALL   PR12
	RET
;******************************************************
; 建立CGRAM1子程序
;******************************************************
CGRAM:  MOV     DAT1,	#03H		; 设置CGRAM偏置地址
	MOV     DAT2,	#00H
	MOV     COM,	#22H
	LCALL   PR1
	MOV     DAT1,	#00H		; 设置RAM地址指针
	MOV     DAT2,	#1CH
	MOV     COM,	#24H
	LCALL   PR1
	MOV     COM,	#0B0H		; 设置自动写方式
	LCALL   PR12
	MOV     A,	COUNT1		; 计算写入的字节数
	MOV     B,	#08H
	MUL     AB
	MOV     COUNT1,	A		; 计算器低8位数据
	INC     B			; 计算器高8位数据
	MOV     DPTR,	#CTAB2		; 取字符库首地址
	PUSH    DPH			; 存字符库指针
	PUSH    DPL
CGRAM1: LCALL   ST3			; 判自动写状态位
	POP     DPL			; 取字符库指针
	POP     DPH
	CLR     A
	MOVC    A,	@A+DPTR		; 取数据
	INC     DPTR			; 字符库指针加一
	PUSH    DPH			; 存字符库指针
	PUSH    DPL
	LCALL   PR2			; 写入数据
	DJNZ    COUNT1,	CGRAM1		; 计数循环
	DJNZ    B,	CGRAM1
	MOV     COM,	#0B2H		; 写入结束自动写指令
	LCALL   PR12
	POP     ACC			; 修正栈指针
	POP     ACC
	RET
;******************************************************
; 汉字库24X24
;******************************************************
CTAB1:  DB 000H,000H,000H,000H,000H,000H,000H,080H      ;肌(00)
        DB 000H,01FH,0C4H,030H,010H,087H,0E0H,010H
        DB 084H,020H,010H,084H,020H,010H,084H,020H
        DB 01FH,084H,020H,010H,084H,020H,010H,084H
        DB 020H,010H,084H,020H,010H,084H,020H,01FH
        DB 084H,020H,010H,084H,020H,010H,08CH,020H
        DB 010H,088H,020H,010H,088H,024H,010H,088H
        DB 024H,020H,090H,024H,027H,0A0H,026H,041H
        DB 040H,03EH,000H,080H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,002H,000H,001H,003H      ;体(01)
        DB 000H,003H,001H,000H,003H,001H,000H,002H
        DB 001H,000H,006H,001H,004H,004H,07FH,0FEH
        DB 00CH,007H,080H,00EH,005H,080H,014H,00DH
        DB 040H,024H,009H,040H,024H,011H,020H,044H
        DB 011H,020H,004H,021H,010H,004H,041H,018H
        DB 004H,081H,02CH,005H,03FH,0F4H,004H,001H
        DB 000H,004H,001H,000H,004H,001H,000H,004H
        DB 003H,000H,004H,003H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,004H,001H      ;放(02)
        DB 080H,002H,003H,000H,003H,003H,000H,001H
        DB 002H,000H,000H,032H,00CH,03FH,0CFH,0F0H
        DB 00CH,004H,010H,00CH,004H,030H,00CH,02CH
        DB 030H,00FH,0EAH,020H,00CH,062H,020H,00CH
        DB 062H,020H,00CH,061H,060H,008H,061H,040H
        DB 008H,040H,0C0H,008H,040H,0C0H,018H,041H
        DB 040H,010H,042H,030H,023H,0C4H,018H,021H
        DB 098H,00EH,040H,020H,000H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,006H,000H      ;松(03)
        DB 040H,004H,000H,080H,004H,006H,040H,004H
        DB 00CH,040H,004H,08CH,040H,07FH,0C8H,020H
        DB 004H,010H,020H,00CH,010H,030H,00EH,020H
        DB 018H,00DH,022H,01CH,015H,0C3H,008H,014H
        DB 083H,000H,014H,002H,000H,024H,006H,000H
        DB 044H,004H,000H,044H,00CH,040H,004H,008H
        DB 020H,004H,010H,030H,004H,030H,010H,004H
        DB 03FH,0F8H,004H,000H,010H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,010H,020H      ;训(04)
        DB 018H,00CH,031H,018H,006H,031H,018H,006H
        DB 031H,018H,000H,031H,018H,000H,031H,018H
        DB 000H,031H,018H,006H,031H,018H,03CH,031H
        DB 018H,004H,031H,018H,004H,031H,018H,004H
        DB 031H,018H,004H,021H,018H,004H,021H,018H
        DB 005H,0A1H,018H,005H,061H,018H,006H,041H
        DB 018H,006H,040H,018H,004H,080H,018H,001H
        DB 000H,018H,002H,000H,010H,000H,000H,000H
        DB 000H,000H,000H,000H,002H,000H,006H,003H      ;练(05)
        DB 000H,004H,002H,000H,00CH,002H,008H,008H
        DB 07FH,0FCH,010H,004H,000H,011H,0C4H,000H
        DB 021H,088H,000H,03FH,07FH,0C0H,022H,018H
        DB 080H,004H,010H,080H,008H,030H,080H,010H
        DB 060H,08CH,023H,0BFH,0F0H,03CH,000H,080H
        DB 020H,008H,0A0H,000H,018H,098H,007H,0B0H
        DB 08CH,078H,020H,086H,020H,040H,086H,000H
        DB 08FH,080H,001H,001H,080H,000H,000H,000H
        DB 000H,000H,000H,000H,000H,000H,000H,000H      ;系(06)
        DB 0F8H,000H,07FH,000H,01FH,098H,000H,000H

⌨️ 快捷键说明

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