收藏 分销(赏)

温度测量显示电路设计.doc

上传人:精**** 文档编号:2197532 上传时间:2024-05-22 格式:DOC 页数:31 大小:352.54KB
下载 相关 举报
温度测量显示电路设计.doc_第1页
第1页 / 共31页
温度测量显示电路设计.doc_第2页
第2页 / 共31页
温度测量显示电路设计.doc_第3页
第3页 / 共31页
温度测量显示电路设计.doc_第4页
第4页 / 共31页
温度测量显示电路设计.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、温度测量显示电路设计.doc 作者: 日期:2 个人收集整理 勿做商业用途目 录一 摘要1二 设计目的与意义1三 方案论证与确定23。1系统方案的确定.23.2传感器方案的确定。33.3测量显示方案的确定3四 系统工作原理分析4五 电路制作与调试六 附录七 参考文献一摘 要在现今科技高速发展的时代,各行各业对控制和测量的要求越来越高,其中,温度测量和控制在很多行业中都有比较重要的应用,尤其在工业上,如炼钢时对温度高低的控制。要控制好温度,测量是前提,测量的精度影响着后续工序的进行,因此温度测量的方法和选取就显得相当重要了。针对各种温度测量方案的讨论分析后,我们组决定以AT89S52为核心,采用

2、DS18B20温度传感器进行温度信号的检测,并通过LCD液晶显示测量所得温度,外加红外遥控调节设置温度测量的上下限数值(默认温度上下限为1024),在所测温度到达所设上下限数值时,蜂鸣器启动报警提示.本报告是我们组所设计的数字温度计的说明书,包括方案论证选取、工作原理、所用元件介绍和设计电路原理图、调试程序等。二 设计目的与意义随着电子技术的高速发展,对电子方面人才的要求越来越高,不仅要求其具备相关的专业理论知识,还要求其具有较强的设计、制作等实践动手能力。此次课程设计无疑是对从事测控专业的人的一次很好的锻炼和考验,是培养测控技术的人才的一次良好的机会,为其提供了一个理论知识与实践相结合的平台

3、。通过本次课程设计,引导学生结合所学的测控电路理论知识,思考设计方案,以小组合作方式,分工完成各个部分,从而掌握相关的测量显示电路的设计和调试技术,一方面提高了学生的实践动手和协作能力,另一方面培养了学生综合运用所学理论知识进行工程设计的能力。通过此次课程设计,可以培养学生的工程设计能力,包括动手能力、独立思考设计能力、解决实际设计过程中遇到的问题以及团队协作能力等,为今后的专业学习和工程实践打下坚实的基础.三 方案论证与确定3。1系统方案的确定3.1.1方案一该方案利用AVR单片机对输入信号进行模数转换输出数字信号控制数码管显示温度值。并且可以通过编写程序对输入信号进行分段线性化处理,使得测

4、量精度大大提高,而且该电路无须外接译码器,结构简单。工作框图如图1所示:图1 方案一工作框图3。1。2方案二该方案以AT89S52为控制器,采用DS18B20温度传感器检测温度信号,利用红外遥控设置温度测量的上下限数值,并通过LCD液晶显示。工作框图如图2所示:图2 方案二工作框图经过综合研究分析,考虑整个设计和成本,方案三成本低,测量温度方便简单,故此次数字温度计课程设计选取方案三。3。2传感器方案的确定3。2。1方案一该方案采用AD590.AD590拥有良好的线性关系,灵敏度较高、使用简单方便。但是这种传感器的价格比其他的两种都贵很多。故不选用。方案二:DS18B20数字温度传感器DS18

5、B20是美国DALLAS半导体公司智能温度传感器,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面拥有很大优势,给用户带来了更方便的使用和更令人满意的效果。经过上述二种方案的论证比较,综合考虑成本、性能等因素,最终选取方案二。3。3测量显示方案的确定3。3。1方案一该方案采用LED显示。LED数码显示中每一个像素单元就是一个发光二极管,如果是单色,一般是

6、红色发光二级管。如果是彩色,一般是三个三原色小二极管组成的一个大二级管。这些二级管组成的矩阵由数码控制实时显示文字或者图像,造价相对低廉,组成的显像面积大。3.3.2方案二该方案采用LCD液晶显示。液晶显示器是一种被动式的显示器,即液晶本身并不发光,而是利用液晶经过处理后能改变光线通过方向的特性,而达到白底黑字或黑底白字显示的目的。LCD液晶的像素单元是整合在同一块液晶版当中分隔出来的小方格。通过数码控制这些极小的方格进行显像.造价高但是显示非常细腻。经过研究分析,选择方案二。四 系统工作原理分析本系统由温度传感器DS18B20、AT89S52、LCD显示电路、软件构成。DS18B20输出表示

7、摄氏温度的数字量,然后用51单片机进行数据处理、译码、显示、报警等,系统框图如图3所示:图3 系统框图4.1微控制器原理AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8K Bytes ISP的可反复擦写100000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,其具有如下特点:40个引脚,8K Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器,32个外部双向输入/输出口,5个中断优先级2层中断嵌套中断,2个

8、16位可编程定时计数器,2个全双工串行通信口,看门狗电路,片内时钟振荡器。单片机引脚如图4所示:图4 单片机引脚图4。2传感器原理4。2。1DS18B20简介DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20元件图如图5所示:DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3。05。5;零待机功耗;温度以或位数

9、字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 图5 DS18B20元件图负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; 4.2.2DS18B20内部结构DS18B20采用脚PR35封装或脚SOIC封装,其内部结构框图如图所示.C64 位ROM和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd 64位ROM的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可

10、通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为字节的存储器,结构如图7所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示.低位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MS

11、BTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图7 DS18B20字定义由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。表1 DS18B20温度转换时间表高速暂存的第、字节保留未用,表现为全逻辑.第字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节.单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625

12、LSB形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。温度/二进制表示十六进制表示+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 10000000H0.51111 1111 111

13、1 0000FFF8H10。1251111 1111 0101 1110FF5EH25。06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H表2一部分温度对应值表 DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、T字节内容作比较.若TH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC).主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的RO

14、M数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入.器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在55所对应的一个基数值。减法计数器对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器的预置值减到时,温度寄存器的值将加

15、,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。 另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据.4。2.3DS18B20测温原理DS18B20低温度系数晶振的振荡频率受温度的影响很小,用于产

16、生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到

17、减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。此外,用斜率累加器补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,4.3温度数值分析利用的单片机的一个IO口,读取DS18B20的温度高位,温度低位.由上面的分析可知:温度高位的高5位的符号位、低3位是整数部分的高四位(整数部分的最高位永远为0),温度低温的高四位为整数部分的低四位,温度地位的低四位是小数部分用以下公式计算: 整数部分温度低位/16温度高位16 小数部分十分位(温度低位&0x0f)10/16由于DS18B30的集成

18、度很高,使得设计的原理还是比较简单,设计的关键是了解DS18B20的时序,准确地获得温度高位和温度低位。五 电路制作与软件调试5.1硬件制作本次设计应用Protel DXP绘制电路原理图,生成PCB图,然后用雕刻机刻板,焊接电路元件,最后用程序调试系统功能。硬件电路主要由单片机最小系统、DS18B20为核心的传感器电路、液晶显示电路、报警电路、红外遥控电路和供电电路组成。单片机最小系统:提供一个上电复位高电平,和12MHZ时钟振荡。DS18B20传感器电路:加电即可工作,DATA端加4.7K电阻作上拉电阻保证有足够大的灌拉电流。液晶显示电路:报警电路:利用5V蜂鸣器作报警提示.供电电路:利用7

19、805组成线性稳压电源为整个系统供电.具体电路连接见附录SCH电路原理图,硬件接线正确,单片机能构正常工作,硬件调试成功。5。2软件调试首先用Proteus进行仿真,调试程序,然后在制作好的电路板上调试程序。测温精度可取到小数点后三位.5.2.1主程序流程主程序说明:小于10度,亮黄色LED,表示较凉,开蜂鸣器; 大于24度,亮绿色LED,表示温度较热,开蜂鸣器; 遥控远程控制,改变上下限报警温度。主程序流程图如图8所示: 开始温度读取数值送显示判定按键摄氏变华氏 24度遥控信号初始化开绿灯报警改变上下限温度是否是是否否图8 主程序流程图 5.2。2子程序流程DS18B20工作流程图如图9所示

20、;计算温度流程图如图10、图11所示;温度读取流程图如图12所示.Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY初始化调用显示子程序0.5 S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令NYNY图9 DS18B20工作流程图 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“+”标志NY 图10 计算温度流程图温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY图11 显示数据刷新流程图图12

21、温度读取流程图温度读取程序开始复位DS18B20,等待大于480us发送避开ROM信息指令发送转换命令,开始转换延时等待转换完成发送读取指令开始读取温度,保存温度进制处理,化为十进制温度读取程序结束六 附录6。1课程设计心得体会本次课程设计,我们组成功完成了数字温度计的设计、制作与调试。三天的时间里,我们分工合作,组长全瑞负责写程序,我和景存负责电路部分(主要绘制电路、焊接电路),安荣负责刻板、包装。最后的调试工作我们共同参与,遇到了不少问题,大家从电路、程序中寻找出错的原因(负责检查自己负责的那部分,并作相应修改),经过讨论、思考找到解决的方法,使得最终用程序调试电路显示成功。在这里,很感谢

22、与我共同奋斗的我们组的成员,尤其是景存,在我绘制电路原理图和PCB图时给予我很多帮助.这次课程设计,我尝试用Protel DXP绘制电路图,因为我们在讨论方案是确定了电路制作方面采用刻板方式。虽然以前有学过Protel 99,但从未接触过DXP,所以还是去图书馆借了相关的书籍,边学边绘制。这次用DXP而不用99,主要是考虑到对以后学习FPGA等会有更大的帮助。绘制电路图的过程中,的确遇到了不少问题。虽然这次设计的电路并不复杂,(主要由单片机最小系统、DS18B20测温电路、液晶显示电路、红外遥控电路、报警电路和供电电路组成),但里面的元件查找和封装很繁琐,导入PCB后有些封装太大,要做相应的替

23、换。通过这次绘制电路,认识了不少元件的各种封装,更学会了刻板时用到的相关参数的设置,例如焊盘、布线等参数的设置。因为是第一次刻板,在设置这些参数时还请教了我们513实验室的师兄,在这里非常感谢他们给予的帮助。导入PCB后,更头痛的是布局.刚开始尝试用自动布局功能,但是出来的效果不是很理想,有不少跳线,所以还是用手动布局。对应着电路原理图,初步调整元件的位置,在尽量避免线路的交叉。在布局过程中,景存和我一起思考讨论布局方案,可是第一次自动布线后,还是有不少跳线.我们研究自动布线时线路的走向,讨论怎样移动一下元件的位置能让这里的跳线消除,让线路有空间绕过去而不必跳线。另外结合刻板的实际(例如雕刻机

24、的刀有些钝),线的大小和焊盘孔径的大小的修改也相当考验我。当安荣把第一块板刻出来时,发现线太细,有些几乎要断了,孔径太小,根本无法钻孔。就这样,我结合师兄给予的建议和实际出来的效果修改了相关参数,最后终于有所成效。文档为个人收集整理,来源于网络文档为个人收集整理,来源于网络出来自己负责的绘制电路原理图和PCB图外,我还学会了雕刻电路板(例如如何定位雕刻刀、如何调整进刀的大小等),在电路调试中更是深有感慨。一个作品无论大小、复杂或简单,在软硬件相结合的过程中总会出现一些问题,要我们去调试,去检查,才能使结果更精确。而且调试时让我着实体会到前期电路制作部分很重要,电路制作得好,会减少调试中出现问题

25、的可能性.这次课程设计我受益匪浅,也是进实验室以来的又一次不错的经历.团队协作做出来的作品,每一部分都不可或缺,既要分工又要合作,这样才能有更佳的效果。6。2系统电路原理图 6.5程序代码*LCD1602模块*/include reg52。h#define uchar unsigned chardefine uint unsigned intsbit rs=P27;/液晶使能端口sbit rw=P26;sbit e=P25;sbit P3_6=P36;sbit P1_0=P10;sbit P1_1=P11;/sbit P1_0 = P10;/sbit P1_1 = P11;void delay

26、_ms(uchar ms) /延时 uint i,j; for(i=0;ims;i+) for(j=0;j120;j+);void lcd_wcmd(uchar cmd) /液晶写指令rs=0;rw=0;e=0;P0=cmd;e=1;e=0;delay_ms(5);void lcd_wdat(uchar dat) /液晶写数据rs=1;rw=0;e=0;P0=dat;e=1;e=0;delay_ms(5);void lcd_dis(uchar post,uchar p)lcd_wcmd(0x80 post);/设置数据地址指针显示while(*p!=0)lcd_wdat(p+);uchar c

27、ode def_char0=0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00; /字符void lcd_wcgram(uchar adress,uchar tmp)uchar i;for(i=0;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay_18B20(4); return(dat); void wbyte(uchar dat) uchar i=0; for (i=8; i0; i) DQ = 0; DQ = dat0x01; delay_18B20(5); DQ = 1

28、; dat=1; uchar rTempetuare(uchar tmp)uchar a=0,b=0,temp,decimal;uint uival;reset();wbyte(0xCC); /跳过读序号列号的操作wbyte(0x44); /启动温度转?reset();wbyte(0xCC); /跳过读序号列号的操作wbyte(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=rbyte(); /读取温度值低位b=rbyte(); /读取温度值高位temp=b;temp=0xf0;if(temp) /负温if(a=0)a=a+1; /bit7向bit8位产生进位b=b+1

29、; else a=a+1; b=b;tmp0=-;elsetmp0= ;temp=(b4); /组合decimal=a0x0f; /将小数点后的数据提取出来uival=decimal625; tmp0=T;tmp1=;tmp2=0x20; /空格 tmp3=temp/100 0x30; /取百位tmp4=temp100/10 0x30; /取十位tmp5=temp100%10 | 0x30; /取个位tmp6=0x2e; /小数点tmp7=uival/1000 0x30; /十分位tmp8=uival%1000/100 0x30; /百分位tmp9=uival%1000%100/10 | 0x

30、30; /千分位tmp10=uival%1000%10010 0x30; /万分位tmp11=0x20; /空格tmp12=0x01; /字符tmp13=0;return temp; /十进制温度/*红外解码模块*/define c(x) (x*110592/120000)sbit Ir_Pin=P32; /红外数据管脚unsigned char Ir_Buf4; /用于保存解码结果/=unsigned int Ir_Get_Low() /计数器1,用于解码延时TL1=0;TH1=0;TR1=1;while(!Ir_Pin (TH1&0x80)=0);TR1=0;return TH1256+T

31、L1;/=unsigned int Ir_Get_High() /计数器1,用于解码延时TL1=0;TH1=0;TR1=1;while(Ir_Pin (TH10x80)=0);TR1=0;return TH1256+TL1;char jianche() /解码程序char i,j;uint temp;restart:while(Ir_Pin);temp=Ir_Get_Low();if(tempc(8500) | tempc(9500)) goto restart;/引导脉冲低电平9000temp=Ir_Get_High();if(tempc(4000) | tempc(5000) goto r

32、estart;/引导脉冲高电平4500for(i=0;i4;i+) /4个字节for(j=0;j8;j+) /每个字节8位temp=Ir_Get_Low();if(tempc(800)) goto restart;temp=Ir_Get_High(); if(tempc(200) | tempc(2000) goto restart;Ir_Bufi=1;if(tempc(1120)) Ir_Bufi=0x80;return Ir_Buf2&0x0f; /所得码/*时钟模块*/extern uchar minTX; /最小报警温度extern uchar maxTX; /最大报警温度uchar

33、storeT14; /实际温度的显示长度uchar wendu; void t0ISR() interrupt 1 /T0中断(50ms),中断读温度static uchar timeC = 0;TH0=0x3c;TL0=0xb0;if(10=+timeC) / (50*N)毫秒timeC=0;wendu=rTempetuare(storeT);lcd_dis(0x42, storeT); /显示实际温度if(wendu =maxTX) /大于最高温度,报警P1_1= 0;P3_6=0;elseP1_1= 1;P3_6=1; void inti_timer() /初始化IE|=0x82; /允

34、许定时器0中断IP=0x02; /设置定时器0的优先级TMOD=0x01; /选用定时器0TH0=0x3c; /50ms定时TL0=0xb0;TR0=1; /启动定时器0/*主程序模块 */uchar minTX = 10; /最小报警温度初始化uchar maxTX = 24; /最大报警温度初始化char minT7=min:10”;char maxT7=max:24;main()uchar i;lcd_inti(); /LCD初始化inti_timer();TMOD=0x11; /设置计数器寄存器 lcd_dis(0x01, minT); /显示最小报警温度lcd_dis(0x0a, maxT); /显示最大报警温度while(1)for(i=4; i!=6; +i)minTi=jianche();minTi = 0x30;lcd_dis(0x01, minT);minTX=(minT4-0x30)*10 + (minT5-0x30);for(i=4; i!=6; +i)maxTi=jianche();maxTi |= 0x30;lcd_dis(0x0a, maxT);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服