数字温度计的设计许楚丹修改.docx
- 文档编号:23999225
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:28
- 大小:206.48KB
数字温度计的设计许楚丹修改.docx
《数字温度计的设计许楚丹修改.docx》由会员分享,可在线阅读,更多相关《数字温度计的设计许楚丹修改.docx(28页珍藏版)》请在冰豆网上搜索。
数字温度计的设计许楚丹修改
等级:
湖南工程学院
课程设计
课程名称单片机原理与应用
课题名称数字温度计的设计
专业电气工程及其自动化
班级电气1101班
学号201101010103
姓名许楚丹
指导教师赵葵银
2014年6月9日
湖南工程学院
课程设计任务书
课程名称:
单片机原理与应用
题目:
数字温度计的设计
专业班级:
电气1101班
学生姓名:
许楚丹
学号:
201101010103
指导老师:
赵葵银
审批:
设计下达日期2014年06月9日设计完成日期2014年06月20日
设计内容与设计要求
设计内容:
以51系列单片机为核心,以开发板为平台;设计一个数字式温度计,要求使用温度传感器(可以采用DS18B20或采用AD590)测量温度,再经单片机处理后,由LED数码管显示测量的温度值。
测温范围为0~51℃,精度误差在0.5℃以内;并要求仿真、调试。
设计要求:
1)确定系统设计方案;
2)进行系统的硬件设计;
3)完成必要元器件选择;
4)系统软件设计、仿真及调试;
5)系统联调及操作说明
6)写说明书
主要设计条件
1、MCS-51单片机实验操作台1台;
2、PC机及单片机调试软件,仿真软件proteus
3、系统设计所需的元器件。
4、实验室提供调试条件
说明书格式
1.封面
2.课程设计任务书
3.目录
4.系统总体方案设计
5.系统硬件设计
6.软件设计(包括流程图)
7.系统的安装调试说明
8、总结
9、参考文献
10、附录
11、课程设计成绩评分表。
进度安排
第一周
星期一、上午:
布置课题任务,课题介绍及讲课。
下午:
借阅有关资料,总体方案讨论。
星期二、确定总体方案,学习与设计相关内容。
星期三、各部分方案设计,
星期四、各部分设计。
星期五、设计及上机调试。
星期六、设计并调试
第二周
星期一:
设计及上机调试。
星期二:
调试,中期检查。
星期三:
调试、写说明书。
星期四--星期五上午:
写说明书、完成电子版并打印成稿。
星期五下午:
答辩。
参考文献
参考文献
1、王迎旭编.《单片机原理与应用》[M].机械工业出版社.2004.
2、楼然苗编.《51系列单片机设计实例》[M].北京航空航天大学出版社.
3、黄勤编.《计算机硬件技术基础实验教程》[M].重庆大学出版社
4、刘乐善编.《微型计算机接口技术及应用》[M].华中科技大学出版社.
5、陈光东编.《单片微型计算机原理及接口技术》[M].华中科技大学出版社.
第1章概述
随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。
采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。
在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。
在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。
温度控制在生产过程中占有相当大的比例。
温度测量是温度控制的基础,技术已经比较成熟。
传统的测温元件有热电偶和二电阻。
而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。
我们用一种相对比较简单的方式来测量。
我们采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度范围为-55~125ºC,最高分辨率可达0.0625ºC。
DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
本文介绍一种基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围0℃-~+100℃,使用LED模块显示,能设置温度报警上下限。
正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89C51单片机功能和应用。
该电路设计新颖、功能强大、结构简单。
第2章系统总体方案设计
2.1系统设计原理
采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
采集之后,通过使用51系列的单片机,可以对数据进行相应的处理,再由LED显示电路对其数据进行显示。
该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。
该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。
2.2数字温度计设计的方案
本课题以是80C51单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。
系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED显示、温度传感器组成。
系统框图如图2-2所示。
图2-2数字温度计框图
第3章硬件设计
3.1主控器8051芯片
对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。
AT89C51以低价位单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。
单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS—51的CMOS产品。
其主要特征有如下几个:
●与MCS-51兼容
●4K字节可编程FLASH存储器
●寿命:
1000写/擦循环
●数据保留时间:
10年
●全静态工作:
0Hz-24MHz
●三级程序存储器锁定
●128×8位内部RAM
●32可编程I/O线
●两个16位定时器/计数器
●5个中断源
●可编程串行通道 ·
●低功耗的闲置和掉电模式
●片内振荡器和时钟电路
AT8951的管脚如下图所示:
图3.1AT89C51芯片管脚图
3.2时钟电路
80C51时钟有两种方式产生,即内部方式和外部方式。
80C51中有一个构成内部震荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
本次采用内部震荡电路,瓷片电容采用22PF,晶振为12MHZ。
图3.1.1震荡电路图
3.2复位电路
单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用10KΩ的阻值,电容采用10μF的电容值。
图3.1.2复位电路
3.4温度传感器
DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。
DS18B20的电源供电方式有2种:
外部供电方式和寄生电源方式。
工作于寄生电源方式时,VDD和GND均接地,他在需要远程温度探测和空间受限的场合特别有用,原理是当1Wire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。
但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM时),同时芯片的性能也有所降低。
外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。
因此本设计采用外部供电方式。
如下图所示:
图3.2DS18B20管脚图
温度传感器DS18B20的测量范围为-55℃~+125℃,在-10℃~+85℃时精度为±0.5℃。
因为本设计只用于测量环境温度,所以只显示0℃~+51℃。
3.5显示电路
对于数字温度的显示,我们采用4位LED数码管。
足够显示0~100中各位数,并且还能显示一位小数部分。
图3.34位LED数码显示管
3.6温度报警电路
对于数字温度计的设计,除了温度的数字显示功能外还加入了报警系统,如果我们所设计的系统用来监控某一设备,当设备的温度超过我们所设定的温度值时,系统会产生报警。
我们便能很好的对设备进行处理,就不会应温度的变化而造成不必要的损失。
当温度高于100度时,报警时由单片机产生一定频率的脉冲,由P3.7引脚输出,P3.7外接一只NPN的三极管来驱动杨声器发出声音,以便操作员来维护,从而达到报警的目的。
其电路图如下所示。
图3.4(a)扬声器报警系统电路图
当温度低于0度时,亮红灯报警,以便操作员来维护,从而达到报警的目的。
其电路图如下所示。
图3.4(b)红灯报警系统电路图
第4章程序设计
4.1主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度。
图4.1主程序流程
4.2DS18B20的初始化
DS18B20的初始化:
1.先将数据线置高电平“1”。
2.延时(该时间要求的不是很严格,但是尽可能的短一点)。
3.数据线拉到低电平“0”。
4.延时750微秒(该时间的时间范围可以从480到960微秒)。
5.数据线拉到高电平“1”。
6.延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制
7.若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
8.将数据线再次拉高到高电平“1”后结束。
DS18B20的写操作:
1.数据线先置低电平“0”。
2.延时确定的时间为15微秒。
3.按从低位到高位的顺序发送字节(一次只发送一位)。
4.延时时间为45微秒。
5.将数据线拉到高电平。
6.重复上
(1)到(6)的操作直到所有的字节全部发送完为止。
7.最后将数据线拉高。
DS18B20的读操作:
1.将数据线拉高“1”。
2.延时2微秒。
3.将数据线拉低“0”。
4.延时15微秒。
5.将数据线拉高“1”。
6.延时15微秒。
7.读数据线的状态得到1个状态位,并进行数据处理。
8.延时30微秒。
4.3读出温度子程序
温度的读取:
DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以0.0625便为所测的温度,还需要判断正负。
前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,检验有错时不进行温度数据的改写。
其程序流程图如图4.2所示。
图4.2读出温度子程序流程图
4.4
温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。
温度转换命令子程序流程图
4.5计算温度子程序
计算温度子程序将RAM值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4.3所示。
N
Y
图4.3计算温度子程序流程图
第6章总结
作为一名大三的电气工程自动化专业的学生,我觉得进行单片机课程设计是非常必要的。
单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
在这次基于80C51单片机的数字温度计控制系统的课程设计,对整个硬件电路和软件程序设计做了彻底的学习,掌握了仿真软件proteus及keil的基本知识,学习了proteus的仿真方法和步骤,加深了51单片机的知识了解,并学习了数字温度传感器DS18B20,设计软件仿真,更直观的反应设计的正确性。
为期两周的单片机课程设计让我们受益匪浅.此次课程设计软件与硬件相结合,对于我们应用电子技术的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思维的前提.单片机是我们上学期开设的课程,所以很多专业知识也都忘记了.不过经过我们一步步的努力,花费的时间与精力终于没有白费,效果渐渐地出现了.其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了。
通过这次课程设计我才体会到老师在课堂上讲学的重要性。
我之前上单片机课时没认真听过一节课,导致我在做课程设计时无从下手,硬着头皮看对单片机基础知识进行了一个星期的复习,但是收益甚少,最后还是东部西凑,做出了雏形,其中一些功能还没能达到,以后在单片机上还要下更大的功夫了。
回顾此次课程设计,我认识了一个问题,那就是做事的态度是成败的关键所在。
要是你不用心,是不可能完成的。
要是你用心了,就算累一点,苦一点,那也是值得的。
因为我从中懂得了许多东西,例如个人的动手能力,查阅资料,发现问题,分析问题,处理问题,对课本的知识有了更深刻的了解。
附录
附录A仿真接线图
附录B程序清单
DQBITP3.0;从DS18B20向8051传送的数据端口
FLAGBIT00H
FLAG_NEGBIT01H;温度正负值标志位
TEMP_LEQU30H;所设报警最低值温度值
TEMP_HEQU31H;所设报警最高值温度值
TEMP_INTEQU32H
TEMP_DPEQU33H
;
TEMP_10EQU34H
TEMP_1EQU35H
C0BITP3.1;负温度标志位
C1BITP3.2;超过10标志位
C2BITP3.3;超过1标志位
C3BITP3.4
;*******************************
;************主函数*************
ORG0000H
LJMPSTART
ORG1000H
START:
MOVSP,#60H
MAIN:
LCALLREAD_TEMP;调用函数读DS18B20所示温度
LCALLPROC_TEMP;调用函数对温度进行处理
LJMPMAIN
;*********************************
;*********************************
READ_TEMP:
LCALLINI_DQ
JBFLAG,RE_0
RET
RE_0:
MOVA,#0CCH
LCALLWRITE_DQ;读出传感器所示温度
MOVA,#44H
LCALLWRITE_DQ
LCALLDISP_LED;调用LED显示程序
LCALLINI_DQ
MOVA,#0CCH
LCALLWRITE_DQ
MOVA,#0BEH
LCALLWRITE_DQ
LCALLREAD_DQ
RET
;************DS18B20初始化程序***************
INI_DQ:
SETBDQ
NOP;
NOP;空操作PC值加2
CLRDQ
MOVR1,#3
INI_0:
MOVR0,#80
DJNZR0,$
DJNZR1,INI_0
SETBDQ
NOP;
NOP;
NOP;空操作PC值加3
MOVR7,#25
INI_1:
JNBDQ,INI_2;DQ为0则转
DJNZR7,INI_1;延时
LJMPINI_3
INI_2:
SETBFLAG;标志位
LJMPINI_4
INI_3:
CLRFLAG
LJMPINI_5
INI_4:
MOVR0,#80
DJNZR0,$;时序要求延时一段时间
INI_5:
SETBDQ
RET
;**************DS18B20写命令******************
WRITE_DQ:
MOVR6,#8
CLRC
Tloop:
CLRDQ
MOVR2,#6
DJNZR2,$
RRCA;最低位移到C中
MOVDQ,C
MOVR2,#23
DJNZR2,$
SETBDQ
NOP
DJNZR6,Tloop
SETBDQ
RET
;**************读DS18B20数据函数*************
READ_DQ:
MOVR5,#2
MOVR0,#30H
READ_0:
MOVR6,#8
READ_1:
CLRC
SETBDQ
NOP
NOP
CLRDQ
NOP
NOP
NOP
NOP
SETBDQ
MOVR2,#9
DJNZR2,$
MOVC,DQ
MOVR3,#23
DJNZR3,$
RRCA
DJNZR6,READ_1
MOV@R0,A
INCR0
DJNZR5,READ_0
SETBDQ
RET
;***************温度数据处理程序*****************
PROC_TEMP:
CLRFLAG_NEG
MOVA,TEMP_L
SWAPA;A中高低四位互换
ORLA,#0F0H
MOVTEMP_INT,A
MOVA,TEMP_H
SWAPA
ORLA,#0FH
ANLTEMP_INT,A
MOVA,TEMP_H
CLRP3.6
CLRP3.7
JBACC.7,BAOJING1;低于零度亮红灯报警
;JBACC.7,NEGTIVE
MOVA,TEMP_L
ANLA,#0FH
MOVDPTR,#TAB3
MOVCA,@A+DPTR
MOVTEMP_DP,A
LJMPPRO_0
;***********报警函数********************
BAOJING1:
SETBP3.7
RET
;NEGTIVE:
;温度值为负时处理程序,按实际
情况,处理过程比较复杂
;SETBFLAG_NEG
;MOVA,TEMP_L
;CPLA
;ANLA,#0FH
;MOVR1,A
;CJNER1,#0FH,PRO_1;低于0°则调用报警函数
;
;PUSHACC
;MOVA,TEMP_INT
;SUBBA,#1
;MOVTEMP_INT,A
;POPACC
;MOVTEMP_DP,#00H
;LJMPPRO_2
PRO_1:
ADDA,#1
MOVDPTR,#TAB3
MOVCA,@A+DPTR
MOVTEMP_DP,A
PRO_2:
MOVA,TEMP_INT
CPLA
MOVTEMP_INT,A
PRO_0:
MOVA,TEMP_INT
MOVB,#100
DIVAB
MOVA,B
MOVB,#10
DIVAB
MOVTEMP_10,A
MOVTEMP_1,B
RET
;**************LED初始化********************
CLR_LED:
CLRC0
CLRC1
CLRC2
CLRC3
RET
;**************LED显示***********************
DISP_LED:
LCALLCLR_LED
SETBC0
JNBFLAG_NEG,DL_0
MOVP1,#0BFH
LCALLDELAY_10MS
LJMPDL_1
DL_0:
MOVP1,#0FFH
LCALLDELAY_10MS
DL_1:
LCALLCLR_LED
SETBC1;显示十位
MOVA,TEMP_10
MOVDPTR,#TAB4
MOVCA,@A+DPTR
MOVP1,A
CJNEA,#092H,CESHI;超过50启动扬声器报警
LCALLBAOJING2
CESHI:
LCALLDELAY_10MS
LCALLCLR_LED
SETBC2
MOVA,TEMP_1;显示个位
MOVDPTR,#TAB5
MOVCA,@A+DPTR
MOVP1,A
CJNEA,#0A4H,CESHI
LCALLDELAY_10MS
LCALLCLR_LED
SETBC3;显示小数点后的数
MOVA,TEMP_DP
MOVDPTR,#TAB4
MOVCA,@A+DPTR
MOVP1,A
RET
;******************
BAOJING2:
SETBP3.6
RET
;*********延时函数*************
DELAY_10MS:
MOVR3,#20
DEL_1:
MOVR4,#248
DJNZR4,$
DJNZR3,DEL_1
RET
;**********小数位转换********************
TAB3:
DB00H,01H,01H,02H
DB02H,03H,04H,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 温度计 设计 许楚丹 修改