资源简介
基于STC系列单片机完成,温度传感器利用的是负温度系数热敏电阻,通过PID算法进行温度控制,输出为PWM波,利用三位数码管进行温度显示,包括三个按键,设定键,温度增加和温度减小。
代码片段和文件信息
#include
#include
#include
#include “string.h“
#include “Stdio.h“
#include “absacc.h“
#define uchar unsigned char
#define uint unsigned int
uint h_val;
uint l_val;
float temp;
float temperature;
unsigned int rout; // PID Response (Output)
unsigned int rin; // PID Feedback (Input)
unsigned int temper;
unsigned int cool_count=0;
unsigned int set_temper;
unsigned int set_temperl;
unsigned int set_temperh;
uint warm_num=0;
uint cool_num=0;
char control=0;
sfr INT_CLKO = 0x8f;
//看门狗
sfr WDT_CONTR=0xC1;
//declear SFR associated with the IAP
sfr IAP_DATA=0xC2;
sfr IAP_ADDRH=0xC3;
sfr IAP_ADDRL=0xC4;
sfr IAP_CMD=0xC5;
sfr IAP_TRIG=0xC6;
sfr IAP_CONTR=0xC7;
//declear EEPROM command
#define CMD_IDLE 0
#define CMD_READ 1
#define CMD_PROGRAM 2
#define CMD_ERASE 3
//define EEPROM operation const for IAP_CONTR
#define ENABLE_IAP 0x83
//Start address for EEPROM
#define IAP_ADDRESS 0x000
// DISABLE EEPROM FUNCTION
void IapIdle()
{
IAP_CONTR=0;
IAP_CMD=0;
IAP_TRIG=0;
IAP_ADDRH=0x80;
IAP_ADDRL=0;
}
//PROGRAM ONE BYTE TO EEPROM AREA
void IapProgramByte(uint addruchar dat)
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_PROGRAM;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_DATA=dat;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;
_nop_();
IapIdle();
}
//ERASE ONE SECTOR AREA
void IapEraseSector(uint addr)
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_ERASE;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;
_nop_();
IapIdle();
}
//READ one BYTE FROM EEPROM AREA
uchar IapReadByte(uint addr)
{
uchar dat;
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_READ;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;
_nop_();
dat=IAP_DATA;
IapIdle();
return dat;
}
//
//定义数码管显示
sbit LCD_dig1 = P2^0;
sbit LCD_dig2 = P2^2;
sbit LCD_dig3 = P2^1;
sbit DS = P3^7;
sbit ST = P3^4;
sbit SH = P3^5;
sbit cool = P2^5;
sbit warm = P2^6;
sbit led = P2^7;
sbit key0=P3^2;
sbit key1=P3^3;
sbit key2=P3^6;
struct PID {
unsigned int Proportion; // 比例常数 Proportional Const
unsigned int Integral; // 积分常数 Integral Const
unsigned int Derivative; // 微分常数 Derivative Const
unsigned int LastError; // Error[-1]
unsigned int PrevError; // Error[-2]
};
xdata struct PID spid; // PID Control Structure
//AD供电后延时
void YS14520us(void)
{
unsigned char abc;
for(c=2;c>0;c--)
for(b=238;b>0;b--)
for(a=90;a>0;a--) ;
}
/*************************延时**************************************/
void delay1(int ms)
{
unsigned char y;
while(ms--)
{
for(y = 0; y<250; y++)
{
_nop_();
_nop_();
_nop_();
}
}
}
//数码管表
idata uchar LCD_table[]={0x030x9f0x250x0d0x990x490x410x1f0x010x090x020x9e0x240x0c0x980x480x400x1e0x000x08} ;
相关资源
- RapidIO 2.2 Specification
- RapidIO_Rev_2.2_Specification
- 基于DSP的大功率开关电源的设计方案
- 基于DSP的大功率开关电源设计
- 基于ARM7 PWM定时器的图像传感器时序信
- BLDC电机PID算法
- 电力电子技术(第4版)_王兆安_带目
- 基于FAN6754A的PWM反激式开关电源的设计
- 采用双闭环控制提高PWM的电源纹波抑
- 基于双闭环模糊PID控制器的开关电源
- pid 模拟测试软件
- FPGA实现单极性SPWM调制
- LCL滤波器在三相PWM整流器中的应用
- 基于RBF神经网络在线辨识的永磁同步
- CPS―SPWM调制方法在H桥多电平变流器中
- 基于FPGA的多电平载波移相SPWM方法实现
- 正弦波逆变器正弦波逆变器的工作原
- 基于DSP的SVPWM变频调速系统
- 采用单片机SPWM的控制应急电源逆变电
- PWM脉宽调制的原理
- 说说PWM脉宽调制原理
-
Lipase-catalyzed synthesis and the lipid me
- 中微子双β衰变的CUPID-Mo实验:性能
- 以单片机AT89S52、光电脉宽调制器芯片
- 温度控制直流电机转速
- STM32F103系列PWM输出应用之纸短情长音
- 基于FPGA的SVPWM实现方法
- 智能车模糊控制
- LabVIEW实现Fuzzy_PID的补充资源
- pwm控制驱动直流电机 可调速 可调转的
评论
共有 条评论