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

📄 12864 k 驱动程序.asm

📁 lcd12864k的驱动例程! 欢迎大家一起学习
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*********************************************
 ;Controller:ST7920
 ;MCU:AT89C52 ,晶体频率:12MHz
 ;LCM:128*64
 ;LCM型号:带中文字库的128X64-0402
 ;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7 15:PSB 16:NC 17:RST 18:Vout
;**********************************************
      RS      EQU   P2.0
      RW      EQU   P2.1
      E       EQU   P2.2
      PSB     EQU   P2.3
      RST     EQU   P2.7
      COM     EQU   20H
      DAT     EQU   21H
;******************************以上是接口定义
START:
        ORG  0000H
        MOV  SP,#60H
    LJMP    DISP
;*********************************主程序入口地址
        ORG  0040H
DISP:   CLR     PSB
        LCALL   DELAY
         SETB    PSB                ;将PSB置1,通信方式为8位数据并口
        LCALL   DELAY
        MOV     COM,#30H           ;功能设置---8BIT控制界面,基本指令集
        ACALL   WRI           ;调用写指令子程序
        LCALL   DELAY              ;延迟39uS
        MOV     COM,#0CH           ;显示打开,光标关,反白显示关
        ACALL WRI         ;调用写指令子程序
        LCALL   DELAY              ;延迟39uS
        MOV  COM,#01H           ;清除屏幕显示,将DDRAM的地址计数器归零
        ACALL   WRI                ;调用写指令子程序
        LCALL   DELAY              ;延迟39uS
    MOV     COM,#06H           ;DDRAM的地址计数器(AC)加1
        ACALL   WRI           ;调用写指令子程序
        LCALL   DELAY              ;延迟39uS
;****************************************************
DISPLAY5A:
        MOV     R2,#64        ;DDRAM地址记数器设为最大值
        MOV     R1,#10H
        MOV     COM,#80H      ;DD RAM 地址-----0000000
        ACALL   WRI
DISP5A: MOV     DAT,R1
        ACALL   WRD           ;写入第二字节数据
        INC     R1
        DJNZ    R2,DISP5A
        LCALL   DELAY1        ;1S延时子程序
;*************************************以上是写入半角字符
DISPLAY5:
        MOV     R2,#64        ;DDRAM地址记数器设为最大值
        MOV     R1,#0DEH
        MOV     COM,#80H      ;DD RAM 地址-----0000000
        ACALL   WRI
DISP5:  MOV     DAT,#0B4H
        ACALL   WRD           ;写入第一字节数据
        MOV     DAT,R1
        ACALL   WRD           ;写入第二字节数据
        INC     R1
        DJNZ    R2,DISP5
        LCALL   DELAY1        ;1S延时子程序
;**********************************以上是从字库中"崔"字处开始显示
        MOV     COM,#01H           ;清屏
        ACALL   WRI           ;调用写指令子程序
        LCALL   DELAY
        MOV     COM,#32H           ;功能设置---8BIT控制界面,绘图显示ON
        ACALL   WRI           ;调用写指令子程序
        LCALL   DELAY              ;延迟39uS
        MOV     COM,#36H           ;功能设置---8BIT控制界面,扩充指令集
        ACALL   WRI           ;调用写指令子程序
        LCALL   DELAY              ;延迟39uS
DISPLAY6:
        MOV     DPTR,#DAB2      ;图形数据入口地址
        MOV     R2,#32          ;32行,(双屏结构中上半屏)
        MOV     R3,#80H         ;Y地址寄存器
DISP6:  MOV     COM,R3          ;设置绘图区的Y地址坐标
        INC     R3              ;Y地址加1
        LCALL   WRI
        MOV     COM,#80H        ;设置绘图区的X地址坐标
        LCALL   WRI
        MOV     R1,#16          ;16*8列
DISP7:  CLR  A
        MOVC    A,@A+DPTR
        MOV     DAT,A
        LCALL   WRD
        INC     DPTR
        DJNZ    R1,DISP7
        DJNZ    R2,DISP6        ;写满全屏的16*8字节X64
        MOV     R2,#32          ;32行,(双屏结构的下半屏)
        MOV     R3,#80H         ;Y地址寄存器
DISP8:  MOV     COM,R3          ;设置绘图区的Y地址坐标
        INC     R3              ;Y地址加1
        LCALL   WRI
        MOV     COM,#88H        ;设置绘图区的X地址坐标
        LCALL   WRI
        MOV     R1,#16          ;16*8列
DISP9:  CLR  A
        MOVC    A,@A+DPTR
        MOV     DAT,A
        LCALL   WRD
        INC     DPTR
        DJNZ    R1,DISP9
        DJNZ    R2,DISP8        ;写满全屏的16*8字节X64
        LCALL   DELAY1          ;1S延时子程序
;*******************************************以上是写入一幅图画(电脑桌面图)
DISPLAY6A:
        MOV     DPTR,#DAB3      ;图形数据入口地址
        MOV     R2,#32          ;32行,(双屏结构中上半屏)
        MOV     R3,#80H         ;Y地址寄存器
DISP6A: MOV     COM,R3          ;设置绘图区的Y地址坐标
        INC     R3              ;Y地址加1
        LCALL   WRI
        MOV     COM,#80H        ;设置绘图区的X地址坐标
        LCALL   WRI
        MOV     R1,#16          ;16*8列
DISP7A: CLR  A
        MOVC    A,@A+DPTR
        MOV     DAT,A
        LCALL   WRD
        INC     DPTR
        DJNZ    R1,DISP7A
        DJNZ    R2,DISP6A       ;写满全屏的16*8字节X64
        MOV     R2,#32          ;32行,(双屏结构的下半屏)
        MOV     R3,#80H         ;Y地址寄存器
DISP8A: MOV     COM,R3          ;设置绘图区的Y地址坐标
        INC     R3              ;Y地址加1
        LCALL   WRI
        MOV     COM,#88H        ;设置绘图区的X地址坐标
        LCALL   WRI
        MOV     R1,#16          ;16*8列
DISP9A: CLR  A
        MOVC    A,@A+DPTR
        MOV     DAT,A
        LCALL   WRD
        INC     DPTR
        DJNZ    R1,DISP9A
        DJNZ    R2,DISP8A       ;写满全屏的16*8字节X64
        LCALL   DELAY1          ;1S延时子程序
        LJMP    START           ;从开始处循环显示
;***************************************以上是写入一幅图画(电子制作实验室)
WRI:    PUSH    ACC
        CLR     RS
        SETB    RW
WRI1:   MOV     P0,#0FFH
        SETB    E
        MOV     A,P0
        CLR     E
        JB      ACC.7,WRI1
        CLR     RW
        MOV     P0,COM
        SETB    E
        CLR     E
        POP     ACC
        RET
;******************************************以上是写指令子程序
WRD:    PUSH    ACC
        CLR     RS
        SETB    RW
WRD1:   MOV     P0,#0FFH
        SETB    E
        MOV     A,P0
        CLR     E

⌨️ 快捷键说明

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