《温度测量仿真+pcb.docx》由会员分享,可在线阅读,更多相关《温度测量仿真+pcb.docx(17页珍藏版)》请在三一办公上搜索。
1、温度测量仿真+pcb目 录 1. 前言. 2 2. 所需硬件. 3 2.1 AT89C52单片机 . 3 2.2 DS18B20 温度传感器 . 7 3. 设计方案. 11 3.1 方案的总体设计框图 . 11 3.2 电路设计 . 13 4. 程序设计. 13 5. 总结与体会. 15 附录1 软件仿真. 17 附录2 制板图. 19 附录3 程序源代码. 20 1 1. 前言 目前,单片机已经在测控领域获得了广泛的应用,它除了可以测量电信号以外,还可以用于温度,湿度等非电信号的测量。能独立工作的单片机温度检测和温度控制系统已经广泛用于很多领域。 单片机是一种特殊的计算机,它是在一块半导体的
2、芯片上集成了CPU,存储器,RAM,ROM及输入与输出接口电路,这种芯片成为:单片机。由于单片机的集成度高,功能强,通用性好,特别它具有体积小,重量轻,能耗低,价格便宜,抗干扰能力强和使用仿版等方面的优点,是它迅速的得到了推广和应用,目前已经成为测量控制系统中的优良机种和新电子产品中的关键部件。单片机已不仅仅局限于小系统的概念,现已广泛应用于家用电器,机电产品,办公自动化产品,机器人,儿童玩具,航天器等领域。 这次温度测量系统,就是用的单片机实现温度的测量,传统的温度传感器大多以热敏电阻作为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机
3、进行处理。本次我和陆路裕同学采用的正是DS18B20数字温度传感器来实现基于51单片机的温度计的设计。 传统的温度计有发映速度慢,读数麻烦,测量精度不高,误差大等缺点而下面利用集成温度传感器DS18B20设计并制作了一款基于2 AT89C51的4位数码管现实的数字温度计,其电路简单,软硬件结构模块化,易于实现。 该数字温度计利用温度传感器及接口电路完成温度的测量并转换成模拟电压信号,经由模数转换器转换成单片机能够处理的数字信号,然后送到单片机中进行处理变换,最后将温度值显示在数码管上。系统以单片机为系统核心,加上DS18B20温度传感器,两位位温度数据显示的共阴极数码管,及晶振电路和复位电路组
4、成。 2. 所需硬件 2.1 AT89C52单片机 图2-1 PDIP封装的AT89C52引脚图 图2-2 AT89C52 PDIP封装芯片 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。 主要功能特性 3 1、兼容MCS51指令系统 2、8k可反复擦写(大于1000次)Flash ROM; 3、32个双向I
5、/O口; 4、256x8bit内部RAM; 5、3个16位可编程定时/计数器中断; 6、时钟频率0-24MHz; 7、2个串行中断,可编程UART串行通道; 8、2个外部中断源,共8个中断源; 9、2个读写中断口线,3级加密位; 10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; 11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。 引脚功能及管脚电压 AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初
6、始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1和XTAL2为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd为复位输入端口,外接电阻电容组成的复位电路。VCC和VSS为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口4 被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS和SCLS端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端
7、,用于当前制式的检测及会聚调整状态进入的控制功能。 P0 口 P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 口 P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动4 个TTL 逻辑 门电路。对端口写“1”,通过内部的上拉电阻把
8、端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉 电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入和输入。 P2 口 P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓5 冲级可驱动4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器时,P2 口送出高8 位地址数据。在访问8 位
9、地址的外部数据存储器时,P2 口输出P2 锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。 P3 口 P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动4 个TTL 逻 辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。 RST 复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 XTAL1 振荡器反相放大器
10、的及内部时钟发生器的输入端。 XTAL2 振荡器反相放大器的输出端。 6 时钟振荡器 AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路。外接石英晶体及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF10pF,而如使用陶瓷谐振器建议选择40pF10pF。用户也可
11、以采用外部时钟。采用外部时钟的电路如图10 右图所示。这种情况下,外部时钟脉冲接到XTAL1 端,即内部时钟发生器的输入端,XTAL2 则悬空。由于外部时钟信号是通过一个2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。 2.2 DS18B20 温度传感器 DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆 图2-3 DS18
12、B20传感器 7 沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 DS18B20工作原理 DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温
13、度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 高速暂存存储器 高速暂存存储器由9个字节组成,其分配如表5所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:
14、 8 当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。第九个字节是 冗余检验字节。 根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行 复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后 释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。 技术性能描述 1、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条
15、口线即可实现微处理器与DS18B20的双向通讯。 2、测温范围 55+125,固有测温分辨率0.5。 3、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。 4、工作电源: 35V/DC 5 、在使用中不需要任何外围元件 6、 测量结果以912位数字量方式串行传送 7 、不锈钢保护管直径 6 8 、适用于DN1525, DN40DN250各种介质工业管道和狭小空间设备测温 9、 标准安装螺纹 M10X1, M12X1.5, G1/2”任选 9 10 、PVC电缆直接出线或德式球型接线盒出线,
16、便于与其它电器设备连接。 DS18B20的主要特性 1、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数 据线供电 2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯 3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 4、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内 5、温范围55+125,在-10+85时精度为0.5 6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625
17、,可实现高精度测温 7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 8、测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 9、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。 应用范围 1 该产品适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电10 缆线槽等测温和控制领域 2 轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。 3 汽车空调、冰箱、冷柜、以及中低温干燥箱等。 4 供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控
18、制 3. 设计方案 方案一:提到温度的检测,我首先会考虑到传统的测温元件有热电阻和热电偶,而热点阻和热电偶测出的一般都是电压,进行A/D转换后,这样可以用单片机进行数据的处理,在显示电路上就可以将温度显示出来,但这需要比较多的外部的硬件的支持,硬件电路复杂,软件调试也复杂,准确度也不高。 方案二:温度传感器是在单片机电路设计中,使用较多的传感器。所以可以采用一只温度传感器DS18B20,此温度传感器,可以很容易读出温度值,进行转换,就可以满足设计要求,可以实时测出系统温度。 将两个方案进行比较可以看出,方案二原理简明易行,测量精度高,故采用方案二。 3.1 方案的总体设计框图 根据系统的设计要
19、求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示11 功能。选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。 该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用两位共阴LED数码管以动态扫描法实现。检测范围0摄氏度到85摄氏度。 数字温度计总体电路结构框图如图2-1所示。 图3-1 12 3.2 电路设计 4
20、. 程序设计 DSl8820的主要数据元件有:64位激光Lasered ROM,温度灵敏元件和非易失性温度告警触发器TH和TL。DSBl820可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。此外,还可外接5 V电源,给DSl8820供电。DSl8820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。图4-1为读取数据流程图。 13 开始 DS18B20的初始化 跳过读序列号的操作 启动温度转换 DS18B20的初始化 跳过读序列号的操作 LOW-低八位 HIGH-高八位 RET
21、图4-1 读取数据的流程图 读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大于0.5的话,向个位进1;小于0.5的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。还因为DS18B20最低温度只能为-55,所以可以将整数部分的最高位换成一个“-”,表示为负数。图4-2为温度数据处理程序的流程图。 14 开始 提取整数部分存入提取小数部分存入LT
22、LT右移三位,将精度降低到0.5摄氏度 将小数部分整数化 LT是否大于5 N HT+ Y N Sign=?0XF0 Y 负数表示flag=1 HT=HT+1 提取符号部分存RET 图4-2 温度数据处理流程图 5. 总结与体会 作为一名即将大四的测控学生,我觉得做单片机方面的课程设计是很有意义的,而且也是必要的。通过这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。 其次,在这次课程设计中,我们运用了许多专业软件,如:proteus仿真、Altium Designer等。虽然过去我从未独立应用过他们,但在15
23、 学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。 最后,要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;在设计中遇到的问题要记录,以免下次遇到同样的问题。 在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次
24、课程设计的最大收获。16 附录1 软件仿真 17 18 附录2 制板图 19 附录3 程序源代码 DATA_BUS BIT P3.3 FLAG BIT 00H ;标志位 TEMP_L EQU 30H ;温度值低字节 TEMP_H EQU 31H ;温度值高字节 TEMP_SW EQU 35H ;温度十位数 TEMP_GW EQU 36H ;温度个位数 DIS_BW EQU 37H ;显示百位数 DIS_SW EQU 38H ;显示十位数 DIS_GW EQU 39H ;显示个位数 DIS_ADD EQU 3BH ;显示地址 ORG 0000H AJMP START ORG 0050H ;初始化
25、 START: MOV SP, #40H MAIN: LCALL READ_TEMP ;调读温度程序 LCALL PROCESS ;调数据处理程序 AJMP MAIN ;读温度程序 READ_TEMP: LCALL RESET_PULSE ;调用复位脉冲程序 MOV A, #0CCH;跳过ROM命令 LCALL WRITE MOV A, #44H ;读温度 LCALL WRITE LCALL DISPLAY ;显示温度 LCALL RESET_PULSE ;调用复位脉冲程序 MOV A, #0CCH ;跳过ROM命令 LCALL WRITE MOV A, #0BEH ;读缓存命令 LCALL
26、WRITE LCALL READ RET ;复位脉冲程序 RESET_PULSE: RESET: SETB DATA_BUS NOP NOP CLR DATA_BUS MOV R7, #255 DJNZ R7, $ SETB DATA_BUS MOV R7, #30 DJNZ R7,$ JNB DATA_BUS, SETB_FLAG CLR FLAG AJMP NEXT SETB_FLAG: SETB FLAG NEXT: MOV R7, #120 DJNZ R7, $ SETB DATA_BUS JNB FLAG, RESET RET ;写命令 WRITE: SETB DATA_BUS MO
27、V R6, #8 CLR C WRITING: CLR DATA_BUS MOV R7, #5 DJNZ R7, $ RRC A MOV DATA_BUS, C MOV R7, #30H DJNZ R7, $ SETB DATA_BUS NOP DJNZ R6, WRITING RET ;循环显示段位 DISPLAY: 20 MOV R4, #200 DIS_LOOP: MOV A, DIS_DP MOV P2, #0FFH MOV P0, A CLR P2.7 LCALL DELAY2MS MOV A, DIS_GW MOV P2, #0FFH MOV P0, A SETB P0.7 CLR
28、 P2.6 LCALL DELAY2MS MOV A, DIS_SW MOV P2, #0FFH MOV P0, A CLR P2.5 LCALL DELAY2MS MOV A, DIS_BW MOV P2, #0FFH MOV P0, A MOV A, TEMP_BW CJNE A, #0,SKIP AJMP NEXTT SKIP: CLR P2.4 LCALL DELAY2MS NEXTT: NOP DJNZ R4, DIS_LOOP RET ;读命令 READ: SETB DATA_BUS MOV R0, #TEMP_L MOV R6, #8 MOV R5, #2 CLR C READI
29、NG: CLR DATA_BUS NOP NOP SETB DATA_BUS NOP NOP NOP NOP MOV C, DATA_BUS RRC A MOV R7, #30H DJNZ R7, $ SETB DATA_BUS DJNZ R6, READING MOV R0, A INC R0 MOV R6, #8 SETB DATA_BUS DJNZ R5, READING RET ;数据处理 PROCESS: MOV R7, TEMP_L MOV A, #0FH ANL A, R7 MOV TEMP_DP,A MOV R7, TEMP_L MOV A, #0F0H ANL A, R7 S
30、WAP A MOV TEMP_L, A MOV R7, TEMP_H MOV A, #0FH ANL A, R7 SWAP A ORL A, TEMP_L MOV B, #64H DIV AB MOV TEMP_BW,A MOV A, #0AH XCH A, B DIV AB MOV TEMP_SW,A MOV TEMP_GW,B MOV A, TEMP_DP MOV DPTR, #TABLE_DP MOVC A, A+DPTR MOV DPTR, #TABLE_INTER MOVC A, A+DPTR MOV DIS_DP, A 21 MOV MOV MOVC MOV MOV MOV MOV
31、C MOV MOV MOV MOVC MOV RET DELAY2MS: MOV A, TEMP_GW DPTR, #TABLE_INTER A, A+DPTR DIS_GW, A A, TEMP_SW DPTR, #TABLE_INTER A, A+DPTR DIS_SW, A A, TEMP_BW DPTR, #TABLE_INTER A, A+DPTR DIS_BW ,A R6, #3 LOOP3: MOV R5, #250 DJNZ R5, $ DJNZ R6, LOOP3 RET TABLE_DP: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H DB 06H,07H,08H,08H,09H,09H TABLE_INTER: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,7H,7FH,6FH END 22