⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contpcd.c

📁 "DIGITAL SIGNAL PROCESSING WITH C AND THE TMS32 0C30"一书的附带程序
💻 C
字号:
/*CONTPCD.C-FOR PID CONTROLLER*/
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include "pc.c"
#include "pc_1.h"
#define SEND 128
void init_graphic();
void transfer();
int index1 = 0;
int data[3] = {0};
float input;

void main()
{
  int i;
  init_evm();
  clrscr();
  printf("\nInput a value for PGAIN (0 - 1000)  ");
  scanf("%i", &data[0]);
  printf("\nInput a value for IGAIN (0.0001 - 1.0)  ");
  scanf("%f",  &input);
  data[1] = (int)(input*1000);
  printf("\nInput a value for DGAIN (0 - 1000)  ");
  scanf("%i", &data[2]);
  init_graphic();
  bar(0,0,512,265);
  buffer = 3;
  while(READ_CMD);
  WRITE_CMD(64);
  while(READ_CMD != 64);
  CLR_WRITE_ACK;
  for (i = 0; i < buffer; i++)
  {
    WRITE_DATA(data[i]);
    do
      UPDATE_STATUS0;
    while (!IS_WRITE_ACK);
    CLR_WRITE_ACK;
  }
  WRITE_CMD(NONE);
  for(;;)
  {
    transfer();
    if (kbhit())
    {
      closegraph();
      exit(EXIT_SUCCESS);
      break;
    }
  }
}

void init_graphic()
{
  char string[10] = {" "};
  int m, loop;
  int X0 = 65, Y0 = 50;
  int X1 = X0 + 512, Y1 = Y0 + 265;
  int gdriver = DETECT, gmode, errorcode;
  initgraph(&gdriver, &gmode, "");
  errorcode = graphresult();
  if (errorcode != grOk)
  {
     printf("Graphics error: %s\n", grapherrormsg(errorcode));
     printf("Press any key to halt:");
     getch();
     exit(1);
   }
   setbkcolor(BLUE);
   rectangle(X0-1, Y0-1, X1+1, Y1+1);
   settextjustify (CENTER_TEXT, CENTER_TEXT);
   for (loop = 0; loop < 13; loop++)
   {
     int vert;
     vert = Y0+12+loop*20.3;
     itoa(120-(loop*10), string, 10);
     line (X0-5, vert, X0, vert);
     outtextxy (X0-20, vert, string);
   }
   settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);
   outtextxy (getmaxx()/2, Y0-30, "TMS320C30 PID CONTROLLER");
   settextstyle(DEFAULT_FONT, HORIZ_DIR, 0);
   settextjustify(LEFT_TEXT, CENTER_TEXT);
   outtextxy (100, Y1+50, "PGAIN =");
   itoa(data[0], string, 10);
   outtextxy (165, Y1+50, string);
   outtextxy (100, Y1+70, "IGAIN =");
   gcvt(input, 6, string);
   outtextxy (165, Y1+70, string);
   outtextxy (100, Y1+90, "DGAIN =");
   itoa(data[2], string, 10);
   outtextxy (165, Y1+90, string);
   setfillstyle(SOLID_FILL,LIGHTGRAY);
   setviewport(X0, Y0, X1, Y1, 1);
}

void transfer()
{
  int i, index;
  int temp[6];
  char ch;
  while(READ_CMD);
  WRITE_CMD(128);
  while (READ_CMD != 128);
  CLR_READ_ACK;
  READ_DATA;
  for(i = 0; i < buffer; i++)
  {
    temp[buffer+i] = temp[i];
    do
      UPDATE_STATUS0;
    while(!IS_READ_ACK);
    CLR_READ_ACK;
    temp[i] = READ_DATA;
  }
  WRITE_CMD(NONE);
  if (index1 == 512)
  {
    bar(0,0,512,265);
    index1 = 0;
  }
  for (i = 0; i < buffer; i++)
  {
    putpixel (index1, 256 - temp[i], 3+i);
  }
  index1++;
  setviewport(65,50,577,315,1);
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -