📄 yj.asm
字号:
$INCLUDE(C8051F000.INC)
CS BIT P0.4
STD BIT P0.5 ;串行数据线
SCLK BIT P2.5 ;串行时钟线
START EQU 30H ;起始字节
COM EQU 31H ;命令/数据
GDATA EQU 32H ;命令/数据字节高位
LDATA EQU 33H ;命令/数据字节低位
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: ; F005初始化程序
MOV WDTCN,#0DEH
MOV WDTCN,#0ADH;关看门狗
MOV XBR0,#00H
MOV XBR1,#00H
MOV XBR2,#40H ;交叉开关允许
MOV OSCXCN,#66H;外部晶振6M
ACALL DL1MS
CC: MOV A,OSCXCN
JNB ACC.7,CC
MOV OSCICN,#08H
MOV PRT1IF,#00H
MOV PRT1CF,#0FFH;P1口设为推挽方式
MOV PRT0CF,#0FFH;P0口设为推挽方式
MOV PRT2CF,#0FFH;P2口设为推挽方式
MOV PRT3CF,#0FFH;P3口设为推挽方式
MAIN1:
MOV SP,#60H
SETB CS ;可以直接接电源VDD
CALL LCDRESET ;模块系统初始化
CALL HZKDIS ;显示汉字子程序
CALL DL40MS ;延时
JMP MAIN1
LCDRESET:
LCALL DL1MS ;延时等待内部复位
MOV START,#0F8H ;写入命令(11111000)
MOV COM,#30H ;使用8位控制界面
LCALL LCDWRITE
MOV COM,#30H ;使用基本指令集
LCALL LCDWRITE
MOV COM,#0CH
LCALL LCDWRITE ;整体显示ON
MOV COM,#01H ;清屏
LCALL LCDWRITE
LCALL DL1MS
MOV COM,#06H ;显示右移
LCALL LCDWRITE
LCALL DL1MS
RET
LCDWRITE: ;模块写入子程序
MOV A,COM ;送待发数据命令A
ANL A,#0F0H ;屏蔽低4位
MOV GDATA,A ;将高4位送GDATA单元
MOV A,COM ;取低4位
SWAP A ;高低4位互换
ANL A,#0F0H
MOV LDATA,A ;将低4位送LDATA单元
MOV A,START ;取起始字节
LCALL SENDBIT ;发送
LCALL DL1MS ;延时1ms
MOV A,GDATA
LCALL SENDBIT
LCALL DL1MS
MOV A,LDATA
LCALL SENDBIT
LCALL DL1MS
RET
HZKDIS: ;显示汉字子程序
MOV START,#0F8H ;写入命令(11111000)
MOV COM,#80H ;设定第一行显示位置
LCALL LCDWRITE
MOV DPTR,#TAB1 ;指向文字型代码表1
DIS_1: MOV R6,#16 ;每行八个汉字
DIS_2: MOV START,#0FAH ;写数据(11111010)
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR ;取汉字代码高位
CALL DL40MS
DJNZ R6,DIS_2 ;未显示完则继续
MOV START,#0F8H ; 写入命令(11111000)
MOV COM,#90H ;第二行地址
CALL LCDWRITE
MOV DPTR,#TAB2 ;指向文字型代码表2
DIS_3: MOV R6,#16 ;每行八个汉字
DIS_4: MOV START,#0FAH ;写数据(11111010)
CLR A
MOVC A,@A+DPTR
MOV COM,A
CALL LCDWRITE ;写入显示模块
INC DPTR ;取汉字代码高位
CALL DL40MS
DJNZ R6,DIS_4 ;未显示完则继续
RET ;写完两行则结束
SENDBIT: ;串行字节数据发送子程序
MOV R7,#08H ;发送8位
SEND_1: RLC A
MOV STD,C ;数据送数据线
CLR SCLK ;产生同步时钟
SETB SCLK
DJNZ R7,SEND_1 ;未发送完8位继续
RET
DL1MS: ;延时子程序0.1MS
MOV R2,#01H
WA_PA: MOV R0,#0FFH
WA_PB: MOV R1,#0FFH
DJNZ R1,$
DJNZ R0,WA_PB
DJNZ R2,WA_PA
RET
DL40MS: ;延时子程序40MS
MOV R2,#0AH
DL_PA: MOV R0,#0FFH
DL_PB: MOV R1,#0FFH
DJNZ R1,$
DJNZ R0,DL_PB
DJNZ R2,DL_PA
RET
TAB1: DB "莫愁前路无知己,"
TAB2: DB "天下谁人不识你。"
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -