《课程设计(论文)-基于单片机双路温度计设计.docx》由会员分享,可在线阅读,更多相关《课程设计(论文)-基于单片机双路温度计设计.docx(31页珍藏版)》请在三一文库上搜索。
1、第 31页 /共 31页桂林电子科技大学课程设计(论文)报告用纸摘 要随着电子技术的快速发展,电子产品在人们的生活中得到了广泛的应用。目前,温度计的发展也很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计等等。其中,数值温度有读取方便,控制灵活等特点而被广泛的应用。计本文将介绍一种基于单片机控制的数字温度计,本温度计的温度采集使用DS18B20温度传感器,温度显示采用LCD1602显示,具有两路温度数据采集功能,能切换测量两路温度并显示路号、温度,可分别设定温度上下限温度值,有过限报警功能。关键词:数字温度计;DS18B20;两路;过限报警AbstractWith
2、the rapid development of electronic technology, electronic products had widely used in our lives. Currently, the thermometer developed very rapidly from the original glass thermometer into the current of the resistance thermometer, thermocouple thermometer, digital thermometer, and so on. Among them
3、, the value of temperature reading easy and flexible control features have been widely used. This article introduces a design based on STC89C52RC digital thermometer, the temperature of the thermometer collection using DS18B20 temperature sensor, temperature display with LCD1602 display, with a two-
4、channel temperature data acquisition, can switch two temperature measurement and display the road number, temperature, Temperature can be set on the lower temperature, there was alarm function.Key words:Digital thermometer; DS18B20; Off alarm目 录引言 31 总体设计方案 31.1 数字温度计设计方案论证 31.2 总体设计框图 32 相关器件介绍 42.
5、1 STC89C52RC 处理器 4 2.2 DS18B20温度传感器 42.3 1602液晶 73电路原理与功能分析103.1 电源输入电路 103.2单片机最小系统113.3液晶接口电路113.4温度传感器接入电路123.5报警电路124实物接口描述 125.程序分析 135.1程序流程图 13总结 14致谢 15参考文献 16附录 17附录A 17附录B 18引言随着人们生活水平的不断提高,产品的使用简单便捷是人们所最求的,同时,为了适应各种场合,人们对产品的要求也越来越高。这种需求下,许多产品趋向了数字化、智能化控制。本文介绍的是一种数字式温度计,采用单片机STC89C52RC控制,D
6、S18B20采集温度,并用1602液晶显示。传统的温度计相比,它具有读数方便、测温准确等功能;选择的两路温度采集功能,可更加灵活地适应实际应用的需要。1 总体设计方案1.1 数字温度计设计方案论证1.1.1方案一由于本设计是要测量温度,可以使用热敏电阻之类的器件,利用其感温效应,被测量的温度转换成电压,并通过AD转换,将测得压值转换为数字信号,再由单片机进行数字信号处理并显示出温度值。这种设计需要AD转换电路和感温电路,电路设计比较复杂。1.1.2案三使用集成的温度传感器进行测温,直接输出数字信号给单片机,单片机处理数据后显示出温度值,使用数码管显示温度值。但由于该设计所要显示的数据较多,使用
7、LED数码管显示电路会变得复杂,且成本高。1.1.3方案三使用集成的温度传感器进行测温,如常用的DS18B20,直接输出数字信号给单片机,单片机处理数据后显示出温度值,用液晶1602显示温度值。 综合以上三种方案,第三种设计方案成本不高,且电路简单,测量准确。故采用第三种方案。1.2 总体设计框图总体设计框图如下所示: L C D显示报警传感器二传感器一按键主控制器主控制器使用单片机STC89C52RC,温度传感器使用DS18B20,蜂鸣器报警。2 相关器件介绍2.1 STC89C52RC 处理器系统微处理器采用宏晶科技公司的8位单片机STC89C52RC,该芯片芯片高性能,超低功耗:掉电模式
8、下典型功耗小于0.1uA,空闲模式下典型功耗2mA,正常工作模式下典型功耗47mA。具有8KFlash存储器、512KB RAM、2K EEPROM。2.2 DS18B20温度传感器2.2.1 概述DS1820 数字温度计以9 位数字量的形式反映器件的温度值。DS1820 通过一个单线接口发送或接收信息,因此在中央微处理器和DS1820 之间仅需一条连接线(加上地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。因为每个 DS1820 都有一个独特的片序列号,所以多只DS1820 可以同时连在一根单线总线上,这样就可以把温度传感器放在许多不同的地方。这一特性在HVAC 环境控制
9、、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。2.2.2特性 独特的单线接口仅需一个端口引脚进行通讯 简单的多点分布应用 无需外部器件 可通过数据线供电 零待机功耗 测温范围-55+125,以0.5递增。华氏器件-67+2570F,以0.90F 递增 温度以9 位数字量读出 温度数字量转换时间200ms(典型值) 用户可定义的非易失性温度报警设置 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统2.2.3 引脚介绍1 脚 GND2 脚 DQ信号输入输出3 脚VCC2.2.4 DS18B20工作原理本设计使
10、用到的DS18B20的指令:(1)44H-温度转换。启动DS18B20进行温度转换,12位转换时最长为750ms(9位)(2)BEH-读暂存指令。读内存RAM中9字节的温度数据。(3)4EH-写暂存器。发出向内部RAM的第2,3字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。(4)48H-复制暂存器。将RAM中第2、3字节的内容复制到EEPROM中。(5)BBH-重调EEPROM。将EEPROM中得内容恢复到RAM中得3、4字节。(6)B4H-读供电方式。读DS18B20的供电模式。寄生供电时,DS18B20发送0;外接电源供电时,DS18B20发送1; 以上指令涉及的存储器为
11、高速暂存器RAM和可擦除E2PROM,见表(1)、表(2)。表(1)高速暂存器RAM寄存器内容字节地址温度值低位(LSB)0温度值低位(MSB)1高温限值(TH)2低温限值(LH)3配置寄存器4保留5保留6保留7CRC校验位8表(2)高速暂存器RAM的第0、第1个字节的温度数据存储格式:位7位6位5位4位3位2位1位0232221202-12-22-32-4位15位14位13位12位11位10位9位8211210292827262524DS18B20在出厂时默认配置为12位,其中高位为符号位,即温度值共11位,单片机在读取数据时,一次读2字节共16位,读完后将低11位的二进制数转化为十进制数后
12、再乘以0.0625便为所测的实际温度值,另外,需要判断温度的正负,前五位数字为符号位,这五位同时变化,所以只需判断第11位就可以了,为“1”时,读取的温度为负值,且测得数值需要取反加1再乘以0.0625才可得到实际温度值,为“0”时,读取的温度为正值,且温度为正值时,只要将测得的数值乘以0.0625即可得到实际温度值。2.2.5 工作时序图(1)初始化时序图如图: 初始化时序图 先将数据线置高电平1。 延时。 数据线拉到低电平0 。 延时720us (该时间范围可以在480960us)。 数据线拉到高电平1。 延时等待。如果初始化成功则在1560ms内产生一个由DS18B20返回的低电平0 。
13、 若CPU读到数据线上的低电平0后,还要进行延时,其延时时间从高电平算起,(第五步的时间算起)最少要480us 。 将数据再次拉到高电平1后结束。(2)DS18B20写数据时序图如图: 写操作时序图 数据线先置低电平0 。 延时确定的时间为15us 。 按从低位到高位的顺序发送数据(一次只发送一位) 。 延时时间为45us 。 将数据线拉到高电平 1 。 重复步骤,直至发送完整个字节。 最后将数据线拉高到1 。(3)DS18B20读数据时序图如图: 读操作时序图 将数据线拉高到1 。 延时2us 。 将数据线拉低到0 。 延时6us 。 将数据线拉到1 。 延时4us 。 读数据线的状态得到一
14、个状态位,并进行数据处理。 延时30us 。 重复步骤,直到读取玩一个字节。2.3 1602液晶2.3.1 主要技术参数2.3.2 接口信号说明2.3.3基本操作时序读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无2.3.4 RAM地址映射图 控制器内带有80x8位(80字节)的RAM缓冲区,、对应关系如下图所示:2.3.5 指令说明(1)显示模式设置(2)显示开/关及光标设置
15、(3)数据指针设置(4)其他设置2.3.6初始化过程:(1)延时15ms(2)写指令38H(3)延时5ms(4)写指令 38H(5)延时5ms(6)写指令38H:显示模式设置(7)写指令08H:显示关闭(7)写指令01H:显示清屏(8)写指令 05H:显示光标移动设置(9)写指令 0CH:显示开及光标设置2.3.7读操作时序2.3.8写操作时序3电路原理与功能分析3.1 电源输入电路电源电路使用了两个不同封装的接入端口,方便电源的接入。通过自锁式开关,控制电路的供电。在开关之后用小功率管78L08对电压进行稳压,保证电路在正常电压下稳定工作。LED1为电源指示灯,可通过灯的亮灭来判断电源电路是
16、否正常工作。3.2单片机最小系统 系统的处理是是采用STC89C52RC单片机。系统时钟为12MHZ。P1为两根与RXD、TXD相连的插针,做为程序就下载端口;P1口作液晶的数据口。3.3液晶接口电路液晶使用5V供电,P25做数据/命令选着端,P26做读/选着端,P27为使能端;P0口做数据输出口。在本设计种液晶模块显示两路温度值,和两路当前过限的的报警值。变阻器调节液晶显示偏压信号。3.4温度传感器接入电路 DS18B20采用单条信号线,既可传输时钟,又可以传输数据,而且数据是双向传输的。如果在一个系统中,要接测的温度节点较多时,为了节省I/O口,可以把所有的DS18B20连结在一条数据线上
17、,通过读取每个DS18B20温度传感器ROM中的编码来分别选中要操作的传。但在本设计种,因为只需要两个传感器,所以采用每个传感器单独使用一条数据线的方法。3.5报警电路 报警电路主要又蜂鸣器和两个发光二极管组成。蜂鸣器使用PNP三极管8550做驱动,当P10口输出脉冲信号时,蜂鸣器发出“滴滴”响声。另外,报警电路添加报警指示灯,LED1,LED2,分别对应两个温度传感器。报警时,LED灯闪烁,并可以通过观是哪一个灯闪烁来判断是那一温度值越限。4 实物接口描述 SSS 电源开关。 S1 复位按键。 S2 报警值设 置选择按键。 S2报警值“+”。 S3报警值“-” 。 S4通道选择。 PB/P2
18、 电源输入接口。 D7电源指示灯 U2 第一路温度传感器接口。 U3第二路温度传感器接口。 D2 第一路温度报警信号灯。 D1第二路温度报警信号灯。 R1 液晶显示偏压调节。5.程序分析开 始5.1程序流程图初始化液晶 b=1 b=0 b=2 读传感器 2读传感器 1读 读传 传感 感器 器1 2 while(1)报 警报警值 过限Key3Key2bjdate1=bjdate1-1bjdate1=bjdate1+1bjdate11=bjdate11-1bjdate11=bjdate11+1 if(a=1) if(a=1) if(a=2) if(a=2) bjdate2=bjdate2-1bjd
19、ate2=bjdate2+1 if(a=3) if(a=3)bjdate22=bjdate22-1bjdate22=bjdate22+1 if(a=4) if(a=4)总 结经过几周的努力,终于把课程设计完成了!通过本次课程设计,巩固了我在单片机方面的知识,同时动手能力也的到了提高。在得到题目后,我对题目的要求进行了仔细、深入的分析,设计出不同的电路原理图,综合各个电路的优点,确定了现在使用的正确的电路原理图。之后,我在单片机开发板上进行了只用一个DS18B20和液晶显示的编写,在熟悉了DS18B20和1602液晶显示程序的编写之后,开始做硬件电路。在把硬件做好后,开始使用两个DS18B20调
20、试。实现了题目的要求后,我对程序进行了优化,使显示温度值,报警值等信息更加明了,使按键设置参数更加便捷。同时,在硬件设置的过程中也碰到了一些问题。由于以前一直都是使用Protel99进行PCB设计,而这次的课程设计用的是DXP做PCB的设计,第一次使用DXP,由于粗心,把一些元件的封装用错了,并在做出板子的时候才发现,只好重做了第二块板。在这次设计中另外一个收获便是学会了该软件的使用。 最后,通过动手实践让我明白理论和实际总是会有一定距离的,动手实践才发现种种问题。以后,我会更努力学习,动手实践,总结、积累经验,不断地提高自己的电子设计的水平。致 谢本设计从选题到完成,历时数周。在此,首先要向
21、我的指导老师周茜老师致以诚挚的谢意!在课程设计过程中,她给了我们很多的帮助和关怀。周老师学识渊博、治学严谨,朴实无华、平易近人的人格魅力对我影响深远。不仅让我学到了扎实的专业知识,也使我明白了许多待人接物与为人处事的道理。从开始到完成的整个过程中,周老师认真的指导我们做课程设计,她对工作的积极热情、认真负责、有条不紊、实事求是的态度,给我留下了深刻的印象,使我受益非浅,并大大的激发了我对课程设计的积极性。谨向周茜老师再次表示崇高的敬意和衷心的感谢!同时,我要感谢教学实践部的王金辉老师,感谢他让我进入机电综合创新室学习,他为我们提供了各种电子设计需使用到的仪器,为我提供了一个良好的学习环境,是我
22、的课程设计得以顺利。另外,衷心感谢我的同学们,在我的课程设计论文写作中,与他们的探讨交流使我受益良多;同时,他们也给了我很多无私的帮助和支持,我再次深表谢意!谢谢大家!参考文献1 李群芳、张士军、黄建.单片微型计算机与接口技术.北京:电子工业出版社,2010:3423542 郭天祥.51单片机C语言教程.北京:电子工业出版社,2009:2425实物图:附 录附录A 电路原理图附录B 程序清单#include#define uchar unsigned char#define uint unsigned intsbit DQ1=P20; /定义第一路sbit DQ2=P21; /定义第二路sbi
23、t LED1=P23; /定义第一路的指示灯sbit LED2=P22; /定义第二路的指示灯sbit RS=P24; /数据/命令选择端(H/L)sbit RW=P25; /读写选择端(H/L)sbit EN=P26; /使能信号sbit BELL=P10; /蜂鸣器sbit key1=P32; /报警温度设置选择按键sbit key2=P33; / 加sbit key3=P34; / 减sbit key4=P35; / 通道选择按键uint data disdata15;uint data disdata25;uint tvalue1;/温度值uint tvalue2;/温度值uint b
24、jdate1; /1路下限值uint bjdate2; /2路下限值uint bjdate11; /1路上限值uint bjdate22; /2路上限值uchar tflag1;/温度正负标志uchar tflag2;/温度正负标志uint a=0; /报警值设置选择标志uint b=0; /通道选择标志unsigned char code str1= T1: ;unsigned char code str2= T2: ;unsigned char code clean= ;/*lcd1602程序*/void delay1ms(unsigned int ms)/延时1毫秒(不够精确的) uns
25、igned int i,j; for(i=0;ims;i+) for(j=0;j0;i-) DQ1 = 0; /给脉冲信号 dat=1; DQ1 = 1; /给脉冲信号 if(DQ1) dat|=0x80; delay_18B20(10); return(dat);void ds1820wr1(uchar wdata1) / 写数据 unsigned char i=0; for (i=8; i0; i-) DQ1 = 0; DQ1 = wdata1&0x01; delay_18B20(10); DQ1 = 1; wdata1=1; read_temp1() /读取温度值并转换 uchar a,
26、b; ds1820rst1(); ds1820wr1(0xcc); /跳过读序列号 ds1820wr1(0x44); /启动温度转换 ds1820rst1(); ds1820wr1(0xcc); /跳过读序列号 ds1820wr1(0xbe); /读取温度 a=ds1820rd1(); b=ds1820rd1(); tvalue1=b; tvalue1=8; tvalue1=tvalue1|a; if(tvalue10;i-) DQ2 = 0; /给脉冲信号 dat=1; DQ2 = 1; /给脉冲信号 if(DQ2) dat|=0x80; delay_18B20(10); return(da
27、t);void ds1820wr2(uchar wdata2) /写数据 unsigned char i=0; for (i=8; i0; i-) DQ2 = 0; DQ2 = wdata2&0x01; delay_18B20(10); DQ2 = 1; wdata2=1; read_temp2() /读取温度值并转换 uchar a,b; ds1820rst2(); ds1820wr2(0xcc); /跳过读序列号 ds1820wr2(0x44); /启动温度转换 ds1820rst2(); ds1820wr2(0xcc); /跳过读序列号 ds1820wr2(0xbe); /读取温度 a=ds1820rd2(); b=ds1820rd2(); tvalue2=b; tvalue2=8; tvalue2=tvalue2|a; if(tvalue2=5) a=0; if(key2=0) / 设置 + delay1ms(20); if(key2=0) while(key2=0); if(a=1)bjdate1=bjdate1+1; /通道一下限值加一 if(a=2)bjdate11=bjdate11+1; /通道一上限值加一 if(a=3)bjdate2=bjdate2+1; /通道二下限值加一 if(a=4)bjda
链接地址:https://www.31doc.com/p-3971944.html