《单片机系统设计与制作》-任务10_第1页
《单片机系统设计与制作》-任务10_第2页
《单片机系统设计与制作》-任务10_第3页
《单片机系统设计与制作》-任务10_第4页
《单片机系统设计与制作》-任务10_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务导入本任务通过水温控制系统的设计与制作,使学生了解DS18B20温度传感器的原理及应用;掌握单片机控制DS18B20器件的编程方法;掌握单片机应用系统的软硬件设计方法。与此同时,在设计电路并安装印制电路板(或万能板)、进行电路元器件安装、进行电路参数测试与调整的过程中,进一步锻炼学生印制板制作、焊接技术等技能;加深对电子产品生产流程的认识。任务学习目标见表10.1。返回知识链接一、DS18B20温度传感器的原理及应用1.DS18B20简介(1)DS18B20的主要特性及管脚功能Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新的概念。现在,新一代的DS1820体积更小、更经济、更灵活。DS18B20和DS1822“一线总线”数字化温度传感器同DS1820一样,也支持“一线总线”接口,测量温度范围为-55℃~+125℃。在-10℃~+85℃范围内,DS18B20的精度为±0.5℃,D1822的精度较差,为±2℃。下一页返回知识链接现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。其中DS18B20的管脚配置和封装结构如图10.1所示。引脚定义如下。①DQ为数字信号输入/输出端;②CND为电源地;③VCC为外接供电电源输入端(在寄生电源接线方式时接地)。(2)DS18B20的单线系统单线总线结构是DS18B20的突出特点,也是理解和编程的难点。可以从两个角度来理解单线总线:第一,单线总线只定义了一个信号线,上一页下一页返回知识链接而且DS18B20的智能程度较低(这点可以与微控制器和SPI器件间的通信做一个比较),所以DS18B20和处理器之间的通信必然要通过严格的时序控制来完成;第二,DS18B20的输出口是漏级开路输出。自动截止是为了确保:一是,在总线操作的间隙,总线处于空闲状态,即高态;二是,确保微控制器在写1的时候DS18B20可以正确读入。由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线上实现数据的双向传输,而对AT89S52单片机来说,硬件上并不支持单总线协议。因此,必须采用软件的方法来模拟单总线的协议时序,来完成对DS18B20芯片的访问。①DS18B20的复位时序如图10.2所示。上一页下一页返回知识链接②DS18B20的读时序。DS18B20的读时序分为读。时序和读1时序两个过程,是从主机把单总线拉低之后,在15s之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20完成一个读时序过程,至少需要60µs。DS18B20的读、写时序图如图10.3所示。③DS18B20的写时序。DS18B20的写时序仍然分为写0时序和写1时序两个过程。写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60µs,保证DS18B20在15~45µs之间能够正确地采样I/O总线上的“0”电平;当要写1时序时,单总线被拉低之后,在15µs之内就得释放单总线。如图10.3所示。上一页下一页返回知识链接(3)DS18B20的供电方式图10.5所示为DS18B20的寄生电源电路。寄生电路的优点是双重的,远程温度控制监测无须本地电源,缺少正常电源条件下也可以读ROM。有两种方法可以确保DS18B20在其有效变换期内得到足够的电源电流。第一种方法是发生温度变换时,在DQ线上提供一个强的上拉,这期间单总线上不能有其他动作发生。如图10.4所示,通过使用一个MOSFET把DQ线直接接到电源可实现这一点。另一种方法是DS18B20工作在外部电源工作方式,如图10.5所示。上一页下一页返回知识链接这种方法的优点是在DQ线上不要求强的上拉,总线上主机不需要连接其他的外围器件,便可在温度变换期间使总线保持高电平,这样一也允许在变换期间其他数据在单总线上传送。此外,在单总线上可以并联多个DS18B20,而且如果它们全部采用外部电源工作方式,那么通过发出相应的命令便可以同时完成温度变换。(4)DS18B20设计中应注意的几个问题DS18B20具有测温系统简单、测温精度高、连接方便、占用接口线少等优点,但在实际应用中也应注意以下几方面的问题。较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格地保证读写时序,否则将无法读取测温结果。上一页下一页返回知识链接在DS18B20有关资料中均未提及1-Wire上所挂DS18B20的数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当1-Wire上所挂DS18B20超过8个时,就需要考虑微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。连接DS18B20的总线电缆是有长度限制的。实际应用中,测温电缆线建议采用屏蔽4芯双绞线,其中一组接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。

2.DS18B20测温原理每一片DS18B20在其ROM中都存有唯一的48位序列号,在出厂前已写入片内ROM中。主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出,见表10.2。上一页下一页返回知识链接程序可以先跳过ROM,启动所有DS18B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DS18B20的温度数据。DS18B20的测温原理如图10.6所示。图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号,送给减法计数器1,高温度系数晶振随温度变化,其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55℃所对应的一个基数值。上一页下一页返回知识链接减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到。时,温度寄存器的值加1,减法计数器1的预置值将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数。如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图10.6中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值。只要计数门仍未关闭,就重复上述过程,直至温度寄存器值达到被测温度值。DS18B20的测温流程如图10.7所示。另外,由于DS18B20单线通信功能是分时完成的,有严格的时序概念,因此,读写时序很重要。上一页下一页返回知识链接系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。二、DS18B20与单片机的接口电路与编程1.DS18B20与单片机的接口电路将温度传感器DS18B20与单片机TXD引脚相连,读取温度传感器的数值。DS18B20与单片机连接图如图10.8所示。根据DS18B20单总线工作协议,主机控制DS18B2完成温度转换。必须在每次读写之前对DS18B20进行复位操作,复位成功之后发送ROM指令,最后发送RAM指令。上一页下一页返回知识链接2.DS18B20编程(1)汇编程序本汇编程序仅适合单个DS18B20和51单片机的连接,晶振为12MHz左右。DQ;DS18B20的数据总线接脚。FLAG1:标志位,为“1”时表示检测到DS18B20.TEMPER_NUM;保存读出的温度数据。上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接(2)C语言程序上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页下一页返回知识链接上一页返回任务实施一、任务分析1.总体方案设计本任务为2011年江西省大学生科技创新与技能竞赛电路仿真设计赛赛题。本任务设计制作一个基于单片机的水温控制系统,实现利用DS18B20温度传感器采集温度,当水温低于预设温度值时系统自动开始加热,当水温达到预设温度值时系统停止加热等功能。实物图如图10.9所示。具体要求如下。①通过键盘设置预设温度,实现对水温控制系统闽值的预设,并把预设温度显示在一个3位数码管上,预设步进0.1℃。下一页返回任务实施②通过温度传感器(DS18B20)采集水温,并在LED上实时显示当前水温,测量精度0.1℃。实测温度值由另一个3位数码管显示。③把温度传感器(DS18B20)采集过来的水温与预设值比较,当水温低于预设温度值时,系统自动开始加热;当水温达到预设温度值时,系统自动停止加热。加热用红色发光二极管代表,红灯亮表示加热,红灯灭表示停止加热。当温度达到预设温度值时自动停止加热。也可接一个蜂鸣器实现温度报警。本任务要求用KeilC51,Proteus等作开发工具,进行调试与仿真,并在万能板或PCB板上进行电路元器安装、电路参数测试与调整,下载程序并测试好,最后需完成任务设计总结报告。上一页下一页返回任务实施本设计通过键盘设置预设温度,实现对水温控制系统闽值预设,温度传感器采集实时温度值送入单片机,将测量值和预设值在数码管上显示出来。本设计主要由单片机最小系统、温度传感器、显示器、按键和加热控制指示等几部分组成。电路的总体设计框图如图10.10所示。

2.硬件电路设计根据图10.10的总体设计框图,设计出水温控制系统的总体硬件电路图,如图10.11所示。

(1)单片机最小系统单片机最小系统包括AT89C51单片机、复位电路和时钟电路,其中复位电路采用上电复位。上一页下一页返回任务实施

(2)温度传感器温度传感器采用DS18B20。DS18B20为数字输出的温度传感器,其DQ端接在P3.7,再接一个上拉电阻R3(10kΩ)。

(3)按键AT89C51单片机的P3.4~P3.6口接一组按键S1~S3,用来预设温度值,其中S1为步进0.1℃按键、S2为步进1℃按键、S3为步进10℃按键。

(4)显示器显示器选用两个4位LED数码管,分别显示测量值和预设值。显示测量值的数码管数据位接在P0口,位选接在P2.0~P2.3,显示预设值的数码管数据位接在P1口,位选接在P2.4~P2.7。上一页下一页返回任务实施(5)加热指示与控制在AT89C51单片机的P3.1接一个红色LED灯,当LED灯亮时,表示水温低于预设温度值,系统自动开始加热。当然也可以由AT89C51单片机的P3.1口,通过继电器控制加热器的动作。

3.软件设计根据系统的总体功能和键盘设置,选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间的调度关系。根据系统功能,可以将系统设计分为若干个子程序进行设计,如温度采集子程序、数据处理子程序、显示子程序、执行子程序等。采用Keil集成编译环境和汇编或C语言来进行系统软件的设计。上一页下一页返回任务实施采集到当前的温度,通过LED数码管实现温度显示。通过按键设定任意一个恒定的温度,将水温数据与所设置的数据进行比较。当水温低于设定值时,开启加热设备,进行加热;当水温高于设定值时,停止加热,对温度进行实时显示。采用汇编或C语言编写代码。主程序通过调用温度采集子程序完成温度数据采集,然后调用温度转换子程序转换读取的温度数据,调用显示子程序进行温度显示和判断温度数据。主程序调用四个子程序,分别是温度采集子程序、数码管显示子程序、温度处理子程序和数据存储子程序。上一页下一页返回任务实施温度采集子程序:对温度芯片送过来的数据进行处理,进行判断和显示。数码管显示子程序:向数码管显示送数,控制系统的显示部分。温度处理子程序:对采集到的温度和设置的上、下限进行比较,作出判断,向继电器输出关断或闭合指令。数据存储子程序:对键盘设置的数据进行存储。(1)程序流程图程序流程图如图10.12所示。(2)汇编程序上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施(3)C语言程序上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施上一页下一页返回任务实施

4.电路仿真通过建立程序文件、加载目标代码文件来进入调试环境,执行程序。在ProteusISIS界面中,分别调节十位设置按键和个位设置按键来预设水温。当DS18B20的温度低于预设温度值时,红色发光二极管点亮,表示进入加热状态。调节DS18B20元件上的按钮可人工模拟实际水温的升高和下降。可以看到,当实测温度达到预设温度后,红色发光二极管便自动熄灭,表示停止加热。仿真结果如图10.13所示。二、安装与调试1.任务所需设备、工具、材料任务所需设备、工具、材料见表10.3。上一页下一页返回任务实施2.系统安装参照原理图和装配图,具体装配步骤如下。①检查元器件质量。②在万能板(或PCB板)上焊接好元器件。③检查焊接电路。④用编程器将.hex文件烧写至单片机中。⑤将单片机插入IC座。

3.系统调试

(1)硬件调试上一页下一页返回任务实施硬件调试是系统的基础,只有硬件能够全部正常工作后,才能在以此为基础的平台上加载软件,从而实现系统功能。电源模块调试:当硬件完全焊接好后,最应该测试的就是电源模块,因为电源是各部分电路模块正常工作的根本。由于本设计中的电源模块采用的是外接4.5V(理论上为5V)的干电池,所以比较简单。但是应该注意电源进线的正、负极性,因为该系统使用的是直流电输入,一旦接反,会给系统的硬件带来损坏。先确定电源是否正确,单片机的电源引脚电压是否正确,是不是所有的接地引脚都接了地。如果单片机有内核电压的引脚,测试一下内核电压是否正确。单片机最小系统调试:测量晶振有没有起振,一般情况下,晶振起振后,两个引脚都会有一点几伏的电压;上一页下一页返回任务实施检查复位电路有没有问题;测量单片机的ALE引脚,看是否有脉冲波输出,判断单片机是否工作,因为51单片机的ALE为地址锁存信号,每个机器周期输出两个正脉冲。温度显示(LED数码显示)模块:通电后观察数码管是否有显示,如果没有显示,说明外接电路有问题;如果有显示,可以基本确定外接电路无误。DS18B20模块:此部分主要用来采集温度信息,然后传送给单片机。在温度显示模块可以工作的情况下,可以检测是否有温度显示。

(2)软件调试上一页下一页返回任务实施如果硬件电路检查后没有问题,却实现不了设计要求,则可能是软件编程的问题。首先应检查初始化程序,然后是读温度程序、显示程序以及继电器控制程序。对这些分段程序,要注意逻辑顺序、调用关系以及涉及的标号,有时会因为一个标号而影响程序的执行。除此之外,还要熟悉各指令的用法,以免出错。还有一个容易忽略的问题就是,源程序生成的代码是否烧入单片机中,如果这一过程出错,则不能实现设计要求也是情理之中的事。

(3)软、硬件联调软件调试主要是在系统软件编写时体现的,一般使用Keil进行软件的编写和调试。进行软件编写时,首先要分清软件应该分成哪些部分,不同的部分分开编写和调试是最方便的。上一页下一页返回任务实施在硬件调试正确和软件仿真也正确的前提下,就可以进行软硬件联调了。首先,将调试好的程序通过下载器下载入单片机,然后就可以上电看结果,观察系统是否能够实现所要的功能。如果不能,就先利用示波器观察单片机的时钟电路,看是否有信号,因为时钟电路是单片机工作的前提,所以一定要保证时钟电路正常。如果不能分析出是硬件问题还是软件问题,就重新检查软硬件。一般情况下,硬件电路可以通过万用表等工具来检测,如果硬件没有问题,则必然是软件问题,就应该重新检查软件。用这种方法调试系统直至完全正确。调试注意事项如下。①应保证DS18B20传感器位于容器内水的中央部位,且不能与加热器接触,否则会造成温度测量不准确,甚至元器件的损害。上一页下一页返回任务实施②系统复位初始设定温度为30.6℃。③使系统运行,观察系统硬件检测是否正常(包括单片机控制系统、键盘电路、显示电路、温度测试电路等)。④通电后,系统可实时显示当前水温温度。⑤利用测试表格数据,观察显示数据是否相符合。采用温度传感器和温度

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论