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

📄 lcd128.asm

📁 LCD12864的驱动程序
💻 ASM
字号:
;E     BIT    P1.2    ;并行使能信号
;R_W   BIT    P1.1    ;并行读写信号
;RS    BIT    P1.0    ;并行指令/数据选择信号
RE_T  BIT    P2.0
PSB   BIT    P2.2    ;串/并行口选择,H-并;L-串
;端口(引脚)定义
 LCD_CS   BIT  P2.5  ;LCD片选端
 LCD_SID  BIT  P2.4 ;LCD串行数据输入输出端
 LCD_CLK  BIT  P2.3 ;LCD串行时钟端
 LCD_X EQU 34H
LCD_Y EQU 35H
COUNT EQU 36H
COUNT1 EQU 37H
COUNT2 EQU 38H
COUNT3 EQU 39H


LCD_COM  DATA  30H  ;LCD指令缓冲区
 LCD_WDAT  DATA  31H  ;写入LCD数据缓冲区
 LCD_RIDAT  DATA  32H ;读取LCD指令
 LCD_RDDAT  DATA  33H ;读取LCD显示数据
      ORG 0000H
      AJMP MAIN
      ORG 0100H
MAIN:
      ;MOV  P1,#00H
      clr  re_t
      SETB  RE_T
      CLR  PSB

      ACALL LCD_INIT
      MOV DPTR,#TU_TAB1 ;显示图形
      ACALL PHO_DISP
      ;MOV   LCD_COM,#80h
      ;ACALL LCD_WRI
      ;MOV   LCD_WDAT,#06H
      ; mov  a,#00h
      ; MOV  R1,#00H
      ; mov  r0,#16
      ; mov  dptr,#table
;MAIN1: movc a,@a+dptr
       ;MOV   LCD_WDAT,A
      ; ACALL LCD_WRD
       ;INC   R1
     ;  MOV   A,R1
      ; DJNZ  R0,MAIN1
main2:
      AJMP MAIN2
;table: db "YM12864R造字演示YM12864R造字演示"
;==========================================================;
;液晶初始化子程序
;==========================================================;
LCD_INIT:
 MOV LCD_COM,#34H ;34H--扩充指令操作
 LCALL LCD_WRI

 ;MOV  LCD_COM,#30H  ;功能设置,基本指令集
 ;CALL  LCD_WRI    ;调用写指令子程序
 MOV  LCD_COM,#0CH  ;显示开,光标关,反白关
 CALL  LCD_WRI
 MOV  LCD_COM,#01H ;清屏并将DDRAM的地址计数器(AC)归零
 CALL  LCD_WRI
 MOV  LCD_COM,#06H  ;光标向右移动,AC+1
 CALL  LCD_WRI
 RET
;==========================================================;
;MCU写指令到LCD子程序 (RS=0、RW=0)
;名称:LCD_WRI
;描述:发送1个字节的指令给LCD
;指令字节地址在:LCD_COM
;==========================================================;
LCD_WRI:
 CALL  LCD_RRI  ;读取忙碌标志BF
 MOV  A,LCD_RIDAT
 JB  ACC.7,LCD_WRI ;不忙则继续
 CLR  LCD_CS
 MOV  A,#11111000B ;
 SETB  LCD_CS   ;将片选拉高
 CALL  LCD_SEND
;--------------------------------------
 MOV  A,LCD_COM
 ANL  A,#0F0H  ;低4位清0传送高4位
 CALL  LCD_SEND
;--------------------------------------
 MOV  A,LCD_COM
 SWAP  A   ;高低半字节交换
 ANL  A,#0F0H  ;低4位清0传送低4位
 CALL  LCD_SEND
 CLR  LCD_CS   ;将CS清0完成传送
 RET
;==========================================================;
;MCU写数据到LCD (RS=1 RW=0)
;名称:LCD_WRD
;描述:发送1个字节的数据给LCD
;数据入口:LCD_WDAT
;==========================================================;
LCD_WRD:
 CLR  LCD_CS  ;
 CALL  LCD_RRI  ;读取忙碌标志BF
 MOV  A,LCD_RIDAT  ;调用读LCD指令子程序
 JB  ACC.7,LCD_WRD  ;BF=1则忙,BF=0空闲,空闲时执行下面的指令

 MOV  A,#11111010B
 SETB  LCD_CS
 CALL LCD_SEND
;--------------------------------------
 MOV  A,LCD_WDAT ;要发送的数据给A
 ANL  A,#0F0H  ;屏蔽低4位传送数据高4位
 CALL  LCD_SEND
;--------------------------------------
 MOV  A,LCD_WDAT
 SWAP  A
 ANL  A,#0F0H  ;传送数据低4位
 CALL  LCD_SEND
 CLR  LCD_CS  ;完成传送
 RET

;==========================================================;
;读LCD(BF)(AC)指令到MCU (RS=0 RW=1)
;名称:LCD_RRI
;描述:从LCD中读BF忙碌标志和AC计数器地址.
;接收的指令数据在LCD_RDAT中.
;==========================================================;
LCD_RRI:
 CLR  LCD_CS
 MOV  A,#11111100B  ;读取LCD忙碌标志
 SETB  LCD_CS   ;片选置1(LCD数据传送有效)
 CALL LCD_SEND
 CALL LCD_RECEIVE
 MOV  LCD_RIDAT,A  ;接收高4位数据
;--------------------------------------
 CALL  LCD_RECEIVE ;接收低4位数据
 CLR  LCD_CS
 ANL  A,#0F0H  ;屏蔽低4位
 SWAP  A  ;取低4位
 ANL  LCD_RIDAT,#0F0H ;取高4位
 ORL  LCD_RIDAT,A  ;组合成完整的数据
 RET
;==========================================================;
;读LCD的显示数据到MCU (RS=1 RW=1)
;名称:LCD_RRD
;描述:
;接收的显示数据在--中
;==========================================================;
LCD_RRD:
 CLR  LCD_CS
 MOV  A,#11111110B
 SETB  LCD_CS   ;片选端置1
 CALL  LCD_SEND
;-------------------------------------------
 CALL  LCD_RECEIVE ;接收高4位
 MOV  LCD_RDDAT,A
;-------------------------------------------
 CALL LCD_RECEIVE ;接收低4位
 CLR  LCD_CS
 ANL  A,#0F0H
 SWAP  A
 ANL  LCD_RDDAT,#0F0H
 ORL  LCD_RDDAT,A  ;组合成完整的数据
 RET
;==========================================================;
;LCD发送8BIT的数据(1个字节)
;==========================================================;
LCD_SEND:
 MOV  R2,#8   ;发送8位(BIT)数据
LCD_SEND1:
 CLR  LCD_CLK  ;时钟端置1
 RLC  A  ;ACC.7给C
 MOV  LCD_SID,C  ;C给串行数据端
 SETB LCD_CLK  ;时钟端清0
 DJNZ  R2,LCD_SEND1 ;未完继续
 RET
;==========================================================;
;LCD接收8BIT数据(1个字节)
;==========================================================;
LCD_RECEIVE:
 MOV  R2,#8
LCD_RECEIVE1:
 CLR  LCD_CLK  ;时钟端置1
 NOP
 NOP
 SETB  LCD_CLK
 MOV  C,LCD_SID
 RLC  A
 DJNZ  R2,LCD_RECEIVE1
 RET
;===============================================
;全屏显示图形子程序
;===============================================
PHO_DISP:
MOV COUNT3,#02H
MOV LCD_X,#80H
PHO_DISP1:
MOV LCD_Y,#80H
MOV COUNT2,#20H
PHO_DISP2:
MOV COUNT1,#10H
LCALL WR_ZB
PHO_DISP3:
CLR A
MOVC A,@A+DPTR
MOV  LCD_WDAT,A
LCALL LCD_WRD
INC DPTR
DJNZ COUNT1,PHO_DISP3
INC LCD_Y
DJNZ COUNT2,PHO_DISP2
MOV LCD_X,#88H
DJNZ COUNT3,PHO_DISP1
MOV LCD_COM,#36H
LCALL LCD_WRI
MOV LCD_COM,#30H
LCALL LCD_WRI
RET
;---------------------------------------------
WR_ZB:
MOV LCD_COM,#34H
LCALL LCD_WRI
MOV LCD_COM,LCD_Y
LCALL LCD_WRI
MOV LCD_COM,LCD_X
LCALL LCD_WRI
MOV LCD_COM,#30H
LCALL LCD_WRI
RET
TU_TAB1: ; 数据表
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh
db 80h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 01h
db 80h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 01h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 11h,0FFh, 80h, 40h, 08h, 30h, 10h, 20h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Ch, 68h, 3Fh,0FFh, 08h, 30h, 11h,0F8h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Ch, 68h, 3Fh,0FFh, 08h, 30h, 11h,0F8h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 01h,0FFh, 00h, 00h, 7Fh,0FEh, 7Dh, 08h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 11h, 6Bh, 07h,0FCh, 16h, 30h, 2Dh,0F8h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Dh,0FFh, 04h, 0Ch, 16h, 30h, 2Dh, 08h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Ch, 00h, 3Fh,0FFh, 16h, 30h, 2Dh,0F8h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Ch, 00h, 3Fh,0FFh, 16h, 30h, 2Dh,0F8h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Ch,0FFh, 30h, 01h, 66h,0FEh, 2Dh, 26h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 1Ch, 00h, 03h,0F0h, 76h, 82h, 2Dh, 28h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Dh,0FFh, 82h, 11h, 08h, 82h, 11h, 10h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Ch, 8Bh, 04h, 11h, 16h, 82h, 2Dh, 28h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Ch, 8Bh, 04h, 11h, 16h, 82h, 2Dh, 28h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 0Dh, 18h,0B8h, 1Fh, 60h,0FEh, 41h,0C6h, 00h
db 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 00h, 07h, 8Fh,0FFh, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 00h, 08h, 70h, 40h,0EFh, 80h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 00h, 08h, 70h, 40h,0EFh, 80h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 00h, 10h, 00h, 80h, 10h, 60h, 00h, 0Fh,0FFh, 30h, 0Ch, 00h, 80h, 00h, 00h, 00h
db 00h, 20h, 18h, 38h, 20h, 60h, 00h, 00h, 60h, 08h, 0Ch, 1Fh,0FCh, 1Ch, 00h, 00h
db 00h,0C0h, 64h, 45h, 00h, 60h, 00h, 03h,0FCh, 0Bh,0FFh, 00h, 80h, 3Eh, 00h, 00h
db 00h,0C1h, 00h, 01h, 00h, 10h, 00h, 00h, 80h, 00h, 0Ch, 08h, 88h, 3Eh, 00h, 00h
db 00h,0C1h, 00h, 01h, 00h, 10h, 00h, 00h, 80h, 00h, 0Ch, 08h, 88h, 3Eh, 00h, 00h
db 01h, 01h, 00h, 00h,0C0h, 10h, 00h, 1Fh,0FFh,0BDh, 8Ch, 06h,0B0h, 3Eh, 00h, 00h
db 02h, 0Eh, 18h, 1Ch,0C0h, 10h, 00h, 01h, 00h, 04h, 4Ch, 7Fh,0FEh, 1Ch, 00h, 00h
db 02h, 16h, 64h, 22h, 20h, 10h, 00h, 03h,0FCh, 04h, 4Ch, 01h,0C0h, 1Ch, 00h, 00h
db 02h, 16h, 64h, 22h, 20h, 10h, 00h, 03h,0FCh, 04h, 4Ch, 01h,0C0h, 1Ch, 00h, 00h
db 04h,0E8h, 83h, 41h, 1Ch, 08h, 00h, 0Dh, 04h, 04h, 0Ch, 06h,0B0h, 00h, 00h, 00h
db 07h, 10h, 8Fh, 47h, 03h, 88h, 00h, 11h,0FCh, 04h, 3Ch, 08h, 88h, 1Ch, 00h, 00h
db 00h, 20h, 6Ch, 26h, 01h, 78h, 00h, 01h, 04h, 0Ah, 00h, 70h, 86h, 1Ch, 00h, 00h
db 00h,0C0h, 18h, 1Ch, 00h, 80h, 00h, 01h,0FCh, 31h,0FFh, 00h, 80h, 00h, 00h, 00h
db 00h,0C0h, 18h, 1Ch, 00h, 80h, 00h, 01h,0FCh, 31h,0FFh, 00h, 80h, 00h, 00h, 00h
db 00h,0C1h, 87h, 80h, 00h, 80h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 01h, 06h, 78h, 3Ch, 20h, 60h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 01h, 08h, 07h,0C2h,0C0h, 60h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 01h, 08h, 00h, 01h,0C0h, 60h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 01h, 08h, 00h, 01h,0C0h, 60h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 01h, 08h, 18h, 01h,0C0h, 60h, 00h, 00h, 00h,0F1h,0F3h, 87h,0C0h, 00h, 00h, 00h
db 00h,0C6h, 18h,0C2h, 20h, 80h, 00h, 00h, 03h, 0Eh, 1Ch, 78h, 70h, 00h, 00h, 00h
db 00h,0C1h, 00h,0C2h, 00h, 80h, 00h, 00h, 04h, 44h, 11h, 10h, 38h, 00h, 00h, 00h
db 00h, 26h,0E0h, 04h, 01h, 00h, 00h, 00h, 04h, 80h, 12h, 00h, 38h, 00h, 00h, 00h
db 00h, 26h,0E0h, 04h, 01h, 00h, 00h, 00h, 04h, 80h, 12h, 00h, 38h, 00h, 00h, 00h
db 00h, 11h, 18h, 38h, 03h, 00h, 00h, 00h, 04h, 80h, 12h, 00h, 38h, 00h, 00h, 00h
db 00h, 0Eh, 87h,0C2h, 1Ch, 00h, 00h, 00h, 04h, 00h, 10h, 00h, 38h, 00h, 00h, 00h
db 00h, 01h,0E0h, 04h,0E0h, 00h, 00h, 00h, 03h, 00h, 1Ch, 00h, 70h, 00h, 00h, 00h
db 00h, 1Eh, 18h, 3Fh, 1Eh, 00h, 00h, 00h, 00h, 80h, 32h, 00h,0C0h, 00h, 00h, 00h
db 00h, 1Eh, 18h, 3Fh, 1Eh, 00h, 00h, 00h, 00h, 80h, 32h, 00h,0C0h, 00h, 00h, 00h
db 00h, 38h, 07h,0C0h, 0Fh, 00h, 00h, 00h, 00h, 40h, 61h, 01h, 80h, 00h, 00h, 00h
db 00h,0E9h,0FFh,0FFh, 0Dh, 80h, 00h, 00h, 00h, 31h,0C0h, 87h, 00h, 00h, 00h, 00h
db 01h,0E9h, 1Bh,0B9h, 0Dh,0E0h, 00h, 00h, 00h, 0Bh, 80h, 6Eh, 00h, 00h, 00h, 00h
db 03h,0C9h,0F0h, 1Fh, 0Ch,0F0h, 00h, 00h, 00h, 06h, 00h, 18h, 00h, 00h, 00h, 00h
db 03h,0C9h,0F0h, 1Fh, 0Ch,0F0h, 00h, 00h, 00h, 06h, 00h, 18h, 00h, 00h, 00h, 00h
db 07h, 06h,0E0h, 06h, 10h, 78h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 07h,0C1h, 00h, 00h, 20h,0F8h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 07h,0E0h, 80h, 00h,0C1h,0F8h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 07h,0E0h, 80h, 00h,0C1h,0F8h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
db 80h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 01h
db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh





end

⌨️ 快捷键说明

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