版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告书 课程名称: 专业综合课程设计 题 目:基于单总线的温度实时监控系统系 (院): 电子工程学院 学 期: 11-12-1 专业班级: 电子 姓 名: 学 号: 评语:成绩:签名:日期:1. 选题意义随着社会的发展,科技的进步,电子技术和微型计算机的迅速发展,以及测温仪器在各个领域的应用,智能化已是现代温度监控系统发展的主流方向。单片机在电子产品中的应用已经越来越广泛。利用单片机对温度进行控制的技术也随之而生,并日益发展和完善,且越来越显示出它的优越性。单总线技术是美国Dallas半导体公司近年推出的新技术。它将地址线、数据线、控制线合为1根信号线,允许在这根信号线上挂接数百个单总
2、线器件芯片。温度是一个重要的物理量,它反映了物体冷热的程度,与自然界中的各种物理和化学过程相联系。在工、农业生产和日常生活中,各个环节都与温度紧密相联,温度的准确监测及控制占据着极其重要地位。比如,发电厂锅炉的温度必须控制在一定的范围之内;许多化学反应的工艺过程必须在适当的温度下才能正常进行等。没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。可见,温度的监控是非常重要的。单总线技术是美国Dallas半导体公司近年推出的新技术。它将地址线、数据线、控制线合为1根信号线,允许在这根信号线上挂接数百个单总线器件芯片。单总线技术应用于某些低速(约100kb
3、ps以下的速率)测控系统中,可以大大简化线路结构和减少硬件开销,可以通过PC机串行口、并行口、USB总线或单片机直接进行测控,PC机的软件开发也直观、容易。本设计为基于单总线的温度实时监控系统。2. 设计目的、要求及步骤概述2.1设计目的(1)对单总线设备的结构特点和以单总线技术构建起来的微型局域网的拓朴结构、网络结构优化以及设备与单总线的连接进行阐述和研究。(2)设计基于单总线的温度采集电路,单总线和PC机串行口的接口电路,在电路设计时重点考虑单总线设备的供电问题和数据的可靠采集。(3) 用自己熟悉的计算机语言编写温度实时监控系统软件,软件的界面要友好、简明、直观。在软件编写时重点考虑温度采
4、集数据存储、单总线设备中的CRC循环冗余码的实现方法、从设备的“即时插即用” 的算法研究。 2.2设计内容及要求(1) 温度测量范围50100。(2) 测温分辨率不低于0.0625。(3) 数据传输距离不低于60米。(4) 温度测量点不少于3。(5) 温度采集间隔不底于10分钟。(6) 能显示一天实时温度变化曲线。2.3设计步骤概述实习制作大概步骤如图1准备好要用的器件进行焊接设计电路Delphi程序设计检测完善电路完整调试完善研究课题的要求程序检测完善图13. 电路的设计3.1硬件电路设计在硬件电路设计时,应着重考虑电子器件的供电方式,以及对器件的限压和限流保护。因为本次设计要求利用单总线技
5、术,所以可以考虑使用寄生供电方式。设计的电路图如下。图2 基于单总线的温度实时监控系统硬件电路总图图3 基于单总线的温度实时监控系统硬件电路原理图3.2软件设计3.2.1设计窗体本次设计要求软件的可视化窗体中包含实时温度显示、数据记录、存储管理和ROM数据,并且能将测得的数据保存到指定的数据库中。窗体界面如下。图4 窗体界面实时温度显示中可以看到当前室温,并且可以显示摄氏温度和华氏温度。数据记录包含温度曲线和温度日志,可以显示一天内的温度变化曲线。存储管理和ROM数据用来对数据库中已经保存的温度数据进行管理,如删除、转移等操作。3.2.2软件编程本系统软件部分采用Delphi来实现初始化、数据
6、采集处理、温度报表管理,其主程序的流程图见图5。图5 主程序流程图本系统软件部分共分为3个部分,分别是:1)初始化程序。a设置串行通信波特率;b串行通讯方式的初始化;c对TO,T1两个计数器的初始化;d中断控制程序的初始化。此外,还负责从E2PROM 中调出以前的采样参数,使器件能够以它采样温度数据。2) 当监控到ONTIME1和NTIME2标记时作相应温度的存储、转换、发送处理。ONTIME1和NTIME2的标记主要有定时电路决定,当到达采样间隔时,做出相应的处理。3)采用动态显示方式即时显示温度,以节省电路规模,使得整个系统的体积变小。4. 元器件的选择4.1主要元器件知识4.1.1 DS
7、18B20DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。 DS18B20的内部结构DS18B20内部结构如图5所示,主要由4部分组成:64位ROM、温度传
8、感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图6所示,DQ为数字信号输入输出端;GND为电源地;VDD为外接供电电源输入端,在寄生电源接线方式时接地,见图7。图6 DS18B20的内部结构 图7 DS18B20的管脚排列ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8X5X41)。ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。DS18B20中的温度传感器完成对温度的测量,用16位符号
9、扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。例如125的数字输出为07D0H,25.0625的数字输出为0191H,25.0625的数字输出为FF6FH,55的数字输出为FC90H。 高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入。其中配置寄存器的格式如下:0 R1 R0 1 1 1 1 1 MSBLSBR1、R0决定温度转换的精度位数:R1R0=“00”,9位精度,最大转换时间为93.75ms;R1R0=“01”,10位精度,最大转换时间为187.5ms;R1R0=“10”,11位精
10、度,最大转换时间为375ms;R1R0=“11”,12位精度,最大转换时间为750ms;未编程时默认为12位精度。高速暂存器是一个9字节的存储器。开始两个字节包含被测温度的数字量信息;第3、4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。 DS18B20的工作时序DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输。其工作时序包括初始化时序、写时序和读时序,如图8(a)(b)(c)所示。(a)初始化时序 (b)写时序 (c)读
11、时序图8 DS18B20的工作时序图 DS18B20与微处理器的连接DS18B20与微处理器的连接如下图9所示。(a)寄生电源工作方式 (b)外接电源工作方式图9 DS18B20与微处理器的典型连接图4.1.2串口UART/RS232至单总线通信协议的转接桥DS2480B DS2480B主要特性串口UART/RS232至单总线通信协议的转接桥,可直接连到UART和5V RS232系统中, 支持Dallas全系列单总线器件,如数字温度传感器DS18B20、A/D转换器DS2450等;将主机从单总线时序控制中解脱出来,提供规范的、灵活的和强驱动的单总线定时;支持标准UA
12、RT通信,支持9.6(默认)、19.2、57.6和115.2 kbps速率;具有较强的总线驱动能力,通信距离可达300 m;可编程下拉摆率控制和有源上拉,工作范围 5 V,-40 +85 ,8引脚SOIC封装。管脚图及引脚说明1234875RXDTXDPOLVPPGND1-WNCVDD图10 DS2480B的封装和引脚DS2480B为8脚贴片式封装,如图10所示。引脚功能如表1所列:表1 引脚功能说明引脚号引脚名称引 脚 功 能1GND地线21-W单总线输入输出端3NC悬空4VDD4.55.5V电压5VPPEPROM编程电压6POLRXD/TXD选择端7TXD发送端8RXD接收端
13、DS2480B工作原理框图如图11所示。图11 DS2480B工作原理框图 DS2480B与RS232的接口技术DS2480B与RS232的接口如图12所示。 图12 DS2480B与RS232的接口图 4.2元件清单表2 元件清单序号元件个数1PC机串行口UART/RS2321 个2转接桥DS2480B1 个3数字温度传感器DS18B201 个4电容U07HF1 个5稳压管2 个6二极管M72 个7电路板XF071 个5. 学习心得通过这次专业课程设计,我对本专业的理论知识和动手操作能力都有了大幅度的提高。首先从研究课题的要求和任务开始,刚拿到“基于单总线的温度实时监控系统”这
14、个设计题目时,完全是不知所措,不知道从那下手。经过王老师和李老师的耐心讲解后,才有点头绪。课后通过自己查资料和老师所给的任务书与指导书才真正开始搞懂题目,并且去研究它。根据指导书上的要求和指示,我们小组设计出了基于单总线的温度实时监控系统硬件电路。接下来就要依据设计好的电路图,进行硬件的焊接。说到焊接,我并不陌生,在大二的时候就焊接过收音机,在专业综合实习时,又焊接过红外线感应开关。焊接最需要注意的是焊接的温度和时间,焊接时要使电烙铁的温度高于焊锡,但是不能太高,以烙铁接头的松香刚刚冒烟为好,焊接的时间不能太短,因为那样焊点的温度太低,焊点融化不充分,焊点粗糙容易造成虚焊,而焊接时间长,焊锡容
15、易流淌,使元件过热,容易损坏,或者造成焊接短路现象。在软件设计与编程的环节,要求用自己熟悉的计算机语言编写温度实时监控系统软件。在设计之前我也考虑过关于选用什么语言的问题,在大学生涯中,我学过了C语言,Java语言和Delphi语言,在去年的计算机课程设计中,我曾用Delphi语言编写过一个高校学生选课成绩管理系统,对Delphi言语的应用相对灵活些,所以我决定用Delphi语言编写程序。在本次课程设计的过程中,我还发现基于DS18B20数字温度传感器构成的实时监控系统确实具有精度高、抗干扰能力强、电路简单等诸多优点。相比之下,传统的温度检测系统采用热敏电阻等温度敏感元件,热敏电阻成本低,但需
16、要后续信号调理、AD转换处理电路才能将温度信号转换成数字信号,不但电路复杂,而且热敏电阻的可靠性相对较差,测量温度的精度差,很难保证热敏电阻的一致性和线性。通过对这个专业课程设计的学习,为我们掌握单总线的温度采集电路,单总线和PC机串行口的接口电路的开发打下了坚实的基础,还使我掌握了设计复杂电路和装配技能,培养了我理论联系实际的能力,提高了我分析问题和解决问题的能力,增强了独立工作的能力。其中感触最深的便是实践联系理论的重要性,当遇到实际问题时,只要认真思考,用所学的知识,再一步一步探索,是完全可以解决遇到的一般问题的。在实习过成中,要时刻保持清醒的头脑,出现错误,一定要认真的冷静的去检查分析
17、错误,不能草草了事,这样做出来的课程设计才能达到它真正的效果,为我们以后步入社会做好充分的准备。6. 参考文献1 DS18B20 Programmable Resolution 1-Wire Digital Thermometer2 DS2480B Serial 1-Wire Line Driver with Load Sensor3 左冬红,谢瑞和.实现单总线搜索ROM命令的一种算法 4 李朝青,单片机原理及接口技术(简明修订版)M. 19985 李广弟.单片机基础M. 1994 6 沙占友等.智能化集成温度传感器原理与应用. 20027 阎石.数字电子技术基础(第三版)M. 1989附:源
18、程序清单- TEMPDL32 : This utility uses TMEX to view a read the temperature from a DS18B20. It requires the 32-Bit Windows TMEX drivers to be present. Compiler : Borland Delphi 5.0 procedure TForm1.FormCreate(Sender: Tobject;Var ztbuf : array0.200 of Char; Typebuf : array 0.200 of Char; i,k,RetValue : sm
19、allint; RetStr : array0.200 of Char; SetupDone: Boolean; PortNum, PortType : smallint; begindieer :=false; SetupDone := FALSE; TMSetup not done yet Label4.Caption := '' Read default Port Number and Port Type from registry RetValue := TMReadDefaultPort(PortNum, PortType); if (RetValue < 1)
20、 then TMReadDefaultPort(PortNum, PortType) begin ShowMessage('Please set port first'); Halt; end else begin read the tmex version and type version Get_Version(ztbuf); Label1.Caption := StrPas(ztbuf); TMGetTypeVersion(PortType,Typebuf); Label2.Caption := StrPas(Typebuf); attemp to get a sessi
21、on Done := False; Repeat SHandle := TMExtendedStartSession(PortNum,PortType,NIL); If (SHandle > 0) Then begin if (TMSetup(SHandle) = 1) then The device that will be found is Temperature Device DS18B20, so Family Type is set to $28 FindFirstFamily($28,SHandle) else begin TMEndSession(SHandle); Sho
22、wMessage('Fail to setup MicroLan!'); Halt; end; end else begin if (SHandle < 0 ) then Begin ShowMessage('The Default Port Type does not have a driver !'); Halt; end; end; Release control back to window Application.ProcessMessages; until (Done); Done := False; Repeat SHandle := TME
23、xtendedStartSession(PortNum,PortType,NIL); If (SHandle > 0) Then begin if (TMSetup(SHandle) = 1) then The device that will be found is Temperature Device DS18B20, so Family Type is set to $28 FindSecondFamily($28,SHandle) else begin TMEndSession(SHandle); ShowMessage('Fail to setup MicroLan!&
24、#39;); Halt; end; end else begin if (SHandle < 0 ) then Begin ShowMessage('The Default Port Type does not have a driver !'); Halt; end; end; Release control back to window Application.ProcessMessages; until (Done); label18.Caption :=keke1; label19.caption :=keke2; table1.Active :=true; if
25、 table1.CanModify then begin table1.Append; table1.Fields0.AsDateTime :=now; table1.Fields1.AsString :=floattostr(diwei1); table1.Fields2.AsFloat :=shangxian1; table1.Fields3.AsFloat :=xiaxian1; table1.Fields4.AsString :=floattostr(diwei2); table1.Fields5.AsFloat :=shangxian2; table1.Fields6.AsFloat
26、:=xiaxian2; table1.Post; end; end;end;procedure TForm1.FindFirstFamily(family : smallint; SHandle: longint); var i , flag : smallint; romstr : string; rom : array0.8 of smallint;begin Set up to find the first device with the family 'family' if (TMFamilySearchSetup(SHandle,stateBuf,family ) =
27、 1 ) then begin if (TMNext(SHandle, stateBuf)= 1) then begin Read the rom number by setting rom0 to 0 for reading and using TMRom rom0 := 0; TMRom(SHandle,stateBuf,rom); Check if correct type romstr := '' if (family and $7F )= (rom0 and $7F) then begin for i := 7 downto 0 do romstr := romstr
28、 + IntToHex(ROMi,2); Label3.caption := 'Serial ROM ID1 : ' + romstr; ReadTemperature1(SHandle); end else begin ShowMessage('There is no Temperature Device on the port'); halt; end; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the port')
29、; halt; end; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the port'); halt; end;end;procedure TForm1.ReadTemperature1(session_handle : longint);var tsht, i, tmp1 : smallint; cr,cpc, tmpf,tmp : Extended; rbuf : array0.9 of smallint ; st : longint; CRCBy
30、te,xiaxianbyte : Byte;begin tmp := 0.00; access the device if (TMAccess(session_handle,StateBuf)= 1) then begin Send the recall E2 command (by setting $B8 to outbyte in TMTouchByte) make sure Scratch is correct TMTouchByte(session_handle, $B8); Send the start T command if (TMAccess(session_handle,St
31、ateBuf) = 1) then begin Prepare the strong pullup after next TMTouchByte TMOneWireLevel(session_handle,LEVEL_SET,LEVEL_STRONG_PULL_UP, PRIMED_BYTE); Send the conversion command (by setting $44 to outbyte in TMTouchByte) TMTouchByte(session_handle, $44); Sleep for a second st := GetTickCount + 1000;
32、While (GetTickCount < st) do TMValidSession(Session_handle); Disable the strong pullup TMOneWireLevel(session_handle, LEVEL_SET,LEVEL_NORMAL,PRIMED_NONE); verify conversion is complete by setting $01 to outbit in TMTouchBit and check the return value with 1 if (TMTouchBit(session_handle,$01) = $0
33、1) then begin Access device If (TMAccess(session_handle,StateBuf) = 1 ) then begin Send read scratch command by setting $BE to outbyte in TMTouchByte TMTouchByte(session_handle,$BE); CRC8 := 0; Read scratch (setting $FF to outbyte in TMTouchByte) and check crc for each byte for i := 0 to 7 do begin
34、rbufi:= TMTouchByte(session_handle, $FF); CRCByte := Byte(rbufi); the byte to run through CRC8 routine CRC8 := TMCRC(1, CRCByte, CRC8, 0); end; Check crc CRCByte := Byte(TMTouchByte(session_handle, $FF); the byte to run through CRC8 routine CRC8 := TMCRC(1, CRCByte, CRC8, 0); if ( CRC8 = 0 ) then be
35、gin Calculate the temperarure tsht := rbuf0; if (rbuf1 and $01)= 1) then tsht := tsht or (-256); tmp1 := Round(tsht)/2); tmp := tmp1; cr := rbuf6; cpc := rbuf 7; if (rbuf7 <> 0) then tmp := tmp - (0.25) + (cpc-cr)/cpc; if (rbuf1 and $F8)= $F8) then BEGIN END ELSE BEGIN case (rbuf4 and $60) of
36、$00: begin fenbianlv1 :=9; tmp:=(rbuf1 and $07)*16+(rbuf0 and $f8)/16; diwei1 :=(rbuf0 and $f8)/16; end; $20: begin fenbianlv1 :=10; tmp:=(rbuf1 and $07)*16+(rbuf0 and $fc)/16; diwei1 :=(rbuf0 and $fc)/16; end; $40: begin fenbianlv1 :=11; tmp:=(rbuf1 and $07)*16+(rbuf0 and $fe)/16; diwei1 :=(rbuf0 a
37、nd $fe)/16; end; $60: begin fenbianlv1 :=12; tmp:=(rbuf1 and $07)*16+rbuf0/16; diwei1 :=rbuf0/16; end; end; END; tmpf := (tmp * 9 )/5 + 32; label4.caption := 'Current temp1 : ' + FormatFloat('0.0000',tmp) + ' C or ' + FormatFloat('0.0000', tmpf) + ' F' keke1 :
38、=FormatFloat('0.0000',tmp); yuanshi1 :=rbuf4; shangxian1 :=rbuf2 and $7f; xiaxianbyte :=rbuf3 and $80; if xiaxianbyte = 1 then xiaxian1 := (rbuf3 and $7f) * (-1) else xiaxian1 := rbuf3 and $7f; MessageBeep(0); TMEndSession(session_handle); Done := True; end; end; end; end; end;end;procedure
39、TForm1.FindSecondFamily(family : smallint; SHandle: longint); var i , flag : smallint; romstr : string; rom : array0.8 of smallint;begin Set up to find the first device with the family 'family' if (TMFamilySearchSetup(SHandle,stateBuf,family ) = 1 ) then begin Get first device if (TMNext(SHa
40、ndle, stateBuf)= 1) then if (TMNext(SHandle, stateBuf)= 1) then begin Read the rom number by setting rom0 to 0 for reading and using TMRom rom0 := 0; TMRom(SHandle,stateBuf,rom); Check if correct type romstr := '' if (family and $7F )= (rom0 and $7F) then begin for i := 7 downto 0 do romstr
41、:= romstr + IntToHex(ROMi,2); Label10.caption := 'Serial ROM ID2 : ' + romstr; ReadTemperature2(SHandle); end else begin ShowMessage('There is no Temperature Device on the port'); halt; end; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the
42、port'); halt; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the port'); halt; end; end else begin TMEndSession(SHandle); ShowMessage('There is no Temperature Device on the port'); halt; end;end;procedure TForm1.ReadTemperature2(session_handl
43、e : longint);var tsht, i, tmp1 : smallint; cr,cpc, tmpf,tmp : Extended; rbuf : array0.9 of smallint ; st : longint; CRCByte ,xiaxianbyte: Byte;begin tmp := 0.00; access the device if (TMAccess(session_handle,StateBuf)= 1) then begin Send the recall E2 command (by setting $B8 to outbyte in TMTouchByt
44、e) make sure Scratch is correct TMTouchByte(session_handle, $B8); Send the start T command if (TMAccess(session_handle,StateBuf) = 1) then begin Prepare the strong pullup after next TMTouchByte TMOneWireLevel(session_handle,LEVEL_SET,LEVEL_STRONG_PULL_UP, PRIMED_BYTE); Send the conversion command (b
45、y setting $44 to outbyte in TMTouchByte) TMTouchByte(session_handle, $44); Sleep for a second st := GetTickCount + 1000; While (GetTickCount < st) do TMValidSession(Session_handle); Disable the strong pullup TMOneWireLevel(session_handle, LEVEL_SET,LEVEL_NORMAL,PRIMED_NONE); verify conversion is complete by setting $01 to outbit in TMTouchBit and check the return value with 1 if (TMTouchBit(session_handle,$01) = $01) then begin Access device If (TMAccess(session_handle,StateBuf) = 1 ) then
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全专业软件相关行业投资规划报告
- 非离子型纤维素醚相关行业投资规划报告
- 两家宅基地界线协议书
- 顺行髓内钉治疗掌骨颈骨折
- 灯光培训资料
- 智慧医院综合管理解决方案(医院综合管控指挥)
- 食品中毒应急预案
- 老年病科急救演练
- 药店药师的角色与职责
- 有关回族地区饮食文化变迁的调查
- 临城兴业矿产资源有限公司闫家庄铁矿矿山地质环境保护与土地复垦方案
- 【海南康养旅游现状和对策探究11000字(论文)】
- (2024版)大学本科新增专业《智能视觉工程》解读
- 2023寺庙寺院品牌营销全案
- 循环系统监测-课件
- 学生心理健康一生一策档案模板
- 企业反腐倡廉培训课件
- 老旧楼加装电梯方案
- 2024城市管理工作情况调研报告(十篇)
- 索道桥悬索桥施工方案样本
- 医疗影像技术部门KPI设计
评论
0/150
提交评论