5324|13

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

为什么我的液晶显示每个字只有下面的一半。上面一半则显示不出数据 [复制链接]

采用192641的lcd显示芯片,要做一个在几个固定屏幕之间切换的控制
显示主程序如下:
INITLCD:    ;开启液晶并从第一行开始显示
        CLR        LCDCS1             ;3片片选,低电平使能
        CLR        LCDCS2
        CLR        LCDCS3
        MOV        A,#3FH;ON        
        CLR        LCDDI
        LCALL        WRLCD
        MOV        A,#0C0H;FIRST LINE
        CLR        LCDDI
        LCALL        WRLCD
        SETB    LCDDI
        SETB        LCDCS1
        SETB        LCDCS2
        SETB        LCDCS3
        RET
;-----------------------
;--------------------------
DISPLAY:
        PUSH DPH
        PUSH DPL
        MOV DPTR,#TABVIEW    ;用查表方式得到所需要显示的字符
        MOV C_VIEW,A
        MOV R0,#4           ;12×4的字符阵列,每个字符为16×16点阵
DISPLOOP:
        CLR LCDCS1
        MOV R1,#4
        DISPLOOP2:
                LCALL SETDATAADDR      ;DIFINE THE X,Y POSITION
                ;READ THE CHAR
                MOV A,C_VIEW           ;c_view记录为第几屏
                MOVC A,@A+DPTR         ;查得要显示的字符
                LCALL GETLCDDATA       ;根据所要显示的字符查表LCD点阵            
                INC DPTR
        DJNZ R1,DISPLOOP2
        SETB LCDCS1                    ;关闭左区
        CLR LCDCS2                             ;开中区
        MOV R1,#4
        DISPLOOP3:                             ;对3个区分别进行操作,重复一区动作
                LCALL SETDATAADDR
                MOV A,C_VIEW
                MOVC A,@A+DPTR
                LCALL GETLCDDATA
                INC DPTR
        DJNZ R1,DISPLOOP3
        SETB LCDCS2
        CLR LCDCS3
        MOV R1,#4
        DISPLOOP4:
                LCALL SETDATAADDR
                MOV A,C_VIEW
                MOVC A,@A+DPTR
                LCALL GETLCDDATA
                INC DPTR
        DJNZ R1,DISPLOOP4
        SETB LCDCS3
DJNZ R0,DISPLOOP
        nop       
        nop
        LCALL INITLCD              ;液晶内部ram数据输送完毕,从第一行开始显示
        POP DPL
        POP DPH
RET
;------------------------------
;-----SET LCD DATA ADDR--------
SETDATAADDR:                ;设定字符所在显示位置
        MOV A,#4
        CLR CY
        SUBB A,R1
        MOV B,#16
        MUL AB
        ADD A,#040H
        MOV C_ADDRY,A      ;c_addry指确定光标显示y坐标的8位数据
        MOV A,#4
        CLR CY
        SUBB A,R0
        RL A
        ADD A,#0B8H
        MOV C_ADDRX,A     ;c_addrx指确定光标显示x坐标的8位数据
        CLR LCDDI
        CLR LCDRW
        MOV A,C_ADDRX
        LCALL WRLCD     ;数据传入液晶芯片的程序
        NOP
        NOP
        MOV A,C_ADDRY
        LCALL WRLCD      
        RET
;-------------------------------
;---GET LCD DATA---------------
GETLCDDATA:                  
PUSH DPH
PUSH DPL
MOV C_LCDDATA,A        ;C_LCDDATA存放要显示的字符
MOV A,R0
PUSH ACC
MOV R0,#32          ;一共32个数据组成16×16点阵
MOV DPTR,#TABCHAR
MOV B,C_LCDDATA
MOV A,#32
MUL AB
MOV C_TEMP,B
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A          ;到此查的第一个数据的表格起点
LCDDATALOOP:
        MOV A,R0
        CJNE A,#010H,SETDATA   ;第17个数据将从下一行最前开始显示
                CLR LCDDI      ;液晶di脚
                CLR LCDRW      ;液晶rw脚
                MOV A,C_ADDRX
                INC A
                MOV C_ADDRX,A
                CLR LCDDI
                CLR LCDRW
                LCALL WRLCD
                NOP
                NOP
                MOV A,C_ADDRY
                LCALL WRLCD
                NOP
                NOP
        SETDATA:
                MOV A,#0
                MOVC A,@A+DPTR
                CLR LCDDI
                SETB LCDRW
                LCALL WRLCD
                NOP
                NOP
                SETB LCDDI
                INC DPTR
DJNZ R0,LCDDATALOOP
POP ACC
MOV R0,A
POP DPL
POP DPH
RET
;-----------------------------
;-----------INPUT LCD----------
;该子程序经过实践检验正确
WRLCD:      ;PUT A INTO LCD,LCD DATA ADRESS+1 AUTOMATICALLY
CLR     LCDEN     ;LCD的EN脚,0使能
MOV        C,ACC.7
MOV        LCDDATA,C
CLR        LCDCLK    LCDDATA脚与LCDCLK脚通过74hc164芯片与液晶的D0-D7相连,组成串口
SETB        LCDCLK
MOV        C,ACC.6
MOV        LCDDATA,C
CLR        LCDCLK
SETB        LCDCLK
MOV        C,ACC.5
MOV        LCDDATA,C
CLR        LCDCLK
SETB        LCDCLK
MOV        C,ACC.4
MOV        LCDDATA,C
CLR        LCDCLK
SETB        LCDCLK
MOV        C,ACC.3
MOV        LCDDATA,C
CLR        LCDCLK
SETB        LCDCLK
MOV        C,ACC.2
MOV        LCDDATA,C
CLR        LCDCLK
SETB        LCDCLK
MOV        C,ACC.1
MOV        LCDDATA,C
CLR        LCDCLK
SETB        LCDCLK
MOV        C,ACC.0
MOV        LCDDATA,C
CLR        LCDCLK
SETB    LCDCLK
SETB        LCDEN       ;LCD的EN脚
NOP
NOP
CLR     LCDEN
RET

显示结果每个字只有下面一半,而且坐标向前移动了一个字符的位置,请问是什么原因?

最新回复

大胆问一下,各位现在还看汇编程序么?看着楼主这么长的程序,脑袋都大了  详情 回复 发表于 2008-8-28 17:14
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这一版块,太没人气了,是不是大家都成大侠了

如果成大侠了,也常回家看看嘛,家里太冷清了

据说努力顶帖也是一种美德,但我只想大家常回家看看

毕竟每天都有新手需要帮忙,而我能帮的只能是把帖子顶起来
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不知,帮顶
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
你的LCD的配置寄存器没有设置好
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
硬件的事??
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
很可能是软件的问题!



我给大家特别推荐的两款产品,非常棒!!!  

1. c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线,支持3伏(c8051f 单片机),5伏(at89s5x单片机)电源,
目前通过实际验证可编程下载的芯片:c8051f310、c8051f320、c8051f330D、c8051f340、c8051f350、c8051f360、c8051f410、c8051f020、c8051f120、at89s51、at89s52、at89s8253等。

2. c8051f320 usb demo 板(是目前学习和应用usb 性价比特别高的一款单片机,资料全!上手快!)软硬件资源丰富:可提供硬件原理图;USB demo板上位机应用软件源代码(VB6 和VC6),以及usb底层驱动和驱动安装信息;USB demo板单片机固化程序的c51源代码。同样可以提供在keil下串口isd51源代码,可以硬件单步,连续运行和仿真!!!


c8051f320 usb demo 板+ c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线一套价格壹百肆拾元;外地另加20元邮资。


陕西杨工c8051f单片机博客
手机 13002928013
http://c8051fmcu.blog.sohu.com
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 3 楼 Valima 的回复:
你的LCD的配置寄存器没有设置好

 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
改改参数试试。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
起始行列是否设置正确?改改参数单步执行一下。应该很容易查出。祝顺利
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
估计应该是坐标错误
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

11
 
你真棒
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

12
 
液晶一般有两个片选信号,选择显示左右半面显示,估计其中的一根信号线连接问题.
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 5 楼 yang96381 的回复:
很可能是软件的问题!


我给大家特别推荐的两款产品,非常棒!!!  

1. c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线,支持3伏(c8051f 单片机),5伏(at89s5x单片机)电源,
目前通过实际验证可编程下载的芯片:c8051f310、c8051f320、c8051f330D、c8051f340、c8051f350、c8051f360、c8051f410、c8051f020、c8051f120、at89s51、at89s52、at89s8253等。

2. c8051f320 usb demo 板(是目前学习…


广告做的不错!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

14
 
大胆问一下,各位现在还看汇编程序么?看着楼主这么长的程序,脑袋都大了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表