毕业设计基于单片机的巡回温度检测系统设计_第1页
毕业设计基于单片机的巡回温度检测系统设计_第2页
毕业设计基于单片机的巡回温度检测系统设计_第3页
毕业设计基于单片机的巡回温度检测系统设计_第4页
毕业设计基于单片机的巡回温度检测系统设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘 要本设计系统地介绍了基于单片机和DS18B20的巡回温度测量系统的论证、设计、电路原理、程序设计以及系统仿真过程。基于单片机和DS18B20的巡回温度测量系统是以AT89C52单片机为控制核心、智能温度传感器DS18B20为温度测量元件、LCD1602为显示模块,结合C语言实现多路检测功能。该系统具有智能、高精度、实用性强和多点温度测量等诸多优点,广泛应用于仓库测温、空调控制和煤矿火灾等领域,具有非常重要的实际价值。关键字:单片机, DS18B20, 多点, 巡回, 温度检测ABSTRACTThis design introduceson the SCM and DS18B20 rovin

2、g temperature measurement systemdemonstration, design, circuit theory, program design and system simulationin detail. SCM and DS18B20 roving temperature measurement system is based on AT89C52 microcontroller as the control core, intelligent temperature sensor DS18B20 for the temperature measurement

3、device, LCD1602 for the display module, combined with C language multi-detection. The system has intelligence, precision, practical and multi-point temperature measurements, and many other advantages.It is widely used in storage temperature, air-conditioning control, and mine fields of fire, has a v

4、ery important practical value.Keywords:SCM, DS18B20, multi-point, circuit, temperature measurement目 录1 方案论证11.1 基于模拟温度传感器的方案11.2 基于数字温度传感器的方案21.3 方案选择32 系统工作原理43 电路设计53.1 DS18B20与单片机接口设计53.1.1 DS18B20简介53.1.2 DS18B20的引脚功能53.1.3 DS18B20的内部结构6"A_#n CzUuE IX6|3706电子爱好者社区+|kP+|%D1|3.1.4 DS18B20与单片机

5、接口电路93.1.5单片机对DS18B20的控制93.2 复位电路设计123.3 时钟电路设计133.4 键盘电路设计133.5 声光报警电路设计143.6显示电路设计143.6.1 引脚指令 143.6.2 控制指令153.6.3 LCD与单片机接口 173.7 串口通讯电路设计174 程序设计194.1 DS18B20程序流程设计194.2 LCD显示程序流程设计225 系统仿真235.1 Proteus仿真简介235.2 原理图绘制235.3 仿真原理图245.4 系统仿真25总结29参考文献30附录311 方案论证1.1 基于模拟温度传感器的方案该方案由单片机、模拟温度传感器AD590

6、、运算放大器、AD转换器、4×4键盘、LCD显示电路、集成功率放大器、报警器组成,如图1-1所示。本方案采用模拟温度传感器AD590作为测温元件,传感器将测量的温度变换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器交将信号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传给给单片机,单片机将温度值进行处理之后用LCD显示 ,当温度值超过设置值时,系统开始报警。 图1-1 基于模拟温度传感器的测量系统方案本方案使用的测温元件的性能指标如下:(1)AD590的测温范围为55+150。(2)AD590的电源电压范围为4V30V,电源电压可在4V6V范围变化,电流&

7、#160;变化1mA,相当于温度变化1K。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。(3)输出电阻为710MW。  (4)精度高,AD590共有I、J、K、L、M五档,其中M档精度最高,在55+150范围内,非线性误差为±0.3。集成温度传感器具有线性好、精度适中、灵敏度高、体积小、使用方便,温度测量范围广等优点,得到广泛应用。集成温度传感器的输出形式分为电压输出和电流输出两种。电压输出型的灵敏度一般为10mV/K,温度0时输出为0,温度25时输出2.982V。电流输出型的灵敏度一般为1mA/K。1.2 基于数字温度传感器设计方案该方案使用

8、了AT89C52单片机作为控制核心,以智能温度传感器DS18B20为温度测量元件,采用多个温度传感器对各点温度进行检测,通过键盘模块对正常温度进行设置显示电路采用128×64 LCD模块,使用扬声器和LED作为声光报警电路主要单元。 具体框架图如图1-2. 图1-2 基于数字温度传感器测量系统方案本课题采用数字温度传感器DS18B20作为测为测温元件,它具有如下特点:(1)只要求一个端口即可实现通信。(2)在DS18B20中的每个器件上都有独一无二的序列号。(3)实际应用中不需要外部任何元器件即可实现测温。(4)测量温度范围在55C到125C之间。(5)数字温度计的分辨率用户可以从9

9、位到12位选择。(6)内部有温度上、下限告警设置。1.3 方案选择本设计要求测量的点数为8,采用液晶显示,巡回显示路数和温度,每秒刷新1次显示数据。综合模拟温度传感器和数字温度传感器的性能指标,以上两个方案都能达到设计的要求。方案一采用模拟温度传感器AD590,转换结果需要经过运算放大器和AD转换器传送给处理器。它控制虽然简单,成本低,但是后续电路复杂,且需要进行温度标定,集成温度传感器AD590输出为电流信号,且输出信号较弱,所以需要后续放大及A/D转换电路,如采用普通运放则精度难以保证,而测量放大器价格较高,这样会使系统成本升高。方案二采用了数字温度传感器DS18B20,改变了传统温度测试

10、方法。它能在现场采集温度数据,直接将温度物理量变换为数字信号并以总线方式传送到单片机进行数据处理,并且可根据实际要求通过简单的编程实现9-12位的数字式读数方式,因而使用DS18B20可使系统结构更趋简单,可靠性更高,大大提高系统的抗干扰能力。DS18B20体积小、经济、使用方便灵活,测试精度高,较高的性能价格比,有CRC校验,系统简明直观。适合于恶劣环境的现场温度测试,如:环境控制、设备或过程控制、测温类消费电子产品等。综上所述,本课题采用方案二对系统进行设计。2 系统工作原理本系统由一台单片AT89C52、DS18B20温度传感器、声光报警电路、串口通讯电路、键盘复位电路以及LCD显示电路

11、组成多点温度巡回检测系统。该系统可以直接采RS-232串行通讯标准与电脑连接或由键盘控制,通过单片机控制下位机,进行现场8路温度检测信号的采集。温度值既可以送回主控进行数据处理,LCD显示器实时显示当前温度的最高值和最低值,对于超上下限发出声光报警信号,并显示超限位置。系统框架图如图2-1.DS18B20是数字温度传感器,它的输入/输出采用数字量,以单总线技术,接收主机发送的命令,根据DS18B20内部的协议进行相应的处理,将转换的温度以串口发送给主机。主机按照通信协议用一个IO口模拟DS18B20的时序,发送命令(初始化命令、ROM命令、RAM命令)给DS18B20,转换完成之后读取温度值,

12、在内部进行相应的数值处理,用图形液晶模块显示各点的温度。在系统启动之时,可以通过键盘设置各点温度的上限值,当某点温度超过设置值时,报警器开始报警,液晶显示该传感器的路数、设置温度值、实际温度值,从而实现了对各点温度的实时监控。 图2-1 系统框架图3 电路设计3.1 DS18B20与单片机接口设计3.1.1 DS18B20简介 DS18B20是美国DALLAS半导体公司继DS1820之后推出的一种改进型智能单总线数字测温芯片。它有如下特点:(1)独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(2)在使用中不需要任何外围元件。(3)可

13、用数据线供电,电压范围:+3.0+5.5 V。(4)测温范围:-55 +125 。固有测温分辨率为0.5 。(5)通过编程可实现912位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。 (7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。3.1.2 DS18B20的引脚功能DS18B20体积小、经济、使用方便灵活,测试精度高,较高的性能价格比,有CRC校验,适合于恶劣环境的现场温度测试。但是需要严格的程序和协议。DS18B20的引脚功能描述见表3-1。表3-1DS18B20引脚功能描述

14、序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地3.1.3 DS18B20的内部结构 DS18B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如图3-1所示。电子爱好者社区 L&Lv5?A&k7hU-s4N     电子爱好者社区,t9 CN)u*N1?a H k1c'C  图3-1 DS18B20内部结构图(1) 64 b闪速ROM的结构如下(

15、表3-2):电子爱好者社区 1K+m#a5?5p h3g3706           表3-2 ROM结构8b检验CRC48b序列号8b工厂代码(10H)电子爱好者社区*mqOPV9G h(L    开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。(2) 非易市失性温度报警触发器TH和TL,可通过软件写入用户报警上下限。(3) 高速暂

16、存存储器2i e/zJ8x6i3706    DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM。后者用于存储TH,TL值。数据先写入RAM,经校验后再传给E2RAM。而配置寄存器为高速暂存器中的第5个字节,他的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如下(表3-3)表3-3 DS18B20配置寄存器字节定义X'wY*Lg$yS3706TMR1R011111MSBLSB7T(U/W|3I3低5位一直都是1,TM是测试模式位,

17、用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定k温度转换的精度位数,即是来设置分辨率。8e%r!:Mk3C93706电子爱好者社区A|i(L"Uy&fv(x/RhJK3706由表3-4可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。表3-4 R1和R0模式表R1R0分辨率温度最大转换时间009位93.750110位187.51011位275.001112位750.00高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如下示(表3-5)。其中温

18、度信息(第1,2字节)、TH和TL值第3,4字节、,可用来保证通信正确。   第68字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码 表3-5 高速暂存器分配温度低位温度高位THTL配置保留保留保留8位CRCLSB MSBO:E$tgaX;s3706 当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5 /LSB形式表示。温度值格式如下(表3-6):9t(

19、J s/Md9u7RC3706表3-6 温度值格式232221202-12-22-32-4MSBLSBSSSSS2625249Sf,_W电子爱好者社区-对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。表3-7是对应的一部分温度值。 电子爱好者社区&x+uMUK    DS18B20完成温度转换后,就把测得的温度值与TH,TL作比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行告警搜索。电

20、子爱好者社区d6_-A5l9j 表3-7 部分温度对应温度/C二进制十六进制表示+12500000111 11010000 07D0H+25.062500000001 100100010191H+0.500000000 000010000008H000000000 000000000000H-0.511111111 11111000FFF8H-25.062511111110 01101111FE6FH-5511111100 10010000FC90H(4) CRC的产生电子爱好者社区ym8pF在64 b ROM的最高有效字节中存储有循环冗余校验码(CRC

21、)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。 "A_#n CzUuE IX6|3706电子爱好者社区+|kP+|%D1|3.1.4 DS18B20与单片机接口电路如图3-2所示,为单片机与DS18B20的接口电路。DS18B20只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的P1.7口,电源与数字输入输出脚需要接一个4.7K的电阻,也可以不接电阻。图3-2 单个DS18B20与单片机接口电路3.1.5 单片机对DS18B20的控制DS18B20采用严格的单总线通信协议,以保证数据

22、的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。除了应答脉冲所有这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节为单位。且低位在前,高位在后.(1)初始化序列:复位脉冲和应答脉冲在初始化过程中,主机通过拉低单总线至少480µs,以产生复位脉冲(TX)。然后主机释放总线并进入接收(RX)模式。当总线被释放后,5k的上拉电阻将单总线拉高。DS18B20检测到这个上升沿后,延时15µs60µs,通过拉低总线60µs240µs产生应答脉冲。初始化脉冲如图3-3所示。图3-3 初始化(2)DS18B20的

23、读写控制在写时序期间,主机向DS18B20写入数据;而在读时序期间,主机读入来自DS18B20的数据。在每一个时序,总线只能传输一位数据。读/写时序如图3-4。 图3-4 DS18B20读写时序DS18B20写时序DS18B20存在两种写时序:“写1”和“写0”。主机在写1时序向DS18B20写入逻辑1,而在写0时序向DS18B20写入逻辑0。所有写时序至少需要60µs,且在两次写时序之间至少需要1µs的恢复时间。两种写时序均以主机拉低总线开始。产生写1时序:主机拉低总线后,必须在15µs内释放总线,然后由上拉电阻将总线拉至高电平。产生写0时序:主机拉低总线后,必

24、须在整个时序期间保持低电平(至少60µs)。在写时序开始后的15µs60µs期间,DS18B20采样总线的状态。如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。读时序DS18B20只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数据命令后,必须马上产生读时序,以便DS18B20能够传送数据。所有读时序至少60µs,且在两次独立的读时序之间至少需要1µs的恢复时间。每次读时序由主机发起,拉低总线至少1µs。在主机发起读时序之后,DS18B20开始在总线上传送1或0。若DS18B2

25、0发送1,则保持总线为高电平;若发送0,则拉低总线。当传送0时,DS18B20在该时序结束时释放总线,再由上拉电阻将总线拉回空闲高电平状态。DS18B20发出的数据在读时序下降沿起始后的15µs内有效,因此主机必须在读时序开始后的15µs内释放总线,并且采样总线状态。 DS18B20的命令序列根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。ROM命令通过每个器件64-bit的ROM码,使主机指定

26、某一特定器件(如果有多个器件挂在总线上)与之进行通信。DS18B20的ROM如表3-8所示,每个ROM命令都是8 bit长。表3-8 DS18B20 ROM命令指令协议功能读ROM33H读DS18B20中的编码(即64位地址)符合ROM55H发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCH忽略64位ROM地址,直接向DS18B20 温度转换命令,适用于单个DS18B20工作告警搜索命令

27、0ECH执行后,只有温度超过庙宇值上限或下限的片子才做出响应温度转换44H启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果送入内部9字节RAM中读暂存器BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据复制暂存器48H将RAM中第3、4字内容复制到E2PROM中重调E2PROM0B8H将E2PROM中内容恢复到RAM中的第3、4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1”3.2 复位电路设计考虑到底层电路

28、板的工作环境相对恶劣,单片机会受到周围环境的干扰,而出现程序跑飞,死机等一些不可预知的不正常工作现象。这时只需按RET按钮,单片机初始化,系统就可以正常工作。rst引脚是复位信号输入端。复位信号是高信号有效,其有效时间持续24个振荡周期(两个机器周期)以上。这里使用频率为12MHZ的晶振,则复位信号持续时间因超过2us,才能完成复位操作。持续时间由RC决定。若R1=10K,则C3取不小于20uF。具体复位电路如图3-5。图3-5 复位电路3.3 时钟电路设计单片机与其他微机一样,从Flash ROM中取指令和执行指令过程中的各种微操作,都是按着节拍有序地工作的,XTAL1与XTAL2两端接石英

29、晶体及两个电容就可以构成稳定的自激振荡器。电路C1和C2通常取30uF左右,可稳定频率并对振荡频率有微调作用。振荡脉冲频率范围是024MHZ,这里f取12MHZ。具体电路如图3-6,选择石英晶振作为时钟组件, 接至单片机的XTAL1、XTAL2 引脚组成时钟电路。 图3-6 时钟电路3.4 键盘电路设计单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。如图3-7,分别连接单片机的P1.5,P1.6,P1.7接口,余下的P1接口可以用于键盘扩展或其他。按下按键S1显示下一通道温度,按下按键S2显示上一个通道温度,按键S3巡

30、回显示各路温度。 图3-7 键盘电路3.5 报警电路设计在系统温度达到上下限温度限制是有提醒信号产生可选择扬声器来实现这一功能。扬声器工作时需要10mA 电流, 设计时考虑了相应的驱动及控制电路。同时设置LED闪动,从而实现声光报警的功能!这里使用放大器和软件来驱动扬声器。扬声器的LS一端连接单片机的P2.3,LED连接P2.4!如图3-8。 图3-8 报警电路3.6 显示电路设计3.6.1 引脚功能显示模块采用通用1602液晶显示,单5V电源工作电压,有简单、易安装、低功耗、长寿命、高可靠的特点,他还内置192中字符,具有64个字节的自定义字符RAM,可定义8个5*8点字符或四个5*11点阵

31、字符,并有半透正显等显示方式,还支持4位或8位并口通讯方式。内部结构如图3-9图 3-9 液晶显示内部结构1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。接口定义如表3-9表3-9 接口定义引脚符号功能说明1VSS一般接地2VDD接电源(+5v)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度)4RSRS为寄存器选择,高电平1时选择数据寄存器,低电平0时选择指令寄存器5R/WR/W为读写信号线,高电平1时进行读操作,低电平0时进行写操作6EE(EN)端为使能

32、端。下降沿使能7DB0低4位三态,双向数据总线 0位(最低位)8DB1低4位三态,双向数据总线 1位9DB2低4位三态,双向数据总线 2位10DB3低4位三态,双向数据总线 3位11DB4高4位三态,双向数据总线 4位12DB5高4位三态,双向数据总线 5位13DB6高4位三态,双向数据总线 6位14DB7高4位三态,双向数据总线 7位(最高位,也是busy flag)15BLA背光电源正极16BLK背光电源负极3.6.2 控制指令如表3-10,1602液晶模块内部的控制器共有11条控制指令:指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光

33、标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器RAM地址设置指

34、令8:DDRAM地址设置指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据指令11:读数据表3-10 指令指 令RSR/WD7D6D5D4D3D2D1D01 清显示00000000012 光标返回000000001*3 置输入模式00000001I/DS4 显示开/光控制0000001DCB5 光标或字符移位000001S/CR/L*6 置功能00001DLNF*7 置字符发生存储器地址0000字符发生存储器地址(AGG)8 置数据存储器地址001显示数据存储器地址(ADD)9 读忙标志或地址01BF计数器地址(AC

35、)10 写数到CGRAM或DDRAM10要写的数11 从CGRAM或DDRAM读数11读出的数据3.6.3 LCD与单片机接口LCD液晶显示的D0-D7引脚分别连接单片机P0的各个引脚,RS、RW、E分别连接单片机的P2.0、P2.1、P2.2。如图3-9 图 3-10 显示接口电路3.7 串口通讯电路AT89C52有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,如图3-10,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换。图3-11 串口电路RS-23

36、2是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBps。RS-232协议以-5V15V表示逻辑1;以+5V15V 表示逻辑0。 我们是用MAX232芯片将RS232电平转换为TTL电平的。RS-232通信距离有限,最大通信距离只有15m。若需要更大的通信距离,可以使用RS-485,RS-485最大的通信距离约为1219M,最大传输速率为10Mb/S,传输速率与传输距离成反比,在100Kb/S的传输速率下,才可以达到最大的通信距离,

37、如果需传输更长的距离,需要加485中继器。因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。4程序设计系统软件的功能分为两类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、显示、通讯等。主程序调用了4个子程序,分别是液晶显示程序、键盘扫描以及按键处理程序、温度测试程序、中断控制程序、单片机与PC机串口通讯程序。4.1 DS18B20程序流程设计DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但较小的硬件开销需要相对复杂的软件进行

38、补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。电子爱好者社区 Kh:Df(设计出如下程序流程:图4-1,图4-2分别是写命令子程序和DS18B20复位子程序流程图图4-1 写命令子程序流程图 图4-2 DS18B20复位子程序流程图 图4-3,图4-4分别是一个DS18B20和多个DS18B20读温度程序。在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS182

39、0接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。电子爱好者社区G/J l图4-3 DS18B20读温度子程序流程图初始化DS18B20匹配ROM命令发一个DS18B20序列号等待1us读当前DS18B20温度开始所有DS18B20都访问完毕?存在一个DS18B20?发搜索ROM命令读并存储当前DS18B20序列号跳过ROM命令初始化DS18B20温度转换命令初始化DS18B20YNYN初始化DS18B20匹配ROM命令发一个DS18B20序列号等待1ms转换结束读当前DS18B20温度开始所有DS18B

40、20都访问完毕?存在一个DS18B20?发搜索ROM命令读并存储当前DS18B20序列号跳过ROM命令初始化DS18B20初始化DS18B20YNYN图4-4 DS18B20读温度总程序4.2 LCD显示程序流程设计开 始显示模式设置,显示关闭,显示清屏,显示光标移动设置,显示开及光标设置读取温度状态字设置DDRAM写显示数据显示数据显示完毕?N图4-5 通用液晶显示流程图5系统仿真5.1 Proteus仿真简介Proteus是英国Labcenter electronics公司研发的EDA设计软件, 是一个基于ProSPICE混合模型仿真器的,完整的嵌入式系统软、硬件设计仿真平台。 Prote

41、us不仅可以做数字电路、模拟电路、数模混合电路的仿真,还可进行多种CPU的仿真,涵盖了51、PIC、AVR、HC11、ARM等处理器,真正实现了在计算机上从原理设计、电路分析、系统仿真、测试到PCB板完整的电子设计,实现了从概念到产品的全过程。5.2 原理图绘制(1)新建文件:打开PROTEUS, 点FILE,在弹出的下拉菜单中选择NEW DESIGN,在弹出的图幅选择对话框中选Landscape A4。(2)元器件选取:按设计要求,在对象选择窗口中点P,弹出PICK DEVICES对话框,在KEYWORDS中填写要选择的元器件,然后在右边对话框中选中要选的元器件,则元器件列在对象选择的窗口中

42、。本设计所需选用的元器件如下, AT89C51:单片机LCD1602:图形液晶RES、RESPACK-8:电阻、上拉电阻CRYSTAL:晶振CAP、CAP-ELEC:电容、电解电容SOUNDER:扬声器DS18B20:数字温度传感器BUTTON:按键 LED:闪烁灯(3)放置元器件、电源和地、连线,得到如图5-1所示的系统电路图,最后进行电气检测。5.3 仿真原理图 图5-1 仿真原理图5.3 系统仿真系统运行之后,DS18B20开始对环境进行测量,将环境的实际的温度显示在液晶屏上,同时液晶显示屏还显示环境温度的温度值和状态。在PROTEUS仿真过程之中,可以通过调节DS18B20的面板上的“

43、”或者“” ,改变DS18B20测量的实际温度。温度测量范围为-55128,能巡回显示八路温度值,能够达到设计的要求。以下各图是八路温度仿真示意图。 通路1实际温度和效果图 图5-2通路1实际温度 图5-3 通路2显示图 通路2实际温度和效果图图5-4通路2实际温度 图5-5 通路2显示图通路3实际温度和效果图图5-6通路3实际温度 图5-7通路3显示图5 通路4实际温度和效果图图5-8 通路4实际温度 图5-9通路4显示图6 通路5实际温度和效果图图5-10 通路5实际温度 图5-11通路5显示图7 通路6实际温度和效果图图5-12 通路6实际温度 图5-13通路6显示图8 通路7实际温度和

44、效果图图5-14 通路7实际温度 图5-15通路7显示图9 通路8实际温度和效果图图5-16 通路8实际温度 图5-17 通路8显示图6 总结经过几个月的不断学习和努力,在陶老师的谆谆教导下,基于单片机和DS18B20的巡回温度检测系统的毕业设计即将结束,基本完成了老师所规定的各项工作任务。通过这次毕业设计,我学了不少的知识,熟练地使用DXP,PROTEUS仿真软件和KEIL开发工具,我更加深刻地认识到只有将书本与实践相结合,才会有真正的收获,才能巩固自已的所学,认识到自己的不足。参考文献:1 李朝青.单片机原理及接口技术(第三版)M北京:北京航空航天大学出版社,2005.9.2 陶桓齐.模拟

45、电子技术M.武汉:华中科技大学出版社,2007.3 邱关源.电路M.北京:高等教育出版社,1999.4 程佩青.数字信号处理M.北京:清华大学出版社,2007.2.5 丁镇生.传感器及传感技术应用M.北京:电子工业出版社,1998.6 周澜景.基于PROTEUS的电路与单片机系统设计与仿真M. 北京:北京航空航天大学出版社,2006.7 周澜景.基于PROTEUS的电路与单片机系统设计与仿真M. 北京:北京航空航天大学出版社,2006.8 赵文博,单片机语言C51程序设计,人民邮电出版社,2005,10;9 张道德,单片机接口技术(C51版),中国水利水电出版社,2007,3;10 谭浩强,C

46、语言程序设计,清华大学出版社,2006,4附录:部分程序如下#include "1602.H"#include "DS18B20.H"TEMPDATA m_TempData;/数据处理子程序void DataProcess()ReadTemperature(&m_TempData);if (m_TempData.btNegative) DisplayOne(1, 6, '-', 0);/ttttttttttttttelse DisplayOne(1, 6, m_TempData.btThird, 1);/ttttttttttttt

47、tttDisplayOne(1, 7, m_TempData.btSecond, 1);tttttttttttttttDisplayOne(1, 8, m_TempData.btFirst, 1);/tttttttttttttttttDisplayOne(1, 10, m_TempData.btDecimal, 1);/ttttttttttttvoid main()/GetROMSequence();Clear();Init();DisplayString(0, 0, " Temperature");DisplayOne(1, 9, '.', 0);whil

48、e (1) DataProcess();/*保存为DS18B20.h*/#ifndef _DS18B20_H_#define _DS18B20_H_/ROM操作命令#define READ_ROM 0x33 /读ROM #define SKIP_ROM 0xCC /跳过ROM #define MATCH_ROM 0x55 /匹配ROM #define SEARCH_ROM 0xF0 /搜索ROM #define ALARM_SEARCH 0xEC /告警搜索/存储器操作命令#define ANEW_MOVE 0xB8 /重新调出E2数据#define READ_POWER 0xB4 /读电源#

49、define TEMP_SWITCH 0x44 /启动温度变换 #define READ_MEMORY 0xBE /读暂存存储器#define COPY_MEMORY 0x48 /复制暂存存储器#define WRITE_MEMORY 0x4E /写暂存存储器/数据存储结构typedef struct tagTempDataunsigned char btThird; /百位数据ttttttttttttttunsigned char btSecond;/十位数据tttttttttunsigned char btFirst;/个位数据tttttttttttunsigned char btDeci

50、mal;/小数点后一位数据unsigned char btNegative;/是否为负数tttttttttttttttTEMPDATA;/芯片初始化 void Initialization();/头文件包含#include <AT89X51.H>#include <Intrins.h>#include "DS18B20.H"/引脚定义sbit DQ = P27;/数据线端口/DS18B20序列号,通过调用GetROMSequence()函数在P1口读出(读8次)const unsigned char code ROMData18 = 0x28, 0x

51、33, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xD7;/U1const unsigned char code ROMData28 = 0x28, 0x30, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x8E;/U2const unsigned char code ROMData38 = 0x28, 0x31, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xB9;/U3const unsigned char code ROMData48 = 0x28, 0x32, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xE0;/U4const unsigned char code ROMData58 = 0x28, 0x34, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x52;/U5const uns

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论