18B20温度传感器_课程设计报告

目  录

一.设计任务

二.方案论证

三.硬件设计

3.1   DS18B20简介 AT89C51型单片机简介

3.2   总电路的设计图   

四. 软件设计

3.1    主程序框图

3.2    初始化子程序DS18B20的主程序

3.3    调试及运行

五. 课程设计总结

一、设计任务

1. 熟悉电子系统开发的思路和步骤;

2. 熟悉Keil C开发环境,并对18B20、LED数码管、4*4键盘等外围模块的驱动进行编写调试,学会基本的驱动开发思路,并通过调试学会定位问题的能力;

3. 分别使用汇编语言和C语言编写调试整个电子系统的控制程序,学会电子系统的软件开发思路;

4. 通过protel学会如何绘制原理图及PCB版图,从而完成整个电子系统的软硬件开发;

二、方案论证

A、分析本次设计任务可知:

1.本设计要利用DS18B20测量温度,需要用89C51单片机控制DS18B20测量温度,并将DS18B20测得温度读取到单片机中来。

2. 本设计要用LED显示温度,可用五个共阳极LED,采用动态扫描法显示读取到单片机中的温度。

         显示格式举例如下:(1)温度为正值————101.1 、99.2   第四个LED总是显示点号。

                          (2)温度为负值————  -23.1   第一个总是显示一横,第四个总是显示点号。

 B、经以上分析可得:

可将本设计功能分为两大模块:1、DS18B20设置模块

2、测温电路及其程序

                                       3、显示电路及其程序

3. 在硬件电路上还要加上必要的基础电路:

(1)时钟电路

              本次设计采用时钟频率为:12MHZ

(2)按键测温电路及其程序

按一次按钮即测一次温度并将测得的温度显示出来)

C、系统总体方案

系统原理框图: 

由图可知该测量系统由DS18B20组成的测量电路和单片机控制电路组成。系统通过DS18B20采集到的数据,然后通过单片机微控制芯片经过数据处理,最后通过数码管实时显示所测空气的温度。

用单个DS18B20采集温度采集温度并将其显示在LED灯上,温度只需显示整数,小数位位不做要求;设置报警上下限,当按下键盘上的SETUP键时,DS18B20不工作,从键盘上输入温度的上下限值,前边的两个LED显示器显示温度上线,后边的两个LED显示器显示温度下限,当采集的温度越过上限和低于下限时,P0.4口的发光二极管灯亮,表示报警;温度上下限的设置要在30S内完成,如果没完成,温度传感器自行工作,设置完成后,按下Enter键DS18B20开始采集并显示温度。

总体思路

对于单个DS18B20的温度采集,首先要对单片机的各个管脚进行定义,对于我们自己做的开发板,我们已经定义P0.6口连接DS18B20进行单个温度采集,用P0.4口接发光二极管显示越限报警,用P0.5口显示DS18B20复位成功。按原理图编写程序,程序的编写的好坏就关系到此次课程设计的成败。

三、硬件设计

DS18B20简介 AT89C51型单片机简介

3.1              DS18B20 的主要特征:

           1.全数字温度转换及输出。

           2.先进的单总线数据通信。

           3.最高 12 位分辨率,精度可达土 0.5 摄氏度。

           4.12 位分辨率时的最大工作周期为 750 毫秒。

           5.可选择寄生工作方式。

           6.检测温度范围为–55°C ~+125°C ( –67°F ~+257°F)

           7.内置EEPROM,限温报警功能。

           8.64 位光刻 ROM,内置产品序列号,方便多机挂接。

           9.多样封装形式,适应不同硬件系统。

DS18B20 工作原理及应用:

      DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解 18B20 的内部存储器资源。18B20 共有三种形态的存储器资源,它们分别是ROM 只读存储器,用于存放 DS18B20ID 编码,其前8 位是单线系列编码(DS18B20 的编码是19H),后面48 位是芯片唯一的序列号,最后8 位是以上 56 的位的CRC 码(冗余校验)。数据在出产时设置不由用户更改。DS18B20 共64 位 ROM。RAM  数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20 共9 个字节 RAM,每个字节为8 位。第 1、2 个字节是温度转换后的数据值信息,第3、4 个字节是用户 EEPROM (常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5 个字节则是用户第3 个 EEPROM 的镜像。第6、7、8 个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9 个字节为前8 个字节的CRC 码。EEPROM  非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20 共3 位EEPROM,并在 RAM 都存在镜像,以方便用户操作。

控制器对 18B20 操作流程:

      1.复位:首先我们必须对DS18B20 芯片进行复位,复位就是由控制器(单片机)给 DS18B20 单总线至少480uS 的低电平信号。当18B20 接到此复位信号后则会在 15~60uS 后回发一个芯片的存在脉冲。

      2.存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在 15~60uS 后接收存在脉冲,存在脉冲为一个60~240uS 的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与 18B20 间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。

3.控制器发送 ROM 指令

4.控制器发送存储器操作指令:在 ROM 指令发送给 18B20 之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8 位,共 6 条,存储器操作指令分别是写 RAM 数据、读RAM 数据、将 RAM 数据复制到 EEPROM、温度转换、将EEPROM 中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令 18B20 作什么样的工作,是芯片控制的关键。

       5.执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待 18B20 执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20 的读写时序来操作。

AT89C51型单片机简介

这次设计的单片机测温系统我们使用了AT89C51型号的单片机,我们使用该单片机理由有以下几条:

01.  与MCS-51单片机完全兼容:指令兼容,引脚兼容,因此易学;

02.  超强抗干扰能力:电源、I/O口、时钟均有抗干扰措施,是工程应用的首选:

① 高抗静电(ESD保护);

② 轻松过2KV/4KV快速脉冲干扰(EFT测试);

03. 高可靠性,工程应用的首选:

① 宽电压范围,不怕电源波动:5V产品3.4V~6V,3V产品1.9V~4V;

② 宽温度范围:-40 oC~85 oC;

04. 低电磁辐射:

① 可禁止ALE输出,降低辐射;

② 可选6时钟/机器周期,降低晶振频率,降低辐射;

③ 单片机时钟振荡器增益可设为1/2;

05. 超低功耗:

① 掉电模式典型功耗:≤01Aμ,可由外中断唤醒;

② 空闲模式典型功耗:2mA;

③ 正常工作典型功耗:4mA~7mA;

06. 在系统可编程,无需编程器,无需仿真器,节约投资;

07. 强驱动能力:无论拉电流还是灌电流,均优于MCS-51单片机;

08.高速度:0~80MHz,最高达90 MHz。

09.内部资源更丰富。与MCS-51单片机相比,增加了:

① T2定时/计数器;

② 内部数据存储器RAM增加了1~8倍,空间大小随型号不同而不同;

③ 大部分产品自带E2PROM,空间大小随型号不同而不同;

④ 部分产品自带模数转换器A/D和PWM;

⑤ 部分产品有P4口,P5口;

⑥部分产品有双串口;

但是,用这么多特点的同时,我们在设计的时候还是遇到一些比较值得注意的地方:

该单片机实用了12M晶振,和我们学的有点不一样,同时,里面的分频也不一样,所以在计算延时等时间问题上多加注意;

3.2   总电路的设计图

1.单片机的开发板原理图

四.软件设计

3.1    主程序框图

3.2    各模块公用子程序:

初始化子程序、读字节子程序、写子程序

   初始化子程序:

(1)       总线复位时序:总线拉低并保持480-960us,然后拉高电平,在480-960us内等待18B20响应(拉成低电平,则复位成功)。

;总线复位和等待应答信号

RESET:  PUSH B

WAIT:   CLR DQ

        MOV B,#250

        DJNZ B,$  ;保持500us低电平

        SETB DQ

        MOV B,#30

        DJNZ B,$  ;等待60us

        MOV R3,#200

    A22:JNB DQ,A11

        DJNZ R3,A22

        CLR F0

        SJMP A23

   A11: SETB F0

        MOV R3,#100

        DJNZ R3,$

   A23: POP B

   RET

(2)       发命令(写数据位)

写0:置总线低电平并保持15us,然后保持15-25us,等待18B20对电平采样,最后拉高电平即完成写0的操作。

写1:置总线低电平并保持15us,然后拉高电平15-25us,等待18B20对电平采样,完成写1的操作。

;读一位数据放入进位位中

DQ BIT P0.6

 READBIT:PUSH B

         SETB DQ

         CLR DQ;低电平至少1US

         NOP

         NOP   

         SETB DQ;高电平至少1us

         MOV B,#30

         NOP

         NOP

         MOV C,DQ

         DJNZ B,$;延时45us

         POP B

         RET

;读一字节数据

 READBYTE:PUSH B

          MOV B,#8

 LOOP:    LCALL READBIT

          RRC A

          DJNZ B,LOOP

          POP B

          RET

读8字节数据,存放于40H开始的单元

  READ:PUSH B

       MOV R1,#ST

       MOV B,#8

  ST:  LCALL READBYTE

       MOV @R1,A

       INC R1

       DJNZ B,ST

       POP B

       RET

(3)  读数据位时序:置总线低电平并保持至少1us,然后拉高电平至少1us,在15us内采样总线电平或得数据,延时45us完成读位数据操作。

写一字;

WETBYTE:PUSH B

       MOV B,#8

L2:    CLR DQ

       MOV R3,#7

       DJNZ R3,$;低电平15us

       MOV R3,#20

       RRC A

       JNC ZERO

      

       SETB DQ

       DJNZ R3,$;置高电平45us等待18B20采集

       SJMP L1

  ZERO:CLR DQ

       MOV R3,#20

       DJNZ R3,$;写0并持续45us等待18B20采集

    L1:SETB DQ

       NOP

       DJNZ B,L2

       POP B

       RET

18b20的主程序:

试验中,只用到一个18b20,所以此处编写总线上只有一个18b20的主程序。

编写主程序前首先要内存声明:

;******************************************************************************

           TEMPER_L  EQU   40H     ;用于保存读出温度的低8位

           TEMPER_H  EQU   41H     ;用于保存读出温度的高8位

           TMROMVH   EQU   42H     ;报警上限

           TMROMVL   EQU   43H     ;报警下限

           FLAG1     EQU   38H     ;是否检测到DS18B20标志位

           TEMPL     EQU   30H     ;用于保存读出温度的低8位

           TEMPH     EQU   31H     ;用于保存读出温度的高8位

           TEMPHC    EQU   32H     ;温度转换寄存器低8位

           TEMPLC    EQU   33H     ;温度转换寄存器高8位

           BUF2      EQU   35H     ;显示缓冲寄存器个数位

           BUF3      EQU   36H     ;显示缓冲寄存器十数位

           BUF4      EQU   37H     ;显示缓冲寄存器百数位

           T10MS     EQU   29H     ;

           TMSETVL   EQU   28H     ;温度下限设定值

           TMSETVH   EQU   27H     ;温度上限设定值

           DISL_VL   EQU   26H     ;报警下限个位数存放内存位置

           DISL_VH   EQU   25H     ;报警下限十位数存放内存位置

           DISH_VL   EQU   24H     ;报警上限个位数存放内存位置

           DISH_VH   EQU   23H     ;报警上限十位数存放内存位置

           BT_VL     EQU   22H     ;比较当前显示数据与设定数据寄存器

;**********************************************

           TEMPDIN   BIT   P0.6;数据脚定义

;**********************************************

; BIT FLAG DEFINATION

;**********************************************

          TEMPCONV   EQU   00H     ;

          TIME1SOK   EQU   01H     ;

          TEMPONEOK  EQU   02H     ;

;**********************************************

内存声明完了之后,就是主程序,主程序会一直调用子程序来显示温度,往复循环,从而实现温度的实时采集,实时的现实在LED显示器上。

3.3      调试及运行

     此次单片机试验用汇编语言做为编程语言,在manley环境下编译调试,而hex程序则使用SLISP_V1709驱动装置下进行运行。

(1)  编译调试:在manley环境下进行汇编语言的编译,编译完成后进行调试。

(2)  运行:安装驱动环境SLISP_V1709,将开发板的输入口与电脑输出口用下载线连接,运行驱动环境,擦除原有的程序,将现在所要运行的程序下载到开发板,看LED显示器是否显示当前温度,如不显示,则再次下载并装入,如显示则说明下载成功。

(3)  检验:按下键盘上的SETUP键时,DS18B20不工作,从键盘上输入温度的上下限数值,前两个LED显示器显示温度上限,后两个LED显示器显示温度下限,当采集的温度越过上限或低于下限时,P0.4口的发光二极管灯亮,表示处于报警状态;温度上下限的设置要在30S内完成,如果没完成,则温度传感器自行工作。设置完成后,按下Enter键,DS18B20开始采集并显示温度。如完成上述要求,则说明此次实验成功,如试验不成功说明需要对程序进行编译调试。

五. 课程设计总结

这次课程设计中,我们运用到了以前所学的专业课知识,如:protel, 单片机理论,汇编语言,模拟和数字电路知识等.不仅加深了对单片机理论的理解,以及相关软件的应用,并将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。同时在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次实践使我更深刻的体会到了理论联系实际的重要性,在今后的学习工作中会更加的注重实际。最后,在张明海,徐宁老师那里我学得到很多实用的知识,再次我表示感谢!并且对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

主要参考文献:

[1]赵娜.赵刚.于珍珠.郭守清 基于51单片机的温度测量系统 [期刊论文] -微计算机信息2007(2)

[2]李广弟.   单片机基础(第3版). 北京航空航天大学出版社

[3] 何立民. MCS-51系列单片机应用系统设计.北京:北京航空航天大学出版社

[4]刘鸣等. 温度传感器DS18B20 的特性及程序设计方法. 电测与仪表2001 年第10 期

[5]杨志峰. LED 显示驱动器MAX7219与MCS- 51单片机接口及应用. 山西机械2001 年增刊

[6]肖洪兵. 基于单片机的P ID 温度控制系统.

传感器与测量技术课程设计

设计题目  DS18B20温度传感器     

姓    名          王     龙     

学    号        1009101069     

专    业         自 动 化       

班    级           1003         

指导教师         何 景 峰       

      设计时间     20##年12月9日    

相关推荐