资源简介
自己的实验程序和工程都在里面,分享给用到的小伙伴。
代码片段和文件信息
#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个文件信息
- 上一篇:易玩印象CMS2
- 下一篇:animations.rar
相关资源
- PROTUSE仿真自动避障or寻迹小车
- 直流电机PWM闭环调速系统
- 基于LQR的二级倒立摆模糊控制
- 一级倒立摆模糊控制
- 用dsPIC30F3010实现无刷直流电机的无传
- 直流电机PWM调速系统的设计与仿真
- 双容水箱实验报告(采用PID+模糊控制
- 基于STM32的无位置传感器无刷直流电机
- 基于IR2136的无刷直流电机驱动电路的
- 自主水下航行器模糊自校正航迹控制
- SIRM模糊算法控制一级直线倒立摆
- STM32直流电机控制程序
- 毕业设计__PID控制直流电机
- 51单片机直流电机PID闭环调速
- 永磁无刷直流电机控制系统
- 模糊控制算法C程序源码
- 无刷直流电机无位置传感器控制代码
- CSTR模糊PID控制
- 基于模糊控制和PID结合的倒立摆仿真
- 单片机驱动直流电机 proteus仿真+程序
- STM32F103单片机+ULN2003驱动直流电机
- dspic30f4011闭环控制无刷直流电机程序
- 基于51 单片机直流电机pwm控制
- 直流电机的PWM控制 基于VHDL语言,详细
- 基于DSP2812的无刷直流电机伺服控制程
- 模糊自整定PID控制算法
- 基于s51单片机的直流电机测速系统
- 模糊控制技术在双容水箱液位中的应
- labview模糊控制
- 基于模糊控制的PID参数优化
评论
共有 条评论