代码如下:可以绘制方波并刷新lcd,但是正弦波不对·。方波也不对,赋值1V测出来波形却到达纵坐标80即3.3V.·在对角线为(30,30)到(200,110)的矩形区域里绘制波形,纵轴最大为3.0v对应纵坐标80;
/***画曲线函数****/
void Draw_figure(void)
{
int i,Xpos,Ypos[2],t;
switch(command_flag)//command_flag为刷新标志,为2时刷新屏幕再开始画图
{
case 1:
Frequency_Screen();//绘制坐标
delay_ms(50);
for(i=1;i<256;i++)
{
Ypos[0]=Receive/4096*80;//Receive数组为采样数值 Receive*3.3/4096*80/3.3
Ypos[1]=Receive[i+1]/4096*80;
for(t=0;t<2;t++)
{
if(Ypos[t]>0&&Ypos[t]<79)
Ypos[t]+=20;
else
if(Ypos[t]==0)
Ypos[t]=110;
else
Ypos[t]=30;
}
Xpos=i+30;
if(Xpos>200)
Xpos=0;
LCD_DrawLine(Xpos,Ypos[0],Xpos+1,Ypos[1]);
}
break;
case 2:
//LCD_Fill(0,0,200,110,WHITE);
LCD_Clear(WHITE);
Frequency_Screen();
delay_ms(50);
for(i=1;i<256;i++)
{
Xpos=i+30;
if(Xpos>200)
Xpos=0;
Ypos[0]=Receive/4096*80;
Ypos[1]=Receive[i+1]/4096*80;
for(t=0;t<2;t++)
{
if(Ypos[t]>0&&Ypos[t]<79)
Ypos[t]+=20;
else
if(Ypos[t]==0)
Ypos[t]=110;
else
Ypos[t]=30;
}
LCD_DrawLine(Xpos,Ypos[0],Xpos+1,Ypos[1]);
}
command_flag=0;
break;
}
} |