基于单片机的数字温度计设计课程设计

2020-10-11 15:00:02下载本文作者:会员上传
简介:写写帮文库小编为你整理了这篇《基于单片机的数字温度计设计课程设计》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基于单片机的数字温度计设计课程设计》。

基于单片机的数字温度计设计

引言

随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用AT89C51型单片机作为主控制器件,DSl8B20作为测温传感器通过4位共阳极LED数码管串口传送数据,实现温度显示。通过DSl8B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.1℃。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。

系统硬件设计方案

根据系统功能要求,构造图1所示的系统原理结构框图。

图1

系统原理结构框图

2.1

单片机的选择

AT89C51作为温度测试系统设计的核心器件。该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS—51的CMOS产品。不仅结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,而且继承和扩展了MCS—48单片机的体系结构和指令系统。单片机小系统的电路图如图2所示。

图2

单片机小系统电路

AT89C51单片机的主要特性:

(1)与MCS-51

兼容,4K字节可编程闪烁存储器;

(2)灵活的在线系统编程,掉电标识和快速编程特性;

(3)寿命为1000次写/擦周期,数据保留时间可10年以上;

(4)全静态工作模式:0Hz-33Hz;

(5)三级程序存储器锁定;

(6)128*8位内部RAM,32可编程I/O线;

(7)两个16位定时器/计数器,6个中断源;

(8)全双工串行UART通道,低功耗的闲置和掉电模式;

(9)看门狗(WDT)及双数据指针;

(9)片内振荡器和时钟电路;

2.2

温度传感器介绍

DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。

温度传感器DS18B20引脚如图3所示。

8引脚封装

TO-92封装

图3

温度传感器

引脚功能说明:

NC

:空引脚,悬空不使用;

VDD

:可选电源脚,电源电压范围3~5.5V。当工作于寄生电源时,此引脚必须接地。

DQ

:数据输入/输出脚。漏极开路,常态下高电平。

GND

:为电源地

DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

光刻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为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。

该字节各位的意义如下:

TM

R1

R0

低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表1所示:(DS18B20出厂时被设置为12位)

表1

DS18B20温度转换时间表

R1

R0

分辨率/位

温度最大转向时间

0

0

93.75

0

187.5

0

375

750

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

2.3

温度传感器与单片机的连接

温度传感器的单总线(1-Wire)与单片机的P2.0连接,P2.0是单片机的高位地址线A8。P2端口是一个带内部上拉电阻的8位双向I/O,其输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对该端口写“1”,可通过内部上拉电阻将其端口拉至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻,某一引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时。如执行MOVX

DPTR指令,则表示P2端口送出高8位的地址数据。在访问8位地址的外部数据存储器时,可执行MOVX

RI指令,P2端口内容即为特殊功能寄存器(SFR)区中R2寄存器内容,整个访问期间不改变。在Flash编程和程序校验时,P2端口也接收高位地址和其他控制信号。图4为DSl8820内部结构。图5为DSl8820与单片机的接口电路。

图4

DS18B20内部结构图

图5

DS18B20和单片机的接口连接

2.4

复位信号及外部复位电路

单片机的P1.6端口是MAX813看门狗电路中喂狗信号的输入端,即单片机每执行一次程序就设置一次喂狗信号,清零看门狗器件。若程序出现异常,单片机引脚RST将出现两个机器周期以上的高电平,使其复位。该复位信号高电平有效,其有效时间应持续24个振荡脉冲周期即两个机器周期以上。若使用频率为12

MHz的晶体振荡器,则复位信号持续时间应超过2μs才完成复位操作。

2.5

单片机与报警电路

系统中的报警电路是由发光二极管和限流电阻组成,并与单片机的P1.2端口连接。P1端口的作用和接法与P2端口相同,不同的是在Flash编程和程序校验期间,P1接收低8位地址数据。

2.6

电源电路

由于该系统需要稳定的5

V电源,因此设计时必须采用能满足电压、电流和稳定性要求的电源。该电源采用三端集成稳压器LM7805。它仅有输入端、输出端及公共端3个引脚,其内部设有过流保护、过热保护及调整管安全保护电路.由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。图6为电源电路连接图。

图6

电源电路连接图

2.7

显示电路

采用技术成熟的74HCl64实现串并转换。LED显示分为静态显示和动态显示。这里采用静态显示,系统通过单片机的串行口来实现静态显示。串行口为方式零状态,即工作在移位寄存器方式,波特率为振荡频率的1/12。当器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。在写信号有效时,相隔一个机器周期后发送控制端SEND有效,即允许RXD发送数据,同时允许从TXD端输出移位脉冲。图7为显示电路的连接图。

图7

显示电路的连接图

2.8

看门狗电路

系统中把P1.6作为看门狗的“喂狗”信号;将MAX813的RESET与单片机的复位信号RST连接。由于单片机每执行一次程序,就会给看门狗器件一个复位信号,这样也可以用手工方式实现复位。当按键按下时,SW—SPST就会在MAX813引脚产生一个超过200

ms的低电平,其实看门狗器件在1.6

s时间内没有复位,使7引脚输出一个复位信号的作用是相同的,其连接图如图8所示。

图8

看门狗器件的MAX813的连接图

软件设计

DSl8820的主要数据元件有:64位激光Lasered

ROM,温度灵敏元件和非易失性温度告警触发器TH和TL。DSBl820可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。此外,还可外接5

V电源,给DSl8820供电。DSl8820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。图9为读取数据流程图。

开始

DS18B20的初始化

启动温度转换

读取温度寄存器

跳过读序列号的操作

跳过读序列号的操作

DS18B20的初始化

RET

LOW-低八位

HIGH-高八位

图9

读取数据的流程图

读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625℃,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大于0.5℃的话,向个位进1;小于0.5℃的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。还因为DS18B20最低温度只能为-55℃,所以可以将整数部分的最高位换成一个“-”,表示为负数。图10为温度数据处理程序的流程图。

开始

提取整数部分存入HT

提取小数部分存入LT

LT右移三位,将精度降低到0.5摄氏度

HT++

将小数部分整数化

提取符号部分存入sign

LT是否大于5

Sign=?0XF0

RET

负数表示flag=1

HT=~HT+1

Y

N

N

Y

图10

温度数据处理流程图

数据测试

将温度传感器与冰水混合物接触,经过充分搅拌达到热平衡后调节系统,使显示读数为0.00(标定0℃);利用气压计读出当时当地的大气压强,并根据大气压强和当地重力加速度计算出当时的实际压强;根据沸点与压强的关系查出沸点温度。把温度传感器放入沸水中,待显示读数稳定后重新调节,使显示器显示读数等于当地当时沸点温度后工作结束。该温度计的量程为-50℃~150℃,读数精度为0.1℃,实际使用一般在0℃~100℃。采用0℃~50℃和50℃~100℃的精密水银温度计作检验标准,对设计的温度计进行测试,其结果表明能达到该精度要求。

总结与体会

作为一名电子信息工程的大四学生,我觉得做单片机课程设计是很有意义的,而且也是必要的。在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。

其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:proteus仿真、汇编语言、模拟和数字电路知识等。虽然过去我从未独立应用过他们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;在设计中遇到的问题要记录,以免下次遇到同样的问题。

在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。

附录1

仿真图

附录2

程序源代码

DATA_BUS

BIT

P3.3

FLAG

BIT

00H

;标志位

TEMP_L

EQU

30H

;温度值低字节

TEMP_H

EQU

31H

;温度值高字节

TEMP_DP

EQU

32H

;温度小数

TEMP_INT

EQU

33H

;温度值整数

TEMP_BAI

EQU

34H

;温度百位数

TEMP_SHI

EQU

35H

;温度十位数

TEMP_GE

EQU

36H

;温度个位数

DIS_BAI

EQU

37H

;显示百位数

DIS_SHI

EQU

38H

;显示十位数

DIS_GE

EQU

39H

;显示个位数

DIS_DP

EQU

3AH

;显示小数位

DIS_ADD

EQU

3BH

;显示地址

ORG

0000H

AJMP

START

ORG

0050H

;初始化

START:

MOV

SP,#40H

MAIN:

LCALL

READ_TEMP

;调读温度程序

LCALL

PROCESS

;调数据处理程序

AJMP

MAIN

;读温度程序

READ_TEMP:

LCALL

RESET_PULSE

;调用复位脉冲程序

MOV

A,#0CCH

;跳过ROM命令

LCALL

WRITE

MOV

A,#44H

;读温度

LCALL

WRITE

LCALL

DISPLAY

;显示温度

LCALL

RESET_PULSE

;调用复位脉冲程序

MOV

A,#0CCH

;跳过ROM命令

LCALL

WRITE

MOV

A,#0BEH

;读缓存命令

LCALL

WRITE

LCALL

READ

RET

;复位脉冲程序

RESET_PULSE:

RESET:

SETB

DATA_BUS

NOP

NOP

CLR

DATA_BUS

MOV

R7,#255

DJNZ

R7,$

SETB

DATA_BUS

MOV

R7,#30

DJNZ

R7,$

JNB

DATA_BUS,SETB_FLAG

CLR

FLAG

AJMP

NEXT

SETB_FLAG:

SETB

FLAG

NEXT:

MOV

R7,#120

DJNZ

R7,$

SETB

DATA_BUS

JNB

FLAG,RESET

RET

;写命令

WRITE:

SETB

DATA_BUS

MOV

R6,#8

CLR

C

WRITING:

CLR

DATA_BUS

MOV

R7,#5

DJNZ

R7,$

RRC

A

MOV

DATA_BUS,C

MOV

R7,#30H

DJNZ

R7,$

SETB

DATA_BUS

NOP

DJNZ

R6,WRITING

RET

;循环显示段位

DISPLAY:

MOV

R4,#200

DIS_LOOP:

MOV

A,DIS_DP

MOV

P2,#0FFH

MOV

P0,A

CLR

P2.7

LCALL

DELAY2MS

MOV

A,DIS_GE

MOV

P2,#0FFH

MOV

P0,A

SETB

P0.7

CLR

P2.6

LCALL

DELAY2MS

MOV

A,DIS_SHI

MOV

P2,#0FFH

MOV

P0,A

CLR

P2.5

LCALL

DELAY2MS

MOV

A,DIS_BAI

MOV

P2,#0FFH

MOV

P0,A

MOV

A,TEMP_BAI

CJNE

A,#0,SKIP

AJMP

NEXTT

SKIP:

CLR

P2.4

LCALL

DELAY2MS

NEXTT:

NOP

DJNZ

R4,DIS_LOOP

RET

;读命令

READ:

SETB

DATA_BUS

MOV

R0,#TEMP_L

MOV

R6,#8

MOV

R5,#2

CLR

C

READING:

CLR

DATA_BUS

NOP

NOP

SETB

DATA_BUS

NOP

NOP

NOP

NOP

MOV

C,DATA_BUS

RRC

A

MOV

R7,#30H

DJNZ

R7,$

SETB

DATA_BUS

DJNZ

R6,READING

MOV

@R0,A

INC

R0

MOV

R6,#8

SETB

DATA_BUS

DJNZ

R5,READING

RET

;数据处理

PROCESS:

MOV

R7,TEMP_L

MOV

A,#0FH

ANL

A,R7

MOV

TEMP_DP,A

MOV

R7,TEMP_L

MOV

A,#0F0H

ANL

A,R7

SWAP

A

MOV

TEMP_L,A

MOV

R7,TEMP_H

MOV

A,#0FH

ANL

A,R7

SWAP

A

ORL

A,TEMP_L

MOV

B,#64H

DIV

AB

MOV

TEMP_BAI,A

MOV

A,#0AH

XCH

A,B

DIV

AB

MOV

TEMP_SHI,A

MOV

TEMP_GE,B

MOV

A,TEMP_DP

MOV

DPTR,#TABLE_DP

MOVC

A,@A+DPTR

MOV

DPTR,#TABLE_INTER

MOVC

A,@A+DPTR

MOV

DIS_DP,A

MOV

A,TEMP_GE

MOV

DPTR,#TABLE_INTER

MOVC

A,@A+DPTR

MOV

DIS_GE,A

MOV

A,TEMP_SHI

MOV

DPTR,#TABLE_INTER

MOVC

A,@A+DPTR

MOV

DIS_SHI,A

MOV

A,TEMP_BAI

MOV

DPTR,#TABLE_INTER

MOVC

A,@A+DPTR

MOV

DIS_BAI,A

RET

DELAY2MS:

MOV

R6,#3

LOOP3:

MOV

R5,#250

DJNZ

R5,$

DJNZ

R6,LOOP3

RET

TABLE_DP:

DB

00H,01H,01H,02H,03H,03H,04H,04H,05H,06H

DB

06H,07H,08H,08H,09H,09H

TABLE_INTER:

DB

03FH,006H,05BH,04FH,066H

DB

06DH,07DH,07H,07FH,06FH

END

下载基于单片机的数字温度计设计课程设计word格式文档
下载基于单片机的数字温度计设计课程设计.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    基于51单片机数字温度计设计课程设计

    课题:基于51单片机数字温度计设计专业:电子信息工程班级:班学号:姓名:指导教师:设计日期:成绩:XX大学XX学院电气学院基于51单片机数字温度计设计一、设计目的1、掌握单片机电路的设......

    单片机数字万用表课程设计

    《单片机》课程设计 题目:基于单片机的数字多用表设计专业:电力系统及其自动化班级:本自动化姓名: 学号:指导老师:小组成员:成绩:摘要 本次设计采用单片机芯片AT89S51与ADC0809设计......

    单片机数字时钟课程设计感想

    五.实验总结及感想 在实验的开始几天,基本上没有收获,不知何从下手,不知所措。为了看得更远,不妨站在前人的肩膀上,我在整体思路模糊的情况下,在网上大量招资粮,各种与电子时钟相关......

    单片机课程设计设计项目

    09级通信专业《课程设计》方案 单片机应用系统设计项目介绍学生:09级通信1、2、3班指导教师:周秋茜一、16×16点阵LED电子显示屏的设计1.功能要求设计一个室内用16×16点阵LED......

    单片机课程设计电子钟设计

    单片机课程设计电子钟设计目录一、摘要二、设计任务三、基本原理数码管显示可以用静态显示或动态显示方法。静态显示需要数据锁存器等硬件,接口复杂,时钟显示用四个数码管。动......

    单片机数字温度计毕业设计提纲 大纲 参考(精选合集)

    毕业论文设计提纲 学生: 专业: 电子信息工程技术指导教师: 职称: 高级电子工程师 【题目】《 单片机数字温度计显示设计 》 【摘要】(对设计进行评估) 【关键字】单片机 、 温度......

    单片机课程设计(基于多路数字抢答器)(范文)

    一、概述 大学四年的学习生活中,会遇到各种各样的竞赛,抢答器便成为了主要的工具之一。而现在的抢答器智能化越来越强,这必然会提高抢答器的成本。本抢答器与其他抢答器电路相......

    单片机课程设计

    设计题目: 单片机课程设计 学生姓名:学院: 电气与信息工程学院班级: 电子111班 指导教师:日 期: 2014年9月20日 一、课程设计目的: 了解电子元器件的功能与原理,掌握单片机的结构......