当前位置:文档之家› 温度数据采集

温度数据采集

西安郵電大学PLC课程设计报告书基于S7-200的温度采集系统设计院(系)名称:自动化学院35号:陈有元34号:徐星杰学生姓名:30号:穆磊 28号:朱瑶专业名称:测控技术与仪器班级:测控1003班2013 年 09 月 09 日至时间:2013 年 09 月 22 日温度数据采集一、设计要求1.温度通过DS18B20进行控制;2.通过单片机及DAC0832把信号变为0-5伏;3.PLC采集此模拟信号,并进行工程量转换;4.进行现场总线测量,对测量精度进行量化。

二、实验步骤1.根据单片机原理,分析实验要求,编写程序。

2.设计硬件电路,并且在Proteus中进行模拟仿真。

3.仿真成功后,合理布线,进行焊接。

4.进行检查调试。

三、所需元器件表 1 所需器件元器件数量AT89C52 1个DS18B20 1个晶振1个电容3个DAC0832 1个放大器1个电阻若干导线若干四、主要功能描述利用DS18B20数字温度传感器实现对温度进行准确的测量,使温度值显示到数码管上。

利用DS18B20数字温度传感器进行温度的采集,单片机作为控制器件,数据通过串口(RS232)传至计算机,进行温度的采集。

五、实验电路图:图 1 硬件模拟电路仿真图六、实验源程序及流程图源程序:#include<reg51.h>#include<stdio.h>typedef unsigned char uint8;sbit DQ= P3^0;unsigned char Code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0x F8,0x80,0x90};void mDelay(uint8 Delay){while(Delay--);}Init_DS18B20(void){uint8 x = 0;DQ = 1;mDelay(8);DQ = 0;mDelay(80);DQ = 1;mDelay(20);x = DQ;mDelay(30);}ReadOneChar(void){uint8 i = 0;uint8 dat = 0;for(i=8;i>0;i--){DQ = 0;dat>>=1;DQ = 1;if(DQ){dat |= 0x80;}mDelay(8);}return(dat);}WriteOneChar(uint8 dat) {uint8 i = 0;for(i=8;i>0;i--){DQ = 0;DQ = dat&0x01;mDelay(10);DQ = 1;dat >>= 1;}mDelay(4);}ReadTemperature(void) {uint8 L = 0;uint8 H = 0;uint8 temp = 0;Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44);Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE);L = ReadOneChar();H = ReadOneChar();L = L>>4;temp = H<<4;temp = temp|L;return(temp);}void main(void){uint8 temp;while(1){temp = ReadTemperature(); P1=temp;}}七、设计原理:图 2 PDIP芯片引脚功能图如图表2引脚功能描述:VCC:电源GND:地P0口:P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

在这种模式下,P0 具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。

程序校验时,需要外部上拉电阻。

P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。

对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。

在flash 编程和校验时,P1口接收低 8 位地址字。

P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。

对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。

RST:复位输入。

晶振工作时,RST 脚持续2个机器周期高电平将使单片机复位。

看门狗计时完成后,RST 脚输出96个晶振周期的高电平。

特殊寄存器AUXR(地址8EH)上的DISRTO 位可以使此功能无效。

DISRTO 默认状态下,复位高电平有效。

ALE/PROG :地址锁存控制信号(ALE )是访问外部程序存储器时,锁存低8位地址的输出脉冲。

在flash 编程时,此引脚(PROG )也用作编程输入脉冲。

在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。

PSEN:外部程序存储器选通信号PSEN 是外部程序存储器选通信号。

当 STC89C52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:振荡器反相放大器的输出端。

复位电路:单片机在RESET 端加一个大于20ms 正脉冲即可实现复位,上电复位和按钮组合的复位电路如图表3:图 3 复位电路图在系统上电的瞬间,RST 与电源电压同电位,随着电容的电压逐渐上升,RST 电位下降,于是在RST 形成一个正脉冲。

只要该脉冲足够宽就可以实现复位,即20≥=RC τms 。

一般取R ≥1ΩK ,C ≥22uF 。

当人按下按钮S1时,使电容C1通过R1迅速放电,待S1弹起后,C 再次充电,实现手动复位。

R1一般取200Ω。

时钟电路:当使用单片机的内部时钟电路时,单片机的XATL1和XATL2用来接石英晶体和微调电容,如图所示,晶体一般可以选择3M~24M,电容选择30pF左右。

我们选择晶振为12MHz,电容33pF。

图 4 晶振电路图八.DS18B20数字温度传感器介绍图 5 DS18B20图示DS18B20的管脚排列如下: DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。

64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。

光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位,如下图表6:表 2 补码表示表这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM 中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

DS18B20的内部逻辑图,如图下:图 6 DS18B20内部逻辑图九、实验心得:徐星杰:本次实验让我的体会最深的是学习的辛酸,再设计的、过程中有很多故障,特别是程序的设计,经过再三的分析和讨论我们找到了其中的问题所在并加以改正。

同时也让我们体验到了单片机只要肯学就会像毒品一样吸引你;人都是在做事做人的过程中慢慢长大成熟,通过此次实习让我们明白了很多道理,龟兔赛跑的故事谁都知道,但现实中,跑的快的兔子就会睡懒觉,跑的慢的乌龟就会慢慢地一步一步爬,虽然我们小组在此次实习取得相对较好的效果,在其他同学都愁眉苦脸不知所措的时候,我们早早就完成,微笑自信的走出了实验室,目前是跑的快的兔子的我们坚决不会睡懒觉,我们会以此激励自己,继续向前。

C 64 位 RO M 和 单线接口 高速缓存存储器与控制温度传感器 高温触发器低温触发器TL 配置寄存器8位CRC 发生器 Vdd通过本次实验,我们小组受益匪浅。

一方面,我们将课堂上的理论知识应用到了实际,加强巩固了理论知识,也提高了实际动手能力。

通过实践反馈,了解到我们自身知识面的不足。

另一方面,在实验过程中,遇到问题时候,我们小组列出可能问题,一一进行排查,找出问题的所在,队员之间分工明确,团结合作,本次实验正是通过队员之间的合作实现的。

陈有元:蓦然回首,两周的实习结束了,在这些天中通过不断的学习,不断的努力和拼搏,不断对新知识的追求和索取,不断地自我发现,感觉到自己的知识结构水平有了很大提升。

针对本次实验,我们小组分工做的比较好,都发挥了其特长,特别是在编程方面所有队员一起分析,思路严谨,很有耐心,其他人都走了,我们还在编程到深夜;在焊接电路时,我们一起焊接和设置的空间布局,使得行焊接电路一次性成功,并且布局清晰,美观,合理,没有解焊、错焊,从上面的焊接图就可以看出;在画程序框图时,能够按找编程的思路所编出的程序正确的画出程序框图,能够一目了然的看出设计的大体思路。

分工明确,又密切配合,从一开始到结束,小组成员都相互监督,频繁的检查队友的进度和有没有出错的地方及时纠正、探讨和有没有需要帮忙的地方,防止队友出错,在错误的方向越走越远;就这样,我们小组到实验室焊接电路,仅用了很短的时间就完成了任务,示范成功。

虽然之前学过c语言,但应用到单片机上,许多东西都不知道,之前没有接触过,不过在问过一些同学后,这个问题也就顺利的解决了。

通过本次课程设计我不光复习了单片机知识,还锻炼了动手能力,同时也熟悉掌握了proteus仿真软件和Keil usion4单片机设计软件的使用,对于我们测控专业的学生来说,Proteus和Keil usion4是必须掌握的仿真软件,像温度数据采集的原理,它是怎样连接的,以及DAC0832是怎样控制传过来的温度数据的等。

相关主题