多路温度采集系统

上传人:新** 文档编号:486170112 上传时间:2023-09-10 格式:DOC 页数:13 大小:100.50KB
返回 下载 相关 举报
多路温度采集系统_第1页
第1页 / 共13页
多路温度采集系统_第2页
第2页 / 共13页
多路温度采集系统_第3页
第3页 / 共13页
多路温度采集系统_第4页
第4页 / 共13页
多路温度采集系统_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《多路温度采集系统》由会员分享,可在线阅读,更多相关《多路温度采集系统(13页珍藏版)》请在金锄头文库上搜索。

1、 小型多路温控采集系统设计 推荐精选一 系统说明本系统采用51单片机作为控制器,控制温度采集及显示。温度传感器选用DS18B20,其单总线的通信方式可以减少系统的线路连接。DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路。内温范围55125,在-10+85时精度为0.5可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。同时本系统选用LCD1602作为显示器件,能够同时显示16x02即32个字符(16

2、列2行)。其显示清晰,并可以显示阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,满足了系统要求。二系统电路图推荐精选三、程序流程图推荐精选四、程序解读推荐精选注:程序分两部分。可以先用程序二读出各个器件的序列号,再将序列号填入程序一的SN48数组中,若要加入更多的器件可以扩大数组,并在程序中增加读显的循环次数。1.程序一:已知各个器件序列号读取温度 #include#define uchar unsigned char#define uint unsigned intuchar TMP4; /读取后的4个温度值uchar SN48=0x28,0x44,0x30,0xc5,0xb8,0x

3、00,0x00,0x12,0x28,0x15,0x30,0xc5,0xb8,0x00,0x00,0x0b,0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e,0x28,0x05,0x30,0xc5,0xb8,0x00,0x00,0x50;/4个器件的序列号,先读出单个序列号后填上才可以读取温度uint f4; /结果是否为负温,“0”为正温,“1”为负温。 sbit DQ=P37;/ds18b20与单片机连接口sbit RS=P30;sbit RW=P31;sbit EN=P32;unsigned char code str0=temperature:U ;unsi

4、gned char code str5= ;uchar data disdata5;uint tvalue;/温度值uchar tflag4;/温度正负标志/*LCD1602程序*/void delay1ms(unsigned int ms)/延时1毫秒(不够精确的)unsigned int i,j; for(i=0;ims;i+) for(j=0;j0;i-) DQ = 0; /给脉冲信号 dat=1; DQ = 1; /给脉冲信号 if(DQ) dat|=0x80; delay_18B20(10); return(dat);void ds1820wr(uchar wdata)/*写数据*/

5、unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata=1; 推荐精选/*发送ds1820 开始转换/*/tmstart (void) / /ds1820rst(); /复位 /delay1ms(1); /延时 /ds1820wr (0xcc); /跳过序列号命令,对所有器件有效 /ds1820wr (0x44); /发转换命令 44H, / /*/read_temp()/*读取温度值并转换*/ /uchar i,j; /uchar a,b; /for(j=0;j4

6、;j+) / /ds1820rst(); /复位 /delay1ms(1); /延时 /ds1820wr(0x55); /发送ROM匹配命令 /for(i=0;i8;i+) / /ds1820wr(SNji); /发送64位序列号 / /ds1820wr(0xbe);/*读取温度*/ a = ds1820rd (); /连续读取两位温度 /b = ds1820rd (); /tvalue=b;tvalue=8;tvalue=tvalue|a;if(tvalue0xf800) tflagj=0; else tvalue=tvalue+1; tflagj=1; fj=tvalue*(0.625);

7、/温度值扩大10倍,精确到1位小数/return(f4);推荐精选/*/void ds1820disp()/温度值显示 uchar flagdat,i; for(i=0;i4;i+) tvalue=fi ; disdata0=tvalue/1000+0x30;/百位数 disdata1=tvalue%1000/100+0x30;/十位数 disdata2=tvalue%100/10+0x30;/个位数 disdata3=tvalue%10/1+0x30;/小数位 if(tflagi=0) flagdat=0x20;/正温度不显示符号 else flagdat=0x2d;/负温度显示负号:- i

8、f(disdata0=0x30) disdata0=0x20;/如果百位为0,不显示 if(disdata1=0x30) disdata1=0x20;/如果百位为0,十位为0也不显示 if(i=0)wr_com(0x8d); /第一个传感器在LCD第一行第14字符显示“1”wr_dat(1);if(i=1)wr_com(0x8d);/第二个传感器在LCD第一行第14字符显示“2”wr_dat(2);if(i=2)wr_com(0x8d); /第三个传感器在LCD第一行第14字符显示“3”wr_dat(3);if(i=3)wr_com(0x8d); /第四个传感器在LCD第一行第14字符显示“4”wr_dat(4); wr_com(0xc0); /在LCD第二行第1个字符显示温度正负号 wr_dat(flagdat); /显示符号位 wr_com(0xc1); /在LCD第二行第2个字符显示百位温度值 wr_dat(disdata0);/显示百位 wr_com(0xc2); /在LCD第二行第3个字

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

当前位置:首页 > 资格认证/考试 > 自考

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