技术参数和设计任务:
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位,你改下数据处理,显示程序没写,仅供参考
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)