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

📄 lf9111.asm

📁 多种液晶显示驱动程序。使用汇编语音编写。
💻 ASM
字号:

;    伪彩320*240 LCD控制板(QX3224RGB1.1)的一个最简单的演示例程
;    通过这个例程你可以知道怎样设置地址和写显示数据
;    由这个例程可以看到要显示完整的彩色必须每次连续写入三个字节,这是与单色液晶的最大区别。

;   控制LCD显示字符或图形 ,程序的任务是把显示数据写入控制板的显示RAW。显示RAW共分为二区,
;  第一页的地址是0000H~7080H, 第二页的地址是8000~F080H。

 CSEG   AT  0000H

;LCD控制板接口
;P1   为数据线

AD   EQU   P3.0     ;AD   高电平时写入的数据是地址,低电平时写入的数据是显示数据。       
WRR  EQU   P3.2     ;WR   当P1口的数据有效时,WR产生一个下降沿,写入一个数据完成。
D12  EQU   P3.1     ;D12  显示RAW分为二页,D12高电平时显示第一区,D12为低电平时显示第二。

WRDATA   EQU  28H        ;数据变量
ADDRL    EQU  30H        ;地址低位变量
ADDRH    EQU  31H        ;地址高位变量

MAIN:
  NOP
  NOP
MAIN1:
  NOP
  LCALL  CLREA1            ;  调用清屏子程序,
  LCALL  CLREA2
  NOP
  LCALL  DISRED       
  NOP 
  LCALL  DISGR
  NOP
  NOP
PLAY:
  NOP
  LCALL  DELAY
  NOP
  CLR   D12           ; D12=0, 显示第二区的内容
  NOP
  LCALL  DELAY
  NOP
  SETB  D12           ; D12=1, 显示第一区的内容
  NOP
  LJMP  PLAY

DELAY:
  MOV  R5,#0
  MOV  R6,#0
  MOV  R7,#10
DEL:
  DJNZ  R5,DEL
  DJNZ  R6,DEL
  DJNZ  R7,DEL
  RET
  
;;============================================
;LFUBK9111A/LFUBK909XA是320*240的液晶屏,请参阅LFUBK909XA的PDF文件资料,
;即一行有320个像素,每个像素由三个点阵构成分别是RGB
;
;显示屏上的点阵分布 R G B R G B R G, B R G B R G B R, G B R G B R G B,..........R G B R G B   
;显示红色时的二进制 1 0 0 1 0 0 1 0, 0 1 0 0 1 0 0 1, 0 0 1 0 0 1 0 0,..........1 0 0 1 0 0
;   对应的十六进制      92H        ,     49H        ,     24H        ,..........
DISRED:
  MOV  ADDRL,#00H
  MOV  ADDRH,#00H          ;在第一区显示红色
  LCALL  SETADDR
  MOV   R3,#0
  MOV   R4,#10
DISRED1:
  MOV   P1,#092H          ; 置显示数据
  CLR   WRR               ; WR=0
  SETB  WRR               ; WR=1
  MOV   P1,#049H
  CLR   WRR
  SETB  WRR
  MOV   P1,#024H
  CLR   WRR
  SETB  WRR
  DJNZ  R3,DISRED1
  DJNZ  R4,DISRED1
  RET
;;============================================
;LFUBK9111A/LFUBK909XA是320*240的液晶屏,请参阅LFUBK909XA的PDF文件资料,
;即一行有320个像素,每个像素由三个点阵构成分别是RGB
;
;显示屏上的点阵分布 R G B R G B R G, B R G B R G B R, G B R G B R G B,..........R G B R G B   
;显示绿色时的二进制 0 1 0 0 1 0 0 1, 0 0 1 0 0 1 0 0, 1 0 0 1 0 0 1 0,..........0 1 0 0 1 0
;   对应的十六进制      49H        ,     24H        ,     92H        ,..........

DISGR:
  MOV  ADDRL,#00H
  MOV  ADDRH,#80H         ;在第二区显示绿色
  LCALL  SETADDR
  MOV   R3,#0
  MOV   R4,#10
DISGR1:
  MOV   P1,#049H         ;置显示数据
  CLR   WRR              ; WR=0
  SETB  WRR              ; WR=1
  MOV   P1,#024H
  CLR   WRR
  SETB  WRR
  MOV   P1,#092H
  CLR   WRR
  SETB  WRR
  DJNZ  R3,DISGR1
  DJNZ  R4,DISGR1
  RET


;;================================================================================
;清第一区RAW
CLREA1:
  MOV  ADDRL,#00H
  MOV  ADDRH,#00H      ;设置地址为0000H
  LCALL  SETADDR 
  MOV  R2,#0
  MOV  R3,#120
CLRK:
  MOV   P1,#0FFH
  CLR   WRR            ;写0FFH到显示RAW, 
  SETB  WRR
  DJNZ  R2,CLRK
  DJNZ  R3,CLRK
  RET

;清第二区RAW
CLREA2:
  MOV  ADDRL,#00H
  MOV  ADDRH,#80H      ;设置地址为8000H
  LCALL  SETADDR 
  MOV  R2,#0
  MOV  R3,#120
CLRK2:
  MOV   P1,#0FFH
  CLR   WRR            ;写0FFH到显示RAW, 
  SETB  WRR
  DJNZ  R2,CLRK2
  DJNZ  R3,CLRK2
  RET


;;======================================================================
                 ;设置地址子程序
SETADDR:
  CLR   AD              ;设置 AD=0  
  MOV   P1,ADDRL        ;置地址低位
  CLR   WRR             ;WR=0
  SETB  WRR             ;WR=1
  MOV   P1,ADDRH        ;置地址高位
  CLR   WRR             ;WR=0
  SETB  WRR             ;WR=1
  SETB  AD              ;写地址完成,设置 AD=1
  RET


  END
 

⌨️ 快捷键说明

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