"); //-->
要能画波形,有一点是至关重要重要的,那就是打点,所谓打点,就是能在指定的X,Y的坐标处打上一个小黑点,12864液晶的操作就像大多数16位以上的处理器一样是字节或字或双字操作的,不像51和彩色液晶一样的位操作,所以要在12864上打点,就必须用“与或”的方式。下面把打点的函数贴上,这是以前做温度波形显示的时候做的
/****************打点******************/
void point(uchar x,uchar y)
{
uchar y1,hang,lie,msb_data,lsb_data,temp=0x01;
if(y1!=y)
{
msb_data=0;
lsb_data=0;
}
y1=y;
if(y<32)
{
hang=0x80+y;
lie=0x80;
}
if(y>31)
{
hang=0x80+y-32;
lie=0x88;
}
if(y>63)//return;
{
lcm_com(0x80);
_nop_();
hanzi("温度超出显示范围");
while(1)
flash();
}
lie=lie+x/16;
if(x%16==0)
{
msb_data=0;
lsb_data=0;
}
if(x%16<8)
{
msb_data=msb_data|(temp<<(7-x%16));
lsb_data=0x00|lsb_data;
}//保留以前的数据,把第x个点亮
if(x%16==8)
{
msb_data=msb_data|0x00;
lsb_data=lsb_data|0x80;
}
if(x%16>8)
{
msb_data=msb_data|0x00;
lsb_data=lsb_data|(temp<<(15-x%16));
}
lcm_com(0x34);//扩充指令集
lcm_com(hang);
lcm_com(lie);
lcm_dat(msb_data);
lcm_dat(lsb_data);
lcm_com(0x36);//绘图显示开
}
打点完成之后波形就相应的出来了,比如说要记录一个波形随时间变化,x坐标随着时间自动增加,x增加一个单位时相应y的值就得确定,在送个打点函数,波形就出来了。这是一种实时波形
还有一种波形,比如正弦,余弦,等等数学波形,可以添加math.h这个头文件。然后里面相应的函数得到x,y的关系,就能画出这个波形了,下面把正弦波的函数贴出来
/**********正弦波*********/
void fsin()
{
float x,y;
uchar x1,y1;
for(x=0;x<(4*3.1415);x+=0.1)
{
y=sin(x);
x1=10*x;
y1=31-(10*y+0.5);
point(x1,y1);
}
}
y1=31-(10*y+0.5);这条语句是对y值进行四舍五入!
其实波形的显示就是这么简单!
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。