数字温度计课程设计.docx

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

数字温度计课程设计.docx

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

数字温度计课程设计.docx

数字温度计课程设计

 

课程设计任务书

 

课程:

单片机技术

课程设计题目:

数字温度计

班级:

姓名:

学号:

时间:

指导教师:

第1章设计数字温度计的任务及功能要求说明1

 

第1章设计数字温度计的任务及功能要求说明

 

1.1、设计数字温度计的任务

设计一个具有特定功能的数字温度计。

该数字温度计上电或按键复位后能自动显示系统提示符“28090303”,进入准备工作状态。

测量温度范围0℃~99℃,测量精度小数点后四位,可以通过开始和结束键控制数字温度计的工作状态。

1.2、数字温度计功能要求说明

数字温度计在上电或按键复位后能自动显示系统提示符“28090303”。

P1口是独立式按键控制口,当按下S2键时,启动18B20并进入工作状态,并在数码管上显示即时温度,温度值可精确到小数点后四位;当按下S3键后,使18B20处于停止工作状态,并让数码管显示系统提示符。

当18B20周围的温度高于温度上限值时(例如可设定温度上限值为20度),接在P3.1口的蜂鸣器报警,并且开启接P3.1口的警示灯。

系统的逻辑框图如图1.1所示。

图1.1系统的逻辑框图

 

第2章数字温度计硬件系统的设计

 

2.1、数字温度计硬件系统各模块功能简要介绍

数字温度计的整体硬件电路仿真图如图2.1所示。

主要包括单片机主板电路(复位电路和时钟电路),DS18B20电路,温度显示电路(数码管电路),按键输入电路,以及有报警作用的蜂鸣器电路和LED警示灯显示电路。

图2.1整体硬件电路

(1)、单片机主板电路

图2.2是单片机主板电路。

包括时钟振荡电路和按键复位电路,时钟电路是由外接的晶振以及两个电容构成。

晶振的两个引脚分别接在单片机的X1和X2引脚。

按键复位电路是上电复位加手动复位,由单片机的RES引脚外接的电阻电容以及一个复位按键构成。

另外扩展电路中,蜂鸣器电路由蜂鸣器、三极管及电阻构成。

其接在单片机的P3.1口,是低电平有效。

蜂鸣器可以在被测温度不在上限范围内时,发出报警鸣叫声音,接在P3.1口的LED警示灯被点亮,同时数码管显示被测量的温度值。

按键输入电路是由单片机的P1口控制的,是低电平为有效信号。

其图如图2.3所示。

图2.2单片机主板电路

图2.3按键输入电路

(2)、显示电路

数码管显示电路如图2.3所示。

数码管显示电路使用的是串口显示,这种显示方式最大的优点就是使用口资源比较少,只用P0和P2口。

两个四位一体共阳数码管采用动态接法,即位控并联、段控分别控制。

P0口为段控口,P2口为位控口,都是低电平为有效信号。

在位控口接上电阻和的三极管,期望增加驱动电流,以使数码管高亮度显示。

图2.3显示电路

(3)、18B20电路

图2.4所示的18B20由P3.0口引出。

DS18B20具有独特的单线接口仅需要一个端口引脚进行通信,而且用户可定义报警设置。

本实验中就用到了该功能,当环境的温度值超过系统设定的温度上限值时,设定了蜂鸣器和LED灯的有效程序。

蜂鸣器会报警,LED灯会点亮。

图2.4DS18B20电路

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

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

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

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

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

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

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

温度LSB

温度MSB

TH用户字节1

TL用户字节2

配置寄存器

保留

保留

保留

CRC

2.58字节存储器结构图

TM

R1

R0

1

1

1

1

1

2.6DS18B20字节定义

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

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

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

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

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

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

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

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

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

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

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

操作协议为:

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

分别说明如下:

●初始化:

单总线的所有处理均从初始化开始。

初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。

初始化后,才可进行读写操作。

●ROM操作命令:

总线主机检测到DS18B20的存在便可以发出ROM操作命令之一。

这些命令如表2.1所示。

表2.1ROM操作命令

指令

代码

ReadROM(读ROM)

[33H]

MatchROM(匹配ROM)

[55H]

SkipROM(跳过ROM]

[CCH]

SearchROM(搜索ROM)

[F0H]

Alarmsearch(告警搜索)

[ECH]

●存储器操作命令如表2.2所示。

表2.2存储器操作命令

指令

代码

WriteScratchpad(写暂存存储器)

[4EH]

ReadScratchpad(读暂存存储器)

[BEH]

CopyScratchpad(复制暂存存储器)

[48H]

ConvertTemperature(温度变换)

[44H]

RecallEPROM(重新调出)

[B8H]

ReadPowersupply(读电源)

[B4H]

2.2、数字温度计电路原理图

见附录A。

2.3、数字温度计PCB图

见附录B和附录C。

2.4、数字温度计元器件布局图

见附录D。

2.5、数字温度计元器件清单

见附录E。

第3章数字温度计软件系统的设计

 

3.1、数字温度计使用单片机资源的情况

数字温度计设计使用单片机资源情况如下所述。

P0口的八根口线都用于控制数码管的段空线,采用并联方式连接。

P2口的八根口线都用于控制数码管的位控线,采用单独连接方式。

P1口则用于控制按键电路,只用到了P1.0和P1.1口,P1.0接S2按键,做为开启键,P1.1口接S3按键,做为停止键,即按键复位状态。

P3口只用到了P3.0和P3.1口,P3.0口为18B20的DQ口控制状态,低电平有效,因此要是18B20处于工作状态,P3.0口的LED灯会被点亮。

P3.1口是控制蜂鸣器和警示灯的口线,是低电平有效,当蜂鸣器报警且警示灯点亮时,表示温度超过系统设定的温度上限值。

3.2、数字温度计软件系统各模块功能简要介绍及流程框图

本次数字温度计的设计目的,主要是通过单片机控制18B20温度传感器来测量周边的环境温度。

在上电复位或按键复位后显示系统提示符,通过开启和停止键来控制温度传感器的工作状态。

但温度高于系统设定的温度上限值时,系统通过蜂鸣器报警,同时点亮警示灯。

主要的软件模块包括主程序、18B20初始化程序、做好读温度准备子程序、读温度子程序、写温度子程序、显示子程序以及键扫描程序。

他们的功能及流程框图如下所示。

由于18B20是串行口,故尤其要注意时序问题,要延时以给机器足够的反应时间。

(1)、主程序

主程序的功能是要操作整个系统,首先要将温度传感器的DQ拉高,通过单片机P1口的按键控制18B20的工作状态。

若开启键按下,则做好读温度的准备,接着是先读低位的温度值,再读高位的温度值,然后将所读的二进制温度值转换成十进制的温度值,并将温度值送往数码管显示。

显示温度的过程中,若碰到温度值超过系统设定的温度上限值,则开启报警电路。

若按下停止键,则显示系统提示符。

流程框图如图3.1所示。

3.1主程序流程框图

 

(2)、18B20初始化程序

由于18B20初始化过程中有复位和存在脉冲的问题,因此需多次改变DQ的状态并延时等待。

首先要将DQ拉为高电平,延时几微妙。

其次将DQ拉为低电平,控制器Tx“复位脉冲”延时480-960us。

接着又将DQ拉为高电平等待60us,最后延时让18B20输出存在脉冲。

并且延时足够长,等待脉冲输出完毕。

程序流程框图如图3.2所示。

3.218B20初始化流程框图

(3)、做好读温度准备子程序

18B20的操作协议为规定为:

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

单总线的所有处理均从初始化开始。

初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。

初始化后,才可进行读写操作。

当总线主机检测到DS18B20的存在,便可以发出ROM操作命令之一即可。

SkipROM就是ROM操作指令中的一个,其代码为CCH。

存储器命令中的ConvertT命令的作用是开启温度转换,其代码是44H,单线总线发出协议后,表示18B20处在读温度忙状态。

最后是数据处理情况。

其流程框图如图3.3所示。

图3.3做好读温度准备子程序流程框图

(4)、读温度子程序

读温度的子程序中要注意控制器读数的时间间隙。

根据18B20的读时序可以得知,首先应将DQ拉为高电平,一个机器周期后将其拉为低电平,然后将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备,接着开始读温度。

利用与运算,将值从低位到高位读出,读一位则二进制数右移一位,即可读完所测温度八位数的值。

读的过程中要给控制器足够的采样时间。

最后延时,给机器较长的反应时间。

其流程框图如图3.4所示。

图3.4读温度子程序流程框图

(5)、写温度子程序

写温度的子程序与读温度的子程序类似,只需将读温度子程序中所读得的值一位一位写入。

同样是先将DQ拉为高电平,再拉低,然户开始从低位到高位依次写入。

由于两个写时序间至少需要1us的恢复期,所以位与位之间至少延时2us时间。

最后稍作延时,给机器反应时间。

其流程框图如图3.5所示。

图3.5写温度子程序流程框图

(6)、显示函数

本设计中有两个显示函数,一个是按键或上电复位后的显示函数,即显示系统提示符;另一个是所测得的温度显示。

温度的显示可以精确到小数点后四位,多位数据的显示可以采用数组的方式一位一位将值送往数码管显示。

整个程序的开始定义了一个存放显示数值代码的数组。

还有一个位控的数组,用来控制数码管的每一位。

将数值代码送往控制段控口的P0口,将位控值送往位控口P2口,每送一位要延时一段时间。

以防有阴影,最后可将P0、P2口送“灭”的代码。

程序流程框图如图3.6所示。

系统提示符显示函数,是由本人设定的固定显示。

将所要显示的值送往数组,然后从低位到高位依次送往P2口显示。

其流程框图如图3.7所示。

图3.6数码管显示程序流程图

图3.7数码管显示系统提示符程序流程图

(7)、键扫描子程序

按键扫描子程序包括键值处理程序和键扫描程序。

键处理程序中,首先得将P1口的电平拉高,则送往P1口的值为低电平有效,将所得的P1口的值取反后做为P1口的键值。

按键接在单片机的P1口,键处理将其值送往键扫描程序,判断是否有键按下,延时消抖后再判断是否有键按下,再次调P1口键处理函数,若真正有键按下,取键值并暂存。

然后判断键是否松开,延时一直到键松开,再将所得的键值保存,并作为函数的返回值。

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

图3.8键扫描程序流程图

第4章设计结论、仿真结果

 

4.1、数字温度计的设计结论及使用说明

经过制板与编程,本次设计的数字温度计能够准确达到预期的结果。

能够准确的按照软件系统的设定实现其功能。

该数字温度计的使用说明如下:

接通电源,电源指示灯亮,表明电源正常。

当系统板进入上电复位或者按键复位后,能够显示系统提示符,即为“ZB090303”。

单片机的P1口为按键控制口,当按下P1.0控制的S2键时,系统将进入18B20的工作状态,即显示即时温度。

当温度超过系统设定的温度上限值时,P3.1控制的蜂鸣器会报警,同时P3.1控制的LED灯会被点亮。

当按下P1.1控制的S3按键时,18B20退出工作状态,即显示系统提示符。

4.2、数字温度计的仿真结果

数字温度计的仿真结果如下:

(1)、上电或按键复位时的仿真结果如图4.1所示。

图4.1上电或按键复位时的仿真结果

(2)、按下S2键的仿真结果如图4.2所示。

图4.2按下S2键时的仿真结果

(3)、温度超过20摄氏度时的仿真结果如图4.3所示。

图4.3温度超过20摄氏度时的仿真结果

第5章课程设计心得体会

这次的单片机课程设计取得了圆满成功。

我早已经为这一期的单片机课程设计做好了充分的准备。

在大二的暑假期间,参加过的电子线路培训,为本次的课程设计奠定了坚实的基础。

当老师把课程设计的题目与要求公布出来时,我无比的激动,一开始就对这次的课程设计充满了信心。

其实一开始是想着做抢答器的,可是由于该项目的成员已满,经过推敲,最终决定做一个数字温度计的设计。

由于在暑假培训的时候就有做过相关的项目,所以这无疑给这次的课程设计带来了很大的方便。

数码管系统板在这次课程设计之前已经做好了,它能够实现数字温度计的设计要求。

因此不必忙于去制板。

暑假培训中,做过的一些项目中,基本上包括了这次设计的子程序,所以只需稍加设计即可。

本次的课程设计要求要高于暑假培训的,因此还需要添加一些基本功能,例如按键控制功能。

当把之前写好的程序导入到单片机中去时,数码管的显示总是不对。

所以只好从头至尾将程序检查了一遍,但结果还是一样,也没发现有什么错误。

后来仔细看了看原理图,才发现自己少插了短路帽,导致系统板不能正常工作。

既然要做好本次的课程设计,就应该要着手于每个细节。

虽然大体上可以说出整个程序的功能,但细化到每条语句,我并不能说清楚它的来由,尤其是18B20的相关程序。

因为对18B20的功能用法不是很了解,所以需查阅大量的资料去了解18B20的工作特点与用法。

了解到一些有关18B20的知识。

由于18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序尤其重要。

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

18B20初始化过程中有复位和存在脉冲的问题,因此需多次改变DQ的状态并延时等待。

首先要将DQ拉为高电平,延时几微妙。

其次将DQ拉为低电平,控制器TX“复位脉冲”延时480-960us。

接着又将DQ拉为高电平等待60us,最后延时让18B20输出存在脉冲。

并且延时足够长,等待脉冲输出完毕。

这便是18B20的初始化程序过程。

18B20的操作协议为规定为:

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

单总线的所有处理均从初始化开始。

初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。

初始化后,才可进行读写操作。

当总线主机检测到DS18B20的存在,便可以发出ROM操作命令之一即可。

SkipROM就是ROM操作指令中的一个,其代码为CCH。

存储器命令中的ConvertT命令的作用是开启温度转换,其代码是44H,单线总线发出协议后,表示18B20处在读温度忙状态。

最后是数据处理情况。

这便是18B20做好读温度准备的子程序过程。

写温度的子程序与读温度的子程序类似,只需将读温度子程序中所读得的值一位一位写入。

同样是先将DQ拉为高电平,再拉低,然户开始从低位到高位依次写入。

由于两个写时序间至少需要1us的恢复期,所以位与位之间至少延时2us时间。

最后稍作延时,给机器反应时间。

在做文档的时候,同时也学会了绘制简单的流程图。

做一次课程设计不仅要有实物而且还需要有论文。

论文的撰写需要大量的资料,在查找资料的过程中,又培养了我从文献、生产实践、和调查研究中获取知识的能力,提高了我从别人的经验、从其它学科找到解决问题新途径的悟性。

在整个过程中,我从中学到了不少东西,更深一步掌握了单片机电路,更深的了解设计中所用到的单片机最小系统的工作原理,同时也掌握了单片机各引脚的功能及用途。

通过本次的课程设计,让我了解到所学过的知识要及时复习,运用到实践中,才能更好地掌握所学知识。

参考文献

 

[1]李朝青.单片机原理及接口技术[M].北京:

北京航空航天大学出版社,1998.

[2]李勋等.单片机实用教程[M].北京:

北京航空航天大学出版社,2000.

[3]王幸之等.单片机应用系统抗干扰技术[M].北京:

北京航空航天大学出版社,1999.

[4]李华.MCS-51系列单片机实用接口技术[M].北京:

北京航空航天大学出版社,1993.

[5]何为民.低功耗单片微机系统设计[M].北京:

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

[6]何立民.单片机应用技术选编5[M].北京:

北京航空航天大学出版社,1997.

[7]李广弟,朱月秀,冷祖祁.单片机基础(第三版)[M].北京:

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

 

附录A数字温度计电路原理图

附录B数字温度计PCB图(正)

 

附录C数字温度计PCB图(底)

 

 

附录D数字温度计元器件布局图

 

附录E数字温度计器件清单

 

PartType

Designator

Footprint

PartType

Designator

Footprint

1K

R2

DZ

470

RP5

DZ

1K

R13

DZ

470

RP6

DZ

1K

R12

DZ

AT89S52

U1

DIP40

4.7K

RK

DZ

BELL

LS1

FMQ

10K

J2

SIP9

CON1

J0

YI

10K

J5

SIP9

CON2

J1

CC

12MHZ

Y1

JZ

CON2

JX2

CC

22uF

C3

22UF

CON2

JX1

CC

33PF

C2

DR

CON2

JP5

CC

33PF

C1

DR

CON8

JP1

SIP8

200

R1

DZ

CON8

JP3

SIP8

470

R01

DZ

CON8

JP4

SIP8

470

R00

DZ

CON8

JP2

SIP8

470

R04

DZ

LED

D7

LED

470

R03

DZ

LED

D9

LED

470

R02

DZ

LED

D8

LED

470

RP3

DZ

LED

D3

LED

470

RP4

DZ

LED

D2

LED

470

RP2

DZ

LED

D1

LED

470

RP0

DZ

LED

D6

LED

470

RP1

DZ

LED

D5

LED

470

R23

DZ

LED

D4

LED

470

R24

DZ

PNP

Q8

PNP

470

R22

DZ

PNP

Q2

PNP

470

R20

DZ

PNP

Q3

PNP

470

R21

DZ

PNP

Q0

PNP

470

R06

DZ

PNP

Q1

PNP

470

R05

DZ

PNP

Q6

PNP

470

R07

DZ

PNP

Q7

PNP

470

R25

DZ

PNP

Q4

PNP

470

R26

DZ

PNP

Q5

PNP

470

RP7

DZ

SW

S1

XAJ

470

R27

DZ

USB

J3

USB

 

附录F数字温度计源程序

 

//数字温度计的设置:

上电或按键复位后,显示系统提示符ZB090303;当K2(P1.0口)键按下后,显示即时温度;P0口为段控口,P2口为位控口,P1口为按键控制口,P3口控制流水灯

#include//包含单片机寄存器的头文件

#include//包含_nop_()函数定义的头文件

#defineucharunsignedchar

#defineuintunsignedint

Ucharduan[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8c,0xce,0x86,0xAB,0xA1,0xff};

//0123456789101112131415

//pTEnD灭

ucharwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

charfind_code[8]={3,0,3,0,9,0,8,2};

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

以下是DS18B20的操作程序

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

sbitDQ=P3^0;

sbitbz=P3^1;

uchartime;//设置全局变量,专门用于严格延时

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

函数功能:

将DS18B20传感器初始化,读取应答信号

出口参数:

flag

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

bitInit_DS18B20(void)

{bitflag;//储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在

DQ=1;//先将数据线拉高

for(time=0;time<2;time++)//略微延时约6微秒

;

DQ=0;//再将数据线从高拉低,要求保持480~960us

for(time=0;time<200;time++)//略微延时约600微秒

;//以向DS18B20发出一持续480~960us的低电平复位脉冲

DQ=1;//释放数据线(将数据线拉高)

for(time=0;time<16;time++)

;//延时约30us(释放总线后需等待15~60us让DS18B

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

当前位置:首页 > 高等教育 > 院校资料

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

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