打印

关于SH69P55 LCD显示闪烁

[复制链接]
20461|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ttdepend|  楼主 | 2008-5-20 22:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用SH69P55,用的4COM,20SEG,但是发现显示的时候LCD显示的东西会闪烁。
我的代码如下:
LIST P=69P55
ROMSIZE=8192

INCLUDE "SH69P55.H"
INCLUDE "CONSTANT.H"
;************************************************
; BANK0; $00H, SYSTEM REGISTER
;************************************************
LCDCON                 EQU         29H         ;LCD CONTROL
LCDSEG          EQU     2EH     ;LCD SEGMENT

;***********************************************
;BANK6; $300-37FH; SYSTEM REGISTER
;***********************************************
SEG1                EQU     300H     ;SEG1
SEG2                EQU     301H     ;SEG2
SEG3                EQU     302H     ;SEG3
SEG4                EQU     303H     ;SEG4
SEG5                EQU     304H     ;SEG5
SEG6                EQU     305H     ;SEG6
SEG7                EQU     306H     ;SEG7
SEG8                EQU     307H     ;SEG8
SEG9                EQU     308H     ;SEG9
SEG10                EQU     309H     ;SEG10
SEG11                EQU     30AH     ;SEG11
SEG12                EQU     30BH     ;SEG12
SEG13                EQU     30CH     ;SEG13
SEG14                EQU     30DH     ;SEG14
SEG15                EQU     30EH     ;SEG15
SEG16                EQU     30FH     ;SEG16
SEG17                EQU     310H     ;SEG17
SEG18                EQU     311H     ;SEG18
SEG19                EQU     312H     ;SEG19
SEG20                EQU     313H     ;SEG20

;***********************************************
;BANK7; $380H; SYSTEM REGISTER
;***********************************************
LPS             EQU     03C1H     ;LCD FRAME


;************************************************
;程序
;************************************************
        ORG     0000H
        JMP     MAIN
        ORG        0001H        
        RTNI  
;************************************************
;主程序
;************************************************
MAIN:
        CALL        INIT_LCD
        CALL        TEST         
        JMP        MAIN1                
        RTNI
        
;*******************************************   
;初始化LCD寄存器
;;上电时,先对驱动LCD 的寄存器进行清零,以免打开LCD 时出现乱点
;*******************************************   
INIT_LCD:                
        LDI         LCDCON,0100B         ;设置PORTD.3-0 作为COM1-4, 1/4 占空比
        LDI     TEMP, 01H
        STA     LPS, BANK7         ;LCD FRAME=97.5HZ 
        LDI        LCDSEG,1111B        ;SET seg1-20,设置10K电阻    
        ORIM         LCDCON,1000B         ;打开LCD                
        RTNI 
               
;*******************************************   
;TEST PROGRAM
;*******************************************   
TEST:                     
        LDI        TEMP,0011B        ;显示D2,D3
        STA        SEG19,BANK6
        ORIM         LCDCON,1000B         ;打开LCD
        JMP        TEST
        RTNI                        
END


谢谢各位兄弟指教
沙发
ttdepend|  楼主 | 2008-5-20 22:13 | 只看该作者

re

另外我在用IDE调试发现LPS寄存器的值怎么也设不进去,不知道这个跨BANK的寄存器有什么特殊?

使用特权

评论回复
板凳
ttdepend|  楼主 | 2008-5-20 22:26 | 只看该作者

re

INIT_LCD:                
        CALL    DISP_OFF
        LDI     LCDCON,0100B     ;设置PORTD.3-0 作为COM1-4, 1/4 占空比
        LDI     TEMP,01H
        STA    TV2,BANK7
        STA    VACR2,BANK7
        STA     LPS,BANK7     ;LCD FRAME=97.5HZ
        LDI    LCDSEG,1111B    ;SET seg1-20    
    ORIM     LCDCON,1000B     ;打开LCD        
    RTNI 

我写了一个测试程序,发现TV2(地址为03ABH)可以写入希望的值,而VACR2(地址03C2)也不行。

使用特权

评论回复
地板
warm_ice| | 2008-5-21 09:59 | 只看该作者

这样

1.程序入口地址0000H到0004H,是特殊入口地址(主要是中断入口),须保留,你这样写        ORG     0000H
        JMP     MAIN
        ORG        0001H        
        RTNI  
;************************************************
;主程序
;************************************************
MAIN:
        CALL        INIT_LCD     ;此处及下2条占用了中断入口地址.
        CALL        TEST         
        JMP        MAIN1                
        RTNI
2.显示闪烁,主要是LCD显示部分的相关参数决定的,请再仔细检查一下所有参数是否合适,是否适合您正在使用的LCD.

使用特权

评论回复
5
ttdepend|  楼主 | 2008-5-21 15:30 | 只看该作者

re

1.谢谢warm_ice,这个是是摘抄的,因此没有把其他中断写进来。
我也试过
ORG     0000H
        JMP     MAIN      
        RTNI  
也就是只保留LCD部分,其他删除,但是还是闪烁,因此可以断定和其他部分程序没有关系。
2.我也猜测是LCD的参数设置
INIT_LCD:                
        LDI         LCDCON,0100B         ;设置PORTD.3-0 作为COM1-4, 1/4 占空比
        LDI     TEMP, 01H
        STA     LPS, BANK7         ;LCD FRAME=97.5HZ 
        LDI        LCDSEG,1111B        ;SET seg1-20,设置10K电阻    
        ORIM         LCDCON,1000B         ;打开LCD                
        RTNI 

但是我的参数是照我的LCD规格来写的,应该是没有问题的。
规格帮忙看附件。
现在的问题的是我测了一下LPS的参数根本不能写,这样就会有问题了。

使用特权

评论回复
6
elic| | 2008-5-21 16:07 | 只看该作者

LCD的问题

LCD闪烁这样的问题,我也遇到过
但我觉得是LCD本身的问题,因为我的仿真时,将程序停止运行后,LCD显示仍然闪烁,所以应该跟程序无关
虽然我也是按照LCD的参数写的(按照规格书上给出的C语言样例程序),也依然闪烁,为此都准备换一个LCD供应商,可换一个供应商试样后结果依然让我失望

使用特权

评论回复
7
ttdepend|  楼主 | 2008-5-21 17:23 | 只看该作者

re

ELIC,后来你是怎么解决的?
谢谢

使用特权

评论回复
8
warm_ice| | 2008-5-21 17:47 | 只看该作者

这样

请说明一下LPS是指哪个寄存器,请告知地址.
另外,你仿真时振荡器的频率为多少?也请告知,此频率会影响到LCD的显示频率.

仿真板上有拨动开关可以设置LCD显示频率,试一下看看.

使用特权

评论回复
9
ttdepend|  楼主 | 2008-5-21 19:36 | 只看该作者

to warm_ice

LPS定义如下:
LPS             EQU     03C1H     ;LCD FRAME

仿真器的频率我设置为4M,发现不行,我把8M~32k全部试了一遍,都不行。
关于LPS,在datasheet上我们可以看到,如果默认00H的话,那么频率是97.5HZ,发现不行:


那么我参照SPEC上的说明:


设置:
LDI TEMP,01H
STA LPS,BANK7

将TEMP的值从01H试到0FH,都不行,最后发现LPS在任何情况下都是00H,根本写不进去。

使用特权

评论回复
10
ttdepend|  楼主 | 2008-5-21 19:37 | 只看该作者

re

使用特权

评论回复
11
ttdepend|  楼主 | 2008-5-21 20:17 | 只看该作者

to warm_ice

还有我在55的仿真板说明书上没有看到有设置LCD的刷新频率的说明,只有看到系统频率的设置,具体说明书可以看附件。
相关链接:https://bbs.21ic.com/upfiles/img/20077/200776203217374.pdf

使用特权

评论回复
12
warm_ice| | 2008-5-21 21:25 | 只看该作者

这样

我看这样吧,你手上有没有示波器,测一下各COM及SEG口的波型是否正确,频率是否符合设置要求.
如果这些都正确,只能说可能是你的LCD的问题了.

使用特权

评论回复
13
ttdepend|  楼主 | 2008-5-21 21:48 | 只看该作者

re warm_ice

恩,我测了COM1,不过怎么设置,波形都是一样,周期为500ms.

使用特权

评论回复
14
ttdepend|  楼主 | 2008-5-21 22:19 | 只看该作者

re

我试着在EVB板上把系统的开关频率设置为400k~1M,量的COM1波形频率变为
16HZ左右,LCD也不闪了,而且我在sh69p55的datasheet上看到有关于fosc的设置,但是没找到寄存器设置。
  请问WARM_ICE,这个fosc软件可以设置?

使用特权

评论回复
15
warm_ice| | 2008-5-22 08:46 | 只看该作者

这样

FOSC就是振荡的频率范围,是烧录选项,在烧写程序的时候有选择,系统中没有寄存器设置,在仿真时就是在仿真板上的拨动开关来选择.

使用特权

评论回复
16
ttdepend|  楼主 | 2008-5-22 10:26 | 只看该作者

re

谢谢warm_ice的热心帮助。
虽然解决了这个问题,但是我还是纳闷,
1.怎么这几个寄存器都不能设置:
T1S             EQU     03C0H     ;T1 SOURCE 
LPS             EQU     03C1H     ;LCD FRAME
VACR2           EQU     03C2H     ;AD PORT & CHANNEL CONTROL
那要来干嘛?

2.为什么不设置啥,FLCD=2HZ,这是怎么来的呢?

使用特权

评论回复
17
warm_ice| | 2008-5-22 10:53 | 只看该作者

呵呵.

不用客气.
1.这些寄存器都是可以设置的,不知道你是在哪观察这些数据的,建议你在右侧的RAM区观察或者是用WATCH窗口,即使你看这些数据是不变的,你也可以通过LCD的驱动波型来观察到的,肯定会有变化.
2.一般寄存器都会有一个默认的值,如果不设置,很大可能是默认值,这也是跟振荡频率,以及LCD相关的几个寄存器的值才定下来的.当然,还是希望您根据需要来设定相应的寄存器.

使用特权

评论回复
18
elic| | 2008-5-22 11:00 | 只看该作者

RE

warm_ice 您指的仿真板可以设置LCD的刷新频率是否指的就是振荡频率?
我在EVB仿真板并未发现关于LCD方面的刷新频率设置

使用特权

评论回复
19
ttdepend|  楼主 | 2008-5-22 11:22 | 只看该作者

RE

1.WARM_ICE,memory区根本没有3C1H区域,最大只到3A8H,看附件,我选的是
SH69P55仿真。

使用特权

评论回复
20
ttdepend|  楼主 | 2008-5-22 11:27 | 只看该作者

re

我昨天在EVB板跳在4M的情况下,不管怎么设置LPS:
LDI TEMP,01H
STA LPS,BANK7

将TEMP试到05H,量的COM1的波形周期始终是500ms,也就是液晶频率始终是2HZ,
观察WATCH窗口,始终为0,即使始终为0,从SPEC上也能看出应该为默认频率97.5HZ啊。

早上我用模拟仿真,发现LPS也是不能写,这就奇怪了,我换了2台电脑都不行。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

65

帖子

0

粉丝