深圳市炜烨兴电子有限公司|LCD在线|智能串口液晶
注册| 登录| 通行证 生产液晶显示模块哪家强?Wayeah LCM!专业的液晶显示模块研发、生产厂家!

首页 新闻 字符型| 图形型| 定制型| 智能型| 技术应用 留言反馈 联系方式 |

当前位置液晶应用技术 >> 用51汇编写的读12864液晶(KS0108驱动)显示数据

用51汇编写的读12864液晶(KS0108驱动)显示数据

 

液晶显示控制驱动器KS0108应用很广,适合它的使用资料也有很多,在此不多说。

以下的汇编代码在KM12864A2 KM12864J3上通过了测试。对于使用过KS0108液晶的用户来说应该很好理解!(相关产品请点这里

首先给出写数据/指令的代码如下:

out0:  lcall busy1              ; 写左区指令
       setb  cs1
       clr   cs2
       clr   rs
       clr   r_w
       setb  e
       mov   dbus,a
       nop
       clr   e
       ret
out1:  lcall busy2             ; 写右区指令
       clr   cs1
       setb  cs2
       clr   rs
       clr   r_w
       setb  e
       mov   dbus,a
       nop
       clr   e
       ret

data0: 
       lcall busy1             ;写左区显示数据      
       CLR  CS2
       setb CS1
       SETB RS
       CLR  R_W
       SETB E
       MOV  DBUS,A
       NOP
       CLR  E
       RET
data1: lcall  busy2                ;写右区显示数据
       CLR    CS1
       setb   CS2
       SETB   RS
       CLR    R_W
       SETB   E
       MOV    DBUS,A
       NOP
       CLR    E
       ret
 
busy1:                ;读左区状态
       push  acc
       setb cs1
       clr  cs2
       setb r_w
       clr  rs
back1: mov  p1,#0ffh
       setb e
       mov  a,dbus
       clr  e
       anl  a,#80h
       jnz   back1
       pop   acc
       ret
 
busy2:               ;读右区状态
       push acc
       setb cs2
       clr  cs1
       setb r_w
       clr  rs
back2: mov  p1,#0ffh
       setb e
       mov  a,dbus
       clr  e
       anl  a,#80h
       jnz   back2
       pop   acc
       ret
data_read0:        ;读左区数据
       lcall busy1
       setb cs1
       clr cs2
       setb r_w
       setb rs
       setb e
       mov a,dbus
       clr e
       ret
data_read1:        ;读右区显示
       lcall busy2
       clr cs1
       setb cs2
       setb r_w
       setb rs
       setb e
       mov a,dbus
       clr e
       ret

;=============================

dis_bmp:    ;显示一128*64点阵的图片
        mov r1,#0b8h
        mov r2,#8
next_row1:
        mov r3,#128
        mov a,r1
        lcall out0
        lcall out1
        mov a,#40h
        lcall out0
        lcall out1
lcd_left1:
        clr a
        movc a,@a+dptr
        lcall data0
        dec r3
        inc dptr
        cjne r3,#64,lcd_left1
lcd_right1:
        clr a
        movc a,@a+dptr
        lcall data1
        inc dptr
        djnz r3,lcd_right1
        inc r1
        djnz r2,next_row1
        ret
 
dis_cpl:   ;将显示的图片数据读出来,取反后再重新显示
        temp equ 66h
        mov r1,#0b8h    ;页首地址
        mov r2,#8          ;页地址计数
next_row:
        mov r3,#40H   ;列首地址
        mov a,r1      ;设置下一页地址(左右区相同)
        lcall out0
        lcall out1
lcd_left:               ;处理左边显示区
        mov a,r3
        lcall out0      ;设置读取数据的地址
        lcall data_read0;空操作(在重新设置地址时需要读两次)
        lcall data_read0;读取数据(第二次读到的才是真正的DDRAM内容) //读取的数据存放在ACC寄存器里
        cpl a            ;取反读到的数
        mov temp,a      ;保存读取到的数据
        mov a,r3
        lcall out0      ;设置写入数据的地址
        mov a,temp  ;取刚才读到的数据,并写入LCD
        lcall data0
        inc r3
        cjne r3,#80h,lcd_left  ;总共有64列
        mov r3,#40h
lcd_right:               ;处理右边显示区
        mov a,r3
        lcall out1
        lcall data_read1
        lcall data_read1
        cpl a
        mov temp,a
        mov a,r3
        lcall out1
        mov a,temp
        lcall data1
        inc r3
        cjne r3,#80h,lcd_right
        inc r1
        djnz r2,next_row
        ret


这些内容来自LCD在线(http://www.lcdinline.com),如需转载,请联系网站管理QQ:56154083
[来源:深圳市炜烨兴电子有限公司] [作者:yesever] [日期:09-08-07] [热度:]

评论

© 2004-2015 Wayeah LCM All rights reserved.

Powered by: KingCMS 5.1.0.0812

|2009旧版 | 联系方式 | 付款方式 | 淘宝店|