打印

AD转换后显示的数字为何不稳定呢?

[复制链接]
5648|22
手机看帖
扫描二维码
随时随地手机跟帖
沙发
雁舞白沙| | 2007-6-11 08:21 | 只看该作者

刷新速度慢!

使用特权

评论回复
板凳
liang.t.x|  楼主 | 2007-6-11 08:23 | 只看该作者

2楼兄弟:怎样才可以解决呢?

使用特权

评论回复
地板
hqgboy| | 2007-6-11 09:15 | 只看该作者

应该是液晶显示方面的事。

使用特权

评论回复
5
HWM| | 2007-6-11 09:30 | 只看该作者

有变化再刷新显示。

使用特权

评论回复
6
liang.t.x|  楼主 | 2007-6-11 09:34 | 只看该作者

我用的是128*64的屏,怎样刷新呢

使用特权

评论回复
7
HWM| | 2007-6-11 10:30 | 只看该作者

不管是什么屏,只有在数据发生变化时才去写入新的内容。

当然这要求你多开一个数据单元,以用于保存已显示的数据,便于比较。

使用特权

评论回复
8
古道热肠| | 2007-6-11 10:36 | 只看该作者

楼上的这一点说得很在理

  不要将相同的数据重复送显,除非是用动态扫描。

使用特权

评论回复
9
fsaok| | 2007-6-11 11:54 | 只看该作者

液晶的问题

液晶的刷新速度和采样无关,所以最好另外设定一个液晶的刷新时间

使用特权

评论回复
10
ayb_ice| | 2007-6-11 15:20 | 只看该作者

可以分区,分别刷新。。。

使用特权

评论回复
11
liang.t.x|  楼主 | 2007-6-11 15:28 | 只看该作者

我不知道怎样去刷新液晶,哪位可以教教?

使用特权

评论回复
12
wjy1107| | 2007-6-11 16:52 | 只看该作者

AD采样的时间呢?

每采一次,就显示一次吗?采样的数值会变吗?

使用特权

评论回复
13
gyt| | 2007-6-11 17:25 | 只看该作者

尽量少写

尽量减少写入的机会

使用特权

评论回复
14
computer00| | 2007-6-11 17:31 | 只看该作者

采样一次,延迟几百毫秒再重新采样

使用特权

评论回复
15
liang.t.x|  楼主 | 2007-6-12 09:40 | 只看该作者

采样的数值会变,以下的AD转换程序有问题吗?

;**************AD转换程序************************************************
ADSTART:  MOV   R1,#00000000B     ;0通道
      ACALL ADTEST            ;读第一次转换的结果可能不准确,丢弃
      MOV   R1,#00000000B     ;0通道
      LCALL ADTEST            ;再次送入0通道地址,并且读取上次转换的结果
          LCALL ADCOUNT           ;      
          RET
ADTEST:   CLR   CLK
      SETB  CS
      LCALL ADDELAY
      CLR   CS
      MOV   R2,#08H    ;
      MOV   A,R1       ;
ADLOOP1:  LCALL ADDELAY
      MOV   C,DO       ;读高八位数据
      RLC   A          ;左移八位完成高八位数据的读取,同时送出输出方式及通道位
      MOV   DI,C       ;
      SETB  CLK        ;
      LCALL ADDELAY    ;
      CLR   CLK        ;
      DJNZ  R2,ADLOOP1  ;R2不为0,高八位数据没有读完,返回LOP1
      MOV   ADDATAH,A   ;转换结果的高八位送入存储空间     
          MOV   A,#00H
      MOV   R2,#04H
ADLOOP2:  LCALL ADDELAY
      MOV   C,DO       ;
      RLC   A          ;
      MOV   DI,C       ;
      SETB  CLK        ;
      LCALL ADDELAY    ;
      CLR   CLK        ;
      DJNZ  R2,ADLOOP2 ;
      MOV   ADDATAL,A                 
      SETB  CS         ;                 
      RET

ADDELAY:  NOP
          NOP
      NOP
      RET                  

使用特权

评论回复
16
keer_zu| | 2007-6-12 10:02 | 只看该作者

也说一句

不要在你的大循环中频繁调用显示程序,可以设置一个条件语句,在变化是在重新修改显示RAM的数据,频率不要太频繁。我港碰到过这样的问题。
void Display(void)
{
    if(main_interface)
    {
        LCD_Clr();
        test();
        main_interface=0;
    }
    else
    {
       if(Old_Row_num != Row_num)
       {
            Old_Row_num = Row_num;
            LCD_Clr();
            Display_window(Interface_num,Row_num);
       }
       if(Old_Interface_num != Interface_num)
       {
            Old_Interface_num = Interface_num;
            Old_Row_num = 0;
            Row_num = 0;    
            LCD_Clr();

              

       }
            Display_window(Interface_num,Row_num);
    }   
}

如果我把  Display_window(Interface_num,Row_num);放到if里边闪的问题就解决了:

void Display(void)
{
    if(main_interface)
    {
        LCD_Clr();
        test();
        main_interface=0;
    }
    else
    {
       if(Old_Row_num != Row_num)
       {
            Old_Row_num = Row_num;
            LCD_Clr();
            Display_window(Interface_num,Row_num);
       }
       if(Old_Interface_num != Interface_num)
       {
            Old_Interface_num = Interface_num;
            Old_Row_num = 0;
            Row_num = 0;    
            LCD_Clr();

        Display_window(Interface_num,Row_num);      

       }
            
    }   
}

使用特权

评论回复
17
liang.t.x|  楼主 | 2007-6-12 22:31 | 只看该作者

谢谢各位的指点,新的问题有来请教了

我现在的是定点显示(00123.123),怎样做浮点显示呢(123.045)?

使用特权

评论回复
18
gyt| | 2007-6-13 12:07 | 只看该作者

小数点移动吗?

使用特权

评论回复
19
liang.t.x|  楼主 | 2007-6-13 14:38 | 只看该作者

小数点也移动.

使用特权

评论回复
20
gyt| | 2007-6-14 12:01 | 只看该作者

小数点移动比较复杂一些

不过只是计算复杂,显示不复杂,只要把小数点显示在合适的位置就行了。小数点之后的零可以不显示,也可以只显示一个。

使用特权

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

本版积分规则

21

主题

54

帖子

0

粉丝