⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tempctrl.h

📁 开发的一个温控仪完整代码
💻 H
字号:
#ifndef __TEMPCTRL_H__
#define __TEMPCTRL_H__
//korfi
//13/09/2006

//#include <reg51.h>
#include <math.h>
#include <REG52.H>
#include <intrins.h>
////////////////////////////////////////////
typedef unsigned char uchar;
typedef unsigned int  uint;
////////////////////////////////////////////
//#define __USING_FUZZYPID__	1
//#define __USING_BB_FZ_PID__	1
//因程序空间问题,两者只能选其一

////////////////////////////////////////////
#define DPA() LedBuf[2]+=128//在上面加小数点
#define DPB() LedBuf[6]+=128//在下面加小数点
#define MieDown()	LedBuf[6]=0xff;\
					LedBuf[7]=0xff

#define ALM_ON()	KeySta|=0x10
#define ALM_OFF()	KeySta&=0xef
#define R_ON()		KeySta|=0x20
#define R_OFF()		KeySta&=0xdf
#define L_ON()		KeySta|=0x40
#define L_OFF()		KeySta&=0xBF
#define MAN_ON()	KeySta|=0x80
#define MAN_OFF()	KeySta&=0x7f

#define CH(n)		{P1&=0x1f;P1|=Channal[n];}


#define PosOutput(){P_OUT1=1;P_OUT2=0;}
#define NegOutput(){P_OUT1=0;P_OUT2=1;}
#define OffOutput(){P_OUT1=1;P_OUT2=1;}
////////////////////////////////////////////
extern unsigned char idata LedBuf[8];//8个显存空间
extern unsigned char AdmitFlag;//1允许测量更新上排显示

extern unsigned char idata LedCnt;
extern unsigned char idata LedBitCnt;//LedCnt的位表示

extern unsigned char idata MeterSta;//标记仪器状态
	#define STA_AUTO	0
	#define STA_Sr		1
	#define STA_Sv		2
	#define STA_SH		3
	#define STA_SL		4
	#define STA_oH		5
	#define STA_oL		6
	#define STA_P		7
	#define STA_I		8
	#define STA_d		9
	#define STA_db		10
	#define STA_Fd		11
	#define STA_FF		12//上述循环,功能键
	#define STA_MAN		13//
extern unsigned char idata KeySta;
extern bit FunFlag;//0未按下
extern bit ManFlag;

extern bit PassWordLock;

extern unsigned int idata DataTemp;//设置某一项时的临时数据存放 
extern int idata InputTemp;//调整数据时的某项临时存放
extern unsigned int idata InputLimit;//各参数输入上限
//extern int idata InputTimeCnt;//
extern unsigned char UpCnt;
extern unsigned char DownCnt;
extern unsigned char FunCnt;
extern unsigned char idata InputCnt;//0尚未输入第一次
extern unsigned char idata InputSpeed;
extern unsigned char DlySecond;

extern unsigned int idata SampleTimeCnt;//
extern bit SampleFlag;
extern unsigned char idata OverCnt;//溢出
extern unsigned char idata TpOverCnt;
extern unsigned char idata TpTH0;
extern unsigned char idata TpTL0;

extern unsigned int idata Temperature;//温度×10
extern unsigned int idata Setted_Temperature;

extern unsigned int idata LastTemperature;
extern unsigned int idata FastLastTemperature;
extern unsigned int idata PreTemperature;

extern unsigned char idata CtrlSta;
	#define NR_FAST		1
	#define NR_WAITING	2
	#define NR_FUZZY	3
	#define RL_PID		4
	#define NL_FAST		5
	#define NL_WAITING	6
	#define NL_FUZZY	7


extern unsigned char IdTimeCnt;
extern char CloseOpenTimeCnt;
extern unsigned char idata WaitingCnt;

extern int SpareOutput;
extern int TwinOutput;
extern int MinOutputLimit;

extern int idata Error;
//extern int idata LastError;
extern int idata dError;
//extern int idata PreError;
extern int Output;

extern float idata fK1;
extern float idata fK2;
extern float idata fK3;
//extern float idata fK4;

extern int idata FrZero;//0°C频率漂移

extern unsigned char code LedCode[26];
	#define C_S	10//字符预定义
	#define C_r	11
	#define C_v	12
	#define C_H	13
	#define C_L	14
	#define C_o	15
	#define C_P	16
	#define C_I	17
	#define C_d	18
	#define C_b	19
	#define C_F	20
	#define C_Fuhao	21
	#define C_Mie	22
	#define C_A		23
	#define C_c		24
	#define C_E		25


//公共临时变量
extern unsigned int idata k0,k1,k2,k3;
extern float idata x1,x2,x3;
extern unsigned char idata i;
extern int idata ikt;		   

extern unsigned int idata FFSta;
extern unsigned int idata UpperLimit;
extern unsigned int idata LowerLimit;
extern int idata DeathZone;

extern int idata LineA;//FF1
extern int idata LineB;//FF2
extern int idata LineC;//FF3
extern int idata LineD;


//
extern unsigned char code Channel[8];
//extern unsigned int code Pt100_R2T[80];
extern unsigned int code Fr2Temp[46];
//extern unsigned int code Fr[6];
extern int code FuzzyRule[5][3];
//////////////////////////////
//功能函数
extern void Monitor(void);//按键及显示
extern void SamplingProcess(void);//一次采样处理
///93c46
extern unsigned int Read(unsigned char address); //地址范围:0~63
extern void Write(unsigned char address,unsigned int dat); //地址范围:0~63
extern void WriteByte(unsigned char address,unsigned char dat); //地址范围:0~127
extern unsigned char ReadByte(unsigned char address); //地址范围:0~127 

//助记
extern void Wait(unsigned char x);
extern void LedH(unsigned int dat);//无小数点,根据需要添加(+128)
extern void LedL(unsigned int dat);
extern void Led(unsigned int dat);
extern void ShowInputTemp(void);
extern float FloatDiv(float xt1,float xt2);
extern void UpdatePid(void);
extern void UpdateFrZero(void);

///////////////////////////////
//EEPROM地址表:0x00~0x3f,共64个16bit
//Read()及Write()地址表
#define EP_FT 0x00//第一次标记
#define EP_Sr 0x01//密码
#define EP_Sv 0x02//给定值
#define EP_SH 0x03//上限
#define EP_SL 0x04//下限
#define EP_oH 0x05//开度上
#define EP_oL 0x06//开度下
#define EP_P  0x07//P
#define EP_I  0x08//I
#define EP_d  0x09//d
#define EP_db 0x0a//闸位死区
#define EP_Fd 0x0b//分度号

#define EP_FF1 0x0c
#define EP_FF2 0x0d
#define EP_FF3 0x0e
#define EP_FF4 0x0f

#define EP_FrMax	0x12
#define EP_FrMin	0x13//
#define EP_DeathZone	0x14//


//////////////////////////////
//接口定义
//93c46
sbit P_CS = P1^3;
sbit P_CLK = P1^0;
sbit P_DI = P1^1;
sbit P_DO = P1^2;//弱上拉,则器件高阻是为1,0则为写忙
//命令定义
	#define CMD_READ	0x80
	#define CMD_WRITE	0x40
	#define CMD_ERASE	0xc0
	#define CMD_EWEN	0x30
	#define CMD_EWDS	0x00
	
	#define CMD_ERAL	0x20
	#define CMD_WRAL	0x10//不准备使用这条指令

sbit P_KEY=P1^4;     //按键输入脚,korfi

sbit P2_0=P2^0;     //键盘接口  FUN
sbit P2_1=P2^1;     //INC
sbit P2_2=P2^2;     //DEC
sbit P2_3=P2^3;     //M/A

sbit P_ALM=P2^4;     //指示灯输出 ALM
sbit P_R=P2^5;   	  //L
sbit P_L=P2^6;    	 //R
sbit P_MAN=P2^7;     //MAN

sbit P_OUT1=P3^3;     //OUT1正向
sbit P_OUT2=P3^5;     //OUT2
sbit ALM_OUT=P3^2;	  //警报接通

sbit P_IN=P3^4;     //数据输入口,T0

//#define N_state 20
/////////////////////////////////


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -