两输入单输出模糊控制代码C51

基于8位单片机的模糊控制算法程序,实现2输入1输出模糊控制,输入为偏差e,偏差变化率ec,输出为阀门开度,此程序以中央空调制冷控制为例。

以下为模糊算法源程序:

/********************************************************************************************:
编写说明:模糊控制,双输入,单输出,偏差e,偏差变化率ec
编写时间:2015.8.27
作    者:QQ351150613
程序问题:调试结束,与matlab7.0仿真对比,精度在0.05之间
*********************************************************************************************/
#include <reg52.h>               //头文件
//-------------------------------------宏定义------------------------------------------------
#define OUTPUT_TOT 7
#define MU_MAX 0xFF
#define RULE_TOT 147
#define IO_NUM 0x07
#define LABEL_NUM 0x70
#define DEFAULT_VALUE 0x0
//---------------------------------------变量定义--------------------------------------------
float fuzzy_in[2]={0.0,0.0},  //偏差e(-10.0,10.0),偏差ec(-4.0,4.0)
fuzzy_r;					  //实际输出增量-1.0,1.0
unsigned char input[2];	   //偏差e,ec量化为0-255的值
unsigned char bdata clause_val; // 保持当前规则
unsigned char outputs[OUTPUT_TOT],fuzzy_out;
sbit operator = clause_val^3; // 表示所使用的模糊操作是AND=0;还是0R=1
sbit clause_type = clause_val^7; // 表示分支是条件分支=0;还是结果分支=1
unsigned char code output_memf[OUTPUT_TOT]={ 9,41,84,127,169,212,245};


// 定义E输入常量
#define E_NB 0x00
#define E_NM 0x10
#define E_NS 0x20
#define E_Z 0x30
#define E_PS 0x40
#define E_PM 0x50
#de
  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值