




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国矿业大学电气信息电子综合设计键入公司名称数字温度计学期综合电子设计作品张阳、赵正雄、朱坤 2011/12/16 摘要基本要求:可测量温度范围:000.0-102.0,温度分辨力:0.4。测量相对误差:2%,用数码管实时显示被测量的温度。提高要求:实现多个温度点的实时测量,实现温度的分档测量(102、51、25.5)。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用4位共阳极LED数码管,实现温度显示,能准确达到以上要求。温度计电路设计控制器采用单片机AT89S51,具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。温度传感器采用DS18B20,DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式,仅需要一个端口引脚进行通信,内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。显示电路采用4位共阴极LED数码管,采用LED动态显示方式,从P0口输出段码,P2.0P2.3作为位选控制端。目录1 概述 (4) 1.1 课程设计的要求 (4) 1.2课程设计的目的(4) 1.3 系统组成及工作原理(4)2 系统总体方案及硬件设计(5) 2.1设计思路及描述(5) 2.2硬件构成(5) 1主控模块AT89C51单片机(5) 2DS18B20介绍 (5) 2.3显示模块(9) 2.4开关控制电路模块 (10)3 软件设计 (11) 3.1主程序 (11) 3.2读取温度子程序 (11) 3.3温度转换命令子程序 (12)3.4计算温度子程序(12)3.5温度比较子程序(13)4 Proteus软件仿真(14)5 课程设计体会 (17)参考文献(17)附1:源程序代码(18)附2:系统原理图(33)1 概述1.1课程设计的要求基本要求:可测量温度范围:000.0-102.0,温度分辨力:0.4。测量相对误差:2%,用数码管实时显示被测量的温度。提高要求:实现多个温度点的实时测量,实现温度的分档测量(102、51、25.5)。1.2课程设计的目(1) 通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。(2)掌握LED的动态显示,DS18B20的使用和编程原理。(3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。(4)掌握WAVE、protel及proteus仿真软件的使用方法。1.3 系统组成及工作原理本系统功能是由硬件和软件两大部分协调完成的,硬件部分主要完成各种新号的采集和各种信息的显示的;软件主要完成信号的处理及控功能等。基于工作原理是89C51单片机对按钮的输入信号的查询和检测,然后对输入信号进行相应处理后通过LED数码管输出。2 系统总体方案及硬件设计2.1设计思路及描述本实验设计3个开关按键K1,K2,K3,分别对应报警低中高3个档位。该实验要求对环境温度进行测量并在LED上显示数据,则可利用AT89C51芯片的P0.7-P0.0管脚对应了接数码管的A,B,C,D,E,F,G和小数点位,P2.0P2.3接显示数据的小数位、个位、十位、百位(符号位),P3.4端口与DS18B20进行数据传递和通信端口,P3.7端口输出报警信号。 2.2硬件构成 1主控模块AT89C51单片机功能特性描述 AT89C51是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程 Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89C51具有以下标准功能: 8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至 0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P2口:P2口是一个具有内部上拉电阻的8位双向 I/O口,P2 输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 2DS18B20介绍 DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5V;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图1所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。DS18B20内部结构框图温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC 图1 DS18B20字节定义高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表1是一部分温度值对应的二进制温度数据。DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。表1一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。ROM操作命令指令说明读ROM命令(33H)读18B20的序行号搜索ROM命令(F0H)识别总线上各器件的编码匹配ROM命令(55H)用于多个DS18B20的定位跳过ROM命令(CCH)此命令执行后,存储器操作将针对总线上的所有操作报警搜索ROM命令(ECH)仅温度超限的器件对此命令做出响应RAM操作命令指令说明温度转换(44H)启动温度转换读暂存器(BEH)读全部暂存器内容,包括CRC字节写暂存器(4EH)写暂存器第2,3和4个字节的数据复制暂存器(48EH)将暂存器中的TH,TL和配置寄存器内容复制到EEPROM中读EEPROM(B8H)将TH,TL和配置寄存器内容从EEPROM中回读至暂存器DS18B20测温原理图DS18B20的通信协议:DS18B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲,应答脉冲时隙;写0,写1时隙;读0,读1时隙。与DS18B20的通信,是通过操作时隙完成单总线上的数据传输。发送所有的命令和数据时,都是字节的低位在前,高位在后。复位和应答脉冲时隙每个通信周期起始于微控制器发出的复位脉冲,其后紧跟DS18B20发出的应答脉冲,在写时隙期间,主机向DS18B20器件写入数据,而在读时隙期间,主机读入来自DS18B20的数据。在每一个时隙,总线只能传输一位数据。写时隙当主机将单总线DQ从逻辑高拉为逻辑低时,即启动一个写时隙,所有的写时隙必须在60120us完成,且在每个循环之间至少需要1us的恢复时间。写0和写1时隙如图所示。在写0时隙期间,微控制器在整个时隙中将总线拉低;而写1时隙期间,微控制器将总线拉低,然后在时隙起始后15us之释放总线。读时隙 DS18B20器件仅在主机发出读时隙时,才向主机传输数据。所以在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能够传输数据。所有的读时隙至少需要60us,且在两次独立的读时隙之间,至少需要1us的恢复时间。每个读时隙都由主机发起,至少拉低总线1us。在主机发起读时隙之后,DS18B20器件才开始在总线上发送0或1,若DS18B20发送1,则保持总线为高电平。若发送为0,则拉低总线当发送0时,DS18B20在该时隙结束后,释放总线,由上拉电阻将总线拉回至高电平状态。DS18B20发出的数据,在起始时隙之后保持有效时间为15us。因而主机在读时隙期间,必须释放总线。并且在时隙起始后的15us之内采样总线的状态。 2.3显示模块 显示电路采用4位共阳极LED数码管,采用LED动态显示方式,从P1口输出段码,P2.0P2.3作为位选控制端。其中P1做输出口时需要加上拉电阻。2.4开关控制电路模块本模块有3个按键来实现报警温度的设置功能k1对应低温档 0-25k2对应中温档 25-55k3高温档 55-1023 软件设计3.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,并与温度报警上下限设定值进行比较,同时查询开关是否按下进行报警温度的设置,然后循环执行。 3.2读取温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。3.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图4所示Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY 温度比较 报警电路调用显示子程序档位选择读取,转换温度温度显示初始化图2主程序流程图 图3 读取温度流程图发DS18B20复位命令发跳过ROM命令发温度转换开始命令结束 图8 温度转换命令子程序流程图 3.4 计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如下图所示。3.5温度比较 此程序是将实际温度与设置的报警上下限比较,决定是否发出报警信号。由于T为实际温度的绝对值,TH、TL也是温度的绝对值,因此判断大小关系时要通过其正负符号来确定。4 Proteus软件仿真(1)在正常工作模式下,LED显示当前所测的实际温度。如果所测温度没有超出报警温度的上下限时,报警指示灯不动作;若超出所设置的报警上下限温度,报警指示灯D1闪烁。(2)按下开关键k1,k2,k3分别对应相应的温度范围(0-25、25-55、55-102)超过相应量程则报警;若对三按键不做动作则为默认测量范围(0-102)(3)K5,K6分别是两温度传感器的测量开关,通过开关的开断实现多点测量5 PCB制作附1:源程序代码TEMP_ZH DATA 24H ;实时温度值整合后存放单元 TEMPL DATA 25H TEMPH DATA 26H TEMP_TH DATA 27H ;高温报警值存放单元 TEMP_TL DATA 28H ;低温报警值存放单元 TEMPHH DATA 29H ;百位数bcd码存放单元 TEMPHL DATA 2AH ;十位数bcd码存放单元 TEMPLH DATA 2BH ;个位数bcd码存放单元 TEMPLL DATA 2CH ;小位数bcd码存放单元 SIGN EQU 20H.3 ;1=温度为负,0=温度为正 BEEP EQU P3.7 FLAG1 EQU 20H.0 ;DS18B20是否存在/1存在,0不存在 DQ EQU P3.4;= ORG 0000H JMP MAIN ORG 0003H LJMP INT0MAIN: MOV SP,#60H MOV A,#00H MOV R0,#20H ;将 20H-2FH 单元清零 MOV R1,#10HCLEAR: MOV R0,A INC R0 DJNZ R1,CLEARS1: JNB P1.0,ALR1 SJMP S2ALR1: MOV 27H,#25 MOV 28H,#00H SJMP MMM1S2: JNB P1.1,ALR2 SJMP S3ALR2: MOV 27H,#55 MOV 28H,#25 SJMP MMM1S3: JNB P1.2,ALR3 SJMP ALR4ALR3: MOV 27H,#102 MOV 28H,#55 SJMP MMM1ALR4: MOV 27H,#66H MOV 28H,#01HMMM1: LCALL DELAY DJNZ R1,MMM1START: CALL RESET ;18B20复位子程序 JNB FLAG1,START1 ;DS1820不存在 JMP START2START1: JMP $START2: CLR BEEP CALL RESET JNB FLAG1,START1 ;DS1820不存在 MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE MOV A,#44H ; 发出温度转换命令 CALL WRITE CALL RESET MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE MOV A,#0BEH ; 发出读温度命令 CALL WRITE CALL READ CALL CONV_TEMP CALL LED_DISP CALL TEMP_COMP ;JNB P1.0,INTO SJMP START2INTO: MOV TEMP_TH,#55 MOV TEMP_TL,#40 CALL LED_DISP CALL TEMP_COMP RET;=;实际温度值与报警温度比较;=TEMP_COMP: MOV A,TEMP_ZH CLR C SUBB A,TEMP_TH JNC CHULI CLR C MOV A,TEMP_TL SUBB A,TEMP_ZH JNC CHULI CLR C SJMP BYECHULI: LCALL BEEP_BL CLR BEEPBYE: RET;-;DS18B20复位初始化程序;=RESET: SETB DQ NOP CLR DQ MOV R1,#03TSR1: MOV R0,#80 DJNZ R0,$ ;延时 DJNZ R1,TSR1 SETB DQ ;然后拉高数据线 NOP MOV R0,#15 ;96微秒TSR2: JNB DQ,TSR3 DJNZ R0,TSR2 JMP TSR4 ;延时TSR3: SETB FLAG1 ;置标志位,表示DS18B20存在 LJMP TSR5TSR4: CLR FLAG1 ;清标志位,表示DS18B20不存在 JMP TSR7TSR5: MOV R0,#115 ;200微秒 DJNZ R0,$ ;延时TSR7: SETB DQ RET;=;WRITE程序,从P3.3端口写一个字节 (已修改);=WRITE: MOV R2,#8 ;一共8位数据 CLR CWR1: CLR DQ ;开始写入DS18B20总线要处于复位(低)状态 MOV R3,#07 DJNZ R3,$ ;总线复位保持16微妙以上 RRC A ;把一个字节DATA 分成8个BIT环移给C MOV DQ,C ;写入一个BIT MOV R3,#3CH DJNZ R3,$ ;等待100微妙 SETB DQ ;重新释放总线 NOP DJNZ R2,WR1 ;写入下一个BIT SETB DQ RET;=;READ程序,从18B20中读出温度低位、高位;=READ: MOV R4,#2 ;将温度低位、高位DS18B20中读出 MOV R1,#TEMPL ;存入25H、26HRE00: MOV R2,#8RE01: CLR CY SETB DQ NOP NOP CLR DQ ;读前总线保持为低 NOP NOP NOP SETB DQ ;开始读总线释放 MOV R3,#09 ;延时18微妙 DJNZ R3,$ MOV C,DQ ;从DS18B20总线读得一个BIT MOV R3,#3CH DJNZ R3,$ ;等待100微妙 RRC A ;把读得的位值环移给A DJNZ R2,RE01 ;读下一个BIT MOV R1,A INC R1 DJNZ R4,RE00 RET; 警报1INT0: MOV 27H,55 MOV 28H,40 RETI;*; 处理温度 BCD 码子程序 (已修改);*F*CONV_TEMP: CLR SIGN ;符号标志位清零 MOV A,TEMPH ;判温度是否零下 ANL A,#80H JZ TEMPC1 ;温度零上转TEMPC1 SETB SIGN ;小于零,符号标志位置1 CLR C MOV A,TEMPL ;零下,二进制数求补(双字节) CPL A ;取反加1 ADD A,#01H MOV TEMPL,A MOV A,TEMPH CPL A ADDC A,#00H MOV TEMPH,ATEMPC1: MOV A,TEMPL ANL A,#0FH ;小数位,精确到0.1 MOV TEMPLL,A MOV A,TEMPL ;整数部分 ANL A,#0F0H ;取出高四位 SWAP A MOV TEMPL,A MOV A,TEMPH ;取出低四位 ANL A,#0FH SWAP A ORL A,TEMPL ;重新组合 MOV TEMP_ZH,A MOV B,#100 ;十六进制- BCD DIV AB ;B= A % 100 MOV TEMPHH,A ;TEMPHH = 百位数TEMPC3: MOV A,#10 XCH A,B DIV AB ;B = A % B MOV TEMPHL,A ;TEMPHL = 十位数 BCD MOV TEMPLH,B ;TEMPLH = 个位数 BCD RET;=; LED 显示子程序 (已修改);=LED_DISP: LCALL LED_BCD MOV R0,#01H MOV R1,#29H ;待输出数据,百位 MOV R2,#02H ;连续输出百位和十位 MOV DPTR,#TAB2LED_DISP0: MOV P2,#00H ;百位 MOV A,R1 MOVC A,A+DPTR SETB P2.0 MOV P0,A MOV A,R0 MOV P2,A RL A MOV R0,A LCALL DELAY CLR P2.0 ;延时5mS INC R1 MOV P2,#00H ;十位 MOV A,R1 MOVC A,A+DPTR SETB P2.1 MOV P0,A MOV A,R0 MOV P2,A RL A RL A MOV R0,A LCALL DELAY CLR P2.1 ;延时5mS INC R1 MOV P2,#00H MOV DPTR,#TAB1 ;输出个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现在进行时用法课件
- 2025年Python数据库应用培训试卷:实战演练与押题解析
- 2025年中学教师资格证考试教育知识与能力专项训练模拟试题版
- 2025年计算机技术与软件专业技术资格(水平)考试模拟试卷 程序设计专项训练
- 2025年高考物理电磁学难题解析冲刺试卷
- 2026届河北省石家庄市辛集中学化学高三上期末达标测试试题含解析
- 玩水安全知识培训内容课件
- 吉林省白城市洮南第十中学2026届化学高一上期末联考模拟试题含解析
- 研究生法律类题目及答案
- 个人信息保护协议格式
- 软件项目突发事件应急预案
- 2025年潍坊市中考数学试题卷(含标准答案)
- 医保打击欺诈骗保课件
- 并购整合方案模板(3篇)
- 调酒小摊设计方案(3篇)
- 虚拟现实在初中化学教学产品中的应用效果与设计创新(2025年)
- 2025年高速公路防汛应急演练方案(带演练脚本可直接使用)
- 2025年职业健康卫生知识培训考试试题及答案
- 游泳培训招生讲解
- 清洁生产审核报告模板
- 药事管理培训课件
评论
0/150
提交评论