小小怪 发表于 2013-6-23 19:12:09

12864清屏问题

最近在做个题目,但是现在用12864时有问题,我做的是描点显示AD电压曲线,我的想法是当曲线描点显示到128个点时,就刷屏,让曲线重新显示,我用的刷屏是一下程序:

void ClrGDRAM(void)
{
        unsigned char x,y;
        for(y=0;y<64;y++)
            for(x=0;x<16;x++)
            {
           writeCommand(0x34);
            writeCommand(y+0x80);   //行地址
            writeCommand(x+0x80);   //列地址
            writeCommand(0x30);
            writeData(0x00);
            writeData(0x00);
      }
        //writeCommand(0x30);
}
用这个刷屏很明显很久。有没有更快一点的刷屏方法?

http://v.youku.com/v_show/id_XNTc0NDc3NjQw.html

tianheiGE 发表于 2013-6-23 20:23:20

楼主用的12864是ST7920A控制的把,你的ADC这是写的字符把,它不闪就图形闪,这个是你写的命令有问题,好像是开图形关图形什么的,看下他的手册把

mcu_lover 发表于 2013-6-23 20:43:05

全屏清了,再画,无论如何都会闪的。
两种方法解决。
1, 内存中画好,一次性copy 到显存。
2, 画点时候,记录好每个点的Y坐标,然后清屏时候,清这些点就好了,不要全屏清掉。

小小怪 发表于 2013-6-23 21:30:54

mcu_lover 发表于 2013-6-23 20:43 static/image/common/back.gif
全屏清了,再画,无论如何都会闪的。
两种方法解决。
1, 内存中画好,一次性copy 到显存。


这是用AD采样的值算出该点亮哪点,所以灭掉点亮的,是做不到那么准确的,因为AD值都在改变。用内存的话,没用过,有什么资料吗?

小小怪 发表于 2013-6-23 21:33:04

tianheiGE 发表于 2013-6-23 20:23 static/image/common/back.gif
楼主用的12864是ST7920A控制的把,你的ADC这是写的字符把,它不闪就图形闪,这个是你写的命令有问题,好像 ...

嗯,我只是想刷新曲线,关掉的话没有把握做得那么准确。我的命令有什么问题?

mcu_lover 发表于 2013-6-23 23:20:38

小小怪 发表于 2013-6-23 21:30 static/image/common/back.gif
这是用AD采样的值算出该点亮哪点,所以灭掉点亮的,是做不到那么准确的,因为AD值都在改变。用内存的话, ...

假设采样 64个点
建立数组 unsigned char ucYPos

每采样一个AD点 时候 保存其对应的Y轴坐标到ucYPos 数组对应的位置。

例如:
第一个采样点AD值对应的Y轴值是 25
第二个采样点AD值对应的Y轴值是 24
第三个采样点AD值对应的Y轴值是 26

则对应数组里面 ucYPos=25
                        ucYPos=24
                        ucYPos=26

清屏时候读出该数组里面64个点的值,就知道曲线对应的每个点的Y值了。
这样就可以实现只清除曲线的功能了。

RUANJI 发表于 2013-6-23 23:50:58

既然可以画点,肯定可以清点。
页: [1]
查看完整版本: 12864清屏问题