基于51单片机的温度检测系统.docx

上传人:b****1 文档编号:10519433 上传时间:2023-05-26 格式:DOCX 页数:44 大小:699.95KB
下载 相关 举报
基于51单片机的温度检测系统.docx_第1页
第1页 / 共44页
基于51单片机的温度检测系统.docx_第2页
第2页 / 共44页
基于51单片机的温度检测系统.docx_第3页
第3页 / 共44页
基于51单片机的温度检测系统.docx_第4页
第4页 / 共44页
基于51单片机的温度检测系统.docx_第5页
第5页 / 共44页
基于51单片机的温度检测系统.docx_第6页
第6页 / 共44页
基于51单片机的温度检测系统.docx_第7页
第7页 / 共44页
基于51单片机的温度检测系统.docx_第8页
第8页 / 共44页
基于51单片机的温度检测系统.docx_第9页
第9页 / 共44页
基于51单片机的温度检测系统.docx_第10页
第10页 / 共44页
基于51单片机的温度检测系统.docx_第11页
第11页 / 共44页
基于51单片机的温度检测系统.docx_第12页
第12页 / 共44页
基于51单片机的温度检测系统.docx_第13页
第13页 / 共44页
基于51单片机的温度检测系统.docx_第14页
第14页 / 共44页
基于51单片机的温度检测系统.docx_第15页
第15页 / 共44页
基于51单片机的温度检测系统.docx_第16页
第16页 / 共44页
基于51单片机的温度检测系统.docx_第17页
第17页 / 共44页
基于51单片机的温度检测系统.docx_第18页
第18页 / 共44页
基于51单片机的温度检测系统.docx_第19页
第19页 / 共44页
基于51单片机的温度检测系统.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于51单片机的温度检测系统.docx

《基于51单片机的温度检测系统.docx》由会员分享,可在线阅读,更多相关《基于51单片机的温度检测系统.docx(44页珍藏版)》请在冰点文库上搜索。

基于51单片机的温度检测系统.docx

基于51单片机的温度检测系统

单片机C语言课题设计报告

设计题目:

温度检测

指导老师:

设计人:

学号:

班级:

设计时间:

摘要

本课题以51单片机为核心实现智能化温度测量。

利用18B20温度传感器获取温度信号,将需要测量的温度信号自动转化为数字信号,利用单总线和单片机交换数据,最终单片机将信号转换成LCD可以识别的信息显示输出。

基于STC90C516RD的+单片机的智能温度检测系统,设计采用18B20温度传感器,其分辨率可编程设计。

本课题设计应用于温度变化缓慢的空间,综合考虑,以降低灵敏度来提高显示精度。

设计使用12位分辨率,因其最高4位代表温度极性,故实际使用为11位半,而温度测量范围为-55℃~+125℃,则其分辨力为0.0625℃。

设计使用LCD1602显示器,可显示16*2个英文字符,显示器显示实时温度和过温警告信息,传感器异常信息设。

计使用蜂鸣器做警报发生器,当温度超过设定值时播放《卡农》,当传感器异常时播放嘟嘟音。

一、设计功能3

二、系统设计3

三、器件选择3

3.1温度信号采集模块.3

3.1.1DS18B20数字式温度传感器4

3.1.2DS18B20特性.4

3.1.3DS18B20结构.5

3.1.4DS18B20测温原理.6

3.1.5DS18B20的读写功能.6

3.2液晶显示器1602LCD.9

3.2.1引脚功能说明.9

3.2.21602LCD的指令说明及时序.10

3.2.31602LCD的一般初始化过程.10

四、软件设计11

4.11602LCD程序设计流程图.11

4.2DS18B20程序设计流程图.12

4.3主程序设计流程图13

五、设计总结14

六、参考文献14

七、硬件原理图及仿真15

7.1系统硬件原理图.15

7.2开机滚动显示界面.16

7.3临界温度设置界面.16

7.4传感器异常警告界面.16

八、程序清单17

、设计功能

由单片机、温度传感器以及液晶显示器等构成高精度温度监测系统。

温度显示精确到小数点后四位。

按键设定过温值,过温在液晶屏提示并响铃卡农一次,直到温度正常。

设计传感器状态检测函数,传感LC器D1工作不正常在液晶屏警告提示,响警告铃,

LM016L

直到故障排除。

proteus做系统硬件电路设VC计C并仿真。

SSDDEESW01234567

GNDVVVRREDDDDDDDD

GND

三、器件选择

3.1温度信号采集模块

传统的温度检测大多以热敏电阻为传感器,采用热敏电阻,可满足40℃度

至90℃测量范围,但热敏电阻可靠性差,测量温度准确率低,对于1℃的信号

是不适用的,还得经过专门的接口电路转换成数字信号才能由微处理器进行处

目前常用的微机与外设之间进行的数据通信的串行总线主要有I2C总线,

SPI总线等。

其中I2C总线以同步串行2线方式进行通信(一条时钟线,一条数据线)。

SPI总线则以同步串行3线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线)。

这些总线至少需要两条或两条以上的信号线。

而单总线(1-wirebus),采用单根信号线,既可传输数据,而且数据传输是双向的,CPU只需一根端口线就能与诸多单总线器件通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

单总线具有广阔的应用前景,是值得关注的一个发展领域。

单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。

主机或从机通过一个漏极开路或三态端口连接到数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线。

单总线通常要求外接一个约为4.7K的上拉电阻,这样,当总线闲置时其状态为高电平。

3.1.1DS18B20数字式温度传感器

DS18B20数字式温度传感器使用集成芯片,采用单总线技术,其能够有效的减小外界的干扰,提高测量的精度,同时,它可以直接将被测温度转化成串行数字信号供微机处理,接口简单,使数据传输和处理简单化。

部分功能电路的集成,使总体硬件设计更简洁,能有效地降低成本,搭建电路和焊接电路时更快,调试也更方便简单化,大大缩短了开发的周期。

3.1.2DS18B20特性

采用单总线的接口方式,与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。

1)适应电压范围更宽,电压范围:

3.0~5.5V,在寄生电源方式下可由数据线供电。

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

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

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

5)温范围-55℃~+125℃。

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

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

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

9)负压特性:

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

3.1.3

DS18B20结构

3.1.4DS18B20测温原理

DS18B20测温原理框图

图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。

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

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的

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

图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。

3.1.5DS18B20的读写功能

DS18B20温度值格式表

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

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

DS18B20温度数据表

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

TM

R1

R0

1

1

1

1

1

配置寄存器结构

低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要去改动。

R1和R0用来设置分辨率,如下表所示:

(DS18B20出厂时被设置为12位)

R1

R0

分辨率

温度最大转换时间

0

0

9位

93.75ms

0

1

10位

187.5ms

1

0

11位

375ms

1

1

12位

750ms

温度分辨率设置表

寄存器内容

字节地址

温度值低位(LSByte)

0

温度值高位(MSByte)

1

高温限值(TH)

2

低温限值(TL)

3

配置寄存器

4

保留

5

保留

6

保留

7

CRC校验值

8

DS18B20暂存寄存器分布

根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:

每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

指令

约定代码

功能

读ROM

33H

读DS1820温度传感器ROM中的编码(即64位地址)

符合ROM

55H

发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。

搜索ROM

0FOH

用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。

为操作各器件作好准备。

跳过ROM

0CCH

忽略64位ROM地址,直接向DS1820发温度变换命令。

适用于单片工作。

告警搜索命令

0ECH

执行后只有温度超过设定值上限或下限的片子才做出响应。

温度变换

44H

启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。

结果存入内部9字节RAM中。

读暂存器

0BEH

读内部RAM中9字节的内容

写暂存器

4EH

发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。

复制暂存器

48H

将RAM中第3、4字节的内容复制到EEPROM中。

重调EEPROM

0B8H

将EEPROM中内容恢复到RAM中的第3、4字节。

读供电方式

0B4H

读DS1820的供电模式。

寄生供电时DS1820发送“0,”外接电源供电DS182

0发送“1”。

ROM指令表

C1

22pF

X1

C2

22pF

C3

3.2液晶显示器1602LCD

LCD1

LM016L

CC

V

7

6

5

4

3

2

1

0

W

S

EE

DD

SS

U1

19XTAL1

39

38

37

0

1D

2D

23D

P0.0/AD0

P0.1/AD1CRYSTALP0.2/AD2显示容量:

16×218个字符XT,A芯L2片工作电压:

4.5—5.5PV0.,3/A工D作3电流3:

26.0mA(54D.0V)工作电压:

5.0V,字符尺寸:

2.95×4.35(W×H)mm。

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7

R13.2.1引脚功能说9明RST

10k

VCC

RP1

C

VCC

P2.0/A8

35

34

33

32

D0

D1

D2,D3模块5最佳

D4

D5

D6

D7

6

7

8

9

RESPACK-8

编号

符号

23引90脚说PA明LSEEN

编号

符P2号.3/A11

符P2号.4/A12

24引脚2说5明RW

1

VSS

31ALE

3电1源地EA

9

DP2.5/A13

数据2267SR

2

VDD

电源正极

10

P2.6/A14

DP32.7/A15

数据28EN

3

VL

液1晶显P示1.0偏压

11

PD34.0/RXD

数据10

C

VCC

4

RS

2P1.1

数3据/P命1.令2选择

12

P3.1/TXD

PD35.2/INT0

11

数据12

5

R/W

读5/写PP选11择..34

13

PD36.3/INT1

D6P3.4/T0

13数据14

R2

4.7K

6

6

使7能信P号1.5

14

D7P3.5/T1

15数据16

3

U2

7

D0

P1.6数8据P1.7

15

P3.6/WR

BPL3A.7/RD

背光1源7正极

2

1

VCC

DQ

8

D1

数据80C51

16

BLK

背光源负极

GN

1602LCD采用标准的14脚(无背光)或16脚

口,

1uF

21

22

各23引脚接口说明如图

GND

43.0

 

3.2.21602LCD的指令说明及时序

1602液晶模块内部的控制器共有11条控制指令,如图

序指令RSR/WD7D6D5D4D3D2D1D0号

1清显示0000000001

2光标返回000000001*

3置输入模式00000001I/DS

4显示开/关控制0000001DCB

5光标或字符移位000001S/CR/L**

6置功能00001DLNF**

7置字符发生存贮器地址0001字符发生存贮器地址

8置数据存贮器地址001显示数据存贮器地址

9读忙标志或地址01BF计数器地址

10写数到CGRAM或DDRA)M10要写的数据内容

11从CGRAM或DDRAM读数11读出的数据内容

3.2.31602LCD的一般初始化过程

延时15mS写指令38H(不检测忙信号)延时5mS

写指令38H(不检测忙信号)延时5mS

写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:

显示模式设置

写指令08H:

显示关闭

写指令01H:

显示清屏

写指令06H:

显示光标移动设置

写指令0CH:

显示开及光标设置

四、软件设计

4.11602LCD程序设计流程图

 

4.2DS18B20程序设计流程图

 

开始

DSIMB20SP

DSI8θ2O⅜tCZ

检測闕应祥Mt冲

检测到破答除冲

KKKROM⅛⅛55H

¾Λ*ROM命令FoH

笈64他地址科

确定64fiROM地址

发⅛tt⅛t⅛⅛βt⅛⅜BEH

DSlaH20更位

檯收也爪效厭

怜测到飓符林冲

勺HiftliA度比段

发促配IK)M⅛^55H

发64位

发ii⅛MΛ⅛>44H

结电

4£时專tH⅛腹转换丸成

报警

 

4.3主程序设计流程图

调用滚动子函数

调用温度读取子函数

警铃函数

N

N

Y调用Error_Menu

N

是否初始化完成且不过温Y

18B20初始化是

否完成

是否初始化完成且过温

读取温度

调用Ok_Menu

读取温度

显示温度

Y

18B20初始化是否通过

是否初始化完

成且不过温

N

读取温度

Y调用OVER_TEMP调用卡农音乐

是否初始化完

成且过温

 

 

 

五、设计总结

在这课题设计中我学到了很多东西,获益匪浅。

本次课题以51单片机为核心实现了智能化温度测量,过温警告,传感器异常警报功能。

利用温度传感器获取被控对象指标,通过温度传感器将需要测量的温度信号转化为数字电信号,通过单总线与MCU进行传输,再经单片机转换成显示器可以识别的信息,最后显示输出。

在一开始,我制订了合理的规划,绘制了与课题相关的硬件原理图,分析了单片机的各I/O端口。

然后进行程序设计的分析,设计绘制流程图,并按照流程图,进行程序段的编写。

接下来把所有的程序段组合在一起综合分析,最后烧录到单片机上进行硬件调试。

在这整个过程当中,我遇到了重重困难。

(1)高位为零时消隐;

(2)18B20上电温度误判;(3)LCD显示闪烁;(4)18B20修复温度误判;(5)LCD查表写坐标混合显示。

通过一次次的反复分析和调试,查阅互联网资料最终成功解决。

这其中的苦泪和欢笑只有自己知道。

通过程序的编写我收获了很多,并总结到大多数故障问题源于程序里括号及分号的错误。

通过这次课题设计,我深深意识到学习单片机不是只要学好怎样写程序就够了,还要对硬件有所了解,要把软件与硬件相结合才,期间还要经过多次的失败,需要相当的耐心和细致的思考来排除一切困难,一步一步地解决问题。

在此,我要特别施芸老师给提供给我这次自我锻炼,自我提升的机会。

我定会把这次课题设计积累的经验落实到以后的学习中去。

姓名

学号

班级

钟乾鹏

201112020247

2011级通信技术1班

六、参考文献

【1】马忠梅等编著.单片机的C语言应用程序设计(第4版).北京[M]:

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

【2】樊明龙等编著.单片机原理与应用.北京[M]:

北化学工业出版社,2005

3】周志德.单片机原理级应用.北京[M]:

高等教育出版社,2001鸣谢

DN

CC

七、硬件原理图及仿真

7.1系统硬件原理图

LCD1

LM016L

C1

22pF

C2

GND

VCC

X1CRYSTAL

19

22pFR1

10k

C3

1uF

LS2

SOUNDER

VDDVEESRRWE0D1D2D3D4D5D6D7D

12

18

29

30

31

1

2

3

4

5

6

7

8

XTAL1

XTAL2

RST

PSEN

ALE

EA

P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

80C51

P0.0/AD0

P0.1/AD1

P0.2/AD2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7

P2.0/A8

P2.1/A9

P2.2/A10

P2.3/A11

P2.4/A12

P2.5/A13

P2.6/A14

P2.7/A15

P3.0/RXD

P3.1/TXD

P3.2/INT0

P3.3/INT1

P3.4/T0

P3.5/T1

P3.6/WR

P3.7/RD

741

39

38

37

36

35

34

33

32

23

24

25

28

VCC

26

27

21

22

K1

K2

K3

SR

10

11

12

13

14

15

16

17

GND

RESPACK-8

GND

R2

4.7KU2

VCC20.0

DQ20.0

GND

DS18B20

 

 

7.2开机滚动显示界面

LCD1

LM016L

 

7.3临界温度设置界面

LM016L

 

7.4传感器异常警告界面

LCD1

LM016L

 

SRRWE0D1D2D3D4D5D6D7D

VCC

EE

DD

SS

GND

 

45678910121310D1D2D3D14D5D16D1

八、程序清单

#include#include#include#defineucharunsignedchar#defineuintunsignedint

sbitDQ=P3^7;//sbitK5=P2^3;

sbitK6=P2^2;

sbitK7=P2^1;

bitpresence;//

定义DS18B20端口DQ

初始化标志位

sbitlcdrs=P2^6;//sbitlcdrw=P2^5;sbitlcden=P2^7;

加按键

//减按键

//确定

uintT,Temp;//T包含两个单元,用来存储16位温度信息

ucharcodecdis1[]={"WELCOMTOUSE!

"};//正常测温显示界面

ucharcodecdis2[]={"TEMP:

.C"};

ucharcodecdis3[]={"DS18B20ERR0R"};

ucharcodecdis4[]={"PLEASECHECK"};

ucharcodecdis5[]={"ZhongQianPeng"};//开始滚动界面

ucharcodecdis6[]={"Communication1"};

ucharcodecdis7[]={"!

!

!

!

Warning!

!

!

!

"};//过温语句

ucharcodecdis8[]={"---OVERTEMP---"};

ucharcodecdis9[]={"Pleasesettemp!

"};//设定温度

ucharcodecdis10[]={"MaxTempC"};//可设两位

uchar

bai,shi,ge,xiaoshu1,xiaoshu2,xiaoshu3,xiaoshu4,fuhao,th_temp,tl_temp;charset=30;//set存有设定的温度,设初值为30

#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};

 

*两个延时函数************************************************************

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2