新闻  |   论坛  |   博客  |   在线研讨会
12864液晶画波形
mayer | 2009-08-19 19:22:05    阅读:3417   发布文章

12864液晶画波形

 

要能画波形,有一点是至关重要重要的,那就是打点,所谓打点,就是能在指定的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值进行四舍五入!

其实波形的显示就是这么简单! 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客