资源描述:
《多路温度采集系统.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、小型多路温控采集系统设计一.系统说明本系统采用51单片机作为控制器,控制温度采集及显示。温度传感器选用DS18B20,其单总线的通信方式可以减少系统的线路连接。DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路。内温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃
2、,可实现高精度测温。同时本系统选用LCD1602作为显示器件,能够同时显示16x02即32个字符(16列2行)。其显示清晰,并可以显示阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,满足了系统要求。二.系统电路图三、程序流程图四、程序解读注:程序分两部分。可以先用程序二读出各个器件的序列号,再将序列号填入程序一的SN[4][8]数组中,若要加入更多的器件可以扩大数组,并在程序中增加读显的循环次数。1.程序一:已知各个器件序列号读取温度#include#defineucharunsig
3、nedchar#defineuintunsignedintucharTMP[4];//读取后的4个温度值ucharSN[4][8]={{0x28,0x44,0x30,0xc5,0xb8,0x00,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个器件的序列号,先读出单个序列号后填
4、上才可以读取温度uintf[4];//结果是否为负温,“0”为正温,“1”为负温。sbitDQ=P3^7;//ds18b20与单片机连接口sbitRS=P3^0;sbitRW=P3^1;sbitEN=P3^2;unsignedcharcodestr0[]={"temperature:U"};unsignedcharcodestr5[]={""};uchardatadisdata[5];uinttvalue;//温度值uchartflag[4];//温度正负标志/************************
5、*LCD1602程序*****************************************************************/voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的){unsignedinti,j;for(i=0;i6、elay1ms(1);EN=0;}voidwr_dat(unsignedchardat)//写数据//{delay1ms(1);;RS=1;RW=0;EN=0;P2=dat;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidlcd_init()//初始化设置//{delay1ms(15);wr_com(0x38);delay1ms(5);wr_com(0x08);delay1ms(5);wr_com(0x01);delay1ms(5);wr_com(0x06);delay1ms(5
7、);wr_com(0x0c);delay1ms(5);}voiddisplay(unsignedchar*p)//显示//{while(*p!=' '){wr_dat(*p);p++;delay1ms(1);}}init_play()//初始化显示{lcd_init();wr_com(0x80);display(str0);wr_com(0xc0);display(str5);}/****************************************************************
8、*******************************************DS18B20程序***************************************/voiddelay_18B20(unsignedinti)//延时1微秒{while(i--);}voidds1820rst()/*ds1820复位*/{unsignedcharx=0;DQ=1;//DQ复位delay