1、课程名称:单片机原理与应用 题 目:数字温度计的设计 目录第1章 概述1第2章 系统总体方案设计32.1 系统设计原理32.2数字温度计设计的方案3第3章 硬件设计53.1 主控器8051 芯片53.2 时钟电路63.2复位电路73.4 温度传感器73.5 显示电路83.6 温度报警电路9第4章 程序设计114.1 主程序114.2 DS18B20的初始化114.3 读出温度子程序134.4温度转换命令子程序144.5 计算温度子程序14第6章 总结15附录16附录A 仿真接线图16附录B 程序清单17参考文献24第1章 概述随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温
2、度进行监测和控制。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式
3、来测量。 我们采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度范围为-55125 C,最高分辨率可达0.0625 C。DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。本文介绍一种基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围0-+100,使用LED模块显示,能设置温度报警上下限。正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89C51单片机功能和应用。该电路设计新颖、功能强大
4、、结构简单。26第2章 系统总体方案设计2.1 系统设计原理采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。采集之后,通过使用51系列的单片机,可以对数据进行相应的处理,再由LED显示电路对其数据进行显示。该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。该系统扩展性非常强,它可以在设计中加入时钟芯片DS1302以获取时间数据,在数据处理同时显示时间,并可以利用AT24C16芯片作为存储器件,以此来对某些时间点的温度数据进行存储,利用键盘来进行调时和
5、温度查询,获得的数据可以通过MAX232芯片与计算机的RS232接口进行串口通信,方便的采集和整理时间温度数据。2.2数字温度计设计的方案本课题以是80C51单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED显示、温度传感器组成。系统框图如图2-2所示。复位电路单片机DS18B20温度传感器报警系统显示驱动电路图2-2 数字温度计框图第3章 硬件设计3.1 主控器8051 芯片 对于单片机的选择,可以考虑使用8031与8051系列,由于803
6、1没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89C51 以低价位单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS51的CMOS产品。其主要特征有如下几个: 与MCS-51 兼容 4K字节可编程FLASH存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24MHz 三级程序存储器
7、锁定 1288位内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路AT8951的管脚如下图所示:图3.1 AT89C51芯片管脚图3.2 时钟电路80C51时钟有两种方式产生,即内部方式和外部方式。80C51中有一个构成内部震荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。本次采用内部震荡电路,瓷片电容采用22PF,晶振为12MHZ。图3.1.1 震荡电路图3.2 复位电路单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R采用10K的阻值 ,电容采用10F的电容值
8、。图3.1.2 复位电路3.4 温度传感器DS18B20 最大的特点是单总线数据传输方式,DS18B20 的数据I/O 均由同一条线来完成。DS18B20 的电源供电方式有2 种: 外部供电方式和寄生电源方式。工作于寄生电源方式时, VDD 和GND 均接地, 他在需要远程温度探测和空间受限的场合特别有用, 原理是当1 W ire 总线的信号线DQ 为高电平时, 窃取信号能量给DS18B20 供电, 同时一部分能量给内部电容充电, 当DQ为低电平时释放能量为DS18B20 供电。但寄生电源方式需要强上拉电路, 软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM 时) , 同时芯片的
9、性能也有所降低。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。因此本设计采用外部供电方式。如下图所示:图3.2 DS18B20管脚图温度传感器DS18B20的测量范围为-55+125,在-10+85时精度为0.5。因为本设计只用于测量环境温度,所以只显示0+51。3.5 显示电路对于数字温度的显示,我们采用4位LED数码管。足够显示0100中各位数,并且还能显示一位小数部分。图3.3 4位LED数码显示管3.6 温度报警电路 对于数字温度计的设计,除了温度的数字显示功能外还加入了报警系统,如果我们所设计的系
10、统用来监控某一设备,当设备的温度超过我们所设定的温度值时,系统会产生报警。我们便能很好的对设备进行处理,就不会应温度的变化而造成不必要的损失。当温度高于100度时,报警时由单片机产生一定频率的脉冲,由P3.7引脚输出,P3.7外接一只NPN的三极管来驱动杨声器发出声音,以便操作员来维护,从而达到报警的目的。其电路图如下所示。图3.4(a) 扬声器报警系统电路图当温度低于0度时,亮红灯报警,以便操作员来维护,从而达到报警的目的。其电路图如下所示。图3.4(b) 红灯报警系统电路图 第4章 程序设计4.1 主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度
11、测量每1s进行一次。这样可以在一秒之内测量一次被测温度。初始化设置显示调用子程序温度采集并作计算处理温度转换命令延时是否开始图4.1 主程序流程4.2 DS18B20的初始化DS18B20的初始化: 1. 先将数据线置高电平“1”。2. 延时(该时间要求的不是很严格,但是尽可能的短一点)。3. 数据线拉到低电平“0”。4. 延时750微秒(该时间的时间范围可以从480到960微秒)。5.数据线拉到高电平“1”。6. 延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所
12、以要进行超时控制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. 将数据
13、线拉高“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所示。Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?结
14、束CRC校验正确?移入温度暂存器NYN 图4.2 读出温度子程序流程图4.4 温度转换命令子程序发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。 温度转换命令子程序流程图4.5 计算温度子程序计算温度子程序将RAM值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图4.3所示。开始温度零下?温度值取补码置“”标志NY置“+”标志计算小数位温度BCD计算整数位温度BCD结束图4.3 计算温度子程序流程图第6章 总结作为一名大三的电
15、气工程自动化专业的学生,我觉得进行单片机课程设计是非常必要的。单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。在这次基于80C51单片机的数字温度计控制系统的课程设计,对整个硬件电路和软件程序设计做了彻底的学习,掌握了仿真软件proteus及keil的基本知识,学习了proteus的仿真方法和步骤,加深了51单片机的知识了解,并学习了数字温度传感器DS18B20,设计软件仿真,更直观的反应设计的正确性。为期两周的单片机课程设计让我们受益匪浅.此次课程设计软件与硬件相结合,对于我们应用电子技术的学生而言焊接是
16、不成问题,也很顺利;可到了编程时就出现了很大的障碍本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思维的前提.单片机是我们上学期开设的课程,所以很多专业知识也都忘记了.不过经过我们一步步的努力,花费的时间与精力终于没有白费,效果渐渐地出现了.其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了。通过这次课程设计我才体会到老师在课堂上讲学的重要性。我之前上单片机课时没认真听过一节课,导致我在做课程设计时无从下手,硬着头皮看对单片机基础知识进行了一个星期的复习,但是收益甚少,最后还
17、是东部西凑,做出了雏形,其中一些功能还没能达到,以后在单片机上还要下更大的功夫了。回顾此次课程设计,我认识了一个问题,那就是做事的态度是成败的关键所在。要是你不用心,是不可能完成的。要是你用心了,就算累一点,苦一点,那也是值得的。因为我从中懂得了许多东西,例如个人的动手能力,查阅资料,发现问题,分析问题,处理问题,对课本的知识有了更深刻的了解。附录附录A 仿真接线图附录B 程序清单DQ BITP3.0 ;从DS18B20向8051传送的数据端口FLAG BIT00HFLAG_NEGBIT01H ;温度正负值标志位TEMP_LEQU 30H ;所设报警最低值温度值TEMP_HEQU31H ;所设
18、报警最高值温度值TEMP_INTEQU 32HTEMP_DPEQU 33H ;TEMP_10EQU34HTEMP_1EQU35HC0BIT P3.1 ;负温度标志位C1BIT P3.2 ;超过10 标志位 C2BIT P3.3 ;超过1 标志位C3BIT P3.4 ;*;*主函数*ORG 0000HLJMP STARTORG 1000HSTART:MOV SP,#60HMAIN: LCALL READ_TEMP ;调用函数读DS18B20所示温度 LCALL PROC_TEMP ;调用函数对温度进行处理 LJMP MAIN;*;*READ_TEMP:LCALL INI_DQJB FLAG,RE
19、_0 RETRE_0:MOV A,#0CCHLCALL WRITE_DQ ;读出传感器所示温度MOV A,#44HLCALL WRITE_DQLCALL DISP_LED;调用LED显示程序LCALL INI_DQMOV A,#0CCHLCALL WRITE_DQMOV A,#0BEHLCALL WRITE_DQLCALL READ_DQRET;*DS18B20初始化程序*INI_DQ:SETBDQNOP ;NOP ;空操作 PC值加2CLRDQMOV R1,#3INI_0: MOV R0,#80 DJNZ R0,$ DJNZ R1,INI_0SETB DQNOP ;NOP ;NOP ;空操作
20、 PC值加3MOVR7,#25INI_1: JNB DQ,INI_2 ;DQ为0则转 DJNZ R7,INI_1 ;延时 LJMP INI_3INI_2: SETB FLAG ;标志位 LJMP INI_4INI_3: CLR FLAG LJMP INI_5INI_4: MOV R0,#80 DJNZ R0,$ ;时序要求延时一段时间INI_5: SETB DQ RET;*DS18B20写命令*WRITE_DQ:MOVR6,#8 CLR CTloop:CLRDQMOV R2,#6DJNZ R2,$RRCA;最低位移到C中MOV DQ,CMOV R2,#23DJNZ R2,$SETB DQNOP
21、DJNZ R6,TloopSETB DQRET;*读DS18B20数据函数*READ_DQ:MOV R5,#2MOV R0,#30HREAD_0:MOV R6,#8READ_1:CLRCSETB DQNOPNOPCLRDQNOPNOPNOPNOPSETBDQMOV R2,#9DJNZ R2,$MOV C,DQMOV R3,#23DJNZ R3,$RRCADJNZR6,READ_1MOV R0,AINC R0DJNZ R5,READ_0SETB DQRET;*温度数据处理程序*PROC_TEMP:CLR FLAG_NEGMOV A,TEMP_LSWAP A ; A中高低四位互换ORL A,#0F
22、0HMOV TEMP_INT,AMOV A,TEMP_HSWAP AORL A,#0FHANL TEMP_INT,AMOV A,TEMP_H CLR P3.6 CLR P3.7 JB ACC.7,BAOJING1 ;低于零度亮红灯报警;JBACC.7,NEGTIVEMOV A,TEMP_LANL A,#0FHMOV DPTR,#TAB3MOVC A,A+DPTRMOV TEMP_DP,ALJMP PRO_0;*报警函数*BAOJING1: SETB P3.7 RET;NEGTIVE: ;温度值为负时处理程序,按实际情况,处理过程比较复杂;SETB FLAG_NEG;MOV A,TEMP_L;C
23、PL A;ANL A,#0FH;MOV R1,A;CJNE R1,#0FH,PRO_1 ;低于0则调用报警函数 ; ;PUSH ACC;MOV A,TEMP_INT;SUBB A,#1;MOV TEMP_INT,A;POP ACC;MOV TEMP_DP,#00H ; LJMP PRO_2PRO_1: ADD A,#1MOV DPTR,#TAB3MOVC A,A+DPTRMOV TEMP_DP,APRO_2:MOV A,TEMP_INTCPL AMOV TEMP_INT,APRO_0:MOV A,TEMP_INT MOV B,#100DIV ABMOV A,BMOV B,#10DIV ABMO
24、V TEMP_10,AMOV TEMP_1,B RET;*LED初始化*CLR_LED:CLR C0CLR C1CLR C2CLR C3RET;*LED显示*DISP_LED:LCALL CLR_LEDSETB C0JNB FLAG_NEG,DL_0MOV P1,#0BFH LCALL DELAY_10MSLJMP DL_1DL_0: MOV P1,#0FFHLCALL DELAY_10MSDL_1:LCALL CLR_LED SETB C1 ;显示十位 MOV A,TEMP_10 MOV DPTR,#TAB4MOVC A,A+DPTRMOV P1,A CJNE A,#092H,CESHI ;
25、超过50启动扬声器报警 LCALL BAOJING2 CESHI:LCALL DELAY_10MSLCALL CLR_LEDSETB C2 MOV A,TEMP_1;显示 个位MOV DPTR,#TAB5MOVC A,A+DPTRMOV P1,ACJNE A,#0A4H,CESHILCALL DELAY_10MSLCALL CLR_LEDSETB C3 ;显示小数点后的数MOV A,TEMP_DPMOV DPTR,#TAB4MOVC A,A+DPTRMOV P1,A RET;*BAOJING2: SETB P3.6 RET ;*延时函数*DELAY_10MS:MOV R3,#20DEL_1:M
26、OV R4,#248DJNZ R4,$DJNZ R3,DEL_1RET;*小数位转换*TAB3:DB00H,01H,01H,02HDB02H,03H,04H,04HDB05H,06H,06H,07HDB07H,08H,09H,09H;*无小数点位的段码*TAB4:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;*有小数点*TAB5:DB40H,79H,24H,30H,19H,12H,02H,78H,00H,10HEND参考文献1、王迎旭编.单片机原理与应用M.机械工业出版社.2004.2、楼然苗编.51系列单片机设计实例M.北京航空航天大学出版社.
27、3、黄勤编.计算机硬件技术基础实验教程M.重庆大学出版社4、刘乐善编.微型计算机接口技术及应用M.华中科技大学出版社.5、陈光东编.单片微型计算机原理及接口技术M.华中科技大学出版社.课程设计评分表项 目评 价优良中及格差设计方案合理性与创造性(10%)开发板焊接及其调试完成情况*(10%)硬件设计或软件编程完成情况(20%)硬件测试或软件调试结果*(10%)设计说明书质量(20%)答辩情况(10%)完成任务情况(10%)独立工作能力(10%)出勤情况(10%)综 合 评 分 指导教师签名:_ 日 期:_注:表中标*号项目是硬件制作或软件编程类课题必填内容; 此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。