最近在做个题目,但是现在用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
两种方法解决。
1, 内存中画好,一次性copy 到显存。
2, 画点时候,记录好每个点的Y坐标,然后清屏时候,清这些点就好了,不要全屏清掉。
这是用AD采样的值算出该点亮哪点,所以灭掉点亮的,是做不到那么准确的,因为AD值都在改变。用内存的话,没用过,有什么资料吗?
嗯,我只是想刷新曲线,关掉的话没有把握做得那么准确。我的命令有什么问题?
假设采样 64个点
建立数组 unsigned char ucYPos[64]
每采样一个AD点 时候 保存其对应的Y轴坐标到ucYPos 数组对应的位置。
例如:
第一个采样点AD值对应的Y轴值是 25
第二个采样点AD值对应的Y轴值是 24
第三个采样点AD值对应的Y轴值是 26
则对应数组里面 ucYPos[0]=25
ucYPos[1]=24
ucYPos[2]=26
清屏时候读出该数组里面64个点的值,就知道曲线对应的每个点的Y值了。
这样就可以实现只清除曲线的功能了。
一周热门 更多>