高温超导实验报告

低温温度计的标定与高温超导体温度特性的测量

摘要

本实验对高温超导体的超导转变曲线进行了测量,测量得到其起始转变温度为107.26K,临界温度为92.63K,零电阻温度为91.02K;进行了低温温度计的标定,证明了硅二极管温度计和温差电动势在一定范围内随温度变化的线性关系;通过高温超导的磁悬浮演示测量了解高温超导体的两个独有的特性:混合态效应和完全抗磁性,并测量得出磁悬浮力与超导体-磁体间距的关系曲线。

关键词 高温超导体  超导临界参数 零电阻现象 完全抗磁性  磁通俘获

1.引言

    1911年,荷兰物理学家卡末林-昂纳斯(H.K.Onnes,1853—1926)用液氦冷却水银线并通以几毫安的电流,在测量其端电压时发现,当温度稍低于液氦的正常沸点时,水银线的电阻突然跌落到零,这就是所谓的零电阻现象或超导电现象。自从低温超导体发现以来,科学家们对超导电性现象(微观机制)和超导技术以及超导材料进行了大量的研究。

    在超导技术开发时代,世界各国科学家相机取得了突破性进展,研制出临界温度高于液氮温度的氧化物超导体,又称为高温超导体。超导研究领域的系列最新进展,为超导技术在个方面的应用开辟了十分广阔的前景。超导电性的应用十分广泛,例如超导磁悬浮列车、超导重力仪、超导计算机、超导微波器件等,还可以用于计量标准。

本实验通过在低温条件下测量高温超导体的电阻温度曲线和低温温度计的比对,了解高临界温度超导材料的基本特性及测试方法,了解金属和半导体的电阻随温度的变化及温差电效应,掌握低温物理实验的低温的获得、控制和测量方法。

2.原理

2.1理论

2.1.1超导体的基本特性

   完全导电性和完全抗磁性是超导电性的两个最基本的性质。

2.1.1.1零点阻现象

当把某种金属或合金冷却到某一确定的温度以下时,其直流电阻发生剧变,突然变为零,这种现象称为物质的超导性,这种物质就称为超导体,温度称为临界温度。通常把降温过程中电阻温度曲线开始从直线偏离处的温度称为起始转变温度,把临界温度定义为待测样品电阻从起始转变处下降到一半是对应的温度,把电阻变化10%到90%所对应的温度间隔定义为转变宽度,电阻刚刚完全降为零的温度称为完全转变温度计零电阻温度的大小反映了材料品质的好坏,均匀单相的样品较窄,反之较宽。超导体由正常态向超导态的过渡是在一个有限的温度间隔里完成的,电阻温度变化关系如图1所示。


图1  超导体的电阻转变曲线                        图2完全抗磁性

2.1.1.2  完全抗磁性

完全抗磁性是指磁场中的金属处于超导状态时,无论有没有外加磁场,超导体体内的磁感应强度为零的现象。由于外磁场的磁通无法进入超导体体内,如果是磁铁与超导体之间,就会产生斥力,斥力可以克服重力,从而产生悬浮现象。这一现象是荷兰科学家迈斯纳发现的,因此又称为迈斯纳效应。

2.1.1.3 临界磁场

把一个磁场加到超导体上后,一定数量的磁场能量用来建立屏蔽电流的磁场以抵消超导体的内部磁场。当磁场达到某一特定值时,它在能量上更有利于使样品返回正常态,允许磁场穿透,即破坏了超导电性。由于存在杂质和应力,超导体不同处存在不同,因此转变将在一个很宽的范围内完成,通常我们把实验发现存


在两类可区分的磁行为, 关系如图3和图4所示。对于第Ⅱ类超导体,当 时,磁场进入超导体,是超导体和正常态之间过渡的混合态。

文本框: 图4第II类超导体临界磁场随温度的变化文本框: 图3 第I类超导体临界磁场随温度的变化


2.1.2电阻温度特性

2.1.2.1纯金属材料的电阻温度特性

纯金属晶体的电阻产生与晶体的电子被晶格本身和晶格中的缺陷的热振动所散射,师姐材料中存在的杂质和缺陷也将破坏周期性势场,引起电子的散射。根据金属导电理论的马德森定则,金属中总电阻表示为:

                         ,                                (1)

表示晶格热振动对电子散射引起的电阻率,与温度有关,电阻与温度的关系决定与晶格振动散射。根据金属能带理论计算表明:在高温区,当时,与T成正比;在低温区,当时,与成正比,其中为德拜温度。表示杂质和缺陷对电子的散射所引起的电阻率与温度无关,与杂质和缺陷的密度成正比,称为剩余电阻率。铂电阻温度关系如图5所示,在液氮正常沸点到室温温度范围内,铂电阻与温度具有良好的线性关系。

 


 图5 铂电阻温度关系              图6 半导体锗电阻温度关系

2.1.2.2半导体材料的电阻温度特性

文本框: 图7 二极管PN结的正向电压温度关系
对杂质半导体,其载流子有杂志电离与本征激发产生,且存在电离杂质散射和声子散射两种机制,故其温度关系较复杂,半导体锗电阻温度关系如图6所示。半导体在一定温度范围内具有负的电阻温度系数,根据半导体低温区电阻温度关系,用半导体材料做成的温度计,可弥补金属温度计在低温区电阻值和灵敏度降低的缺陷。如图7,硅和砷化镓二极管PN结的正向电压随温度的降低而升高,在相当宽的温度范围内有较好的线性关系和较高的灵敏度。

2.2实验

本实验的仪器有:低温恒温器、不锈钢杜瓦容器、BW2型高温超导材料特性测试装置、PZ158型直流数字电压表、高温超导磁悬浮演示装置。

2.2.1低温恒温器和不锈钢杜瓦容器

低温温度的获得和控制主要通过低温恒温器和不锈钢杜瓦容器,实验过程中样品温度计降温速率的控制是靠在测量过程中改变低温恒温器在杜瓦容器内的位置来实现。实验过程中可用可调式定点液面指示计来简便而精确地使液氮面维持在紫铜圆筒底和下挡板之间距离的1/2处。

2.4电测量原理及测量设备

电测量部分应用了“四引线测量法”测量待测样品的电阻。由于超导样品的电阻远远小于测量引线的阻值,一方面通过四引线测量法可以减小甚至排除了引线和接触电阻对测量的影响;另一方面,测量采用“电压表内接法”减小引线的电阻对待测电阻的影响。测量电流由恒流源提供,其大小可有标准电阻上的电压的测量值得出,如果测量得出了待测样品上的电压,则待测样品的电阻

3.实验内容

3.1室温测量

测量出室温下铂电阻温度计、硅二极管温度计和超导样品的电流和电压数据,通过测量出标准电阻的电压测量出室温下恒流源的电流值。

3.2低温温度计的比对与超导转变曲线的测量

将液氮灌入杜瓦容器瓶后,当紫铜恒温块和温度开始降低时,将紫铜恒温块缓慢向下移动,观察液面计的读数,当液面计的读数发生突变迅速降为零附近时,则停止移动恒温块。每隔一定时间测量一次各种温度计及超导样品的测温参量,进行温度计的比对,并测量超导体的电阻随铂电阻温度计所给出的温度变化。由于液氮会挥发,因此注意在每次测量间隔时间观察液面计的读数,每次将拉杆向下移动少许,使得液面计读数为零。

4.      实验结果和分析

4.1超导转变曲线的测量

   根据实验数据作图得到超导转变曲线如下图所示:

图1 超导体的电阻转变曲线

根据上图可得,当温度较高(大于120K)时,超导体的电阻与温度成线性关系,当温度到达107.26K时可发现电阻随温度的减小而急剧下降,当温度到达91.02K时超导体的电阻为零。可以得到起始转变温度为107.26K,临界温度为92.63K,零电阻温度为91.02K,转变宽度为     K。

4.2低温温度计的比对

4.2.1硅二极管温度计的正向电压随温度的关系

根据实验数据作图得到硅二极管温度计的正向电压随温度的关系如下图所示:

图2硅二极管正向电压随温度的变化关系

根据上图可以得到,硅二极管的正向电压随温度的减小而增大,在(90K~210K)的范围内正向电压与温度成线性关系,电压与温度的关系式U=-0.002T+1.286.

4.2.2温差电偶电动势随温度的关系

根据实验数据作图得到温差电偶电动势随温度的关系如下图所示:

根据上图可以得到,温差电偶电动势随温度的减小而减小,在(90K~210K)的范围内温差电偶电动势与温度成线性关系,电动势与温度的关系式U=0.020T-1.667.

 

第二篇:数字温度计实验报告

数字温度计

一.设计任务书

设计一个可测量一定温度范围的数字温度计,并显示出当前温度。

二.设计要求

1.基本要求

(1)可测量温度范围:000.0℃~102.0℃

(2)温度分辨率:0.5℃

(3)测量相对误差:≤2%

(4)用数码管实时显示被测温度

2.提高要求

(1)实现多个温度点的实时测量

(2)实现温度的分档测量

(3)实现零下温度测量并显示

3.发挥部分

(1)实现摄氏、华氏、开氏的转换并显示

(2)温度过高报警

三.方案讨论及元件选择

1.方案概述

温度传感器DS18B20是单线通信,其输出值为数字信号,将其输出的温度数据送给单片机AT89C51处理,转换为温度动态显示。

2.分步讨论

(1)温度传感器

本方案采用DS18B20温度传感器,其特点为:

1)适应电压范围更宽,电压范围:3.0~5.5V,寄生电源方式下可由数据线供。

2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。

4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。

5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。

6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。

7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。

8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。

9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

其管脚图为:

数字温度计实验报告

DS18B20的引脚功能:

DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地

(2)动态显示

通过单片机与七段显示译码器HCF4511BE结合使用实现

HCF4511BE的简介如下:

HCF4511BE是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器。

HCF4511BE 是一片 CMOS BCD—锁存/7 段译码/驱动器,引脚排列如下图所示。其中a b c d 为 BCD 码输入,a为最低位。LT为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时, B1端应加高电平。另外 HCF4511BE有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。LE是锁存控制端,高电平时锁存,低电平时传输数据。a~g是 7 段输出,可驱动共阴LED数码管。另外,HCF4511BE显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观

HCF4511BE 引 脚 图 :

数字温度计实验报告

其功能介绍如下:

            BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。

            LT:3脚是测试输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮,显示“8”。它主要用来检测数码管是否损坏。

            LE:锁定控制端,当LE=0时,允许译码输出。 LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。

            A1、A2、A3、A4、为8421BCD码输入端。

            a、b、c、d、e、f、g:为译码输出端,输出为高电平1有效

HCF4511BE具有锁存功能,译码器的锁存电路由传输门和反相器组成,传输门的导通或截止由控制端LE的电平状态。 当LE为“0”电平导通,TG2截止;当LE为“1”电平时,TG1截止,TG2导通,此时有锁存作用。

(3)单片机I/O口资源

22H为显示方式存储区,23H为分辨率存储区,38H为DS18B20的标志位存储区

30H,31H摄氏缓冲区,32H,33H为华氏缓冲区,34H,35H为开氏缓冲区

60H-68H存放从DS18B20读入的9个字节数据

36H,37H,40H,41H,42H为中间数据暂存缓冲区

段选p1.0-p1.3,位选p1.4-p1.7,摄氏、华氏、开氏转换INT0,DS18B20数据脚p3.7

摄氏、华氏、开氏表示分别为p2.0、p2.1、p2.2,零下温度显示表示p2.3,报警p2.4

P0.7,P0.6为通道显示

四.设计原理

1.硬件部分

此次实验主要使用到的芯片有传感器DS18B20、单片机AT89C51、七段译码器CD4511、以及LED数码管。由于传感器DS18B20的输出即为数字信号,因此省去了很多工作,如电流\电压转换、A\D转换等。此次电路的基本原理为:传感器读入温度信息,发送给单片机处理,单片机处理后将信号发送给译码器进行译码后送给LED即显示出当前温度;温度过高时蜂鸣器实行报警。

各部分的连接关系见总图

2.软件部分

软件部分主要包括初始化程序,初始化DS18B20程序,读DS18B20程序,数据转摄氏温度BCD码程序,摄氏温度T转华氏温度F程序,摄氏温度T转开氏温度K程序,零下温度转换程序,报警程序,显示程序,中断程序,延时程序等,具体程序见附录。其中下列程序的编程方法做以下说明:

(1)数据转摄氏温度BCD码程序:由于要实现分辨率可调,所以编程时小数位的值是根据分辨率的值来对从DS18B20读入的四位小数位进行取舍,百位、十位和个位的数则由二进制数除以一百、一十和余数求得,这样即实现把从DS18B20读入的温度装换成代显示的摄氏温度BCD码。

(2)摄氏温度T转华氏温度F程序:华氏温度值F与摄氏温度T的转换关系为:

数字温度计实验报告

8位单片机要直接实现9除以5很困难,我们采用的方法是先将摄氏温度T乘以8(3次调用BCD_T)再除以10(右移4位),然后将所得的值加原值T,这样就实现了乘以9/5,再加32就完成了T与F的转换。

(3)摄氏温度T转开氏温度K程序:T与K的转换关系为:K=T+273.1,加法运算很容易实现。

(4)零下温度转换程序:单片机判断从DS18B20读入的数据的符号位为1时,执行零下温度转换程序,因为零下温度时,要对数据位的值求反加1求补码。

(5)报警程序:对所得的温度进行判断,当温度超过50°C时,即驱动蜂鸣器(P2.4口)。

(6)中断程序:INT1接分辨率显示方式选择按键,中断一次,RAM中分辨率显示方式存储区23H的值加1,为2时清零;INT0接摄氏、华氏、开氏显示方式设定按键,中断一次,RAM中显示方式存储区22H的值加1,为2时清零,00H表示显示摄氏,01H表示显示华氏,02H表示显示开氏。

五.调试

根据以上资料以及原理设计完硬件,编写好程序后,在不存在虚焊和连线错误的情况下,要完好的得出结果,还需经过长时间的调试。在此次调试中我们发现了如下问题:

1. 软件调试时,要用F7进行跟踪调试,并且对照各个寄存器和数据缓冲

区里面的值的变化来判断程序是否正确,是否实现功能,单步调试成功

之后,再全速执行,看看结果是否正确,如果全速执行正确的话就开始

硬件调试,不正确又要单步调试。所以开始单步调试时,一定要仔细,

以防“返工”。

2. DS18B20读取温度时,延时太长导致显示时“闪烁”,所以要适当减小延

时,使数码管显示时既不闪烁也不跳变得过快而影响读数。

3. 中断程序要合理延时以防抖动。

4. 编写程序时,要考虑全面,以防止改变显示方式、改变分辨率和切换通道时对数据产生影响。

5. 由于单片机独立工作时,位置高时提供电压电流不够驱动,所以在每个

独立位上可以独立接一个电阻然后接正电源,这样起到一个“辅助”的

作用,例如数码管和发光二极管都可以这样来实现正常显示,而不出现

微亮或模糊不清的情况。

六.优缺点总结

上述设计方案完全能实现基本要求、提高要求和自己的发挥部分。纵观全设计,我们的总结如下:

优点:

1.完成了全部基本要求和提高要求以及发挥部分;

2.本方案最大的亮点是实现零下温度的检测和显示;

3.实现摄氏、华氏、开氏的转换和显示;

4.实现过高温度报警;

5.实现不同分辨率显示;

当然,我们的设计中也存在不少问题,例如,由于单片机独立工作时,不能提供足够大的电压电流,导致报警用蜂鸣器和显示用发光二极管的声音和亮度不够。

七.设计心得体会

通过这三周的软、硬件设计,不仅加深了我们对理论知识的理解,培养了我们的实践动手能力,还锻炼了我们遇到问题解决问题的能力。从开始接到任务时的无从下手,到小组成员各司其职,搜集资料,学习新知识,相互讨论,分析交流,解决好问题的这个过程本身就是对我们的锻炼。此次设计课不同于一般理论课的地方就在于要求我们的并非只是单纯的懂得理论知识,更重要的是小组成员间的团结协作精神以及将理论知识用于实践的能力,由于在实际中,存在各种各样的因素,即使我们有着正确的原理图、软件程序等也不一定能得出正确的结果,正如调试时产生的问题一样,这就需要我们有耐心去分析各种可能存在因素以达到解决问题的最终目的,当然这其中肯定少不了老师的指导和帮助 ,在此,我们小组三人对刘海涛老师的帮助给以最衷心的感谢。

通过这次课程设计我们学到了很多东西,培养了我们的自学能力,接受新事物的心态,以及遇到问题时戒骄戒躁的良好心态和虚心向同学、老师请教自己不会的问题,更重要的是小组成员间的团结协作,相互鼓励,做好分配给自己的任务,用心做每一件事而非应付过关的消极态度。总之,此次设计课使我们受益匪浅。

八.附录

附录一:程序清单

;说明:*********************************************************

;22H为显示方式存储区,23H为分辨率存储区,38H为DS18B20的标志位存储区

;30H,31H摄氏缓冲区,32H,33H为华氏缓冲区,34H,35H为开氏缓冲区

;60H-68H存放从DS18B20读入的9个字节数据

;36H,37H,40H,41H,42H为中间数据暂存缓冲区

;段选p1.0-p1.3,位选p1.4-p1.7,摄氏、华氏、开氏转换INT0,DS18B20数据脚p3.7

;P0.5为0.1分辨率,P0.6为0.2分辨率,P0.7为0.5分辨率

;摄氏、华氏、开氏表示分别为p2.0、p2.1、p2.2,零下温度显示表示p2.3,报警p2.4

;P0.7,P0.6为通道显示

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

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP INT0

ORG 0013H

LJMP INT1

;主程序 *************************************************

ORG 0030H

MAIN: LCALL INIT ;调用初始化程序

LOP: LCALL INIT_18B20 ;调用复位DS18B20子程序

JNB 38H,LOP_2

LCALL GET_TEMPER ;调用读温度子程序

LCALL CONV ;调用采样数据转换BCD码子程序

LCALL WARNING ;调用温度超过量程报警子程序

CLR P2.7

SETB P2.6

LCALL DISPLAY ;调用显示子程序

LOP_2:LCALL INIT_18B20_2

JNB 38H,LOPP

LCALL GET_TEMPER_2

LCALL CONV

LCALL WARNING

SETB P2.7

CLR P2.6

LCALL DISPLAY

LOPP: AJMP LOP

;初始化程序*********************************************

INIT: SETB EA

SETB EX0

SETB IT0

SETB EX1

SETB IT1

MOV 22H,#00H

MOV 23H,#00H

MOV P1,#00H

CLR P2.0

CLR P2.1

CLR P2.2

CLR P2.3

CLR P2.4

CLR P0.5

CLR P0.6

CLR P0.7

RET

;复位DS18B20程序*********************************************

INIT_18B20:

SETB P3.7

NOP

CLR P3.7 ;主机发出延时540ms的复位低脉冲

MOV R0,#0CH

LCALL DELAY3

SETB P3.7 ;然后拉高数据线

NOP

NOP

MOV R0,#36

TSR2: JNB P3.7,TSR3 ;等待DS18B20回应

DJNZ R0,TSR2

LJMP TSR4 ;延时

TSR3: SETB 38H ;置标志位,表示DS18B20存在

LJMP TSR5

TSR4: CLR 38H ;清标志位,表示DS18B20不存在

LJMP TSR7

TSR5: MOV R0,#06BH

TSR6: DJNZ R0,TSR6 ;复位成功,时序要求延时一段时间

TSR7: SETB P3.7

RET

;------------------------------------------------------------

INIT_18B20_2:

SETB P3.6

NOP

CLR P3.6 ;主机发出延时540ms的复位低脉冲

MOV R0,#0CH

LCALL DELAY3

SETB P3.6 ;然后拉高数据线

NOP

NOP

MOV R0,#36

TSR2_2: JNB P3.6,TSR3_2 ;等待DS18B20回应 +

DJNZ R0,TSR2_2

LJMP TSR4_2 ;延时

TSR3_2: SETB 38H ;置标志位,表示DS18B20存在

LJMP TSR5_2

TSR4_2: CLR 38H ;清标志位,表示DS18B20不存在

LJMP TSR7_2

TSR5_2: MOV R0,#06BH

TSR6_2: DJNZ R0,TSR6_2 ;复位成功,时序要求延时一段时间

TSR7_2: SETB P3.6

RET

;-----------------------------------------------------

;读出转换后的温度值***************************************

GET_TEMPER:

SETB P3.7 ;定时入口

LCALL INIT_18B20 ;先复位DS18B20

JB 38H,TSS2 ;判断DS18B20是否存在,不存在则返回

RET

TSS2: MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE_18B20

MOV A,#44H ;发出温度转换命令

LCALL WRITE_18B20

MOV R0,#0FFH ;等待A/D转换结束,750ms

LCALL DELAY3

LCALL INIT_18B20 ;准备读温度前先复位

MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE_18B20

MOV A,#0BEH ;发出读温度命令

LCALL WRITE_18B20

LCALL READ_18B20 ;将读出的9个字节数据保存到60H-68H

RET

;--------------------------------------------------

GET_TEMPER_2:

SETB P3.6 ;定时入口

LCALL INIT_18B20_2 ;先复位DS18B20

JB 38H,TSS2_2 ;判断DS18B20是否存在,不存在则返回

RET

TSS2_2: MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE_18B20_2

MOV A,#44H ;发出温度转换命令

LCALL WRITE_18B20_2

MOV R0,#0FFH ;等待A/D转换结束,750ms

LCALL DELAY3

LCALL INIT_18B20_2 ;准备读温度前先复位

MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE_18B20_2

MOV A,#0BEH ;发出读温度命令

LCALL WRITE_18B20_2

LCALL READ_18B20_2 ;将读出的9个字节数据保存到60H-68H

RET

;--------------------------------------

;写DS18B20的子程序(具体时许要求)*********************

WRITE_18B20:

MOV R2,#8 ;一共8位数据

CLR C

WR1: CLR P3.7

MOV R3,#6

DJNZ R3,$

RRC A

MOV P3.7,C

MOV R3,#24

DJNZ R3,$

SETB P3.7

NOP

DJNZ R2,WR1

SETB P3.7

RET

;---------------------------------------------------

WRITE_18B20_2:

MOV R2,#8 ;一共8位数据

CLR C

WR1_2: CLR P3.6

MOV R3,#6

DJNZ R3,$

RRC A

MOV P3.6,C

MOV R3,#24

DJNZ R3,$

SETB P3.6

NOP

DJNZ R2,WR1_2

SETB P3.6

RET

;----------------------------------------------------

;读DS18B20的程序,从DS18B20中读出九个字节的数据

;存到60H-68H*****************************************

READ_18B20:

MOV R4,#9

MOV R1,#60H ;存入60H开始的9个单元中

RE00: MOV R2,#8

RE01: CLR C

SETB P3.7

NOP

NOP

CLR P3.7

NOP

NOP

NOP

SETB P3.7

MOV R3,#09

RE02: DJNZ R3,RE02

MOV C,P3.7

MOV R3,#23

RE03: DJNZ R3,RE03

RRC A

DJNZ R2,RE01

MOV @R1,A

INC R1

DJNZ R4,RE00

RET

;------------------------------------------------------

READ_18B20_2:

MOV R4,#9

MOV R1,#60H ;存入60H开始的9个单元中

RE00_2: MOV R2,#8

RE01_2: CLR C

SETB P3.6

NOP

NOP

CLR P3.6

NOP

NOP

NOP

SETB P3.6

MOV R3,#09

RE02_2: DJNZ R3,RE02_2

MOV C,P3.6

MOV R3,#23

RE03_2: DJNZ R3,RE03_2

RRC A

DJNZ R2,RE01_2

MOV @R1,A

INC R1

DJNZ R4,RE00_2

RET

;---------------------------------------------------------

;采样数据转换BCD码程序*********************************

CONV: MOV 41H,61H

MOV 40H,60H ;40H,41H为数据暂存缓冲区

MOV 42H,40H ;42H为数据暂存缓冲区

MOV A,61H

CLR C

RLC A

JC N0 ;符号位为1跳转,表示当前是零下温度

CLR P2.3 ;关闭正负温度指示灯

LCALL W_BCD

LCALL T_F

LCALL T_K

LJMP QUIT0

N0: SETB P2.3

CLR C

MOV A,40H

CPL A

ADD A,#01H

MOV 40H,A

MOV 42H,40H ;42H为数据暂存缓冲区

MOV A,41H

CPL A

ADDC A,#00H

MOV 41H,A

LCALL W_BCD

MOV 32H,#00H

MOV 33H,#00H

MOV 34H,#00H

MOV 35H,#00H

QUIT0:RET

;60H,61H中的温度值转换BCD码程序*************************

W_BCD:ANL 40H,#0F0H

MOV A,40H

SWAP A

MOV 40H,A

ANL 41H,#07H

MOV A,41H

SWAP A

ORL A,40H ;A中存放整数部分的二进制值

MOV 41H,A ;41H中存放整数部分的二进制值

MOV B,#100

DIV AB

SWAP A

MOV 37H,A

MOV A,B

MOV B,#10

DIV AB

ORL A,37H

MOV 37H,A ;37H中存放百位数和十位数BCD码

MOV A,B

SWAP A

MOV 36H,A ;36H中存放个位数BCD码

MOV A,23H

CJNE A,#00H,FF0

SETB P0.5

CLR P0.6

CLR P0.7

ANL 42H,#0EH ;42H为数据暂存缓冲区

MOV A,42H

CJNE A,#00H,L0

MOV A,#00H

LJMP L15

L0: CJNE A,#02H,L1

MOV A,#01H

LJMP L15

L1: CJNE A,#04H,L2

MOV A,#02H

LJMP L15

L2: CJNE A,#06H,L3

MOV A,#04H

LJMP L15

L3: CJNE A,#08H,L4

MOV A,#05H

LJMP L15

L4: CJNE A,#0AH,L5

MOV A,#06H

LJMP L15

L5: CJNE A,#0CH,L6

MOV A,#08H

LJMP L15

L6: MOV A,#09H

LJMP L15

FF0: CJNE A,#01H,FF1

CLR P0.5

SETB P0.6

CLR P0.7

ANL 42H,#0CH ;42H为数据暂存缓冲区

MOV A,42H

CJNE A,#00H,LL0

MOV A,#00H

LJMP L15

LL0: CJNE A,#04H,LL1

MOV A,#02H

LJMP L15

LL1: CJNE A,#08H,LL2

MOV A,#05H

LJMP L15

LL2: MOV A,#08H

LJMP L15

FF1: CLR P0.5

CLR P0.6

SETB P0.7

ANL 42H,#08H ;42H为数据暂存缓冲区

MOV A,42H

CJNE A,#00H,LLL0

MOV A,#00H

LJMP L15

LLL0: MOV A,#05H

L15: ORL A,36H

MOV 36H,A ;36H中存放个位数和小数位数BCD码

MOV 30H,36H

MOV 31H,37H ;送摄氏缓冲区

RET

;实现1次循环36H,37H中的数乘以2,入口36H,37H,出口36H,37H

;出口36H、37H ************************************************

BCD_T:

N1: MOV A,36H

ADD A,36H

DA A

MOV 36H,A

MOV A,37H

ADDC A,37H

DA A

MOV 37H,A

DJNZ R1,N1

RET

;摄氏转华氏:入口36H、37H, 出口32H、33H ****************

T_F: MOV R1,#03H

LCALL BCD_T ;乘8

MOV A,36H

ANL A,#0F0H

SWAP A

MOV 36H,A

MOV A,37H

ANL A,#0FH

SWAP A

ORL A,36H

MOV 36H,A

MOV A,37H

ANL A,#0F0H

SWAP A

MOV 37H,A ;实现除以10,即完成*0.8

MOV A,30H

ADD A,36H

DA A

MOV 32H,A

MOV A,31H

ADDC A,37H

DA A

MOV 33H,A ;实现再加原数,即完成*9\5

MOV A,32H

ADD A,#20H

DA A

MOV 32H,A

MOV A,33H

ADDC A,#03H

DA A

MOV 33H,A ;实现再加32,完成转换

RET

;摄氏转开氏:入口30H、31H, 出口34H、35H *****************

T_K: MOV A,30H

ADD A,#31H

DA A

MOV 34H,A

MOV A,31H

ADDC A,#27H

DA A

MOV 35H,A

RET

;超过量程报警程序****************************************

WARNING:

MOV A,31H

CLR C

SUBB A,#05H

JNC N4 ;超过50度报警

CLR P2.4

JMP QUIT1

N4: SETB P2.4

QUIT1:RET

;显示程序:*********************************************

DISPLAY:

PUSH PSW

SETB PSW.4 ;选择三号工作组

SETB PSW.3

MOV R6,#02H

STT: MOV R7,#0FFH

ST: MOV R1,#2

MOV R2,#00010000B

MOV A,22H

CJNE A,#00H,W0

MOV R0,#30H ;显示摄氏

SETB P2.0

CLR P2.1

CLR P2.2

JMP LP2

W0: CJNE A,#01H,W1

MOV R0,#32H ;显示华氏

CLR P2.0

SETB P2.1

CLR P2.2

JMP LP2

W1: MOV R0,#34H ;显示开氏

CLR P2.0

CLR P2.1

SETB P2.2

LP2: MOV A,@R0

ANL A,#0FH

ORL A,R2

MOV P1,A

LCALL DELAY2

MOV P1,#00H

MOV A,R2

RL A

MOV R2,A

MOV A,@R0

ANL A,#0F0H

SWAP A

ORL A,R2

MOV P1,A

LCALL DELAY2

MOV P1,#00H

MOV A,R2

RL A

MOV R2,A

INC R0

DJNZ R1,LP2

DJNZ R7,ST

DJNZ R6,STT

QUIT2:POP PSW

RET

;中断程序: 改变显示方式22H的值 ************************

INT0: PUSH A

CLR EX0

LCALL DELAY2

JB P3.2,QUIT3

MOV A,22H

CJNE A,#02H,N6

MOV A,#00H

JMP N7

N6: INC A

N7: MOV 22H,A

QUIT3:SETB EX0

POP A

RETI

;中断1程序: 改变显示方式22H的值 ************************

INT1: PUSH A

CLR EX1

LCALL DELAY2

JB P3.3,QUIT4

MOV A,23H

CJNE A,#02H,N8

MOV A,#00H

JMP N9

N8: INC A

N9: MOV 23H,A

QUIT4:SETB EX1

POP A

RETI

;延时程序:3ms*****************************************

DELAY3:PUSH A

PUSH PSW

ORL PSW,#18H ;选择三号工作组

DL4: MOV R1,#01H

DL3: MOV R2,#01H

DL2: NOP

NOP

DJNZ R2,DL2

DJNZ R1,DL3

DJNZ R0,DL4

POP PSW

POP A

RET

;延时程序:2ms*****************************************

DELAY2:PUSH A

PUSH PSW

ORL PSW,#18H ;选择三号工作组

MOV R4,#0FFH

DL1: MOV R5,#0FFH

DL0: DJNZ R5,DL0

POP PSW

POP A

RET

附录二:总电路图

数字温度计实验报告

附录三:元件清单

数字温度计实验报告

参考文献:

《 51系列单片机应用与实践教程》 周向红,北京航空航天大学出版社

《单片机原理与应用 》 陈建铎 ,科学出版社

《 单片机系统开发技术》 刘高锁 ,天津大学出版社

《单片机原理及应用技术 》 吴黎明, 科学出版社

《 基于DS18B20的数字温度计设计及应用》 胡天明,齐建家

相关推荐