Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Picproje Kütüphane (Library) => Konuyu başlatan: mihri - 01 Ekim 2009, 19:32:35

Başlık: Usart Plot "C"
Gönderen: mihri - 01 Ekim 2009, 19:32:35
Seri porttan gönderilen verilerle grafik çizmeye yararan program.

usart_plot.c

//////////////////////////////////////////////////////////
// //
// YAxisText Y ekseni etiketi. //
// XAxisText X ekseni etiketi. //
// Title Grafik başlığı. //
// XAxis, YAxis değerleri ekran görüntüsünde max //
// eksen uzunluklarını belirtir. //
// Hazırlanan kütüphanede giriş datasi int tipi //
// değişken katarı olmak zorunda. Diğer tip veriler //
// için kod modifiye edilebilir. //
// Kod Hi-Tech derleyicisinde test edildi. //
// Grafiğin anlaşılır olması için seri port monitöründe //
// seçilen font Courier New olmalıdır. //
// Örnek; //
// UsartPlot(int_data,"V-t Grafigi","V","t"); //
// //
///////////////////// Mihri-2009 /////////////////////////

#define YAxis 32 //Y eksen uzunluğu
#define XAxis 64 //X eksen uzunluğu

#define Grid 1 //1 Grid olsun, 0 Grid olmasın
#define FillLine 1 //1 grafik noktalarının altını çizgiyle doldurur
#define Sign 'M' //Grafiği oluşturan işaret

void UsartPlot(int Data1[],const char *Title,const char *XAxisText,const char *YAxisText); // prototip tanımlama

void UsartPlot(int Data1[],const char *Title,const char *XAxisText,const char *YAxisText)
{
int PosYAxis;
int NegYAxis;
int MaxVal=0;
int MinVal=0;
int ScaledNegData;
int ScaledPosData;
float Scale;

for(int i=0;i<XAxis;i++) //Girilen data dizisinde Max ve min değerleri bul
{
if(Data1[i]>MaxVal)
MaxVal=Data1[i];
if(Data1[i]<MinVal)
MinVal=Data1[i];
}

Scale=((float)(MaxVal-MinVal))/YAxis; //Çizim ölçeğini hesapla
if(Scale<1)
Scale=1;
PosYAxis=(int)((float)MaxVal/Scale)+2; //Max pozitif y eksenini hesapla
NegYAxis=(int)((float)MinVal/Scale)-3; //Min negatif y eksenini hesapla

printf("\n\r//---------- USART PLOT V1.0 ----------//");
printf("\n\r > Title : %s",Title);
printf("\n\r > Max %s =%4d",YAxisText,MaxVal);
printf("\n\r > Min %s =%4d",YAxisText,MinVal);
printf("\n\r > Scale =1/%d",(int)Scale);
printf("\n\r//-------- DESIGNED BY MIHRI %c --------//\n\r",169);

for(int y=PosYAxis;y>NegYAxis;y--) //Y eksenini tara
{
if((y==PosYAxis)) //Y ekseninin başına etiketi yaz
printf("\n\r    +Y=%s",YAxisText);

for(int x=0;x<XAxis;x++) //X eksenini tara
{

if(x==0) //Y eksen değerlerini hesapla ve yaz
printf("\n\r%+5d|",(int)(Scale*y));

ScaledNegData=(int)((float)Data1[x]/Scale-0.9);
ScaledPosData=(int)((float)Data1[x]/Scale+0.9);

if(y==0) // Y=0 ekseninde 0'a eşit olan noktalara işaret yaz
{ // 0'a eşit olmayan yerlere çizgi çek
if((0==ScaledPosData)&&(0==ScaledNegData))
printf("%c",Sign);
else
printf("-");

if(x==(XAxis-1)) //X ekseninin etiketini yaz
printf("-> X=%s",XAxisText);
}
else if((y>0)&&(y==ScaledPosData)) //Y'nin 0'dan büyük değerleri için
printf("%c",Sign); //X'e karşılık gelen noktalara çizim işareti yaz
else if((y<0)&&(y==ScaledNegData)) //Y'nin 0'dan küçük değerleri için
printf("%c",Sign); //X'e karşılık gelen noktalara çixim işareti yaz
else //(X,Y) kordinatlarına denk gelen data değeri yoksa diğer işlemleri uygula
{
#if (FillLine==1) //İşaret noktasının altı çizgi ile doldurulsun

if((y>0)&&(y<ScaledPosData))
printf("|");
else if((y<0)&&(y>ScaledNegData))
printf("|");
else // İşaret noktası ve altındaki çizgiler hariç çizim alanı
{
#if(Grid==1) //Çizim alanında grid olsun
printf(".");
#else
printf(" ");
#endif
}
#else // İşaret noktasının altı çizgi ile doldurulmasın
#if(Grid==1) //Çizim alanında grid olsun
printf(".");
#else
printf(" ");
#endif
#endif


}
}

if(y==-1) //X eksen uzunluğunu yaz
{
printf("   X Lenght=%d",XAxis);
}

if(y==(NegYAxis+1)) //Y ekseni negatif değer etiketini yaz
printf("\n\r    -Y=%s",YAxisText);
}
printf("\n\r");
}



Örnek çıktı.


//---------- USART PLOT V1.0 ----------//
> Title : Giris Sinyali Grafigi
> Max Volt = 128
> Min Volt =-128
> Scale =1/8
//-------- DESIGNED BY MIHRI © --------//

   +Y=Volt
+144|................................................................
+136|................................................................
+128|.......MMM.............................MMM......................
+120|......M|||M...........................M|||M.....................
+112|.....M|||||M.........................M|||||M....................
+104|.....|||||||.........................|||||||....................
 +96|....M|||||||M.......................M|||||||M...................
 +88|....|||||||||.......................|||||||||...................
 +80|....|||||||||.......................|||||||||...................
 +72|...M|||||||||M.....................M|||||||||M..................
 +64|...|||||||||||.....................|||||||||||..................
 +56|...|||||||||||....................M|||||||||||..................
 +48|..M|||||||||||M...................||||||||||||M.................
 +40|..|||||||||||||...................|||||||||||||.................
 +32|..|||||||||||||...................|||||||||||||.................
 +24|.M|||||||||||||M.................M|||||||||||||M................
 +16|.|||||||||||||||.................|||||||||||||||................
  +8|.|||||||||||||||.................|||||||||||||||................
  +0|M---------------M---------------M---------------M----------------> X=Zaman
  -8|.................|||||||||||||||.................|||||||||||||||   X Lenght=64
 -16|.................|||||||||||||||.................|||||||||||||||
 -24|.................M|||||||||||||M.................M|||||||||||||M
 -32|..................|||||||||||||...................|||||||||||||.
 -40|..................|||||||||||||...................|||||||||||||.
 -48|..................M|||||||||||M...................||||||||||||M.
 -56|...................|||||||||||....................M|||||||||||..
 -64|...................|||||||||||.....................|||||||||||..
 -72|...................M|||||||||M.....................M|||||||||M..
 -80|....................|||||||||.......................|||||||||...
 -88|....................|||||||||.......................|||||||||...
 -96|....................M|||||||M.......................M|||||||M...
-104|.....................|||||||.........................|||||||....
-112|.....................M|||||M.........................M|||||M....
-120|......................M|||M...........................M|||M.....
-128|.......................MMM.............................MMM......
-136|................................................................
-144|................................................................
   -Y=Volt

//---------- USART PLOT V1.0 ----------//
> Title : FFT Katsayilarinin Gercel Kismi
> Max k*Cos(Faz) =  31
> Min k*Cos(Faz) = -13
> Scale =1/1
//-------- DESIGNED BY MIHRI © --------//

   +Y=k*Cos(Faz)
 +33|................................................................
 +31|..............................................................M.
 +30|..............................................................|.
 +28|..............................................................|.
 +27|..............................................................|.
 +26|..M...........................................................|.
 +24|..|...........................................................|.
 +23|..|...........................................................|.
 +22|..|...........................................................|.
 +20|..|...........................................................|.
 +19|..|...........................................................|.
 +17|..|...........................................................|.
 +16|..|...........................................................|.
 +15|..|...........................................................|.
 +13|..|...........................................................|.
 +12|..|...........................................................|.
 +11|..|...........................................................|.
  +9|..|...........................................................|.
  +8|..|.......................................................M...|.
  +6|..|.......................................................|...|.
  +5|..|...M...................................................|...|.
  +4|..|...|...................................................|...|.
  +2|..|...|..........M...M...........................M...M....|...|.
  +1|..|...|....M...M.|.M.|...M............M...MM...M.|.M.|...M|...|.
  +0|M---M--MM---MM--M---M-MMM-M-MM--M---M--MM---MM--M---M--MM---MM---> X=Faz
  -1|.|.M.|...M|...|...|........M..|M.||M.|...M....|...|...|....M...M   X Lenght=64
  -2|.M...M....|...|...|...........|..M|..M........|...|...|.........
  -4|..........|...|...|...........|...|...........|...M...|.........
  -5|..........|...|...|...........|...|...........|.......|.........
  -6|..........|...M...|...........|...|...........|.......M.........
  -8|..........|.......|...........|...|...........|.................
  -9|..........M.......|...........|...|...........|.................
 -11|..................M...........|...M...........|.................
 -12|..............................|...............M.................
 -13|..............................M.................................
 -15|................................................................
   -Y=k*Cos(Faz)

//---------- USART PLOT V1.0 ----------//
> Title : FFT Katsayilarinin Sanal Kismi
> Max k*Sin(Faz) =4052
> Min k*Sin(Faz) =-4050
> Scale =1/253
//-------- DESIGNED BY MIHRI © --------//

   +Y=k*Sin(Faz)
+4557|................................................................
+4304|................................................................
+4051|..............................................................M.
+3797|..............................................................|.
+3544|..............................................................|.
+3291|..............................................................|.
+3038|..............................................................|.
+2785|..............................................................|.
+2531|..............................................................|.
+2278|..............................................................|.
+2025|..............................................................|.
+1772|..............................................................|.
+1519|..............................................................|.
+1265|..............................................................|.
+1012|..............................................................|.
+759|..............................................................|.
+506|..............................................................|.
+253|..............................................................|.
  +0|MM-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-M-> X=Faz
-253|..|.............................................................   X Lenght=64
-506|..|.............................................................
-759|..|.............................................................
-1012|..|.............................................................
-1265|..|.............................................................
-1519|..|.............................................................
-1772|..|.............................................................
-2025|..|.............................................................
-2278|..|.............................................................
-2531|..|.............................................................
-2785|..|.............................................................
-3038|..|.............................................................
-3291|..|.............................................................
-3544|..|.............................................................
-3797|..|.............................................................
-4051|..M.............................................................
-4304|................................................................
   -Y=k*Sin(Faz)

//---------- USART PLOT V1.0 ----------//
> Title : FFT Katsayilari
> Max Genlik = 126
> Min Genlik =   0
> Scale =1/3
//-------- DESIGNED BY MIHRI © --------//

   +Y=Genlik
+133|................................................................
+129|................................................................
+126|..M...........................................................M.
+122|..|...........................................................|.
+118|..|...........................................................|.
+114|..|...........................................................|.
+110|..|...........................................................|.
+106|..|...........................................................|.
+102|..|...........................................................|.
 +98|..|...........................................................|.
 +94|..|...........................................................|.
 +90|..|...........................................................|.
 +86|..|...........................................................|.
 +82|..|...........................................................|.
 +78|..|...........................................................|.
 +74|..|...........................................................|.
 +70|..|...........................................................|.
 +66|..|...........................................................|.
 +63|..|...........................................................|.
 +59|..|...........................................................|.
 +55|..|...........................................................|.
 +51|..|...........................................................|.
 +47|..|...........................................................|.
 +43|..|...........................................................|.
 +39|..|...........................................................|.
 +35|..|...........................................................|.
 +31|..|...........................................................|.
 +27|..|...........................................................|.
 +23|..|...........................................................|.
 +19|..|...........................................................|.
 +15|..|...........................................................|.
 +11|..|...........................................................|.
  +7|..|...........................................................|.
  +3|..|...........................................................|.
  +0|MM-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-M-> X=Faz
  -3|................................................................   X Lenght=64
  -7|................................................................
   -Y=Genlik
[/font]
Başlık: Usart Plot "C"
Gönderen: teknikelektronikci - 02 Ekim 2009, 01:01:01
cok güzel paylasim tesekürler fakat sorum bu kod glcd icin değilmi? c den pek anlamam o yüzden soruyorum
Başlık: Usart Plot "C"
Gönderen: sigmoid - 02 Ekim 2009, 10:49:55
glcd için değil. Seri porttan bilgisayara gönderiyor, sizde hyperterminal gibi bir programda sonuçları görebilirsiniz.

birkaç kod değişikliği ile glcdye de uyarlanabilinir.