基于51单片机的数字温度计.docx
《基于51单片机的数字温度计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的数字温度计.docx(24页珍藏版)》请在冰豆网上搜索。
![基于51单片机的数字温度计.docx](https://file1.bdocx.com/fileroot1/2022-11/16/59a98243-f350-4689-8b39-3f4714947be9/59a98243-f350-4689-8b39-3f4714947be91.gif)
基于51单片机的数字温度计
湖南人文科技学院
课程设计报告
课程名称:
单片机原理及应用课程设计
设计题目:
数字温度计
系别:
通信与控制工程系
专业:
自动化
班级:
三班
学生姓名:
邓黔川王逸先
学号:
0942133109421322
起止日期:
2011年12月20日~2011年12月30日
指导教师:
成运方智文岳舟
教研室主任:
方智文
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
权重
成绩
邓黔川
王逸先
1、设计过程中出勤、学习态度等方面
0.2
2、课程设计质量与答辩
0.5
3、设计报告书写及图纸规范程度
0.3
总成绩
教研室审核意见:
教研室主任签字:
年月日
教学系审核意见:
主任签字:
年月日
摘要
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机STC89C52,测温传感器使用DS18B20,用3位共阳极LED数码管实现温度显示。
使用矩阵键盘来调节报警温度的上下限。
关键词:
单片机,数字控制,温度计,DS18B20,STC89C52
目录
设计要求4
1设计4
1.1方案一4
1.2方案二4
2硬件模块设计5
2.1主控制器STC89C52与IO接口扩展芯片82555
2.2温度传感器DS18B205
2.3数码管显示模块6
2.4复位模块6
3软件模块设计8
3.1主程序8
3.2读出温度子程序9
3.3 计算温度子程序9
3.4 显示数据刷新子程序9
4系统调试10
5 总结与体会11
参考文献12
附录一:
八段共阳数码管段码表13
附录二:
元器件清单14
附录三:
DS18B20温度与表值对应表15
附录四:
数字温度计的源程序16
数字温度计
设计要求
本课题以单片机为核心,设计并制作一个数字温度计,具有以下功能:
1、测温范围:
10℃~40℃;
2、分辨率:
0~1℃;
3、温度输出显示:
2位;
4、设定上下限(下限18℃,上限25℃),超出范围时报警。
1设计
1.1方案一
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
1.2方案二
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
图1 总体设计方框图
2硬件模块设计
2.1主控制器STC89C52与IO接口扩展芯片8255
本设计采用主控芯片是STC89C52,外加一IO接口扩展芯片8255来控制键盘与数码管的工作。
8255具有3个8位并行口PA,PB和PC。
如图2所示:
图2单片机STC89C52与8255
2.2温度传感器DS18B20
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
DS18B20的性能特点如下:
●独特的单线接口仅需要一个端口引脚进行通信;
●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
●无须外部器件;
●可通过数据线供电,电压范围为3.0~5.5V;
●零待机功耗;
●温度以9或12位数字;
●用户可定义报警设置;
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
图3DS18B20
2.3数码管显示模块
LED数码管来显示当前的温度和设置报警温度时显示报警温度上下限的值。
此电路采用的是共阳极的六位数码管,PA0~PA5为数码管的位选,PB口为数码管的段选。
低电平有效。
电路如图4所示:
图4数码管显示硬件电路
2.4复位模块
此电路为高电平复位电路。
进行复位操作时,外部电路需在RST引脚产生两个机器周期(即24个时钟周期)以上的高电平。
如图6所示,按下键盘,电源对C1充电,使RST端快速产生高电平;松开按键,C1向芯片的内阻放电,恢复为低电平,从而使单片机可靠复位。
图5复位模块
报警模块采用的蜂鸣器,其输入信号直接从单片机P3.3口输出,通过高低电平交错出现加上延时程序,便能发出声音。
当检测到的温度超过上下限时,蜂鸣器报警。
如图6所示:
图6报警电路
3软件模块设计
3.1主程序
图7软件系统工作流程图
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。
3.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
其程序流程图如图8所示
图8读温度流程图
3.3 计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图9所示。
3.4 显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位,程序流程图如图10所示
图10显示数据刷新流程图
图9 计算温度流程图
4系统调试
系统的调试以程序调试为主。
硬件调试比较简单,首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。
软件调试可以先编写好显示程序并进行硬件的正确性检验,然后分别进行主程序。
读取温度子程序、计算温度子程序和显示数据程序等的编程和调试。
由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写的时序;否则将无法读取测量的温度。
本程序采用的是C语言编写,用KeilC51编译器编程调试。
软件调试到能显示温度值,而且有温度变化时(例如用手去接触)说明已经DS18B20
正常工作了。
再按下键盘,调节报警温度的上下限。
5 总结与体会
通过自己的努力及老师热心的帮助,终于完成了数字温度计的设计。
通过这
次课程设计使我进一步熟悉和掌握了单片机的结构及工作原理。
从这次的课程设计中,我认识到理论联系实际的重要性。
在以后的学习中,要注重理论联系实际。
把我从课本上学的理论知识运用到实际当中。
还有,要注意课程之间的联系。
通过这次课程设计,使我对程序开发的完整过程有了一定的了解,为今后从事相应工作打下扎实的基础。
在本次设计的过程中,我发现很多的问题,通过老师和同学们的帮助,问题基本上都得到了解决。
总之,完成了这次课程设计使我有了一定的成就感,在以后的学习中我将多多注意在这次课程设计中碰到的问题,注重理论与实际的联系以及课程之间的联系。
参考文献
[1]张鑫.单片机原理及应用。
北京:
电子工业出版社,2005
[2]楼然梦.李光飞。
单片机课程设计指导。
北京:
北京航空航天大学出版社,2007
[3]朱定华.戴汝平。
单片微机原理与应用。
北京:
清华大学出版社,2003
[4]张毅刚.单片机原理及应用。
北京:
高等教育出版社,2004
[5]立全利.迟荣强。
单片机原理及接口。
北京:
高等教育出版社,2004
[6]蔡明文.冯先成。
单片机课程设计。
武汉:
华中科技大学出版社,2007
[7]潘永雄.新编单片机原理及应用。
西安:
西安电子科技大学出版社,2003
附录一:
八段共阳数码管段码表
十进制数字
十六进制段码值
0
0xA0
1
0XBB
2
0x62
3
0x2A
4
0x39
5
0x2C
6
0x24
7
0xBA
8
0x20
9
0x28
附录二:
元器件清单
元器件名称
数量
30pF电容
2
8255
1
104电容
1
发光二极管
1
单片机AT89C52
1
三极管9015
7
六位八段共阳数码管
2
按键
17
12M晶振
1
1k电阻
20
附录三:
DS18B20温度与表值对应表
温度/℃
二进制表示
十六进制表示
+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
附录四:
数字温度计的源程序
/*************************************************************
名称:
数字温度计
日期:
2011年12月22日
*************************************************************/
S1OK EQU5FH
TEMPUTER EQU39H
TEMPHEQU5EH
TEMPL EQU5DH
MS50 EQU5CH
SIGN EQU5BH
S1BITP1.0
S2BITP1.1
S3BITP1.2
S4BITP1.3
ORG0000H
LJMPMAIN
ORG000BH
LJMP TOIT
ORG0030H
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#3CH
MOVTL0,#0B0H
SETBET0
SETBTR0
SETBEA
MOVTEMPH,#30
MOVTEMPL,#9
MOVTEMPUTER,#15;温度最始值
MOVS1OK,#00H
MOVSIGN,#00H
MOV38H,#0BH
MOV37H,#0CH
MOV36H,#0BH
ACALLDISP
ACALLT1S
;主程序
START:
JBS1,NET1
ACALLT12MS
JBS1