delay(200);
write_byte(0xCC); // Skip ROM write_byte(0x44); // 发转换命令 ow_reset(); //总线复位
delay(1);
write_byte(0xCC); // 发Skip ROM命令 write_byte(0xBE); // 发读命令 temp_data[0]=read_byte(); //温度低8位 temp_data[1]=read_byte(); //温度高8位 temp=temp_data[1]; temp<<=8;
temp|=temp_data[0];
// return (temp); }
work_temp(){ //数据处理函数
uchar n=0,j,tem; tem=temp; if(tem>6348){ tem=65536-tem; }
n=1;
//负温度求补码,标志位置1
display[4]=tem&0x0f;//取小数部分的值
display[0]=ditab[display[4]]; //存入小数部分显示值 display[4]=tem>>4; display[3]=display[4]/100;
display[2]=display[4]0/10; //存入十位 display[1]=display[4]0; //存入个位 if(!display[3]){ display[3]=0x10; if(!display[2]) }
display[2]=10;
if(n==1){ display[3]=11;
} }
void scan(){ //显示函数 } main() {
ow_reset(); write_byte(0xCC); write_byte(0x44);
// 开机先转换一次 // Skip ROM // 发转换命令
}
while(1){ read_temp(); //读出18B20温度数据 work_temp(); //处理温度数据 scan(); }
四、实验步骤
1. 使用专业软件进行电路图的绘制
2. 在绘图完成后,根据绘制的电路图进行软件的设计和开发 3. 在专业软件中进行软件的仿真测试 4. 测试成功后开始设计并焊接电路板
5. 在完成的电路板上进行上电仿真操作,并针对不完善的地方进行修改和微调。
五、测量方法
首先我们在基本大气下,测得系统所在的环境的温度,并计入下来。接着我们把DS18B20放入热水里面,看看后级驱动电路会不会驱动风扇使温度传感器散热。当温度传感器恢复到室温时,我们在吧温度传感器放入冷水中,看看温度传感器会不会驱动加热管使温度传感器加热。
功能实现分析
该硬件电路在最后测试中实现了准确的温度采集、能够传给单片机发送采集到得参数,同时实现加热或制冷功能。基本实现了设计任务,并可根据外界运用需要更换和外扩其他功能传感器。
六、实验成果和总结
经过半个月设计,调试和实践,我们已经在焊接完成的电路板上成功仿真运行了显示模块和温度测试模块。仿真运行结果符合最初的实验设计要求。
在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。在论文中简单分析了单片机温度控制系统设计过程及实现方法。本系统的测温范围为25℃~
80℃,温度检测系统根据用户设定的温度范围完成一定范围的温度控制。
由于时间的原因在设计过程中不能很好的做出我们毕业设计所要达到的要求,对于以上的不足,我们只有通过以后的努力不断的提升。在设计中我们基本实现了温度的读取,在后级电路中由于个人能力有限,而不能实现后级驱动电路,在这方面我相信在以后的学习生涯中能得到解决,
最后我要感谢我的导师贾磊磊老师,在她的帮助下我们做好了基于DS18B20温度控制系统的课程设计,同时我也要感谢那些在我遇到难题时候给予我帮助的同学和好友。
七、参考文献
[1] 电源网.MOC3081芯片运用介绍, http://www.dianyuan.com [2] 伟纳电子. DS18B20单线数字温度传感器, www.willar.com [3] 单片机原理与应用 李精华主编
[4] 李华.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993,8,203-228.
[5]新概念51单片机C语言教程:入门、提高、开发、拓展全攻略: 北京:电子工
业出版社,2009.1
[6] 张靖武等.单片机原理、应用与PROTEUS仿真.北京:电子工业出版社,2008.8:13—17
[7] 宋文绪.传感器与检测技术[M].西安:西安电子科技大学出版社,2000 [8] 梁森等.自动检测与转换技术.北京:机械工业出版社,164—175