基于单片机的四位数字温度计设计.docx
- 文档编号:30084309
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:27
- 大小:179.26KB
基于单片机的四位数字温度计设计.docx
《基于单片机的四位数字温度计设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的四位数字温度计设计.docx(27页珍藏版)》请在冰豆网上搜索。
基于单片机的四位数字温度计设计
课程设计
课程名称微机原理与应用
课题名称基于单片机的四位数字温度计设计
专业
班级
学号
姓名
指导教师
2011年6月7日
课程设计任务书
课程名称微机原理与应用
课题数字温度计的设计
专业班级
学生姓名
学号
指导老师
审批
任务书下达日期2011年6月7日
任务完成日期2011年6月18日
设计内容与设计要求
设计内容:
以51系列单片机为核心,以开发板为平台;设计一个数字式温度计,要求使用温度传感器DS18B20测量温度,再经单片机处理后,由LED数码管显示测量的温度值。
测温范围为0~100℃,精度误差在0.5℃以内;并要求焊接好开发板,在开发板上进行调试。
设计要求:
1)确定系统设计方案;
2)进行系统的硬件设计;
3)完成必要元器件选择;
4)开发板焊接及测试
5)系统软件设计及调试;
6)系统联调及操作说明
7)写说明书
主要设计条件
1、MCS-51单片机实验操作台1台;
2、PC机及单片机调试软件,仿真软件proteus;
3、开发板1块;
4、制作工具1套;
5、系统设计所需的元器件。
说明书格式
第1章、概述
第2章、系统总体方案设计
第3章硬件设计
第4章开发板焊接及其测试
第5章软件设计及调试
第6章系统联调及操作说明
第7章总结
参考文献
附录A系统硬件原理图
附录B程序清单
进度安排
设计时间分为二周
第一周
星期一、上午:
布置课题任务,课题介绍及讲课。
下午:
借阅有关资料,总体方案讨论。
星期二、分班级焊接开发板
星期三、确定总体方案,学习与设计相关内容。
星期四、各部分方案设计,各部分设计。
星期五、设计及上机调试。
星期六、设计并调试
第二周
星期一:
设计及上机调试。
星期二:
调试,中期检查。
星期三:
调试、写说明书。
星期四--星期五上午:
写说明书、完成电子版并打印成稿。
星期五下午:
答辩。
参考文献
参考文献
1、王迎旭编.《单片机原理与应用》[M].机械工业出版社.2004.
2、楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.
3、黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社
4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.
5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社.
第1章概述....................................6
第2章系统总体方案设计.........................6
第3章硬件设计
第4章开发板焊接及其测试
第5章软件设计及调试
第6章系统联调及操作说明
第7章总结
参考文献
附录A程序清单
第1章概述
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S52,测温传感器使用DS18B20,用4位共阳极LED数码管以并口传送数据,实现温度显示,能准确达到以上要求。
第2章
系统总体方案设计
1.1设计思路
根据任务书要求,初步思路如下:
温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用4位LED数码管以并口循环点亮数码管实现温度显示。
其中,1)P0.0至P0.7口连四个数码管的a,b,c,d,e,,f,g,dp口
2)P2.0,P2.1,P2.2,P2.3分别作为四个数码管的片选端。
3)P2.4口连温度传感器DS18B20的串行数据口。
2.2硬件电路的设计方案
设计的电路主要由3个部分构成:
STC89C52RC单片机最小系统、LED液晶显示模块及温度测量模块。
如下图:
第3章硬件设计
3.1STC89C52RC单片机最小系统
最小系统包括晶体振荡电路、复位开关和电源部分。
图2为STC89C52RC单片机的最小系统。
图3-1
3.2温度测量模块
温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55℃~125℃,可编程为9位~12位A/D转换精度,测温分辨率达到0.0625℃,采用寄生电源工作方式,CPU用P2.4口与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路。
接口电路下所示:
图3-2
3.2.1DS18B20原理
(1)DS18B20单线智能温度传感器的性能特点
DS18B20温度传感器是美国DALLAS半导体公司最近推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。
它采用3脚PR—35封装
(2)DS18B20单线智能温度传感器的工作原理
64位ROM的位结构如图3—6所示。
开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,可以多个DS18B20可以采用一线进行通信。
非易失性温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM。
高速暂存RAM的结构为8字节的存储器,结构如下图所示:
图3-2-1-1高速暂存RAM结构图
头2个字节包含测得的温度信息,第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值,该字节的R1和R0决定温度转换的精度位数,即用来设置分辨率。
DS18B20温度转换时间比较长,而且设定的分辨率越高,所需要的温度数据转换时间就越长。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单总线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制值。
下表是一温度值对应的二进制温度数据:
图3-2-1-2
3.3LED液晶显示模块:
LED液晶显示模块由四个七段发光二极管(LED)数码管构成,采用共阳接法,把发光二极管的阳极都连在一起接到高电平上。
通过编程实现逐个点亮各个数码管。
其接线如下所示:
图3-4
第4章开发板焊接及其测试
焊接整体电路,要提前进行布局,对于复杂的电路焊接过程也要非常认真细致,如果布局不合理在后序的工作中将很繁琐,而且影响外观。
焊接是基本功,在线多的时候体现的更突出,焊接不好会造成短路等问题,在毕业设计过程中,我的焊接技术有了很大的进步,知道了很多需要注意的细节,对今后的工作很有帮助。
第5章软件设计及调试
5.1主程序流程图
主程序的主要功能是负责温度的实际显示、读数并处理DS18B20的测量温度值,温度测量循环不断进行,其流程图如下:
图5-1
5.2设定DS18B20暂存器设定值
DS18B20子程序是结合它的用户使用资料编写,主要完成的是初始化DS18B20,从DS18B20中读出一个字节的数据,向DS18B20中写入一个字节的数据,配置DS18B20包括警报温度的上限和下限、温度转换的精度。
图5-2
5.3读转换后的温度
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后。
要注意的是DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
图5-3
5.4读出的温度进行数据转换
鉴于28H,29H的温度转换及显示较为复杂。
采用文字说明。
以3-2-1-2为例,01111101为整数部分,低位的0000为小数部分。
采用逐个移位的方法将8位温度值01111101存29H.再除10后存DOT_BIT,DOT_BIT1中。
将低位的11000000(小数部分)存37H。
再利用公式xiaoshu1=(a&0x0f)*10/16得小数点后第一位,公式xiaoshu2=(a&0x0f)*100/16%10得小数点后第二位。
然后逐个循环点亮各位数码管。
5.5调试
系统调试以程序为主。
硬件调试比较简单,首先检查电路的焊接是否正确,然后可用万用表测试或通电检测。
软件调试可以先编写显示程序并进行硬件正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示刷新等子程序的编程及调试,由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读写编程时必须严格的保证读写时序,否则将无法读取测量结果。
本程序采用单片机汇编编写,用编译器vision2.0编程调试。
软件调试首先要能显示温度值,而且在有温度变化时(例如用手去接触)显示温度能改变就基本完成;其次,并且可以方便的选择输出不同测量点。
5.5.1硬件调试
焊接整体电路,要提前进行布局,对于复杂的电路焊接过程也要非常认真细致,
如果布局不合理在后序的工作中将很繁琐,而且影响外观。
我在初期布局不够好之后,发现了问题及时改过来免除了很多不必要的麻烦;焊接更是基本功,在线多的时候体现的更突出,焊接不好会造成短路等问题,在毕业设计过程中,我的焊接技术有了很大的进步,知道了很多需要注意的细节,对今后的工作很有帮助。
5.5.2软件调试
软件是整个设计的核心部分,如果没有软件就想人没有思维一样。
编程序更是重中之重,我在这次毕业设计中进一步学习了编程的思路和过程。
从中也遇到了很多问题,编程时有些语法错误有时思路混乱出现很多问题,就是在不断的发现问题和解决问题中学到了很多知识也提高了能力。
在仿真中使用了伟福软件,并熟练掌握了这个软件。
经过了反复的编译和改正终于成功的完成了整个程序的编写。
第6章系统联调及操作说明
6.1系统联调
把实验板正、负极接在直流稳压电源上(5V),然后打开“VISION2.0”软件进行硬件检查,先检查LED的连接是否正确。
因为用P2口进行列扫描,P1口输出段码,可编程给P3口直接置0则可以检查。
通过检查发现LED输出全为“8”,则硬件电路基本是正确的。
(1)软件的检查
基本硬件检查完毕后,进行软件检查,首先对程序进行检查,改正程序中存在的错误语句,直到程序编译全通过。
下一步则进行程序执行,结果只LED显示为乱码,于是检查软件“0—9”的数值表示正确与否。
通过计算无误,然后检查硬件发现问题出在P1口的输出上,因为共阳极LED表示顺序“dp、g、f、e、d、c、b、a”则应是P1.0对应a、P1.1对应b、……、P1.7对应dp,这样输出的数值才正确。
于是重新焊接硬件错误的部分。
全部改过来后,重新执行程序,又出现问题,首先数码管的b段亮度较弱,经检查发现244上接的电阻大小不一致,与b段相对应的那个电阻比其他的大,然后更换了电阻;对相应的线进行修改之后又发现有一路不能正常测量温度,对电路进行检查发现开关的其中一路没有导通。
排除问题后本设计正常运行。
(2)烧写程序
软件检查完毕则烧写程序。
程序烧写完毕后把AT89S52安装在实验板上,重新接通电源,但LED显示还是4个“8”,于是用示波器检查电路的晶振,接好后示波器上显示正弦波,则表明晶振是起振的。
于是检查复位电路,用电压表直接给它进行复位,则实验板上的LED显示4个“0”,并且开始显示周围温度。
则确定问题一定在复位电路上,于是检查复位电路并连接好,电路开始正常工作。
6.2操作说明
将电源电压调至4.5V.测温范围为0~100℃,精度误差在0.5℃以内。
可用手摸DS18B20,或用打火机点火焰放在DS18B20附近。
第7章总结
由于本设计采用了集成温度传感器,这样不仅减少了硬件电路的设计与调试,并且此温度传感元件的集成性能比传统的元件要优越得多,这样简化了电路的设计难度还降低了产品的价格。
如果我们采用传统的元件则在设计中还要加入A/D转换器和模拟开关,这样就增加了电路的设计难度并且感温元件的精度和转换性能也是远不及集成的感温元件DS18B20的。
所以在以后的设计过程中应该尽量的采用集成元件。
另外,本设计还可以实现高低温报警功能和多点温度测量功能,因此,能够适用于多种场合。
此次课程设计花费了自己颇多时间,自己也很尽心尽力的去弄,但效果并不很如意,起初还认为应该会比较简单,而且自己也很有信心会弄好。
经过两周的设计我了解了设计的难度,也认识到自己的许多的不足。
虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
在两周的课程设计过程中,我对单片机的学习的内容又有了进一步的加深,很多原来也许还不很清楚的知识现在弄清楚了,期间发现自己有很多的思维定势在里面,以至于自己有时候很容易陷入自己弄的圈套里,固执而不肯改变。
设计过程中我也深刻认识到合作的重要性,通过合作可学到更多的东西,独学而无友。
另外我发现程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它是一个设计的灵魂所在。
很多子程序是可以借鉴书本上的,但怎样衔接各个子程序却是问题关键的所在,这需要对单片机的结构很熟悉。
在整个设计过程中我的大部分时间是用在程序上面了,而且调了很久才有结果,单片机的设计是软件和硬件的结合,二者是密不可分的,且它有很强的实用性,因此我觉得自己很有必要把它学好。
另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我的设计以极大的帮助,使我获益匪浅。
电气信息学院课程设计评分表
项目
评价
设计方案的合理性与创造性
开发板焊接及其调试完成情况
硬件设计或软件编程完成情况*
硬件测试及软件调试结果*
设计说明书质量
设计图纸质量
答辩汇报的条理性和独特见解
答辩中对所提问题的回答情况
完成任务情况
独立工作能力
组织纪律性(出勤率)
综合评分
指导教师签名:
________________
日期:
________________
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。
参考文献
1.王迎旭编.《单片机原理与应用》[M].机械工业出版社.2004.
2.楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.
3.黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社
4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.
5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社.
6.杨忠煌编.《单芯片8051实务与应用》[M].中国水利水电出版社.
附录A程序清单
;**********************************
FLAG1BITF0;DS18B20存在标志位
DQBITP2.4;18B20串口
TEMPER_LEQU29H;低位
TEMPER_HEQU28H;高位
A_BITEQU35H;十位
B_BITEQU36H;个位
DOT_BITEQU38H;小数点后第一位
DOT_BIT1EQU39H;小数点后第二位
;************ds18b20汇编程序起始********************
ORG0000H
AJMPMAIN
ORG0100H
;**************主程序开始************
MAIN:
LCALLINIT_18B20;DS18B20复位程序
LCALLRE_CONFIG;设定DS18B20暂存器设定值
LCALLGET_TEMPER;读转换后的温度值
AJMPCHANGE;读出的温度进行数据转换
;**********DS18B20复位程序*****************
INIT_18B20:
SETBDQ
NOP
CLRDQ;P2.4置0
MOVR0,#0FBH;延时
TSR1:
DJNZR0,TSR1;延时
SETBDQ;P2.4置1
MOVR0,#25H
TSR2:
JNBDQ,TSR3;判断DQ是否为1,为1表明DS18B20不存在,为1跳转TSR
DJNZR0,TSR2
TSR3:
SETBFLAG1;置标志位,表明DS18B20存在
AJMPTSR5;跳到TSR5延时
TSR4:
CLRFLAG1
LJMPTSR7
TSR5:
MOVR0,#06BH;延时
TSR6:
DJNZR0,TSR6;延时
TSR7:
SETBDQ;表明不存在
RET
;**************设定DS18B20暂存器设定值**************
RE_CONFIG:
JBFLAG1,RE_CONFIG1;ds18b20存在则设定DS18B20暂存器设定值
RET
RE_CONFIG1:
MOVA,#0CCH;放跳过ROM命令
LCALLWRITE_18B20;写ds18b20
MOVA,#4EH
LCALLWRITE_18B20;写暂存器命令
MOVA,#00H;报警上限中写入00H
LCALLWRITE_18B20
MOVA,#00H;报警下限中写入00H
LCALLWRITE_18B20
MOVA,#7FH;选择十二位精度
LCALLWRITE_18B20
RET
;*****************读转换后的温度值****************
GET_TEMPER:
SETBDQ;P2.4置1
LCALLINIT_18B20;DS18B20复位程序
JBFLAG1,TSS2;ds18b20存在则读转换后的温度值
RET;若不存在则返回
TSS2:
MOVA,#0CCH;跳过ROM
LCALLWRITE_18B20
MOVA,#44H;发出温度转换命令
LCALLWRITE_18B20;写ds18b20
LCALLDISPLAY;延时
LCALLINIT_18B20;DS18B20复位程序
MOVA,#0CCH;跳过ROM
LCALLWRITE_18B20;写ds18b20
MOVA,#0BEH;发出读温度换命令
LCALLWRITE_18B20
LCALLREAD2_18B20;读两个字节的温度
RET
;***************写ds18b20汇编程序************
WRITE_18B20:
MOVR2,#8;循环8次
CLRC
WR1:
CLRDQ;p2.4置0
MOVR3,#6;延时
DJNZR3,$;延时
RRCA
MOVDQ,C
MOVR3,#23;延时
DJNZR3,$;延时
SETBDQ;p2.4置1
NOP
DJNZR2,WR1
SETBDQ;p2.4置0
RET
;***********读18B20程序,读出两个字节的温度*********
READ2_18B20:
MOVR4,#2;低位存在29H,高位存在28H
MOVR1,#29H
RE00:
MOVR2,#8;循环8次,将一个字节写入
RE01:
CLRC
SETBC
NOP;延时
NOP;延时
CLRDQ;P2.4置0
NOP;延时
NOP;延时
NOP;延时
SETBDQ;P2.4置1
MOVR3,#7;延时
DJNZR3,$;延时
MOVC,DQ;读p2.4
MOVR3,#23;延时
DJNZR3,$;延时
RRCA
DJNZR2,RE01;循环8次,将一个字节写入
MOV@R1,A;将读取温度放29H(低位)
DECR1;R1指28H(高位)
DJNZR4,RE00;同样方法,数据读入28H(高位)
RET
;************读出的温度进行数据转换**************
CHANGE:
mova,29h;低位数据存37H
mov37h,a
MOVA,29H
MOVC,28H.0;将28H中的最低位移入C
RRCA
MOVC,28H.1
RRCA
MOVC,28H.2
RRCA
MOVC,28H.3
RRCA
MOV29H,A;将转换好的8字节温度存29h
LCALLDISPLAY;调用数码管显示子程序
LJMPMAIN
;*******************DISPLAY******
DISPLAY:
mova,29H;将29H中的十六进制数转换成10进制
movb,#10;10进制/10=10进制
divab
movb_bit,a;十位在a
mova_bit,b;个位在b
;****获得小数部分****
mova,37h;取低位数据的低四位作为小数部分
anla,#0fh
movb,#10
mulab
movb,#16
divab
movdot_bit,a;利用公式xiaoshu1=(a&0x0f)*10/16得小数点后第一位
mova,37h;取低位数据的低四位作为小数部分
anla,#0fh
movb,#6;取16/10=6.25的近似值6
mulab
movb,#10
divab
movdot_bit1,b;利用公式xiaoshu2=(a&0x0f)*100/16%10得小数点后第二位
movdptr,#TAB;指定查表启始地址
movr0,#4
dpl1:
movr1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 温度计 设计