- 打卡等级:偶尔看看II
- 打卡总天数:23
- 最近打卡:2025-12-17 09:24:53
已绑定手机
注册会员
- 积分
- 119
|
发表于 2025-11-11 17:44:59
|
显示全部楼层
;===============================================================
; STC8H8K64U 驱动 LCD12864(ST7920) 51汇编程序
; 数据口:P2,控制口:P3.2(EN), P3.4(RW), P3.5(RS)
; 直接连接
;===============================================================
;以下为8H8K64U调试通过:频率11.0592M
P0M1 DATA 093H
P0M0 DATA 094H
P2M1 DATA 095H ;端口模式寄存器地址命名
P2M0 DATA 096H
P3M1 DATA 0B1H
P3M0 DATA 0B2H
RS BIT P3.5 ; 命令/数据选择
RW BIT P3.4 ; 读/写选择
EN BIT P3.2 ; 使能
ORG 0000H
SJMP MAIN
;-------- 延时子程序 -----------------------------------------
DELAY:
PUSH 07H
PUSH 06H
MOV R7,#10
DEL1: MOV R6,#0
DEL2: DJNZ R6,$
DJNZ R7,DEL1
POP 06H
POP 07H
RET
;-------- 写命令 ------------------------------------------------
WR_CMD:
CLR RS
SJMP WR_COMM
;-------- 写数据 ------------------------------------------------
WR_DAT:
SETB RS
WR_COMM:
CLR RW ; 只写
MOV P2,A ; 数据送到P2口
SETB EN
CLR EN
LCALL DELAY
RET
;-------- 主程序 ------------------------------------------------
MAIN:
;------ STC8H 端口模式设为双向(准双向)
MOV P0M1,#0
MOV P0M0,#0
MOV P2M1,#0
MOV P2M0,#0
MOV P3M1,#0
MOV P3M0,#0
;------ ST7920 初始化
MOV A,#1CH ; 功能设定:基本指令、8位并口00011100
LCALL WR_CMD
MOV A,#0CH ; 显示开,游标关
LCALL WR_CMD
MOV A,#01H ; 清屏
LCALL WR_CMD
MOV A,#06H ; 地址自动+1
LCALL WR_CMD
;------ 显示汉字“STC8 单片机”
MOV DPTR,#HZ_TAB1
MOV R0,#12 ; 2字节×5字
DISP_LP1:
CLR A
MOVC A,@A+DPTR
LCALL WR_DAT
INC DPTR
DJNZ R0,DISP_LP1
;------------------------------
MOV A,#90H
LCALL WR_CMD
MOV DPTR,#HZ_TAB2
MOV R0,#14
DISP_LP2:
clr a
MOVC A,@A+DPTR
LCALL WR_DAT
INC DPTR
DJNZ R0,DISP_LP2
;------------------------------
MOV A,#88H
LCALL WR_CMD
MOV DPTR,#HZ_TAB3
MOV R0,#16
DISP_LP3:
clr a
MOVC A,@A+DPTR
LCALL WR_DAT
INC DPTR
DJNZ R0,DISP_LP3
;------------------------------
MOV A,#98H
LCALL WR_CMD
MOV DPTR,#HZ_TAB4
MOV R0,#14
DISP_LP4:
clr a
MOVC A,@A+DPTR
LCALL WR_DAT
INC DPTR
DJNZ R0,DISP_LP4
SJMP $ ; 停机
;-------- 汉字码表(ST7920 内置编码) -------------------------
HZ_TAB1:
DB 'STC8 单片机'
HZ_TAB2:
DB '2005年11月11日'
HZ_TAB3:
db '芯片出厂序列号 : '
HZ_TAB4:
db 'F784C90401461C' ; ST
END |
|