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

该博客介绍了如何使用C51语言在8位单片机上实现2输入1输出的模糊控制算法,以中央空调制冷控制作为应用实例,程序涉及输入偏差e和偏差变化率ec,输出为阀门开度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于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
#define E_PB 0x60
// 定义E输入常量
#define EC_NB 0x01
#define EC_NM 0x11
#define EC_NS 0x21
#define EC_Z 0x31
#define EC_PS 0x41
#define EC
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值