数字温度传感器课程设计论文.docx

上传人:b****5 文档编号:11543030 上传时间:2023-03-19 格式:DOCX 页数:26 大小:606.95KB
下载 相关 举报
数字温度传感器课程设计论文.docx_第1页
第1页 / 共26页
数字温度传感器课程设计论文.docx_第2页
第2页 / 共26页
数字温度传感器课程设计论文.docx_第3页
第3页 / 共26页
数字温度传感器课程设计论文.docx_第4页
第4页 / 共26页
数字温度传感器课程设计论文.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

数字温度传感器课程设计论文.docx

《数字温度传感器课程设计论文.docx》由会员分享,可在线阅读,更多相关《数字温度传感器课程设计论文.docx(26页珍藏版)》请在冰豆网上搜索。

数字温度传感器课程设计论文.docx

数字温度传感器课程设计论文

 

基于数字温度传感器的数字温度计设计报告

课题要求:

利用数字温度传感器DS18B20与单片机结合来测量温度。

利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。

其温度测量范围为−55℃~125℃,精确到0.5℃。

数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,,实现温度显示。

1.原理分析(刘星)

采用AT89C51单片机作为控制核心对温度传感器DS18B20控制,读取温度信号并进行计算处理,并送数码管显示。

采用数字温度芯片DS18B20测量温度,输出信号全数字化。

便于单片机处理及控制,省去传统的测温方法的很多外围电路。

且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。

在0—100摄氏度时,最大线形偏差小于1摄氏度。

DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制芯片AT89C51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。

这样,测温系统的结构就比较简单,体积也不大。

采用AT89C51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制而且体积小,硬件实现简单,安装方便。

用AT89C51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。

该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。

⒉方案选择(刘星)

按照系统设计功能的要求,确定系统由3个大的模块组成:

主控制器、测温电路和显示电路。

由AT89C51单片机组成硬件设计,AT89C51的EA接高电平,其外围电路提供能使之工作的晶振脉冲、复位按键,四个I/O分别接8路的单列IP座方便与外围设备连接。

当AT89C51芯片接到来自温度传感器的信号时,其内部程序将根据信号的类型进行处理,并且将处理的结果送到显示模块,发送控制信号控制各模块。

⒊元器件选择(黄学然)

3.1单片机

AT89C51芯片:

AT89C51是一个低电压,高性能CMOS8位单片机,片内含4K的可反复擦写的FLASH只读存储器和128BYTES的随机存取数据存储器,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。

AT89C51可以按照常规方法进行编程,也可以在线编程。

器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51令系统,片内置通用8位中央处理器和Flash存储单元,其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。

 

 

主要特性:

·与MCS-51兼容

·4K字节可编程FLASH存储器

·寿命:

1000写/擦循环

·数据保留时间:

10年

·全静态工作:

0Hz-24MHz

·三级程序存储器锁定

·128×8位内部RAM

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路

管脚说明:

VCC:

供电电压。

GND:

接地。

P0:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(计时器0外部输入)

P3.5T1(计时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

 

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

3.2温度传感器

DS18B20:

 

DS18B20封装图

DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。

与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。

因而使用DS18B20可使系统结构更趋简单,可靠性更高。

他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。

以下是DS18B20的特点:

(1)独特的单线接口方式:

DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(2)在使用中不需要任何外围元件。

(3)可用数据线供电,电压范围:

+3.0~+5.5V。

(4)测温范围:

-55-+125℃。

固有测温分辨率为0.5℃。

(5)过编程可实现9-12位的数字读数方式。

(6)用户可自设定非易失性的报警上下限值。

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

(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。

3.3显示屏

LCD1602液晶显示屏:

同时显示摄氏温度与华氏温度。

管脚分布:

LCD1602模块的管脚分布功能

管脚号

管脚名称

状态

管脚功能

1

Vss

电源地

2

Vdd

电源正极

3

V0

液晶显示偏压信号

4

RS

输入

寄存器选着

5

RW

输入

读、写操作

6

E

输入

使能信号

7

DB0

三态

数据总线0(LSB)

8

DB1

三态

数据总线

9

DB2

三态

数据总线

10

DB3

三态

数据总线

11

DB4

三态

数据总线

12

DB5

三态

数据总线

13

DB6

三态

数据总线

14

DB7

三态

数据总线(MSB)

15

LEDA

输入

背光+5V

16

LEDK

输入

背光地

3.4蜂鸣器

实现报警振铃音。

3.5其他元件

电容(30pf,10uf)、电阻(4.7k,8.2k)、三极管(8550)、晶振(12MHZ)、按键、杜邦线、排针若干,万能板。

⒋proteus原理图绘制(余琳玲)

4.1设计步骤

1.使用proteus软件画出原理图

2.使用keil软件

1)建立工程

2)为工程选择目标器件

3)设置工程的配置参数

4)打开程序文件

5)编辑和链接工程

6)纠正程序中的书写和错误并重新建立链接

7)生成hex文件

3.使用proteus软件进行仿真

4.2设计过程

硬件接线图见附录4

4.2.1单片机系统模块

4.2.2晶体振荡模块

晶振电路是提供系统时钟信号。

为了各部分的同步应当引入公用的外部脉冲信号作为振荡脉冲。

电容选择在10~30pF之间,因为电容的大小影响振荡器振荡的稳定性和起振的速度。

电容C1和C2的作用是稳定频率和快速起振,晶振CYS的振荡频率取12MHZ。

89C51单片机的时钟信号通常有两种方式产生,外部时钟和内部时钟方式,如下图所示:

 

4.2.3扬声器报警模块

系统设有一定的温度范围,当系统检测到的温度不在预设的范围时,则需发出报警,警报系统由PNP三极管和蜂鸣器组成。

4.2.4温度传感器模块

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

4.2.5液晶显示模块

硬件连线图:

 

指令:

1)Cleardisplay清显示

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

0

0

1

清显示指令将空位字符码20H送入全部DDRAM地址中,使DDRAM中的内容全部清除,显示消失;地址计数器AC=0,自动增1模式;显示归位,光标或者闪烁回到原点(显示屏左上角);但并不改变移位设置模式。

2)Returnhome归位

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

0

1

*

归位指令置地址计数器AC=0;将光标及光标所在位的字符回原点;但DDRAM中的内容并不改变。

3)Entrymodeset设置输入模式

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

0

1

I/D

S

I/D:

字符码写入或者读出DDRAM后DDRAM地址指针AC变化方向标志:

I/D=1,完成一个字符码传送后,光标右移,AC自动加1;

I/D=0,完成一个字符码传送后,光标左移,AC自动减1;

S:

显示移位标志:

S=1,将全部显示向右(I/D=0)或者向左(I/D=1)移位;

S=0,显示不发生移位;

S=1时,显示移位时,光标似乎并不移位;此外,读DDRAM操作以及对CGRAM的访问,不发生显示移位。

4)Displayon/offcontrol显示开/关控制

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

0

1

D

C

B

D:

显示开/关控制标志:

D=1,开显示;D=0,关显示;

关显示后,显示数据仍保持在DDRAM中,立即开显示可以再现;

C:

光标显示控制标志:

C=1,光标显示;C=0,光标不显示;

不显示光标并不影响模块其它显示功能;显示5X8点阵字符时,光标在第八行显示,显示5X10点阵字

符时,光标在第十一行显示;

B:

闪烁显示控制标志:

B=1,光标所指位置上,交替显示全黑点阵和显示字符,产生闪烁效果,Fosc=250kHz

时,闪烁频率为0.4ms左右;通过设置,光标可以与其所指位置的字符一起闪烁。

5)Cursorordisplayshift光标或显示移位

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

0

1

S/C

R/L

*

*

光标或显示移位指令可使光标或显示在没有读写显示数据的情况下,向左或向右移动;运用此指令可以实现显示的查找或替换;在双行显示方式下,第一行和第二行会同时移位;当移位越过第一行第四十位时,光标会从第一行跳到第二行,但显示数据只在本行内水平移位,第二行的显示决不会移进第一行;倘若仅执行移位操作,地址计数器AC的内容不会发生改变。

S/C

R/L

说明

0

0

光标向左移动,AC自动减1

0

1

光标向右移动,AC自动加1

1

0

光标和显示一起向左移动,AC值不变

1

1

光标和显示一起向右移动,AC值不变

6)Functionset功能设置

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

0

1

DL

N

F

*

*

功能设置指令设置模块数据接口宽度和LCD显示屏显示方式,即MPU与模块接口数据总线为4位或者是8位、LCD显示行数和显示字符点阵规格;所以建议用户最好在执行其它指令设置(读忙标志指令除外)之前,在程序的开始,进行功能设置指令的执行;

DL:

数据接口宽度标志:

DL=1,8位数据总线DB7~DB0;DL=0,4位数据总线DB7~DB4,DB3~DB0不用,使用此方式传送数据,需分两次进行;

N:

显示行数标志:

N=1,两行显示模式;N=0,单行显示模式;

F:

显示字符点阵字体标志:

F=1:

5X10点阵+光标显示模式;F=0:

5X7点阵+光标显示模式。

7)SetCGRAMaddressCGRAM地址设置

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

0

1

ACG5

ACG4

ACG3

ACG2

ACG1

ACG0

CGRAM地址设置指令设置CGRAM地址指针,它将CGRAM存储用户自定义显示字符的字模数据的首地址ACG5~ACG0送入AC中,于是用户自定义字符字模就可以写入CGRAM中或者从CGRAM中读出。

8)SetDDRAMaddressDDRAM地址设置

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

ADD6

ADD5

ADD4

ADD3

ADD2

ADD1

ADD0

DDRAM地址设置指令设置DDRAM地址指针,它将DDRAM存储显示字符的字符码的首地址ADD6~ADD0送入AC中,于是显示字符的字符码就可以写入DDRAM中或者从DDRAM中读出;值得一提的是:

在LCD显示屏一行显示方式下,DDRAM的地址范围为:

00H~4FH;两行显示方式下,DDRAM的地址范围为:

第一行00H~27H,第二行40H~67H。

9)Readbusyflagandaddress读忙标志BF和AC

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

1

BF

AC6

AC5

AC4

AC3

AC2

AC1

AC0

当RS=0和R/W=1时,在E信号高电平的作用下,BF和AC6~AC0被读到数据总线DB7~DB0的相应位;

BF:

内部操作忙标志,BF=1,表示模块正在进行内部操作,此时模块不接收任何外部指令和数据,直到BF=0为止;

AC6~AC0:

地址计数器AC内的当前内容,由于地址计数器AC被CGROM、CGRAM和DDRAM的公用指针,因此当前AC内容所指区域由前一条指令操作区域决定;同时,只有BF=0时,送到DB7~DB0的数据AC6~AC0才有效。

10)WritedatatoCGRAMorDDRAM写数据到CGRAM或DDRAM

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

0

D7

D6

D5

D4

D3

D2

D1

D0

写数据到CGRAM或DDRAM指令,是将用户自定义字符的字模数据写到已经设置好的CGRAM的地址中,或者是将欲显示字符的字符码写到DDRAM中;欲写入的数据D7~D0首先暂存在DR中,再由模块的内部操作自动写入地址指针所指定的CGRAM单元或者DDRAM单元中。

11)ReaddatafromCGRAMorDDRAM从CGRAM或DDRAM中读数据

指令码:

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

1

D7

D6

D5

D4

D3

D2

D1

D0

从CGRAM或DDRAM中读数据指令,是从地址计数器AC指定的CGRAM或者DDRAM单元中,读出数据D7~D0;读出的数据D7~D0暂存在DR中,再由模块的内部操作送到数据总线DB7~DB0上。

5.综合调试(刘星、余琳玲、黄学然)

系统程序主要包括主程序、读出温度子程序、温度转换子程序、计算温度子程序、显示等等,由余琳玲同学编写。

程序于附录

硬件方面主要由黄学然和刘星调试焊接,一开始存在少许不易发现的焊点虚焊漏焊现象,导致显示屏无显示,后改正后可以得出正常显示温度,证明我们的课程设计实验初步取得成功。

6.总结(刘星、余琳玲、黄学然)

本次课程设计经过我们小组三个同学的齐心协力最终获得了成功,此次实验中我们还有不少需要改善的地方,比如这个温度计不能快速的反应温度变化,不能做到接触测量(由于DS18B20焊接在电路板上),同时焊接技艺还没有达到极致,美观上略有欠缺。

我们在仿真调试中也获得不少感悟:

画图的时候应仔细连线,线一旦连错,程序无法正常运行。

程序烧写到单片机,实物运行不能显示正常结果,要认真检查仿真图的连线正确与否以及焊接电路是否出现虚焊、漏焊,元器件是否错放。

 

附录1

C语言程序

#include

#include

#include"18b20.h"//18b20头文件

#include"1602.h"//18b20头文件

//宏定义

#defineucharunsignedchar

#defineuintunsignedint

//定义变量

uintbw,sw,gw;

uchartable[]="0123456789";

ucharalarm[]="Alarm";

ucharj;//1602显示的字符个数

longinttem,tem1;//tem为摄氏温度,tem1为华氏温度,baojing为警报温度值

longintbaojing=38;

sbitspeaker=P1^0;

voidbeep();//函数声明蜂鸣器函数

voiddisplay(void)//18b20显示摄氏温度

{EX0=0;

tem=duqu_wendu();

if(tem>baojing)

{beep();

}

bw=tem/10;

sw=tem%10;

write1602(0x80+0x00);

read1602(table[bw]);

write1602(0x80+0x01);

read1602(table[sw]);

write1602(0x80+0x02);

read1602(0xdf);

write1602(0x80+0x03);

read1602('C');

write1602(0x80+0x04);

read1602('');

EX0=1;

}

voiddisplay1(void)//18b20显示华氏温度

{EX0=0;

tem1=duqu_wendu()*1.8+32;

if(tem1>(baojing*1.8+32))

{beep();

}

bw=tem1/100;

sw=(tem1%100)/10;

gw=tem1%10;

write1602(0x80+0x0b);

read1602(table[bw]);

write1602(0x80+0x0c);

read1602(table[sw]);

write1602(0x80+0x0d);

read1602(table[gw]);

write1602(0x80+0x0e);

read1602(0xdf);

write1602(0x80+0x0f);

read1602('F');

EX0=1;

}

voiddisplaybaojing(void)//显示报警温度值

{

bw=baojing/100;

sw=baojing/10;

gw=baojing%10;

write1602(0x80+0x4b);

read1602(table[bw]);

write1602(0x80+0x4c);

read1602(table[sw]);

write1602(0x80+0x4d);

read1602(table[gw]);

write1602(0x80+0x4e);

read1602(0xdf);

write1602(0x80+0x4f);

read1602('C');

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1