微机原理及应用课程设计基于单片机数字温度计设计.doc

上传人:laozhun 文档编号:4194121 上传时间:2023-04-09 格式:DOC 页数:38 大小:708KB
返回 下载 相关 举报
微机原理及应用课程设计基于单片机数字温度计设计.doc_第1页
第1页 / 共38页
微机原理及应用课程设计基于单片机数字温度计设计.doc_第2页
第2页 / 共38页
微机原理及应用课程设计基于单片机数字温度计设计.doc_第3页
第3页 / 共38页
微机原理及应用课程设计基于单片机数字温度计设计.doc_第4页
第4页 / 共38页
微机原理及应用课程设计基于单片机数字温度计设计.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《微机原理及应用课程设计基于单片机数字温度计设计.doc》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计基于单片机数字温度计设计.doc(38页珍藏版)》请在三一办公上搜索。

1、仿真 C语言程序 原理图 等,联系 153893706交通与汽车工程学院课程设计说明书课 程 名 称: 微机原理及应用课程设计 课 程 代 码: 8234570 题 目: 基于单片机数字温度计设计 年级/专业/班: 2009级汽电四班 学 生 姓 名: 学 号: 开 始 时 间: 2012 年 07 月 02 日完 成 时 间: 2012 年 07 月 06 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名: 年 月 日 目 录摘 要2 1 引 言3 1.1 问题的提出31.2任务与分析

2、3 2 系统方案设计5 2.1 系统设计方案 5 2.2 系统总体框图6 3 系统硬件电路设计73.1 89C51单片机7 3.2 数字温度传感器DS18B209 4 系统软件设计144.1 proteus软件环境介绍14 4.2 Protel软件环境介绍15 4.3 程序流程图155 系统调试过程23 结 论27 致 谢28参考文献29 附录30 摘 要 本文设计了一种基于单片机AT89C51的温度测量、显示及报警的装置,系统采用AT89C51进行智能控制,利用DS18B20芯片实现了温度的测量,并将测量的温度使用4位LED数码管进行显示。当测量的温度超出25100时,利用蜂鸣器进行报警,此

3、外用户还可以通过独立按键电路,根据需要自行设计水温稳定报警限值。系统硬件主要由控制电路、温度采集电路、显示电路和报警电路等部分组成;系统软件采用C语言编程;该系统能实现水温温度的测量、显示及限值报警功能,在现代小型轿车上具有一定的应用价值。关键词:温度测量,AT89C51单片机,DS18B20温度传感器1 引 言 1.1 问题的提出 随着人们生活水平的提高,对生活环境的要求也越来越高,家用轿车的电器装置越来越趋于自动控制乃至于智能控制,现代轿车上对冷却水温度的显示只是一个模糊的范围,没有具体的水温温度值显示,而冷却水的温度对发动机的正常工作温度影响很大。通常水冷式发动机正常的工作温度在8090

4、,水温过高,会引起金属材料膨胀,破坏正常的工作间隙,容易导致活塞咬死、拉缸等故障,并且还会使润滑油变稀,从而加速油液氧化变质,进一步加速气缸磨损;水温过低,同样也会损坏发动机。而造成冷却水水温异常的原因也有很多,比如说:水箱风扇不转,散热器散热不良,节温器无法正常打开,冷却液不足,水泵工作不良,水温传感器、仪表及电路异常等,如果不及时发现冷却水温度异常,不及时处理造成温度异常的原因,那么给轿车发动机带来的危害有可能会进一步扩大,同时也会轿车用户带来很多不必要的损失。针对目前的这种情况,发动机冷却水水温的数字显示显得尤为重要,为了能够为轿车用户提供比较方便、直观的冷却水温度,本文就通过51系列单

5、片机AT89C51来设计了一个发动机冷却水水温的测量与数字显示装置。该设计可以实现发动机冷却水水温的实时测量,温度信息通过数码管直观的显示给轿车用户,轿车用户也可以根据需求,适当的通过独立按键自行设定温度的报警值,当测量的水温超过用户设置的报警温度限值时,蜂鸣器发声报警,以此提醒用户注意发动机冷却水水温异常,以便轿车用户可以及时的检查水温异常的原因,避免轿车因水温异常出现故障,甚至导致某些交通事故,提高了轿车的使用性能,为轿车用户增加了安全性。1.2任务与分析 本次设计的系统的控制中心是89C51单片机。首先,在Protel软件环境中进行硬件电路图的设计。然后在8051软件环境中进行系统的软件

6、编程,并进行程序源文件的编译和调试,最后生成.hex文件。此.hex文件是硬件电路运行实现的源代码来源。把.hex文件加载到AT89C51单片机芯片,然后在Proteus软件环境中运行硬件电路,温度的大小就可以正常显示了。 本设计的系统主要由:AT89C51为中央处理芯片,用于数据处理,初值设定。时钟芯片DS1302是本例的核心模块,由他提供时钟信息并由LED显示,用C语言进行编程。本系统可以分为以下4大模块: 能用汇编语言或其它可编译的语言(如C51语言)编写51系列的单片计算机系统程序。 能用一种工具软件绘制电路原理图,对硬件系统电路各个器件能正确地标出连接编号。 对软件的各个子程序能顺利

7、的调试通过。 调试整个系统,使其能按设计要求正确的工作。 完成毕业设计的说明书一份。 完成与毕业设计内容相关的英文资料翻译。 对温度传感器的测量精度要求达到误差小于12 系统方案设计2.1 系统设计方案2.1.1 温度测量电路的设计方案论证与选择方案一:采用传统的温度传感器测量水温。传统的单片机温度检测系统采用热电偶和热电阻测量温度,而热电偶和热电阻测出的一般都是电压,须包含模拟测量电路及A/D转换电路将其转换成对应的温度,且占用单片机的引脚多,有时还需要I/O扩展接口芯片,需要比较多的外部硬件电路支持,硬件电路复杂,软件调试复杂,降低了系统的可靠性,且制作成本高。方案二:采用DALLAS公司

8、生产的数字温度传感器DS18B20测量水温。使用DS18B20测量温度,能代替模拟温度传感器和信号处理电路,完成温度的采集,并在其内部就能进行A/D转换处理测量到的数据,输出的数字量能直接与单片机AT89C51进行通信,无需外加A/D转换器,转换速度快,简化了系统的外围电路,降低了制作成本,提高了系统的集成度,且其测量精度能达到设计要求的1。综上所述,选择方案二采用数字温度传感器DS18B20完成温度的采集和数据的处理,组成温度测量电路。2.1.2 温度显示方式选择方案一:采用字符型LCD显示。LCD具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果

9、好,分辨率高,抗干扰能力强等特点。但由于只显示水温这样的数字,信息量比较小,且由于LCD液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其制作成本也偏高。在使用时,不能有静电干扰,否则容易烧坏液晶的显示芯片,不易维护。方案二:采用LED数码管显示。LED数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护的优点,同时其精度比较高,称量快,精确可靠,操作简单。数码管采用BCD编码显示数字,程序编译容易,资源占用较少,制作成本也较低。综上所述,选择方案二采用LED数码管显示测量的水温。2.2 系

10、统总体框图2.1 系统组成 经过方案的比较与论证,最终确定的系统框图如图1.2.1所示。其中由温度传感器DS18B20完成温度数据的采集和处理,直接与单片机通信,将测量的温度送入4位LED数码管显示电路中显示,当测量的水温超过设定的正常范围时,利用蜂鸣器报警电路进行报警提示。图2-1 系统设计框图3 系统硬件电路设计3.1 89C51单片机 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪

11、烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图3-1 89C51单片机引脚图 89C51单片机与早期Intel的8051/8751/8031芯片的外部引脚和指令系统完全兼容,只不过用Flash ROM 替代了ROM/EPROM而已3。89C51单片机内部结

12、构如图所示。图3-2 89C51单片机内部结构示意图各引脚的功能如下:VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高3。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故

13、。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O

14、口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR 8EH地

15、址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA:当/EA保持低电平时,则在此期间CPU只访问外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,则执行内部程序存储器中的程序。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XT

16、AL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2 数字温度传感器DS18B203.2.1 DS18B20的性能特点2DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位数字值读数方式。DS18B20有以下的功能特点:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在唯一的三线上,实现多点组网功能;无需外部器件;低压供电,电源范围为35V;可本地供电,也可以通过数据线供电(寄生式供电);零待机功耗;

17、温度以9或12位数字量读出;用户可定义的非易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,只是不能正常工作;DS18B20可将检测到的温度值直接转化成数字量,并通过串行通信的方式与主控制器进行数据通信。3.2.2 DS18B20的内部结构及功能33.2.2.1 DS18B20的内部结构DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构主要包括寄生电源、温度传感器、64位激光ROM和单总线接口、存放中间数据的高速暂存器RAM、用于存储用户设定温度上下限值的TH和TL触发器、存储与控制逻辑、8位循

18、环冗余校验码(CRC)发生器等7部分。内部结构如图2.2.1所示。图3-3 DS18B20内部结构图3.2.2.2 高速暂存器RAMRAM是由9个字节的高速暂存器和非易失性电擦写EEPROM组成。高速暂存RAM包含8字节存储器,其结构如图2.2.2所示。其中第1、2字节存储测得的温度,第 3、4字节存储上下限报警温度TH和TL,是易失性的,每次上电复位时被刷新。第5字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。第6、7、8字节保留未用,表现为全逻辑1。.第9字节是读出前面8个字节的CRC码,用来检验数据,从而保证通信数据的正确性。RAM中EEPROM用于存储TH、TL和配置寄存器的

19、值。数据先写入RAM,经校验后再传给EEPROM。通过DS18B20功能命令对RAM进行操作。图3-4 高速暂存RAM结构图DS18B20的温度测量范围是-55+125,分辨率的默认值12位。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值以16为带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在前,高位在后,数据格式以0.0625/LSB形式表示。温度数据值格式如图2.2.3所示。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制数转换为十进制数;当符号位S=1时,表示测得的温度值为负值,要先将补码变成

20、原码,再计算其对应的十进制数。图3-5温度数据值格式3.2.2.3 CRC发生器在64位ROM的最高有效字节中存有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值作比较,以判断主机收到的ROM数据是否正确。CRC的函数表达式为:CRC=X8+X5+X4+1 此外,DS18B20尚需依上式为暂存器中的数据来产生一个8位CRC送给主机,作为数据校验用。2.2.3 DS18B20电源供电方式3DS18B20可以采用两种方式供电,一种是采用电源供电方式,如图2.2.4所示,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电

21、方式,如图2.2.5所示,单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。图3-6 外部电源供电图3-7 寄生电源供电当DS18B20出于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD和GND端均接地。由于单线制只有一根线,因此发送接口必须是三态的。3.2.4 DS18B20的命令集33.2.4.1 ROM操作命令ROM 操作命令如表3-1所示。表3-1 ROM操作命令指令说明读ROM命令(33H)读DS18B20的序列号搜索ROM命令(F0H)识别总线上个

22、器件的编码匹配ROM命令(55H)用于多个DS18B20的定位跳过ROM命令(CCH)此命令执行后,存储器操作将针对总线上的所有器件报警搜索ROM命令(ECH)仅温度超限的器件对此命令作出响应3.2.4.2 RAM操作命令RAM操作命令如表3-2所示。表3-2 RAM操作命令指令说明温度转换(44H)启动温度转换读暂存器(BEH)读全部暂存器内容,包括CRC字节写暂存器(4EH)写暂存器第2、3和4个字节的数据复制暂存器(48EH)将暂存器中的TH、TL和配置寄存器内容复制到EEPROM中读EEPROM(B8H)将TH、TL和配置寄存器内容从EEPROM中回读至暂存器3.2.5 DS18B20

23、的接口与单片机AT89C51 可以使用单片机AT89C51的任意一个I/O 口连接DS18B20。如图2.2.6所示,将DS18B20的数据引脚DQ与单片机的P2.7相连,即可进行通信。DS18B20使用外部电源供电方式,R1为上拉电阻。DS18B20与单片机通信只需要占用单片机的一个I/O口,使用非常方便。图3-8 DS18B20与AT89C51连接的电路图4 系统软件设计4.1 proteus软件环境介绍本系统的硬件设计首先是在Proteus软件环境中仿真实现的。Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在

24、全球广泛使用,除了具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,它的电路仿真是互动的。针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试。如果有显示及输出,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,还能看到运行后输入输出的效果。Proteus建立了完备的电子设计开发环境,尤其重要的是Proteus Lite可以完全免费,也可以花微不足道的费用注册达到更好的效果2。Proteus是目前最好的模拟单片机外围器件的工具。可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD,RAM,ROM,键盘,马

25、达,LED,AD/DA,部分SPI器件,部分IIC器件.)。其实Proteus 与 multisim比较类似,只不过它可以仿真MCU,当然,软件仿真精度有限,而且不可能所有的器件都找得到相应的仿真模型,用开发板和仿真器当然是最好选择,可是初学者拥有它们的可能性比较小。当然,硬件实践还是必不可少的。在没有硬件的情况下,Proteus能像pspice 仿真模拟/数字电路那样仿真MCU及外围电路。另外,即使有硬件,在程序编写早期用软件仿真一下也是很有必要的。Proteus软件主要具有以下几个方面的特点:1、设计和仿真软件Proteus 是一个很有用的工具,它可以帮助学生和专业人士提高他们的模拟和数字

26、电路的设计能力。2、它允许对电路设计采用图形环境,在这种环境中,可以使用一个特定符号来代替元器件,并完成不会对真实电路造成任何损害的电路仿真操作。3、它可以仿真仪表以及可描述在仿真过程中所获得的信号的图表。4、它可以仿真目前流行的单片机,如PICS, ATMEL-AVR, MOTOROLA, 8051 等。5、在设计综合性方案中,还可以利用ARES开发印制电路板。4.2 Protel软件环境介绍Protel印制板设计软件包是澳大利亚protel technology公司与1990年推出的电子CAD产品,具有方便、易学、实用、快速以及高速度、高步通率的特点。它采用了分层次下拉窗口菜单结构形式,用

27、户基本上不需要记背太多的键盘命令,用鼠标点击菜单命令就能操作,protel有着很高的自动布线布通率。布通率是电子产CAD产品的一项重要指标,它反映电子元件在电路图中连接关系有多少能在印刷版图中实现。在设计常用的单、双面印制板时只要选择适当的元件布局和布线策略方法,protel就可以轻易的达到98%-100%的布通率。对于极少数不能布通的定方,protel可以用飞线指示出来,引导用户用手工方法连通。另外,protel有强大的宏命令设置功能,利用宏命令功能多定义的热键可以大大提高操作速度1。 Protel对微机的软硬件配置要求很低:cpu在8088以上,dos2.0以上版本,内存640kb以上,双

28、软件(或一个软件一个硬盘),单色显示器(多层板设计时最好用彩色),各种兼容打印机。也能在Windows9X平台的模拟DOS下运行。Protel已成为印制板设计加工方面的工业标准。据初步统计protel在CAD的市场占有率达 95%,成为电子产品制造业界的首选CAD软件。4.3 程序流程图系统程序主要包括主程序、读出温度子程序、温度超限报警子程序、温度数据处理子程序、显示数据刷新子程序、按键查询处理子程序等。4.3.1 主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量出的当前温度值,温度测量每1s进行一次。这样可以在1s之内测量一次水温,其程序流程图见图3.1.1所

29、示。初始化温度显示范围?开机显示“0000”读出温度值温度计算处理显示数据刷新设置报警器温度上下限值发温度转换命令YN读取温度温度报警范围?蜂鸣器报警显示当前文风SET键按下?YNNY图4-1 主程序流程图4.3.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。因为单片机只连接一个DS18B20,所以可以省掉读取序列号及匹配等过程。直接使用命令 CCh 跳过ROM。单片机启动DS18B20,并读取温度值的主要过程是初始化DS18B20、发跳过ROM命令、发温度转换命令、等待温度转换完成、复位、读取温度暂存器,将温度值字

30、节移入温度暂存器等。当采用12位分辨率时转换时间约为750ms,在本程序设计中采用延时法等待温度转换的完成。其程序流程图如图3.2.1所示初始化DS18B209字节完?发跳过ROM命令读取操作,CRC校验YN发读取温度命令CRC校验正确?移入温度暂存器YN结束Y图4-2 读出温度子程序流程图4.3.3 温度超限报警子程序温度超限报警子程序主要是当温度超过正常温度范围时,利用蜂鸣器发声,对用户进行水温超限报警提示。由于蜂鸣器的工作电流一般比较大,以至于单片机的I/O口是无法直接驱动的,所以本程序利用三极管放大电流来构成驱动蜂鸣器的驱动电路。温度超限报警子程序流程图如图3.3.1所示。开始控制端口

31、P1.7=0结束控制端口循环取反延时蜂鸣器发生图4-3 温度超限报警子程序流程图4.3.4 温度数据处理子程序温度数据处理子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3.4.1所示。开始温度是否零下温度求补码标识置1结束计算小数位温度bcd温度求补码标识置1计算整数位温度bcdYN图4-4 温度数据处理子程序流程图4.3.5 显示数据刷新子程序显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位为1时将符号位显示位移入第一位。程序流程图如图3.5.1所示。温度标志位为1?结束温度数据移入显示寄存器最高位显示分离出的数据最高位显示负温度标

32、志“”YN分离显示温度(百、十、个位)图4-5 显示数据刷新子程序流程图4.3.6 按键查询处理子程序按键采用扫描查询方式,设置标志位temp1,当标志位为1时,显示设置报警温度上限;当标志位为2时,显示设置报警温度下限;否则显示当前温度。程序流程图如图3.6.1所示。ADD键按下?SET键按下报警温度值加1YN报警温度值减1温度设置标志位为0?调用显示子程序YNYDEC键按下?N图4-6 按键查询子程序流程图5 系统调试过程通过上面的硬件设计和软件设计过程,设计的工作已经基本完成,接下来的工作就是对所设计好的应用系统进行调试。通过调试可以检查出系统出现的一些错误,从而进行下一步的修改。(1)

33、在Protel 99 SE中,对硬件电路图进行ERC电气规则检查。 图 5-1 protel原理图图5-2 ERC电气规则检查结果图5-3 PCB图(2)程序调试程序经过调试显示“0错误,0警告”。表示程序调试通过。图5-4 程序调试通过示意图(3)protues调试图5-5 protues仿真图结 论在这次数字温度计设计的过程中,我主要通过查阅网络资料和图书馆相关书籍,再加上跟指导老师的讨论与沟通,基本完成了设计的要求。由于之前主要学习了单片机的一些基本应用,对测温元件这部分不了解,通过查阅资料,了解常用的测温元件,比较它们之间的优缺点,由于用DS18B20测量温度,在其内部就能进行A/D转

34、换,输出数字量与单片机AT89C51进行通信,无需外加A/D转换器,转换速度快,降低了成本,而且简化了电路,提高了系统的集成度,因此将数字温度传感器作为本设计的测温元件。其他功能部分也进行方案设计、对比,最终确定了总体的设计方案。在进行软件设计的时候也按照先整体后细节的顺序进行编程,将各功能程序作为子程序分开编写,按设计的主程序流程调用子程序,完成设计的功能要求。该系统具有很强的扩展性,还可以组建多点测温检测网络,可以应用于多种场合,具有很强的使用价值。在程序的编写当中遇到过很多大大小小的问题,其中在做数码管动态扫描的时候,端口的通断控制由于仿真硬件的连接和程序设计不一致,使数码管显示不正常;

35、还有蜂鸣器报警电路,由于程序的设计不合理,刚开始做出来的时候,只要测量的水温进入了温度的报警范围,蜂鸣器就会一直报警,不会停,后来加了一个判断条件,设置了一个小循环,循环结束就自动停止报警,确定了一个具体的报警时间,使设计更合理。通过遇到问题,解决问题反反复复,一步一步的完善了我的设计。通过这次的设计,增加了我在单片机应用方面的知识,也让我学到了做一件事的坚持,还有,当你无法单独完成一件事的时候,不要一味地逞强,你要懂得如何向老师和同学寻求帮助,在此再次感谢我的指导老师吴家碚老师,以及给予我帮助的同学们,谢谢你们!致 谢在陈飞老师的指导下,我完成了本次设计。本设计从选题到完成,每一步都是在他的

36、指导下完成的,倾注了老师大量的心血。另外,本设计的完成也离不开其他老师和各位同学给我的建议和帮助,是他们让我明白了团队合作的精神。在此,我谨向陈飞老师和帮助过我的老师和同学们,表示崇高的敬意和衷心的感谢!参考文献1Protel99SE EDA 技术及应用徐峥颖编著,北京:机械工业出版社,20052单片机系统的protues设计与仿真张靖武编著,北京:电子工业出版社,20073单片机原理及接口技术李朝青编著,北京:北京航空航天大学出版社,20054MCS-51单片机应用开发实用子程序边春远编著,北京:人民邮电出版社,20055张毅刚,彭喜元. 单片机原理与应用设计. 北京:电子工业出版社,200

37、8.46徐铮颖,孙海维.Protel 99 se EDA技术及应用.北京:机械工业出版社,2012.2 7谭浩强.C程序设计(第三版).北京:清华大学出版社,20058刘文涛.单片机应用开发实例.北京:清华大学出版社,2005.99高卫东,辛友顺,韩彦征.51单片机原理与实践.北京:北京航空航天大学出版社.2008.1附录 源程序代码/DS18B20 的读写程序,数据脚P2.7/温度传感器18B20汇编程序,采用器件默认的12位转化/最大转化时间按750US,显示温度-55到+125度,显示精度为0.1度/显示采用4位LED共阳显示测温值/P0口为段码输入,P2.0P2.4为位选/*/#inc

38、lude#include /_nop_();延时函数用#define dm P0 /段码输出口#define uchar unsigned char#define uint unsigned intsbit yin=P17; /蜂鸣器报警发音sbit w0=P20; /数码管4sbit w1=P21; /数码管3sbit w2=P22; /数码管2sbit w3=P23; /数码管1sbit add=P24; /温度加sbit dec=P25; /温度减sbit set=P26; /温度设置切换键sbit DQ=P27; /温度输入口int temp1=0; /显示当前温度和设置温度的标志位为

39、0时,显示当前温度uint h,temp;uchar r; /测得的温度值uchar high=100,low=25; /预设的报警温度的上下限值/*温度小数部分用查表法*/uchar code distab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09; /小数段码表uchar code table_dm12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; /共阴LED段码表 09 不亮 -uchar

40、table_dm1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/09个位带小数点的段码表uchar data temp_data2=0x00,0x00; /读出温度暂放uchar data display5=0x00,0x00,0x00,0x0,0x00; /显示单元数据,共4个数据和一个运算暂存/*11us 延时函数*/void delay(uint t) for(;t0;t-); /*DS18B20复位函数*/ow_reset(void) uchar x=1; while(x) while(x) DQ=1;_nop_();_nop_

41、(); /从高拉到低 DQ=0; delay(50); /550us DQ=1; delay(6); /66us x=DQ; /x=0复位成功,继续下一步 delay(45); /延时550us x=DQ; DQ=1; /拉高电平/*DS18B20写命令函数*/向1-WIRE 总线上写个字节void write_byte(uchar val) uchar i; for(i=8;i0;i-) DQ=1;_nop_();_nop_(); /从高拉到低 DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_(); /5us DQ=val&0x01; /最低位移出 del

42、ay(6); /66us val=val/2; /右移1位 DQ=1; delay(1); /*DS18B20读1字节函数*/从总线上读取1个字节uchar read_byte(void) uchar i; uchar value=0; for(i=8;i0;i-) DQ=1;_nop_();_nop_(); value=1; DQ=0;_nop_();_nop_();_nop_();_nop_(); /4us DQ=1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ) value|=0x80; delay(6); /66us DQ=1; return(value);/*读出温度函数*/read_temp() ow_reset(); /初始化DS18B20 delay(200); write_byte(0xcc); /执行Skip命令,直接进入功能命令 write_byte(0x44); /发转换命令 ow_reset(); /复位 delay(1); write_byte(0xcc); /执行Skip命令,直接进入功能命令 write_byte(0xbe); /读取温度寄存器 temp_data0=read_byte(); /读温度值的低字节 temp_dat

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号