程序为模糊控制程序,基于8位单片机,为模糊控制算法程序,实现简单的模糊控制,经实践总结得出,当调整幅度较大时,会出现振荡,系统难以达到稳定,这就需要更高一级的算法控制调整,当调整幅度较小时,系统可以很快达到稳定。
以下为模糊算法源程序:
#include "reg52.h"
//------------------------------------------------------------------------------------
// 定义差距输入常量
#define GAP_ZERO 0x00
#define GAP_VSMALL 0x01
#define GAP_SMALL 0x02
#define GAP_MEDIUM 0x03
#define GAP_BIG 0x04
// 定义控制输出常量
#define TURN_ZERO 0x80
#define TURN_VSMALL 0x81
#define TURN_SMALL 0x82
#define TURN_MEDIUM 0x83
#define TURN_BIG 0x84
//-------------定义常量----------------------------------------------------------------
#define MU_MAX 0XFF //模糊度的最大值为0XFF代表面1
#define RULE_TOT 10 //规则数个数
#define MF_TOT 5 //成员函数的个数
#define IO_NUM 0x07
#define LABEL_NUM 0x70
#define DEFAULT_VALUE 0x00
//----------------定义数据库-----------------------------------------------------------
unsigned char code output_memf[MF_TOT]={0, 15, 35, 60, 102};// OUTPUT TURNING NUMBER:
//ZERO, VSMALL, SMALL, MEDIUM, BIG
unsigned char code input_memf[MF_TOT][4]={
// 输入功能函数以点斜式方式存储. 第一维成员函数标号第二维是点斜式数据
//距离功能函数
{ 0x00, 0x00, 0x00, 0x0d }, // VSLOW
{ 0x00, 0x0d, 0x14, 0x0d }, // SLOW
{ 0x1e, 0x0d, 0x32, 0x0d }, // MEDIUM
{ 0x3C, 0x0d, 0x50, 0x0d }, // F