基于单片机的温度传感器的设计Word文件下载.docx

上传人:b****5 文档编号:20616783 上传时间:2023-01-24 格式:DOCX 页数:17 大小:511.14KB
下载 相关 举报
基于单片机的温度传感器的设计Word文件下载.docx_第1页
第1页 / 共17页
基于单片机的温度传感器的设计Word文件下载.docx_第2页
第2页 / 共17页
基于单片机的温度传感器的设计Word文件下载.docx_第3页
第3页 / 共17页
基于单片机的温度传感器的设计Word文件下载.docx_第4页
第4页 / 共17页
基于单片机的温度传感器的设计Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于单片机的温度传感器的设计Word文件下载.docx

《基于单片机的温度传感器的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度传感器的设计Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

基于单片机的温度传感器的设计Word文件下载.docx

本文所介绍的数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温准确等优点,其输出温度采用数字显示,主要供测温要求准确的场所和科研实验室使用。

该设计控制器使用单片机AT89C51,温度传感器DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。

1.2设计目的

熟悉单片机AT89C51和传感器DS18B20的应用,及单片机与外围电路的接法,加深对单片机以及传感器的认识,了解单片机在日常生活中的应用及其重要性。

同时,通过查找资料,设计电路,使本次设计的数字温度计具有结构简单、成本低廉、精确度高、反应速度快、数字化显示和不易损坏等特点。

在这次设计中,熟悉了制作一个产品的基本流程。

通过选认元件,连线,等过程,锻炼自己的学习能力。

1.3设计任务

1、以AT89C51单片机为核心器件,组成一个数字式温度计。

2、采用数字式温度计传感器为检测器件,进行单点温度检测,检测精度为±

0.5°

C。

3、温度显示采用4位LED数码管显示,两位整数,一位小数。

4、具有键盘输入上、下限功能,超过上、下限温度时,进行声音报警。

第二章设计内容与所用器件

基本功能:

利用89C51作为主控器组成一个数字温度计。

可选器件:

AT89C51单片机、DB18B20、7段LED数码管等

系统原理图

第三章硬件系统设计

硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。

单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。

本设计选用以AT89C51单片机为主控单元,DB18B20为数据采集模块,显示部分采用7段LED动态显示,警报部分采用蜂鸣器。

3.1单片机的选择

AT89C51

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、片内振荡器和时钟电路;

芯片共有40个引脚,其中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。

3.2温度传感器介绍

DS18B20可以程序设定9-12的分辨率,精度为±

可选更小的封装方式,更宽的电压适用范围。

分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。

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

引脚功能说明:

NC:

空引脚,悬空不使用;

VDD:

可选电源脚,电源电压范围3~5.5V。

当工作于寄生电源时,此引脚必须接地。

DQ:

数据输入/输出脚。

漏极开路,常态下高电平。

GND:

为电源地

DS18B20内部结构主要由四部分组成:

64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。

温度报警触发器TH和TL,可通过软件写入户报警上下限。

当DS18B20接收到温度转换命令后,开始启动转换。

转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。

单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。

DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。

若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。

因此,可用多只DS18B20同时测量温度并进行报警搜索。

DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;

高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。

器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。

计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。

其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。

另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。

系统对DS18B20的各种操作按协议进行。

操作协议为:

初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

源供电方式

在外部电源供电方式下,DS18B20工作电源由VCC引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。

注意:

在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85℃。

部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单。

本次数字温度计的设计采用的就是外部电源供电方式。

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

温度传感器的单总线(1-Wire)与单片机的P2.0连接,P2.0是单片机的高位地址线A8。

P2端口是一个带内部上拉电阻的8位双向I/O,其输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对该端口写“1”,可通过内部上拉电阻将其端口拉至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻,某一引脚被外部信号拉低时会输出一个电流。

在访问外部程序存储器或16位地址的外部数据存储器时。

如执行MOVXDPTR指令,则表示P2端口送出高8位的地址数据。

在访问8位地址的外部数据存储器时,可执行MOVXRI指令,P2端口内容即为特殊功能寄存器(SFR)区中R2寄存器内容,整个访问期间不改变。

在Flash编程和程序校验时,P2端口也接收高位地址和其他控制信号。

下图为DSl8B20内部结构。

下图为DSl8B20与单片机的接口电路。

3.4单片机与报警电路

系统中的报警电路是由发光二极管和限流电阻组成,并与单片机的P1.2端口连接。

P1端口的作用和接法与P2端口相同,不同的是在Flash编程和程序校验期间,P1接收低8位地址数据。

3.5电源电路

由于该系统需要稳定的5V电源,因此设计时必须采用能满足电压、电流和稳定性要求的电源。

该电源采用三端集成稳压器LM7805。

它仅有输入端、输出端及公共端3个引脚,其内部设有过流保护、过热保护及调整管安全保护电路.由于所需外接元件少,使用方便、可靠,因此可作为稳压电源。

下图为电源电路连接图。

3.6显示电路

采用技术成熟的74HCl64实现串并转换。

LED显示分为静态显示和动态显示。

这里采用静态显示,系统通过单片机的串行口来实现静态显示。

串行口为方式零状态,即工作在移位寄存器方式,波特率为振荡频率的1/12。

当器件执行任何一条将SBUF作为目的寄存器的命令时,数据便开始从RXD端发送。

在写信号有效时,相隔一个机器周期后发送控制端SEND有效,即允许RXD发送数据,同时允许从TXD端输出移位脉冲。

下图为显示电路的连接图。

3.7复位电路

单片机的P1.6端口是MAX813复位电路中复位信号的输入端,即单片机每执行一次程序就设置一次复位信号,清零复位器件。

若程序出现异常,单片机引脚RST将出现两个机器周期以上的高电平,使其复位。

该复位信号高电平有效,其有效时间应持续24个振荡脉冲周期即两个机器周期以上。

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

连接图如下图所示。

第四章软件设计

 DSl8820的主要数据元件有:

64位激光LaseredROM,温度灵敏元件和非易失性温度告警触发器TH和TL。

DSBl820可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;

当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。

此外,还可外接5V电源,给DSl8820供电。

DSl8820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。

读取数据流程图如下:

读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625℃,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。

所以先将数据提取出来,分为三个部分:

小数部分、整数部分和符号部分。

小数部分进行四舍五入处理:

大于0.5℃的话,向个位进1;

小于0.5℃的时候,舍去不要。

当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。

还因为DS18B20最低温度只能为-55℃,所以可以将整数部分的最高位换成一个“-”,表示为负数。

图为温度数据处理程序的流程图如下所示:

程序源代码

DATA_BUSBITP3.3

FLAGBIT00H;

标志位

TEMP_LEQU30H;

温度值低字节

TEMP_HEQU31H;

温度值高字节

TEMP_DPEQU32H;

温度小数

TEMP_INTEQU33H;

温度值整数

TEMP_BAIEQU34H;

温度百位数

TEMP_SHIEQU35H;

温度十位数

TEMP_GEEQU36H;

温度个位数

DIS_BAIEQU37H;

显示百位数

DIS_SHIEQU38H;

显示十位数

DIS_GEEQU39H;

显示个位数

DIS_DPEQU3AH;

显示小数位

DIS_ADDEQU3BH;

显示地址

ORG0000H

AJMPSTART

ORG0050H;

初始化

START:

MOVSP,#40H

MAIN:

LCALLREAD_TEMP;

调读温度程序

LCALLPROCESS;

调数据处理程序

AJMPMAIN

;

读温度程序

READ_TEMP:

LCALLRESET_PULSE;

调用复位脉冲程序

MOVA,#0CCH;

跳过ROM命令

LCALLWRITE

MOVA,#44H;

读温度

LCALLWRITE

LCALLDISPLAY;

显示温度

LCALLRESET_PULSE;

调用复位脉冲程序

MOVA,#0CCH;

跳过ROM命令

LCALLWRITE

MOVA,#0BEH;

读缓存命令

LCALLREAD

RET

复位脉冲程序

RESET_PULSE:

RESET:

SETBDATA_BUS

NOP

CLRDATA_BUS

MOVR7,#255

DJNZR7,$

SETBDATA_BUS

MOVR7,#30

DJNZR7,$

JNBDATA_BUS,SETB_FLAG

CLRFLAG

AJMPNEXT

SETB_FLAG:

SETBFLAG

NEXT:

MOVR7,#120

JNBFLAG,RESET

写命令

WRITE:

MOVR6,#8

CLRC

WRITING:

MOVR7,#5

RRCA

MOVDATA_BUS,C

MOVR7,#30H

DJNZR6,WRITING

循环显示段位

DISPLAY:

MOVR4,#200

DIS_LOOP:

MOVA,DIS_DP

MOVP2,#0FFH

MOVP0,A

CLRP2.7

LCALLDELAY2MS

MOVA,DIS_GE

SETBP0.7

CLRP2.6

MOVA,DIS_SHI

CLRP2.5

LCALLDELAY2MS

MOVA,DIS_BAI

MOVA,TEMP_BAI

CJNEA,#0,SKIP

AJMPNEXTT

SKIP:

CLRP2.4

LCALLDELAY2MS

NEXTT:

DJNZR4,DIS_LOOP

读命令

READ:

MOVR0,#TEMP_L

MOVR6,#8

MOVR5,#2

READING:

MOVC,DATA_BUS

DJNZR6,READING

MOV@R0,A

INCR0

DJNZR5,READING

数据处理

PROCESS:

MOVR7,TEMP_L

MOVA,#0FH

ANLA,R7

MOVTEMP_DP,A

MOVA,#0F0H

SWAPA

MOVTEMP_L,A

MOVR7,TEMP_H

ORLA,TEMP_L

MOVB,#64H

DIVAB

MOVTEMP_BAI,A

MOVA,#0AH

XCHA,B

MOVTEMP_SHI,A

MOVTEMP_GE,B

MOVA,TEMP_DP

MOVDPTR,#TABLE_DP

MOVCA,@A+DPTR

MOVDPTR,#TABLE_INTER

MOVCA,@A+DPTR

MOVDIS_DP,A

MOVA,TEMP_GE

MOVDPTR,#TABLE_INTER

MOVDIS_GE,A

MOVA,TEMP_SHI

MOVDIS_SHI,A

MOVDIS_BAI,A

DELAY2MS:

MOVR6,#3

LOOP3:

MOVR5,#250

DJNZR5,$

DJNZR6,LOOP3

TABLE_DP:

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

DB06H,07H,08H,08H,09H,09H

TABLE_INTER:

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

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

END

总结与体会

作为一名电子信息工程的大三学生,我觉得做单片机课程设计是很有意义的,而且也是必要的。

在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。

为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。

要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;

要有一个清晰的思路和一个完整的软件流程图;

在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;

要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;

在设计中遇到的问题要记录,以免下次遇到同样的问题。

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

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

当前位置:首页 > 外语学习 > 英语考试

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

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