资源简介

自己的实验程序和工程都在里面,分享给用到的小伙伴。

资源截图

代码片段和文件信息

#include 
#define  uchar unsigned char
#define  uint unsigned int
sbit CLK=P2^3;
sbit DAT=P2^4;
sbit CS =P2^5;

uint MCP3001(void) //10bit
{
  uint ix=0;
  DAT=1; CS=0;
  for(i=0;i<12;i++)
  {
CLK=1; CLK=0; 
x<<=1;
if(DAT==1) x++;
  }
  CS=1;
  return (x&0X3FF);
}

#define kd 4
#define kp 30
#define TIM1 -60000

sbit UP=P3^3;
sbit DN=P3^4;
sbit EN=P3^5;
//int e0e1e2yrusr;
int sr;
uchar con=0;
/*********************************************/
enum {FLFMFSZOZSZMZL};
code char SET[7][7]={ 
          FLFLFLFLFMFSFS
  FLFLFLFMFSZSZS
  FLFLFMFSZOZSZM
  FLFMFSZOZSZMZL
  FMFSZOZSZMZLZL
  FSFSZSZMZLZLZL
  ZSZSZMZLZLZLZL};
idata float ER[7]CE[7];
code float OUT[7]={-.4-.2-.1 0.1 .2 .4};
code float TABER[7]={-1-.5-.25 0.25.5 1};
code float TABCE[7]={-.17-.08-.04 0.04.08.17};
/***********************************************/
void Fuzzy_er(float er)/*偏差三角模糊化*/
{
  char  i;
  if (er  if (er>TABER[6]) er=TABER[6];
  for(i=0;i<7;i++) ER[i]=0;
  for(i=0;i<6;i++)
  {
    if(er>=TABER[i] & er<=TABER[i+1])
    {
      ER[i+1]=(er-TABER[i])/(TABER[i+1]-TABER[i]);
      ER[i]=(TABER[i+1]-er)/(TABER[i+1]-TABER[i]);
  return;
    }
  }
}

void Fuzzy_ce(float ce)/*变化三角模糊化*/
{
  char  i;
  if (ce  if (ce>TABCE[6]) ce=TABCE[6];
  for(i=0;i<7;i++) CE[i]=0;
  for(i=0;i<6;i++)
  {
    if(ce>=TABCE[i] & ce<=TABCE[i+1])
    {
      CE[i+1]=(ce-TABCE[i])/(TABCE[i+1]-TABCE[i]);
      CE[i]=(TABCE[i+1]-ce)/(TABCE[i+1]-TABCE[i]);
  return;
    }
  }
}

float Fuzzy_cu()    /*三角化模糊推理*/
{
  char ij;
  float s1=0;
  for(i=0;i<7;i++)
    for(j=0;j<7;j++)
    {
  if(ER[i]>0 && CE[j]>0)
        s1+=ER[i]*CE[j]*OUT[SET[i][j]];
    }
  return s1;
}


float e0e1deryu;
#define TIM -30000

void Fuzzy() interrupt 3
{
  TH1=TIM>>8; TL1=TIM&0XFF;
  y=MCP3001(); 
  e1=e0;e0=r-y; de=e0-e1;
  Fuzzy_er(e0);
  Fuzzy_ce(de);
  u=Fuzzy_cu()*2550;
  if(u>10) {UP=1; DN=0;}
  else if(u<-10) {UP=0; DN=1;}
  else {UP=0; DN=0;}
  if(u<0) u=-u;
  if(u>2550) u=2550;
  con=u/10;
}


bit ppp;
void PWM() interrupt 1
{
  if(ppp)
  {
TH0=0XFF; TL0=con;
EN=0;
  }
  else
  {
TH0=0XFF; TL0=-con;
EN=1;
  }
  ppp=!ppp;
}

#define uchar unsigned char
#define uint unsigned int
#define LCD_COM  0  // Command
#define LCD_DAT  1  // Data
sbit LcdRS=P2^0;
sbit LcdRW=P2^1;
sbit LcdEN=P2^2;

void time(uint t)
{
  while(t--);
}

void LCD_WRITE(uchar xbit WS)
{
  P0=x; 
  LcdRW=0;  LcdRS=WS;
  LcdEN=1;  time(100);  LcdEN=0;
}

void LCD_Initial()
{
  LCD_WRITE(0x38LCD_COM);   time(200);
  LCD_WRITE(0x38LCD_COM);   time(200);
  LCD_WRITE(0x01LCD_COM);   time(200);
  LCD_WRITE(0x06LCD_COM);   time(200);
  LCD_WRITE(0x0cLCD_COM);   time(200);
}

void GotoXY(uchar xuchar y)
{
  uchar code table[4]={0x000x400

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-02-02 20:41  直流电机模糊控制实验\
     目录           0  2015-02-02 20:39  直流电机模糊控制实验\mohukongzhi\
     文件      121137  2014-06-12 14:42  直流电机模糊控制实验\mohukongzhi\Last Loaded 伺服电机角度PWM控制LCD.DBK
     文件     1003938  2014-04-08 16:44  直流电机模糊控制实验\mohukongzhi\MCP3001读写时序.bmp
     文件       20731  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\mohu
     文件        5046  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\mohu.c
     文件       14023  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\mohu.hex
     文件          56  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\mohu.lnp
     文件       10105  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\mohu.LST
     文件       24642  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\mohu.M51
     文件       23071  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\mohu.OBJ
     文件         209  2014-06-21 20:59  直流电机模糊控制实验\mohukongzhi\mohu.plg
     文件       71416  2014-06-21 21:02  直流电机模糊控制实验\mohukongzhi\mohu.uvgui.nieshuxia
     文件       71345  2014-06-21 11:29  直流电机模糊控制实验\mohukongzhi\mohu.uvgui_nieshuxia.bak
     文件        5868  2014-06-21 21:02  直流电机模糊控制实验\mohukongzhi\mohu.uvopt
     文件       13584  2014-06-20 12:00  直流电机模糊控制实验\mohukongzhi\mohu.uvproj
     文件        6376  2013-06-24 10:27  直流电机模糊控制实验\mohukongzhi\STARTUP.A51
     文件       14063  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\STARTUP.LST
     文件         749  2014-06-20 11:00  直流电机模糊控制实验\mohukongzhi\STARTUP.OBJ
     文件       13429  2014-06-12 14:41  直流电机模糊控制实验\mohukongzhi\test
     文件        6357  2014-06-12 14:41  直流电机模糊控制实验\mohukongzhi\test.hex
     文件          54  2014-06-12 14:41  直流电机模糊控制实验\mohukongzhi\test.lnp
     文件       17394  2014-06-12 14:41  直流电机模糊控制实验\mohukongzhi\test.M51
     文件        3904  2014-06-12 14:46  直流电机模糊控制实验\mohukongzhi\test.plg
     文件       55351  2014-06-12 14:46  直流电机模糊控制实验\mohukongzhi\test.uvopt
     文件       13266  2014-04-08 19:35  直流电机模糊控制实验\mohukongzhi\test.uvproj
     文件      121246  2014-06-20 12:00  直流电机模糊控制实验\mohukongzhi\伺服电机角度PWM控制LCD.DSN
     文件         792  2014-07-14 16:14  直流电机模糊控制实验\mohukongzhi\伺服电机角度PWM控制LCD.PWI
     文件        2518  2012-06-09 09:27  直流电机模糊控制实验\mohukongzhi\基本型模糊控制器参考.c
     文件       67072  2013-05-15 15:29  直流电机模糊控制实验\mohukongzhi\实验一、直流电机控制.doc
     文件        5332  2014-06-20 10:35  直流电机模糊控制实验\mohukongzhi\电机角度PWM控制LCD.C
............此处省略2个文件信息

评论

共有 条评论