单片机课程设计数字温度计样本Word下载.docx

上传人:b****6 文档编号:18035205 上传时间:2022-12-13 格式:DOCX 页数:30 大小:223.84KB
下载 相关 举报
单片机课程设计数字温度计样本Word下载.docx_第1页
第1页 / 共30页
单片机课程设计数字温度计样本Word下载.docx_第2页
第2页 / 共30页
单片机课程设计数字温度计样本Word下载.docx_第3页
第3页 / 共30页
单片机课程设计数字温度计样本Word下载.docx_第4页
第4页 / 共30页
单片机课程设计数字温度计样本Word下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

单片机课程设计数字温度计样本Word下载.docx

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

单片机课程设计数字温度计样本Word下载.docx

三、设计方案总体设计框图……………………………………………………………8

3.1硬件电路框图…………………………………………………………………………8

3.2硬件电路概述…………………………………………………………………………9

3.3主控电路………………………………………………………………………………9

3.4显示电路………………………………………………………………………………10

3.5报警温度调节电路……………………………………………………………………10

3.6温度传感器及DS18B20测温原理…………………………………………………11

四、系统软件算法设计………………………………………………………………15

4.1主程序…………………………………………………………………………………15

4.2读出温度子程序………………………………………………………………………16

4.3温度转换命令子程序…………………………………………………………………17

4.4计算温度子程序………………………………………………………………………17

4.5显示数据刷新子程序…………………………………………………………………17

4.61602液晶显示……………………………………………………………………18

五、软件仿真………………………………………………………………………………18

5.1系统仿真设计…………………………………………………………………………18

5.2系统原理图……………………………………………………………………………19

结与体会……………………………………………………………………………………20

附录……………………………………………………………………………………………21

参照文献………………………………………………………………………………………29

二、设计方案

2.1设计务任和规定

1、基本范畴-20℃——125℃

2、精度误差不大于0.5℃

3、LED数码直读显示

4、可以任意设定温度上下限报警功能.

2.2方案辩证

1温度计软件设计流程图:

2元器件选用:

单片机芯片选用:

方案一.

采用89C51芯片作为硬件核心,运用FlashROM,内部具备4KBROM存储空间,能于3V超低压工作,并且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序错误修改或对程序新增功能需要烧入程序时,对芯片多次拔插会对芯片导致一定损坏。

方案二:

采用AT89C51单片机与MCS-51系列单片机相比有两大优势:

第一,片内程序存储器采用闪存,使程序写入更加以便;

第二,提供了更小尺寸芯片,使整个硬件电路体积更小,且管脚数目为20个,与MCS-51相比减少一倍,使理解更容易。

综上所述:

本课设中单片机芯片采用AT89C51。

温度传感器选用:

方案一:

采用热敏电阻传感器。

运用热敏电阻随温度变化而明显变化,能直接将温度变化转换为能量变化,进而制成温度计。

但是其测温传感器比较复杂,并且不易通过编制程序来控制测温精度,增大系统设计难度。

方案二:

采用DS18B20温度传感器。

DS18B20内部3脚(或8脚)封装;

使用特有温度测量技术,将被测温度转换成数值信号;

3.0~5.5V电源供电方式和寄生电源供电方式;

ROM由64位二进制数字构成,共分为8个字节;

RAM由9个字节高速暂存器和非易失性电擦写ROM构成。

温度传感器选用智能测温器件DS18B20。

本设计显示电路采用1602液晶显示模块芯片。

3系统最后设计方案:

综上各方案所述,对本次课设方案选定:

采用AT89C51作为主控制系统;

1602液晶显示模块芯片作为温度数据显示装置;

而智能温度传感器DS18B20器件作为测温电路重要构成某些。

至此,系统最后方案拟定。

三、设计方案总体设计框图

温度计电路设计总体设计方框图如图所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,用1602液晶显示屏以串口传送数据实现温度显示。

3.1硬件电路框图:

图 总体设计方框图

3.2硬件电路概述:

系统由单片机最小系统、显示电路、按键、温度传感器等构成。

本电路是由AT89C2051单片机为控制核心,具备与MCS-51系列单片机完全兼容,程序加密等功能,带2KB字节可编程闪存,工作电压范畴为2.7~6V,全静态工作频率为0~24MHZ;

显示电路由1602液晶显示模块芯片,可以进行多行显示;

温度报警按键设为五个,可以显示华氏温度,调节高低报警温度;

温度传感器电路重要由DS18B20测温器件构成,该器件重要功能有:

采用单总线技术;

每只DS18B20具备一种独立不可修改64位序列号;

低压供电,电源范畴为3~5V;

测温范畴为-20℃~+125℃,误差为±

0.5℃;

复位电路是10K电阻构成上电自动复位。

3.3主控电路

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

晶振采用12MHZ。

复位电路采用上电加自动复位。

主控芯片AT89C51

晶振电路

复位电路

3.4显示电路

本设计显示电路采用1602液晶显示模块芯片,该芯片可现实16x2个字符,比此前七段数码管LED显示屏在显示字符数量上要多得多。

此外,由于1602芯片编程比较简朴,界面直观,因而更加易于使用者操作和观测。

1602A芯片接口信号阐明如下表:

1602A芯片接口信号阐明

图液晶显示电路

3.5报警温度调节电路

本系统一共设立了五个按键,k1键只是显示华氏温度,k4键按下不松开显示高低报警温度,松开后恢复显示正常温度,k2键和k3键是分别用来调节高低报警温度,k键控制调节时上调或下调。

详细调节如将高温报警温度调高,第一步将k4键按下不松,k键升起位置,调节k2键,则高温报警温度向上增长,反之亦然。

低温报警同理。

图报警点调节电路

3.6温度传感器及DS18B20测温原理

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

DS18B20性能特点如下:

(1)独特单线接口仅需要一种端口引脚进行通信,DS18B20在与微解决器连接时仅需要一条口线即可实现微解决器与DS18B20双向通讯。

(2)DS18B20支持多点组网功能,各种DS18B20可以并联在惟一三线上,实现多点组网测温;

(3)不必外部器件,所有传感元件及转换电路集成在形如一只三极管集成电路内;

(4)可通过数据线供电,电压范畴为3.0-5.5V;

(5)零待机功耗;

(6)温度以9或12位数字,相应可辨别温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;

(7)顾客可定义报警设立;

(8)报警搜索命令辨认并标志超过程序限定温度(温度报警条件)器件;

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

(10)测量成果直接输出数字温度信号,以"

一线总线"

串行传送给CPU,同步可传送CRC校验码,具备极强抗干扰纠错能力

DS18B20采用3脚PR35封装或8脚SOIC封装,其引脚排列及内部构造框图如图及测温原理图如下所示:

图引脚排列

图内部构造框图

 

图DS18B20测温原理图

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

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

DS18B20温度传感器内部存储器还涉及一种高速暂存RAM和一种非易失性可电擦除EERAM。

高速暂存RAM构造为8字节存储器,构造如图4所示。

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

第5个字节,为配备寄存器,它内容用于拟定温度值数字转换辨别率。

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

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

低5位始终为1,TM是工作模式位,用于设立DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设立为0,顾客不要去改动,R1和R0决定温度转换精度位数,来设立辨别率。

温度LSB

温度MSB

TH顾客字节1

TL顾客字节2

配备寄存器

保存

CRC

TM

R1

R0

1

图5DS18B20字节定义

DS18B20辨别率定义如表1所示

表1辨别率设立表

辨别率

最大温度转移时间

9位

96.75ms

10位

187.5ms

11位

375ms

12位

750ms

由表1可见,DS18B20温度转换时间比较长,并且辨别率越高,所需要温度数据转换时间越长。

因而,在实际应用中要将辨别率和转换时间权衡考虑。

主机控制DS18B20完毕温度转换过程是:

每一次读写之前都要对DS18B20进行复位,即将数据总线下拉500us,然后释放,DS18B20收到信号后等待16-60us左右,之后发出60-240us存在低脉冲,主CPU收到此此信号表达复位成功;

复位成功后发送一条ROM指令,然后发送RAM指令,这样才干对DS18B20进行预订读写操作。

表2ROM指令集

指令

商定代码

功能

读ROM

33H

读DS18B20中编码

符合ROM

55H

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

搜索ROM

0F0H

用于拟定挂接在同一总线上DS18B20个数和辨认64位ROM地址,为操作各器件作准备

跳过ROM

0CCH

忽视64位ROM地址,直接向DS18B20发送温度变换指令

告警搜索命令

0ECH

执行后,只有温度跳过设定值上限或下限片子才干做出反映

表3RAM指令集

温度转换

44H

启动DS18B20进行温度转换

读暂存器

0BEH

读暂存器9个字节内容

写暂存器

4EH

将数据写入暂存器TH、TL字节

复制暂存器

48H

把暂存器TH、TL字节写到E2RAM中

重调E2RAM

0B8H

把E2RAM中TH、TL字节写到暂存器TH、TL字节

读供电方式

0B4H

启动DS18B20发送电源供电方式信号给主CPU

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

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

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

计数门启动时间由高温度系数振荡器来决定,每次测量前,一方面将最低温所相应一种基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在最低温所相应一种基数值。

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

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

测温电路

四、系统软件算法设计

整个系统是由硬件配合软件来实现,在硬件拟定后,编写软件功能也就基本定型了。

因此软件功能大体可分为两个某些:

一是监控,这也是系统核心某些,二是执行某些,完毕各个详细功能。

系统程序重要涉及主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。

4.1主程序

主程序重要功能是负责温度实时显示、读出并解决DS18B20测量当前温度值,温度测量每1s进行一次。

这样可以在一秒之内测量一次被测温度,其程序流程见图所示。

图主程序流程图图读温度流程图

4.2读出温度子程序

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

其程序流程图如图示

图温度转换流程图

4.3温度转换命令子程序

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

温度转换命令子程序流程图如上图,图9所示

4.4计算温度子程序

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

图 计算温度流程图 图 显示数据刷新流程图

4.5显示数据刷新子程序

显示数据刷新子程序重要是对显示缓冲器中显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。

程序流程图如图。

4.61602液晶显示

1602液晶显示流程图:

五、软件仿真

5.1系统仿真设计

本设计是在Proteus环境下进行仿真,仿真所用到器件有:

单片机AT89C51,DS1820温度传感器,蜂鸣器,液晶显示屏,某些电阻,电容等。

仿真成果如下:

显示屏显示传感器温度

高低报警温度

高温报警低温报警

报警时led灯提示

5.2系统原理图

六、总结与体会

通过将近三周单片机课程设计,终于完毕了我数字温度计设计,虽然没有完全达到设计规定,但从心底里说,还是高兴,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!

在本次设计过程中,我发现诸多问题,虽然此前还做过这样设计但这次设计真让我长进了诸多,单片机课程设计重点就在于软件算法设计,需要有很巧妙程序算法,虽然此前写过几次程序,但我觉写好一种程序并不是一件简朴事,举个例子,此前写那几次,数据加减时,我用都是BCD码,这一次,我所有用都是16进制数直接加减,显示解决时在用除法去删分,感觉效果比较好,有好多东西,只有咱们去试着做了,才干真正掌握,只学习理论有些东西是很难理解,更谈不上掌握。

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

通过这次对数字温度计设计与制作,让我理解了设计电路程序,也让我理解了关于数字温度计原理与设计理念,要设计一种电路总要先用仿真仿真成功之后才实际接线。

但是最后成品却不一定与仿真时完全同样,由于,再实际接线中有着各种各样条件制约着。

并且,在仿真中无法成功电路接法,在实际中由于芯片自身特性而可以成功。

因此,在设计时应考虑两者差别,从中找出最适合设计办法。

通过这次学习,让我对各种电路均有了大概理解,因此说,坐而言不如立而行,对于这些电路还是应当自己动手实际操作才会有深刻理解。

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

附录:

//******************************************************

#include<

reg51.h>

intrins.h>

//shiyongyanshi

math.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P3^3;

sbitRS=P2^0;

sbitRW=P2^1;

sbitEN=P2^2;

sbitk=P1^0;

sbitk1=P1^4;

sbitk2=P1^5;

sbitk3=P1^6;

sbitk4=P1^7;

sbitled_red=P2^5;

sbitled_blue=P2^6;

sbitBEEP=P3^7;

ucharbz=1;

//BEEP=0;

ucharng=0;

//fuhaobiaoshiwei

ucharTempBuffer[]={"

TEMP:

"

};

inttemp_value;

//温度值

ucharcodedis_title[]={"

--currenttemp--"

voidxianshi_huashi();

uchargw=40;

chardw=10;

ucharxianshi_title[]={"

TEMPALARM"

ucharxianshi_baojing[]={"

HI:

LO:

//34510``12

//----------------延时--------------------------------

voiddelayxus(uintx)

{

uchari;

while(x--)for(i=0;

i<

200;

i++);

}

//*********************LCD控制********************

//读lcd状态

ucharread_lcd_state()

{

ucharstate;

RS=0;

RW=1;

EN=1;

delayxus

(1);

state=P0;

EN=0;

returnstate;

}

//忙等待

voidlcd_busy_wait()

while((read_lcd_state()&

0x80)==0x80);

delayxus(5);

}

//向LCD写数据

voidwrite_lcd_data(uchardat)

lcd_busy_wait();

RS=1;

RW=0;

P0=dat;

//向LCD写指令

voidwrite_lcd_cmd(ucharcmd)

{lcd_busy_wait();

P0=cmd;

//-----------------------------------------------------------------------------------------------------

//LCD初始化

voidinit_lcd()

write_lcd_c

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

当前位置:首页 > 高等教育 > 军事

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

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