怎样用PID算法对恒温箱的温度进行控制,求相关的51单片机汇编程序

怎样用PID算法对恒温箱的温度进行控制,求相关的51单片机汇编程序,第1张

本设计要求:本温度控制系统为以单片机为核心,实现了对温度实时监测和控制,实现了控制的智能化。设计恒温箱温度控制系统,配有温度传感器,采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输,采用了PID控制技术,可以使温度保持在要求的一个恒定范围内,配有键盘,用于输入设定温度配有数码管LED用来显示温度。

技术参数和设计任务:

1、利用单片机AT89C2051实现对温度的控制,实现保持恒温箱在最高温度为110℃。

2、可预置恒温箱温度,烘干过程恒温控制,温度控制误差小于±2℃。

3、预置时显示设定温度,恒温时显示实时温度,采用PID控制算法显示精确到0.1℃。

4、温度超出预置温度±5℃时发出声音报警。

5、对升、降温过程没有线性要求。

6、温度检测部分采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输

7、人机对话部分由键盘、显示和报警三部分组成,实现对温度的显示、报警。

需要的话联系用户名扣扣

void Init_18B20(void)//初始化18B20

{

unsigned char x = 0

DQ = 1

Delay(10) //稍做延时

DQ = 0

Delay(80)//延时480us

DQ = 1

Delay(10)

x = DQ

Delay(20)

}

/*************************************************/

unsigned char ReadOneChar(void)//读单字节

{

unsigned char i = 0

unsigned char dat = 0

for (i = 8i >0i--)

{

DQ = 0;

dat >>= 1

DQ = 1

if(DQ)

dat |= 0x80

Delay(15)

}

return (dat)

}

/*************************************************/

void WriteOneChar(unsigned char dat)//写单字节

{

unsigned char i = 0

for (i = 8i >0i--)

{

DQ = 0

DQ = dat&0x01

Delay(5)

DQ = 1

dat>>=1

}

}

///////////////////////////////////////////////////

uint Readtemp(void)//读取并显示温度

{

uint a = 0, b = 0, c = 0, t = 0

float tt = 0

Init_18B20()

Write OneChar(0xCC)

Write OneChar(0x44)// 数据转换

Init_18B20()

Write OneChar(0xCC)

WriteOneChar(0xBE)//读取温度寄存器

a = Raed OneChar()

b = Raed OneChar()

t = b

t <<= 8

t = t | a

tt = t /16

t = tt * 10 + 0.5//放大10倍输出并四舍五入

t=t/10

return t

}

这是我做设计时用的18B20检测程序,你需要修改下引脚定义,同时这个只能出2位,你改下数据处理,显示程序没写,仅供参考


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11539454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存