数字温度计单片机课程设计.docx

上传人:b****8 文档编号:30278755 上传时间:2023-08-13 格式:DOCX 页数:42 大小:205.12KB
下载 相关 举报
数字温度计单片机课程设计.docx_第1页
第1页 / 共42页
数字温度计单片机课程设计.docx_第2页
第2页 / 共42页
数字温度计单片机课程设计.docx_第3页
第3页 / 共42页
数字温度计单片机课程设计.docx_第4页
第4页 / 共42页
数字温度计单片机课程设计.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

数字温度计单片机课程设计.docx

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

数字温度计单片机课程设计.docx

数字温度计单片机课程设计

河南理工大学

电子设计综合训练报告

 

数字温度计

 

姓名:

-----------------------------

学号:

310708010323/26

专业班级:

电气07-3班

指导老师:

杨凌霄

所在学院:

电气工程与自动化学院

 

2010年6月9日

 

摘要

本设计是对一个数字温度计功能的实现,其主要功能是:

1)基本范围-50℃~110℃,2)精度误差小于0.5℃,3)LED数码直读显示,4)扩展功能,5)可以任意设定温度的上下限报警功能。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用4位共阴极LED数码管,实现温度显示,能准确达到以上要求。

温度计电路设计控制器采用单片机AT89S51,具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。

温度传感器采用DS18B20,DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式,仅需要一个端口引脚进行通信,内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。

显示电路采用4位共阴极LED数码管,采用LED动态显示方式,从P1口输出段码,P2.0~P2.3作为位选控制端。

 

1概述……………………………………………………………………………(4)

1.1课程设计的要求…………………………………………………………(4)

1.2课程设计的目的……………………………………………………………(4)

1.3系统组成及工作原理………………………………………………………(4)

2系统总体方案及硬件设计………………………………………………………(5)

2.1设计思路及描述……………………………………………………………(5)2.2硬件构成……………………………………………………………………(5)

〈1〉主控模块AT89C51单片机………………………………………………(5)

〈2〉DS18B20介绍……………………………………………………………(5)

2.3显示模块……………………………………………………………………(9)

2.4开关控制电路模块………………………………………………………(10)

3软件设计……………………………………………………………………(11)

3.1主程序……………………………………………………………………(11)

3.2读取温度子程序…………………………………………………………(11)

3.3温度转换命令子程序……………………………………………………(12)

3.4计算温度子程序……………………………………………………………(12)

3.5温度比较子程序……………………………………………………………(13)

4Proteus软件仿真……………………………………………………………(14)

5课程设计体会………………………………………………………………(17)

参考文献…………………………………………………………………………(17)

附1:

源程序代码………………………………………………………………(18)

附2:

系统原理图………………………………………………………………(33)

 

1概述

1.1课程设计的要求

1)基本范围-50℃~110℃

2)精度误差小于0.5℃

3)LED数码直读显示

4)扩展功能

5)可以任意设定温度的上下限报警功能

1.2课程设计的目

(1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。

 

(2)掌握按键消抖的方法,LED的动态显示,DS18B20的使用和编程原理。

 (3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。

(4)掌握WAVE及proteus仿真软件的使用方法。

1.3系统组成及工作原理

本系统功能是由硬件和软件两大部分协调完成的,硬件部分主要完成各种新号的采集和各种信息的显示的;软件主要完成信号的处理及控功能等。

基于工作原理是89C51单片机对按钮的输入信号的查询和检测,然后对输入信号进行相应处理后通过LED数码管输出。

 

2系统总体方案及硬件设计

2.1设计思路及描述

本实验设计4个开关按键K1,K2,K3,K4:

其中K2按键按下去时,进入报警上下限设置,按动K2,K3分别对报警上限和下限进行设置,增减由K1进行控制,当设置完毕后,按K4保存并退出。

该实验要求对环境温度进行测量并在LED上显示数据,则可利用AT89C51芯片的P0.7-P0.0管脚对应了接数码管的A,B,C,D,E,F,G和小数点位,P2.0~P2.3接显示数据的小数位、个位、十位、百位(符号位),P3.4端口与DS18B20进行数据传递和通信端口,P3.7端口输出报警信号。

2.2硬件构成

〈1〉主控模块AT89C51单片机

功能特性描述

AT89C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89C51具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

P0口:

P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

在这种模式下,P0具有内部上拉电阻。

在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。

程序校验时,需要外部上拉电阻。

P1口:

P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。

对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

P2口:

P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。

对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。

作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

〈2〉DS18B20介绍

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

DS18B20的性能特点如下:

●独特的单线接口仅需要一个端口引脚进行通信;

●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;

●无须外部器件;

●可通过数据线供电,电压范围为3.0~5.5V;

●零待机功耗;

●温度以9或12位数字;

●用户可定义报警设置;

●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;

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

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

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

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。

高速暂存RAM的结构为8字节的存储器,结构如图3所示。

头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。

第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。

DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。

该字节各位的定义如图1所示。

低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。

温度LSB

温度MSB

TH用户字节1

TL用户字节2

配置寄存器

保留

保留

保留

CRC

 

 

图1 DS18B20字节定义

高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。

第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。

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

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

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

当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。

表1是一部分温度值对应的二进制温度数据。

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

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

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

在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。

主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。

DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。

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

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

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

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

表1 一部分温度对应值表

温度/℃

二进制表示

十六进制表示

+125

0000011111010000

07D0H

+85

0000010101010000

0550H

+25.0625

0000000110010000

0191H

+10.125

0000000010100001

00A2H

+0.5

0000000000000010

0008H

0

0000000000001000

0000H

-0.5

1111111111110000

FFF8H

-10.125

1111111101011110

FF5EH

-25.0625

1111111001101111

FE6FH

-55

1111110010010000

FC90H

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

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

操作协议为:

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

ROM操作命令

指令

说明

读ROM命令(33H)

读18B20的序行号

搜索ROM命令(F0H)

识别总线上各器件的编码

匹配ROM命令(55H)

用于多个DS18B20的定位

跳过ROM命令(CCH)

此命令执行后,存储器操作将针对总线上的所有操作

报警搜索ROM命令(ECH)

仅温度超限的器件对此命令做出响应

RAM操作命令

指令

说明

温度转换(44H)

启动温度转换

读暂存器(BEH)

读全部暂存器内容,包括CRC字节

写暂存器(4EH)

写暂存器第2,3和4个字节的数据

复制暂存器(48EH)

将暂存器中的TH,TL和配置寄存器内容复制到EEPROM中

读EEPROM(B8H)

将TH,TL和配置寄存器内容从EEPROM中回读至暂存器

DS18B20的通信协议:

DS18B20器件要求采用严格的通信协议,以保证数据的完整性。

该协议定义了几种信号类型:

复位脉冲,应答脉冲时隙;写0,写1时隙;读0,读1时隙。

与DS18B20的通信,是通过操作时隙完成单总线上的数据传输。

发送所有的命令和数据时,都是字节的低位在前,高位在后。

复位和应答脉冲时隙

每个通信周期起始于微控制器发出的复位脉冲,其后紧跟DS18B20发出的应答脉冲,在写时隙期间,主机向DS18B20器件写入数据,而在读时隙期间,主机读入来自DS18B20的数据。

在每一个时隙,总线只能传输一位数据。

写时隙

当主机将单总线DQ从逻辑高拉为逻辑低时,即启动一个写时隙,所有的写时隙必须在60~120us完成,且在每个循环之间至少需要1us的恢复时间。

写0和写1时隙如图所示。

在写0时隙期间,微控制器在整个时隙中将总线拉低;而写1时隙期间,微控制器将总线拉低,然后在时隙起始后15us之释放总线。

读时隙

 DS18B20器件仅在主机发出读时隙时,才向主机传输数据。

所以在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能够传输数据。

所有的读时隙至少需要60us,且在两次独立的读时隙之间,至少需要1us的恢复时间。

每个读时隙都由主机发起,至少拉低总线1us。

在主机发起读时隙之后,DS18B20器件才开始在总线上发送0或1,若DS18B20发送1,则保持总线为高电平。

若发送为0,则拉低总线当发送0时,DS18B20在该时隙结束后,释放总线,由上拉电阻将总线拉回至高电平状态。

DS18B20发出的数据,在起始时隙之后保持有效时间为15us。

因而主机在读时隙期间,必须释放总线。

并且在时隙起始后的15us之内采样总线的状态。

2.3显示模块

 

显示电路采用4位共阴极LED数码管,采用LED动态显示方式,从P1口输出段码,P2.0~P2.3作为位选控制端。

其中P1做输出口时需要加上拉电阻。

2.4开关控制电路模块

本模块有四个按键来实现报警温度的设置功能,当K2键按下时,系统进入报警温度上下限调整程序,按动K2可以实现对报警温度上限TH增一或减一,按动K3可以实现对报警温度下限TL增一或减一,其加减由按动K1来控制,同时LED显示当前在调的报警温度值,当调整完毕后,按K4键退出调整程序。

 

 

3软件设计

3.1主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,并与温度报警上下限设定值进行比较,同时查询K2是否按下进行报警温度的设置,然后循环执行。

其程序流程见图2所示。

 

 

 

图2主程序流程图图3读取温度流程图

3.2读取温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。

其程序流程图如图3所示。

 

3.3温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。

温度转换命令子程序流程图如图4所示

 

图4温度转换流程图

3.4计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如下图所示。

 

 

3.5温度比较

此程序是将实际温度与设置的报警上下限比较,决定是否发出报警信号。

由于T为实际温度的绝对值,TH、TL也是温度的绝对值,因此判断大小关系时要通过其正负符号来确定。

 

4Proteus软件仿真

(1)在正常工作模式下,LED显示当前所测的实际温度。

如果所测温度没有超出报警温度的上下限时,报警指示灯D1和蜂鸣器不动作;若超出所设置的报警上下限温度,报警指示灯D1闪烁同时蜂鸣器发出报警声响。

 

(2)当K2键按下时,系统进入报警温度上下限调整程序,按动K2可以实现对报警温度TH上限增一或减一,其加减由按动K1来控制,同时LED显示当前的报警温度上限值。

(3)当系统进入报警上下限设置后,按K3键可以实现对报警温度下限TL的增一或减一,其加减同样由按动K1键来控制,同时LED显示当前的报警温度下限值。

5课程设计体会

经过一个学期的学习,我们对单片机已经有了初步的认识,对于它的基本组成和结构已经有了简单的了解,这一周的课程设计让我体会到很多东西,不仅仅是有关单片机基本知识的,更多的是自己动手能力和逻辑思维能力的锻炼,同时,我更是知道了自己的不足,有好多东西是需要好好学习的。

其实要做出来做好这个课程设计是不容易的,是要付出很多心思的。

一开始我根本摸不着头脑,也没有什么想法,对四个题目都没感觉,用汇编根本编不出大程序,后来我还是决定做相对熟悉的c语言来编写。

于是,我就开始上网,去学校图书馆查询有关单片机的各种资料,每天一起来就是看书、查资料、编程、修改,写程序用了几天,还参考了好多参考书里设计实例的程序,加加减减的,还找同学指点,最后弄好了,可就是调试不出想要的结果,怎么找都找不到原因,最后还是与同学一起讨论、查找,在他们的帮助和积极引导下,才找出问题,做出很大的修改解决了问题。

还有就是画图和调试,真是一个很令人头疼的事情,要照顾好多方面的,需要细心才行。

在社会工程实践应用中,单片机开发系统的研制仍是一个热门话题,所以我想还是有必要再好好学习以下单片机的,这对我们以后的工作应是有好处的。

总之,这次课程设计让我学会了很多,也收获了很多,我想我是满意的。

从中我知道了任何事情都是从不懂到懂、从不熟练到熟练的过程,有问题并不可怕,关键是要找到方法去解决问题,思考、查资料、修改并勤于动手。

最后,非常感谢在设计中给予过我帮助的老师和同学。

参考文献

[1]余发山.单片机原理及应用技术.徐州:

中国矿业大学出版社,2003

[2]谭浩强.单片机课程设计.北京:

清华大学出版社,1989

[3]何立民.单片机应用技术大全.北京:

北京航空航天大学出版社,1994

[4]杨凌霄,微型计算机原理及应用.江苏:

中国矿业大学出版社,2004

[5]张毅刚.单片机原理及接口技术.哈尔滨:

哈尔滨工业大学出版社,1990

[6]李广弟.单片机基础.北京:

北京航空航天大学出版社,1992

附1:

源程序代码

TEMP_ZHDATA24H;实时温度值整合后存放单元

TEMPLDATA25H

TEMPHDATA26H

TEMP_THDATA27H;高温报警值存放单元

TEMP_TLDATA28H;低温报警值存放单元

TEMPHHDATA29H;百位数bcd码存放单元

TEMPHLDATA2AH;十位数bcd码存放单元

TEMPLHDATA2BH;个位数bcd码存放单元

TEMPLLDATA2CH;小位数bcd码存放单元

SIGNEQU20H.3;1=温度为负,0=温度为正

K1EQUP1.4

K2EQUP1.5

K3EQUP1.6

K4EQUP1.7

 

BEEPEQUP3.7

FLAG1EQU20H.0;DS18B20是否存在/1存在,0不存在

DQEQUP3.4

;=====================================================

ORG0000H

JMPMAIN

MAIN:

MOVSP,#60H

MOVA,#00H

MOVR0,#20H;将20H-2FH单元清零

MOVR1,#10H

CLEAR:

MOV@R0,A

INCR0

DJNZR1,CLEAR

LCALLTHTL_DISP

MOVR1,#250

MMM1:

LCALLDELAY

DJNZR1,MMM1

START:

CALLRESET;18B20复位子程序

JNBFLAG1,START1;DS1820不存在

CALLREAD_E2;从eerom拷贝TH\TL到暂存器

JMPSTART2

START1:

JMP$

START2:

CLRBEEP

CALLRESET

JNBFLAG1,START1;DS1820不存在

MOVA,#0CCH;跳过ROM匹配

CALLWRITE

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

CALLWRITE

CALLRESET

MOVA,#0CCH;跳过ROM匹配

CALLWRITE

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

CALLWRITE

CALLREAD

CALLCONV_TEMP

CALLLED_DISP

CALLTEMP_COMP

CALLPROC_K2

JMPSTART2

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

;============================================

;检测是否有键按下

;============================================

PROC_K2:

;按键K2处理

JBK2,PROC_END

CALLDELAY

JBK2,PROC_END

JNBK2,$

CALLBZ55_127

MOV29H,#0BH;H的bcd码送百位

MOVR4,TEMP_TH

LCALLTHTL_BCD

LCALLTHTL_DISP

CALLSE

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

当前位置:首页 > 成人教育 > 成考

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

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