温度传感器(单片机-).doc

上传人:桔**** 文档编号:543651228 上传时间:2024-01-22 格式:DOC 页数:5 大小:291.50KB
返回 下载 相关 举报
温度传感器(单片机-).doc_第1页
第1页 / 共5页
温度传感器(单片机-).doc_第2页
第2页 / 共5页
温度传感器(单片机-).doc_第3页
第3页 / 共5页
温度传感器(单片机-).doc_第4页
第4页 / 共5页
温度传感器(单片机-).doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《温度传感器(单片机-).doc》由会员分享,可在线阅读,更多相关《温度传感器(单片机-).doc(5页珍藏版)》请在金锄头文库上搜索。

1、温度传感器一、 实验目的通过对基于单片机的温度传感器的制作,进一步加深了实践动手设计能力和对单片机知识的巩固,从而让自己为以后的动手制作做好铺垫。二、 实验材料发光二级管一个、三极管S8850两个、温度传感器18B20三极管一个、插脚若干、12兆晶振一个、USB接口一个、开关一个、30皮发电容两个、电容CD110一个、89C52单片机一个插槽一个、2位数码显示管一个、九脚排阻A103J一个、470k电阻两个、120电阻一个、1000电阻一个、PCB板一块。三、 实验原理接触式温度传感器的检测部分与被测对象有良好的接触,又称温度计。温度计通过传导或对流达到热平衡,从而使温度计的示值能直接表示被测

2、对象的温度。一般测量精度较高。在一定的测温范围内,温度计也可测量物体内部的温度分布。但对于运动体、小目标或热容量很小的对象则会产生较大的测量误差。原理电路图如下:四、实验总结通过本次实验,了解自己在动手能力上的不足和对单片机知识的缺乏,让自己更清楚自己需要认真多家努力去弥补。同时也要加强与同学的交流,让自己有更大更快的进步。五、程序编码/18B20单线温度检测的应用样例程序#include#include#include#define uchar unsigned char#define uint unsigned int;/*/ /*系统管脚定义说明 DS18B20数据口为P37 数码管数据

3、口为 */sbit DQ=P37;/ds18b20 端口sfr dataled=0x80;/显示数据端口/*/ uchar temp;uchar flag_get,count,num,minute,second;uchar code tab=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,/*9*/;/数码管段码表共阳uchar a,b;/*/void delay1(uchar MS);unsigned char ReadTemperature(void);void Init_DS18B20(void);unsigned char ReadO

4、neChar(void);void WriteOneChar(unsigned char dat);void delay(unsigned int i);/*/main()TMOD|=0x01;/定时器设置TH0=0xef;TL0=0xf0;IE=0x82;TR0=1;/启动定时器P2=0x00;count=0;while(1) a=tabtemp/10; /十位温度 b=tabtemp%10; /个位温度 if(flag_get=1) /定时读取当前温度 temp=ReadTemperature()-1;/*(括号后面的数字为温度校准,根据自己系统的误差,自己调节温度误差即可.现在默认-1)

5、*/ flag_get=0; void tim(void) interrupt 1 using 1/中断,用于数码管扫描和温度检测间隔TH0=0xef;/定时器重装值TL0=0xf0;num+;if (num=50) num=0; flag_get=1;/标志位有效 second+; if(second=60) second=0; minute+; count+;if(count=1) P2=0xbf; dataled=a;/数码管扫描if(count=2) P2=0x7f; dataled=b;count=0;/*if(count=3) P1=2; dataled=str2; count=0

6、;*/*/void delay(unsigned int i)/延时函数 while(i-);/*/18b20初始化函数void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay(8); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us DQ = 1; /拉高总线 delay(10); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(5);/读一个字节unsigned char ReadOneChar(void)unsigned char i=0

7、;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(5); return(dat);/写一个字节void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; delay(5);/读取温度unsigned char ReadTemperature(void)unsig

8、ned char a=0;unsigned char b=0;unsigned char t=0;/float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换delay(200);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();b4;t=b;return(t);六、 参考文献单片机原理与应用第2版 编著 赵德安 机械工业出版社单片机原理及应用 编著 韩俊峰、海涛、陈文辉 机械工业出版社

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号