导航:首页 > 操作系统 > 基于单片机的恒温箱

基于单片机的恒温箱

发布时间:2023-06-30 01:39:37

Ⅰ 基于单片机的恒温控制系统

我刚帮别人做了一个,是按这个要求做的,你可以提出任意修改要求。
程序是汇编的,已经调试通过。

ProteUS仿真文件下载地址:
推荐:70电加热PRE.rar( http://ishare.iask.sina.com.cn/f/7033603.html )

; 设计基于单片计算机的温度控制器。用于控制电加热炉的温度。具体要求如下:
; 1. 温度连续可调,范围为30℃~150℃
; 2. 超调量σ%≤20%
; 3. 温度误差≤±0.5℃
; 4. 人-机对话方便
; 5. 控制算法采用PID或改进的PID或其他算法.

; (我用的是AT89C52的单片机:
; A.电加热炉经由温度传感器测量后,
; 通过V/F变换器的模数转换,
; 将电压或电流量转换为数字信号进入单片机内,
; 然后通过移位寄存器和译码器的信息转换,
; 通过显示驱动器来进行LED数码管的温度显示;
; B.单片机也通过双向可控硅来控制炉内的温度;
; C.用户通过按键来设置温度上限、下限值)

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

本设计要求:本温度控制系统为以单片机为核心,实现了对温度实时监测和控制,实现了控制的智能化。设计恒温箱温度控制系统,配有温度传感器,采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输,采用了PID控制技术,可以使温度保持在要求的一个恒定范围内,配有键盘,用于输入设定温度;配有数码管LED用来显示温度。
技术参数和设计任务:
1、利用单片机AT89C2051实现对温度的控制,实现保持恒温箱在最高温度为110℃。
2、可预置恒温箱温度,烘干过程恒温控制,温度控制误差小于±2℃。
3、预置时显示设定温度,恒温时显示实时温度,采用PID控制算法显示精确到0.1℃。
4、温度超出预置温度±5℃时发出声音报警。
5、对升、降温过程没有线性要求。
6、温度检测部分采用DS18B20数字温度传感器,无需数模拟∕数字转换,可直接与单片机进行数字传输
7、人机对话部分由键盘、显示和报警三部分组成,实现对温度的显示、报警。
需要的话联系用户名扣扣

Ⅲ 基于单片机的恒温箱设计可能遇到什么难点

关键在于PID恒温。
第一步要先做好PID子程序
第二部需要摸索参数调整的规律。

Ⅳ 基于单片机恒温箱控制系统

只有图,没有程序。从图来看,端口配置不好,单一功能要充分利用端口,原则上P0口作为段吗,这里,如果作为位码的话可以节省一级驱动,应为P0口的驱动能力较强,极力推鉴1051-4051(端口驱动20mA),降低硬件成本,减少软件编程量。这里有一个仿真器带的温度显示程序。你参考一下,如果加上控制,在程序合适位置加入判断语句如if(****,P1.x=?),再配置一个输出端口,就行了。程序如下,附仿真图。

#include<reg52.h>

#include<intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitDATA=P1^0;//DS18B20接入口

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

char,shi,ge;//定义变量

/*延时子函数*/

voiddelay(uintnum)

{

while(num--);

}

/*************DS18b20温度传感器函数*********************/

voidInit_DS18B20(void) //传感器初始化

{

ucharx=0;

DATA=1; //DQ复位

delay(10); //稍做延时

DATA=0; //单片机将DQ拉低

delay(80); //精确延时大于480us//450

DATA=1; //拉高总线

delay(20);

x=DATA; //稍做延时后如果x=0则初始化成功x=1则初始化失败

delay(30);

}

//读一个字节

ReadOneChar(void)

{

uchari=0;

uchardat=0;

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

{

DATA=0;//给脉冲信号

dat>>=1;

DATA=1;//给脉冲信号

if(DATA)

dat|=0x80;

delay(8);

}

return(dat);

}

//写一个字节

voidWriteOneChar(unsignedchardat)

{

uchari=0;

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

{

DATA=0;

DATA=dat&0x01;

delay(10);

DATA=1;

dat>>=1;

}

delay(8);

}

//读取温度

intReadTemperature(void)

{

uchara=0;

ucharb=0;

intt=0;

floattt=0;

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0x44);//启动温度转换

Init_DS18B20();

WriteOneChar(0xCC);//跳过读序号列号的操作

WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度

a=ReadOneChar(); //低位

b=ReadOneChar(); //高位

t=b;

t<<=8;

t=t|a; //得到温度值的各个位的值

t=t*0.0625; //得到实际的温度值

return(t);

}

/*显示子函数*/

voiddisplay(int,intshi,intge)

{

P0=0xff; //对数码管清零,防止串扰

P2=0xfb;

P0=table[]; //显示百位

delay(50); //一小段延时动态显示

P0=0xff; //对数码管清零,防止串扰

P2=0xf7;

P0=table[shi]; //显示十位

delay(50);

P0=0xff;

P2=0xef;

P0=table[ge]&0x7f; //显示个位

delay(100);

P0=0xff;

P2=0xdf;

P0=table[0]; //显示小数位,这里没有处理小数位,默认的为0

delay(50);

}

voidmain()

{

inttemp;

while(1)

{

temp=ReadTemperature(); //读温度

=temp/100; //获取百位

shi=temp%100/10; //获取十位

ge=temp%10; //获取个位

display(,shi,ge); //显示函数

}

}

阅读全文

与基于单片机的恒温箱相关的资料

热点内容
印度外卖小哥是程序员 浏览:411
绍兴程序员开发驻场流程 浏览:541
索纳塔8的压缩比 浏览:14
私有云主要服务器 浏览:939
为什么主题解压那么慢 浏览:860
怎么下载扫描二维码的手机app 浏览:727
云服务器创建私有镜像的时候一定要关机吗 浏览:115
php开发学习门户 浏览:385
传奇游戏服务器怎么设置 浏览:823
敲击东西解压完整版 浏览:401
刺络学pdf 浏览:868
怎么给手机文件夹设置封面 浏览:931
汽车保养app怎么用 浏览:62
线程javalock 浏览:897
c语言编译运行结果查看器 浏览:112
androidpx转dip 浏览:842
西藏编译局是什么级别 浏览:1001
php提交代码 浏览:597
如何用命令查找并删除代码块 浏览:584
python初学路线图 浏览:536