基于单片机的数字温度计的设计课程设计报告

鱼戏断桥边 范文 报告范文
精选回答

基于单片机的数字温度计的设计课程设计报告本文简介:单片机原理及系统课程设计报告单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100)专业:xxxxxxx班级:xxxxxx姓名:xxxxx学号:xxxxxxx指导教师:xxxxxxxXxxxxxxxxxxxxxxxxxxxxxxx2013年3月7

基于单片机的数字温度计的设计课程设计报告本文内容:

单片机原理及系统课程设计报告

单片机原理及系统课程设计

评语:

考勤(10)

守纪(10)

过程(40)

设计报告(30)

答辩(10)

总成绩(100)

业:xxxxxxx

级:

xxxxxx

名:

xxxxx

号:

xxxxxxx

指导教师:

xxxxxxx

Xxxxxxxxxxxxxxxxxxxxxxxx

2013

3

7

基于单片机的数字温度计的设计

本课程设计主要介绍基于AT89C51单片机和DS18B20数字温度传感器的温度测量系统。该系统以AT89C51单片机为主控制芯片,采用数字温度传感器DS18B20实现温度的检测;采用LED数码管,显示被测的温度值;采用发光二极管可以直观的显示温度的大致范围。

关键字:数字温度计;单片机;DS18B20

Abstract

This

course

is

designed

to

introduce

a

temperature

measurement

system

based

on

the

AT89C51

and

the

digital

temperature

sensor.It

takes

AT89C51

SCM(Single

Chip

Microcomputer)

as

main

control

chip,using

the

digital

temperature

sensor

DS18B20

to

realize

temperature,and

using

the

LED(Light-emitting

Diode)

digital

tube

to

display

the

measured

temperature

value,the

light-emitting

diodes

can

intuitively

display

the

temperature

range.

Key

Words:

Digital

thermometer,SCM,DS18B20

1

引言

传统的温度计大多以热敏电阻作为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,且传统的温度计存在反应速度慢,读数麻烦,测量精度不高,误差大等缺点而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。所以本次设计选用DS18B20数字温度传感器来实现基于51单片机的数字温度计的设计,以改善传统温度计的不足。

该数字温度计利用DS18B20温度传感器及其接口电路完成温度的测量并转换成单片机能够处理的数字信号后送到单片机进行处理变换,最后显示在共阳极数码管上。

2

设计方案及原理

根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、报警等功能。

该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用4位共阳极LED数码管以动态扫描法实现。检测范围20摄氏度到35摄氏度,超过上下限范围报警并且指示灯闪烁。总体设计方框图如图2.1所示。

图2.1

总体设计方框图

3

硬件设计

3.1

温度采集电路

DS18B20温度传感器是一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。它具有独特的单线接口方式,仅需要一个端口引脚就能够进行通信,多个DS18B20可以并联在唯一的三线上,实现多点组网功能,无需外部器件等特点。因此用它来组成一个测温系统十分方便,不需要外部任何元器件即可实现测温,只要求一个端口即可实现通信。

另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须严格按照协议进行。具体的操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。DS18B20只有三个引脚:VCC、DQ、GND。本设计将温度传感器的数字输入输出引脚DQ与单片机的I/O口P3.7相连结,而另外的两个引脚分别是GND接地,VCC接电源。单片机与温度传感器的连接图如图3.2所示。

图3.2

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

3.2

报警电路

报警电路连接图如图3.3所示。

图3.3

报警电路图

系统中的报警电路是由三极管,蜂鸣器,发光二极管和限流电阻组成。其中P1.7接蜂鸣器,P2.0接温度上限指示灯(红灯),P2.6接温度下限指示灯(黄灯)。

报警电路的具体实现的功能:当所测温度值在20℃到35℃之间时,蜂鸣器不响,指示灯不亮;当超过35℃时红灯闪烁,蜂鸣器响;当低于20℃时黄灯闪烁,蜂鸣器响。

3.3

显示电路

图3.4

数码管显示电路

显示电路采用4位共阳极LED数码管显示,P0口作为段码输出,P3口的低四位经反相器驱动作为数码管的位选端。采用动态扫描的方式显示。

数码管显示25℃时的电路如图3.4所示。

4

软件设计

系统程序主要包括主程序、DS18B20读1个字节子程序、DS18B20写1个字节子程序、读出温度子程序、报警指示灯实现子程序等。

4.1

主程序流程图

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,并显示出来。其程序流程见下图4.1。

图4.1

主程序流程图

4.2

DS18B20读1个字节子程序

DS18B20读1个字节子程序的主要功能是从总线上读取一个字节,程序流程图如图4.2所示。

图4.2

DS18B20读1个字节子程序

4.3

DS18B20写1个字节子程序

DS18B20写1个字节子程序的主要功能是向总线上写入一个字节,程序流程图如图4.3所示。

4.4

读出温度子程序

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

程序流程图见下图4.4。

图4.3

DS18B20写1个字节子程序

图4.4

读出温度子程序流程图

4.5

报警指示灯实现子程序

报警指示灯显示子程序主要功能是大概的显示温度的范围。当温度在设定的最大值与最小值之间时,蜂鸣器指示灯不工作;当温度值大于设定的最大值时,蜂鸣器响,指示灯红灯闪烁;当温度值小于设定的最小值时,蜂鸣器响,指示灯黄灯闪烁。

报警指示灯实现子程序如图4.5。

图4.5

报警指示灯实现子程序

5

系统仿真及实际调试

本设计中DS18B20数字温度传感器通过人为输入的不同温度值来模拟环境温度的变化。当DS18B20接收到温度值时,会通过数据总线传入AT89C51单片机。单片机再通过转换,一方面将转换后的温度通过LED数码管输出;另一方面,将转换后的温度送入报警电路,通过判断,报警电路得以正常工作。

当温度超过设定的上限温度时,蜂鸣器开始报警且指示灯(红灯)开始闪烁;当温度超过设定的下限温度时,蜂鸣器开始报警且指示灯(黄灯)开始闪烁。当温度在设定的范围内时,蜂鸣器指示灯都不工作。

利用Keil

C51软件将程序源代码导入,通过编译链接生成.Hex文件。利用Proteus软件将设计好的电路进行仿真,再将.Hex文件导入单片机。

温度值为36℃时的系统仿真图如图5.1所示。

图5.1

温度值为36℃时的系统仿真图

6

总结

由于DS18B20芯片以前没有接触过,所以这次设计首先查阅了有关DS18B20温度传感器的资料,然后根据设计思路,模拟仿真直到成功。模拟仿真以及电路的连接时很顺利,但是在C程序代码的编写时遇到了一些困难。由于单片机无法直接识别正负,所以当测到负温度时必须进行转换。通过查阅相关资料,在一次次的调试后,负温度值才得以正确显示。还有在数码管扫描驱动电路的连接时遇到了一点问题。由于系统所选的是4位共阳极LED数码管,所以在驱动时,本想用三极管是完全可以的,可是连接上以后,还是不显示。最后用74HC04六位反相器进行驱动,数码管才得以正确显示。还有一点问题就是DS18B20的理论测量范围是-55~125℃,但是实际仿真的温度范围是-55~128℃。

此次课程设计通过选题,查资料,答疑,模拟仿真到最后的成功遇到了很多问题同时也学到了很多。

参考文献

[1]

王思明,张金敏,张鑫等.单片机原理及应用系统设计[M].北京:科学出版社,2012年9月:90-291.

[2]

邵发森.单片机原理与应用及其实验指导书[M].北京:北京大学出版社,2012年8月:171-226

[3]

李华,王思明,张金敏.单片机原理及应用[M].兰州:兰州大学出版社,2001年5月:8-67.

[4]

张立.基于单片机的数字温度计设计[J].吉林:华章,2011年11月(31):347.

附录

源程序代码

#include

“reg51.h“#include

“intrins.h“//调用intrins函数中的_nop_()做延时用

#define

Disdata

P0

//段码输出口

#define

discan

P3

//扫描口

#define

uchar

unsigned

char

#define

uint

unsigned

int

sbit

DQ=P3^7;

//温度输入口

sbit

DIN=P0^7;

//LED小数点控制

sbit

beep=P1^7;//蜂鸣器

sbit

red=P2^0;//红灯

sbit

yellw=P2^6;//黄灯

uint

h;

uint

temp;

uchar

v;

uchar

high=35,low=20;//

设置初始上下限报警温度值

//*******温度小数部分用查表法**********//

uchar

code

ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

uchar

coded

is_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};

/*

共阳LED段码表

“0““1““2““3““4““5““6““7““8““9““不亮““-“*/

uchar

code

scan_con[4]={0xfe,0xfd,0xfb,0xf7};

//

列扫描控制字

uchar

data

temp_data[2]={0x00,0x00};

//

读出温度暂放

uchar

data

display[5]={0x00,0x00,0x00,0x00,0x00};

//显示单元数据,共4个数据,一个运算暂存用

/***********延时函数**********/

void

delay(uint

t)

{

for(;t>0;t--);

}

/***********显示扫描函数**********/

void

scan()

{

char

k;

for(k=0;k0;

i--)

//

{

DQ=1;_nop_();_nop_();

DQ

=

0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us

DQ

=

val

//最低位移出

delay(6);

//66us

val=val/2;

//右移一位

}

DQ

=

1;

delay(1);

}

/*********DS18B20读1个字节函数********/

//从总线上读取一个字节

uchar

read_byte(void)

{

uchar

i;

uchar

value

=

0;

for

(i=8;i>0;i--)

{

DQ=1;_nop_();_nop_();

value>>=1;

DQ

=

0;

//

_nop_();_nop_();_nop_();_nop_();

//4us

DQ

=

1;_nop_();_nop_();_nop_();_nop_();

//4us

if(DQ)value|=0x80;

delay(6);

//66us

}

DQ=1;

return(value);

}

/***********读出温度函数**********/

void

read_temp()

{

ow_reset();

//总线复位

write_byte(0xCC);

//

发Skip

ROM命令

write_byte(0xBE);

//

发读命令

temp_data[0]=read_byte();

//温度低8位

temp_data[1]=read_byte();

//温度高8位

ow_reset();

write_byte(0xCC);

//

Skip

ROM

write_byte(0x44);

//

发转换命令

}

/***********温度数据处理函数**********/

void

work_temp()

{

uchar

n=0;

//

if(temp_data[1]>127)

{temp_data[1]=(256-temp_data[1]);temp_data[0]=(256-temp_data[0]);n=1;}

//负温度求补码

display[4]=temp_data[0]display[0]=ditab[display[4]];

display[4]=((temp_data[0]

yellw=!yellw;

}

else

{

beep=0;

yellw=0;

}

}

/**************主函数****************/

main()

{

Disdata=0xff;

//初始化端口

discan=0xff;

for(h=0;h<4;h++){display[h]=0;}//开机显示0000

ow_reset();

//

开机先转换一次

write_byte(0xCC);

//

Skip

ROM

write_byte(0x44);

//

发转换命令

for(h=0;h<500;h++)

{scan();}

//开机显示“0000“2秒

while(1)

{

read_temp();

//读出18B20温度数据

work_temp();

//处理温度数据

BEEP();

for(h=0;h<500;h++)

{scan();}

//显示温度值2秒

}

}

//*********************结束**************************//

12

点雨落山岚 2022-06-30 16:49:29

相关推荐

多啦A梦来我家

那天,我正在家里看书,突然一道蓝光闪过,一个蓝色的物体莫名其妙得出现在我家,把我吓得跪在了地上。我颤抖着瞥了一眼,突然发现那个怪物原来是多啦a梦!惊魂稍定的我还没有说出话,它就茫然的问:这是哪啊?我努力从牙缝里...
展开详情

我想当一名音乐家

音乐可以伴人入睡,可以让人快乐,可以干好多事。音乐就像一位可爱的小姑娘,她唱的歌美妙动听。我想成为一名音乐家,用钢琴弹奏出美妙的歌声。如果你在伤心,我会弹奏一首快乐的歌让你开心;如果你在上课时想别的,我会弹一首...
展开详情

雪羊羊公主(2)

第二天,天才蒙蒙亮,雪羊羊便早早地起了床,想游览一下这个羊村。她穿了一件雪白的休闲连衣裤,角上系着紫色的蝴蝶结,脚上穿了一双多功能乳白色运动鞋,看起来既像运动员又像坠落凡间的天使。她打开多功能密码门,走出去,才...
展开详情

我所期待的星期天

唉!讨厌的星期天又来了!一座座堆积如山的作业等我去铲平,还要穿梭于各上辅导班之间。一天到晚忙得不亦乐乎!如果星期天像我所期待的那样,该有多好啊!当我睁开蒙胧的睡眼,快乐而有意义的一天开始了。吃完早饭,我看看课外...
展开详情

拿报纸

我隔壁的刘爷爷去成都避暑了,刘叔叔在家,刘叔叔每天都要上班,他叫我来拿报纸,我答应了他,帮他们拿了一个月的报纸。刘爷爷回来了,他发现报纸不在了,以为是被偷了,他敲了我的门,问我报纸在不在我这,我说:在,我就把报...
展开详情

精选推荐更多>

描写黄山天都峰的诗句

描写黄山天都峰的诗句:
1、孤峰突兀现青虚,喜若羁人望故都。神马已驰身尚远,却疑真有二文殊。——李弥逊《次韵公显宫教实见天都峰》
2、奇险天都著,遥观亦有缘。大雄无与并,苍浑莫之先。倏忽阴晴异,逡巡起伏迁。云腾致雨气,水泻在山泉。偃蹇非松意,因人委婉传。——《由汤池赴慈光寺途中望天都峰有感》
3、九上黄山绝顶人,纵横古今感微尘。笑煞天都峰巅客,人间咫尺数烟云。——刘海粟《画天都峰自题》
4、维帝有下都,作镇此南国。孤撑紫玉楼,横绝太霄碧。晶荧砂窦红,夭矫泉绅白。晴云无尽藏,竟日袅幽石。诸峰三十五,离立侍傍侧。会稽眇小哉,请议职方籍。——范成大《天都峰》
5、山川形胜雄江东,九华辉映天都峰。传闻早已汤胸臆,恨不插翼长相从。朅来随牒官秋浦,城郭奔驰厌尘土。絜家捧檄过临城,偷闲两作烟霞主。黄山登鉴原无由。何期易地太平游。清池轩害日舒丽,突兀楼观撑深幽。凭高徙倚敞心目,绝壁半天横碧玉。回溪千里指顾间,螺髻分明三十六。壮怀高向紫霄悬,俯视培楼真一拳。古今秀色餐不尽,笔端收拾生去烟。萍踪倘未逐流水,古刹相望二三里。暇时风月得交游,鸥鹭同眠勿惊起。——石应孙《游黄山》

一的因数有几个七的因数有几个十的因数有几个

1的因数有1个,就是1本身;7的因数有两个,就是1和7;10的因数有4个,就是1和10、2和5。假如a*b=c(a、b、c都是整数),那么我们称a和b就是c的因数。需要注意的是,唯有被除数,除数,商皆为整数,余数为零时,此关系才成立。反过来说,我们称c为a、b的倍数。
整数(integer)是正整数、零、负整数的集合。整数的全体构成整数集,整数集是一个数环。在整数系中,零和正整数统称为自然数。-1、-2、-3、…、-n、…(n为非零自然数)为负整数。则正整数、零与负整数构成整数系。整数不包括小数、分数。

使人耽之若是的使是什么意思

“使人耽之若是”的“使”是假如的意思。
出自《晋书·王羲之传》:“张芝临池学书,池水尽黑,使人耽之若是,未必后之也。”意思是东汉张芝临池学写字,池水都变成黑色,如果天下人像他那样沉迷于书法,也不一定比他差。
使字的意思是:
1、派遣。出自《左传·襄公二十三年》:“公子黄愬二庆于楚,楚人召之。使庆乐往。杀之。”
2、命令。出自《史记·项羽本纪》:“怀王因使项羽为上将军,当阳君、蒲将军皆属项羽。”
3、致使,让。出自韩愈《秋怀诗》:“其言有感触,使我复凄酸。”
4、出使。出自韩愈《送殷员外序》:“今子使万里外国,独无几微出于言面,岂不真知轻重大丈夫哉!”
5、假使。出自韩愈《送水陆运使韩侍御归所治序》:“使尽用其策,西北边故所没地,可指期而有也。”

作业本是什么意思

“作业本”的意思是:指学生或其他学习的人专门用来做作业的本子和通常辅助教材的练习册。例如课堂作业本,像数学本、外语本、作文本,有的被用作草稿本之类的本子。一些专业性较强的技术工作或较为复杂的工种,都需要详细的记录数据;操作规程完成记录的专用记录本也称“作业本”。
“作业本”造句:
1、这作业本的封面设计得很新颖。
2、老师经常在课堂上抽查我们的作业本。
3、没有老师的批准,任何人不得擅自去讲台领取作业本。
4、我的作业本丢了,急的我好像热锅上的蚂蚁。
5、作业本高高地堆成一摞所有的本子一尘不染。
6、这种作业本,由于质次价高,所以摆在柜台上半个多月,一直无人问津。
7、用姐姐寄来的钱买铅笔盒、作业本和书包,还绰绰有余。
8、她漫不经心地走到老师面前,把作业本交到老师手上。
常见热点问答
热点搜索
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200
作文大全
1-20
21-40
41-60
61-80
81-100
101-120
121-140
141-160
161-180
181-200