您好,欢迎访问三七文档
1课题:八路温度采集仪实习报告日期:2015.8.32目录:一、实验目的................................3二、实验内容................................3三、实验步骤与结果..........................3四、实验存在的问题..........................14五、总结....................................14六、附录(上位机、下位机)..................143一、实验目的:1、DXP与Labview软件的运用;2、单片机编程的掌握;3硬件的焊接与调试;4、熟练运用和掌握原理图设计、PCB板的制作、元器件焊接与调试、虚拟仪器的使用。二、实验内容:运用单片机搭建一个小系统。此系统可以同时采集8路温度信息(由于硬件条件的限制,没人只有4个温度传感器,所以最后只能为四路温度采集),而此信息来自与8个DS18B20,同时循环显示于数码管。然后后期运用虚拟仪器Labview采集单片机所发送的温度信息进行处理,并形成完整的虚拟仪器。三、实验步骤与结果:1、原理图的设计采集系统主要元器件介绍:STC89C52RC:STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选.其I/O口、中断的运用可以参照89C51的任何类型。DS18B20:DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有4线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。特点:(1)、只要求一个端口即可实现通信。(2)、在DS18B20中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在-55。C到+125。C之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。使用方法:由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。以下为原理图设计过程:1、总的电路图结构:52、USB串口模块3、单片机系统64、七段数码管显示75、DS18B202、PCB板子的制作与3D效果图:8最后的实物图:93、51单片机编程:1、DS18B20的时序2、串口的打开、收发。3、显示模块以下为各个模块代码:1、voidreset(void)//reset{uinti;DS&=!DQSUM[count];//0i=103;while(i0)i--;DS|=DQSUM[count];//1i=4;while(i0)i--;}bitreadbit(void)//readabit{uinti;bitdat;DS&=!DQSUM[count];i++;DS|=DQSUM[count];i++;i++;switch(count){case0:dat=DQ0;break;case1:dat=DQ1;break;case2:dat=DQ2;break;case3:dat=DQ3;break;}i=8;while(i0)i--;return(dat);}ucharread(void)//readaByte{uchari,j,dat;dat=0;for(i=1;i=8;i++)10{j=readbit();dat=(j7)|(dat1);}return(dat);}voidwrite(uchardat){uinti;ucharj;bittestb;for(j=1;j=8;j++){testb=dat&0x01;dat=dat1;if(testb)//write1{DS&=!DQSUM[count];i++;i++;DS|=DQSUM[count];i=8;while(i0)i--;}else//write0{DS&=!DQSUM[count];i=8;while(i0)i--;DS|=DQSUM[count];i++;i++;}}}voidtempchange(void)//DS18B20的数据转换{reset();delay(1);write(0xcc);write(0x44);delay(80);}uintget_temp()//数据读取与处理{11uchara,b;reset();delay(1);write(0xcc);write(0xbe);a=read();//Lb=read();//Htemp=b;temp=8;temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;returntemp;}voidtemp_turn(uintvalue){display[2]=value/100;display[1]=(value%100)/10;display[0]=value%10;}2、voidinit_com(void)//中断初始化{TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xf3;TL1=0xf3;TR1=1;}voidcomm(char*parr)//串口数据发送{do{SBUF=*parr++;while(!TI);TI=0;}while(*parr);}3、voiddelay(uintz)//10ms12{uintx,y;for(x=z;x0;x--)for(y=125;y0;y--);}voidscan(){chark;for(k=0;k4;k++)//4位LED扫描控制{Disdata=dis_7[display[k]];//数据显示if(k==1){DIN=0;}//小数点显示discan=scan_con[k];//位选delay(3);}}4、Labview模块VISA串口配置数据处理、温度显示:13四路可切换模块:生成表格、记录数据:效果图:1415四、实验存在的问题1、PCB板子虽然都已绘制完成,但是对PCB规则检测没有进行。2、单片机对于DS18B20传感器的第一个有时完全接收不到数据(应该时序没有严格按照规则)。3、LABVIEW的单独模块的内容还不够多。五、总结:通过本次小学期的实习基本掌握DXP与LABVIEW的使用,同时对PCB板的绘制有了进一步的提高。对单片机小系统的架构有了初步的认识。但是对于单片机系统和LABVIEW的学习还是太少,所以在小学期之后还有巩固强化本次课题的内容。六、附录:上位机:16下位机:#includereg52.h#includestdio.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedint#defineDSP1#defineDisdataP0#definediscanP2sbitDQ0=P1^0;sbitDQ1=P1^1;sbitDQ2=P1^2;sbitDQ3=P1^3;//温度传感器的4个数据端口sbitDIN=P0^7;uintcount;uinttemp;floatf_temp;unsignedcharDQSUM[4]={0x01,0x02,0x04,0x08};//温度传感器选择,依次对应传感器的0-5ucharcodedis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xff,0xbf};//0123456789不亮-ucharcodescan_con[4]={0x70,0xb0,0xd0,0xe0};//列扫描控制字uchardatadisplay[5]={0x00,0x00,0x00};//显示单元数据,共4个数据和一个运算暂用voiddelay(uintz)//10ms{uintx,y;17for(x=z;x0;x--)for(y=125;y0;y--);}voidscan(){chark;for(k=0;k4;k++)//4位LED扫描控制{Disdata=dis_7[display[k]];//数据显示if(k==1){DIN=0;}//小数点显示discan=scan_con[k];//位选delay(3);}}voidreset(void)//reset{uinti;DS&=!DQSUM[count];//0i=103;while(i0)i--;DS|=DQSUM[count];//1i=4;while(i0)i--;}bitreadbit(void)//readabit{uinti;bitdat;DS&=!DQSUM[count];i++;DS|=DQSUM[count];i++;i++;switch(count){case0:dat=DQ0;break;case1:dat=DQ1;break;case2:dat=DQ2;break;case3:dat=DQ3;break;}i=8;while(i0)i--;18return(dat);}ucharread(void)//readaByte{uchari,j,dat;d
本文标题:8路温度采集系统
链接地址:https://www.777doc.com/doc-2893271 .html