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

上传人:仙*** 文档编号:33082231 上传时间:2021-10-16 格式:DOC 页数:39 大小:756KB
收藏 版权申诉 举报 下载
微机原理及应用课程设计基于单片机数字温度计设计_第1页
第1页 / 共39页
微机原理及应用课程设计基于单片机数字温度计设计_第2页
第2页 / 共39页
微机原理及应用课程设计基于单片机数字温度计设计_第3页
第3页 / 共39页
资源描述:

《微机原理及应用课程设计基于单片机数字温度计设计》由会员分享,可在线阅读,更多相关《微机原理及应用课程设计基于单片机数字温度计设计(39页珍藏版)》请在装配图网上搜索。

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

2、理及应用课程设计说明书- 1 - 目 录摘摘 要要 .2 1 1 引引 言言 .3 1.1 问题的提出.31.2 任务与分析. 3 2 2 系统方案设计系统方案设计 .5 2.1 系统设计方案 . 5 2.2 系统总体框图 .6 3 3 系统硬件电路设计系统硬件电路设计 .73.1 89C51 单片机.7 3.2 数字温度传感器 DS18B20.9 4 4 系统软件设计系统软件设计 .144.1 PROTEUS软件环境介绍 .14 4.2 PROTEL软件环境介绍.15 4.3 程序流程图.155 5 系统调试过程系统调试过程 .23 结结 论论 .27 致致 谢谢 .28参考文献参考文献 .

3、29 附录附录 .30 微机原理及应用课程设计说明书- 2 -摘 要 本文设计了一种基于单片机 AT89C51 的温度测量、显示及报警的装置,系统采用AT89C51 进行智能控制,利用 DS18B20 芯片实现了温度的测量,并将测量的温度使用 4位 LED 数码管进行显示。当测量的温度超出 25100时,利用蜂鸣器进行报警,此外用户还可以通过独立按键电路,根据需要自行设计水温稳定报警限值。系统硬件主要由控制电路、温度采集电路、显示电路和报警电路等部分组成;系统软件采用 C 语言编程;该系统能实现水温温度的测量、显示及限值报警功能,在现代小型轿车上具有一定的应用价值。关键词关键词:温度测量,AT

4、89C51 单片机,DS18B20 温度传感器 微机原理及应用课程设计说明书- 3 -1 引 言 1.1 问题的提出 随着人们生活水平的提高,对生活环境的要求也越来越高,家用轿车的电器装置越来越趋于自动控制乃至于智能控制,现代轿车上对冷却水温度的显示只是一个模糊的范围,没有具体的水温温度值显示,而冷却水的温度对发动机的正常工作温度影响很大。通常水冷式发动机正常的工作温度在 8090,水温过高,会引起金属材料膨胀,破坏正常的工作间隙,容易导致活塞咬死、拉缸等故障,并且还会使润滑油变稀,从而加速油液氧化变质,进一步加速气缸磨损;水温过低,同样也会损坏发动机。而造成冷却水水温异常的原因也有很多,比如

5、说:水箱风扇不转,散热器散热不良,节温器无法正常打开,冷却液不足,水泵工作不良,水温传感器、仪表及电路异常等,如果不及时发现冷却水温度异常,不及时处理造成温度异常的原因,那么给轿车发动机带来的危害有可能会进一步扩大,同时也会轿车用户带来很多不必要的损失。针对目前的这种情况,发动机冷却水水温的数字显示显得尤为重要,为了能够为轿车用户提供比较方便、直观的冷却水温度,本文就通过 51 系列单片机 AT89C51 来设计了一个发动机冷却水水温的测量与数字显示装置。该设计可以实现发动机冷却水水温的实时测量,温度信息通过数码管直观的显示给轿车用户,轿车用户也可以根据需求,适当的通过独立按键自行设定温度的报

6、警值,当测量的水温超过用户设置的报警温度限值时,蜂鸣器发声报警,以此提醒用户注意发动机冷却水水温异常,以便轿车用户可以及时的检查水温异常的原因,避免轿车因水温异常出现故障,甚至导致某些交通事故,提高了轿车的使用性能,为轿车用户增加了安全性。1.2 任务与分析 本次设计的系统的控制中心是 89C51 单片机。首先,在 Protel 软件环境中进行硬件电路图的设计。然后在 8051 软件环境中进行系统的软件编程,并进行程序源文件的编译和调试,最后生成.hex 文件。此.hex 文件是硬件电路运行实现的源代码来源。把.hex 文件加载到 AT89C51 单片机芯片,然后在 Proteus 软件环境中

7、运行硬件电路,温度的大小就可以正常显示了。 微机原理及应用课程设计说明书- 4 -本设计的系统主要由:AT89C51 为中央处理芯片,用于数据处理,初值设定。时钟芯片 DS1302 是本例的核心模块,由他提供时钟信息并由 LED 显示,用 C 语言进行编程。本系统可以分为以下 4 大模块: 能用汇编语言或其它可编译的语言(如 C51 语言)编写 51 系列的单片计算机系统程序。 能用一种工具软件绘制电路原理图,对硬件系统电路各个器件能正确地标出连接编号。 对软件的各个子程序能顺利的调试通过。 调试整个系统,使其能按设计要求正确的工作。 完成毕业设计的说明书一份。 完成与毕业设计内容相关的英文资

8、料翻译。 对温度传感器的测量精度要求达到误差小于1 微机原理及应用课程设计说明书- 5 -2 系统方案设计2.1 系统设计方案2.1.1 温度测量电路的设计方案论证与选择方案一:方案一:采用传统的温度传感器测量水温。传统的单片机温度检测系统采用热电偶和热电阻测量温度,而热电偶和热电阻测出的一般都是电压,须包含模拟测量电路及 A/D 转换电路将其转换成对应的温度,且占用单片机的引脚多,有时还需要 I/O 扩展接口芯片,需要比较多的外部硬件电路支持,硬件电路复杂,软件调试复杂,降低了系统的可靠性,且制作成本高。方案二:方案二:采用 DALLAS 公司生产的数字温度传感器 DS18B20 测量水温。

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

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

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

12、d Only Memory)的低电压,高性能 CMOS 8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 100 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图 3-1 89C51 单片机引脚图 89C51 单片机

13、与早期 Intel 的 8051/8751/8031 芯片的外部引脚和指令系统完全兼容,只不过用 Flash ROM 替代了 ROM/EPROM 而已3。89C51 单片机内部结构如图所示。 微机原理及应用课程设计说明书- 8 -图 3-2 89C51 单片机内部结构示意图各引脚的功能如下:VCC:供电电压。 GND:接地。 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH

14、 进行校验时,P0 输出原码,此时 P0 外部必须被拉高3。P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉

15、的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 微机原理及应用课程设计说明书- 9 -口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器

16、件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止ALE 的输出可在 SFR 8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。/PSEN:外部

17、程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。 /EA:当/EA 保持低电平时,则在此期间 CPU 只访问外部程序存储器(0000H-FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,则执行内部程序存储器中的程序。在 FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 3.2 数字温度传感器 DS18B203

18、.2.1 DS18B20 的性能特点2DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 912 位数字值读数方式。DS18B20 有以下的功能特点:独特的单线接口仅需要一个端口引脚进行通信;多个 DS18B20 可以并联在唯一的三线上,实现多点组网功能; 微机原理及应用课程设计说明书- 10 -无需外部器件;低压供电,电源范围为 35V;可本地供电,也可以通过数据线供电(寄生式供电) ;零待机功耗;温度以 9 或 12 位数字量读出;用户可定义的非易失性温度报

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

20、(CRC)发生器等 7 部分。内部结构如图 2.2.1 所示。图 3-3 DS18B20 内部结构图3.2.2.2 高速暂存器 RAMRAM 是由 9 个字节的高速暂存器和非易失性电擦写 EEPROM 组成。高速暂存 RAM 包含8 字节存储器,其结构如图 2.2.2 所示。其中第 1、2 字节存储测得的温度,第 3、4 字 微机原理及应用课程设计说明书- 11 -节存储上下限报警温度 TH 和 TL,是易失性的,每次上电复位时被刷新。第 5 字节为配置寄存器,它的内容用于确定温度值的数字转换分辨率。第 6、7、8 字节保留未用,表现为全逻辑 1。.第 9 字节是读出前面 8 个字节的 CRC

21、 码,用来检验数据,从而保证通信数据的正确性。RAM 中 EEPROM 用于存储 TH、TL 和配置寄存器的值。数据先写入 RAM,经校验后再传给 EEPROM。通过 DS18B20 功能命令对 RAM 进行操作。图 3-4 高速暂存 RAM 结构图DS18B20 的温度测量范围是-55+125,分辨率的默认值 12 位。当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值以 16 为带符号扩展的二进制补码形式存储在高速暂存存储器的第 1、2 字节。单片机可以通过单线接口读出该数据,读数据时低位在前,高位在后,数据格式以 0.0625/LSB 形式表示。温度数据值格式如图

22、2.2.3 所示。当符号位 S=0 时,表示测得的温度值为正值,可以直接将二进制数转换为十进制数;当符号位 S=1 时,表示测得的温度值为负值,要先将补码变成原码,再计算其对应的十进制数。图 3-5 温度数据值格式3.2.2.3 CRC 发生器在 64 位 ROM 的最高有效字节中存有循环冗余校验码(CRC) 。主机根据 ROM 的前 56位来计算 CRC 值,并和存入 DS18B20 中的 CRC 值作比较,以判断主机收到的 ROM 数据是否正确。 微机原理及应用课程设计说明书- 12 -CRC 的函数表达式为:CRC=X8+X5+X4+1 此外,DS18B20 尚需依上式为暂存器中的数据来

23、产生一个 8 位 CRC 送给主机,作为数据校验用。2.2.3 DS18B20 电源供电方式3DS18B20 可以采用两种方式供电,一种是采用电源供电方式,如图 2.2.4 所示,此时 DS18B20 的 1 脚接地,2 脚作为信号线,3 脚接电源。另一种是寄生电源供电方式,如图 2.2.5 所示,单片机端口接单线总线,为保证在有效的 DS18B20 时钟周期内提供足够的电流,可用一个 MOSFET 管来完成对总线的上拉。图 3-6 外部电源供电图 3-7 寄生电源供电当 DS18B20 出于写存储器操作和温度 A/D 转换操作时,总线上必须有强的上拉,上拉开启时间最大为 10us。采用寄生电

24、源供电方式时 VDD 和 GND 端均接地。由于单线制只有一根线,因此发送接口必须是三态的。3.2.4 DS18B20 的命令集33.2.4.1 ROM 操作命令ROM 操作命令如表 3-1 所示。表 3-1 ROM 操作命令 微机原理及应用课程设计说明书- 13 -指令说明读 ROM 命令(33H)读 DS18B20 的序列号搜索 ROM 命令(F0H)识别总线上个器件的编码匹配 ROM 命令(55H)用于多个 DS18B20 的定位跳过 ROM 命令(CCH)此命令执行后,存储器操作将针对总线上的所有器件报警搜索 ROM 命令(ECH)仅温度超限的器件对此命令作出响应3.2.4.2 RAM

25、 操作命令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 的接口与单片机 AT89C51 可以使用单片机 AT89C51 的任意一个 I/O 口连接 DS18B20。如图 2.2.6 所示,将DS18B20 的数据引脚 DQ 与

26、单片机的 P2.7 相连,即可进行通信。DS18B20 使用外部电源供电方式,R1 为上拉电阻。DS18B20 与单片机通信只需要占用单片机的一个 I/O 口,使用非常方便。 微机原理及应用课程设计说明书- 14 -图 3-8 DS18B20 与 AT89C51 连接的电路图4 系统软件设计4.1 proteus软件环境介绍本系统的硬件设计首先是在 Proteus 软件环境中仿真实现的。Proteus 软件是来自英国 Labcenter electronics 公司的 EDA 工具软件,Proteus 软件有十多年的历史,在全球广泛使用,除了具有和其它 EDA 工具一样的原理布图、PCB 自动

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

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

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

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

31、u 在 8088 以上,dos2.0 以上版本,内存 640kb 以上,双软件(或一个软件一个硬盘) ,单色显示器(多层板设计时最好用彩色) ,各种兼容打印机。也能在 Windows9X 平台的模拟 DOS 下运行。Protel 已成为印制板设计加工方面的工业标准。据初步统计 protel 在 CAD 的市场占有率达 95%,成为电子产品制造业界的首选 CAD 软件。4.3 程序流程图系统程序主要包括主程序、读出温度子程序、温度超限报警子程序、温度数据处理子程序、显示数据刷新子程序、按键查询处理子程序等。4.3.1 主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20

32、测量出的当前温度值,温度测量每 1s 进行一次。这样可以在 1s 之内测量一次水温,其程序流程图见图3.1.1 所示。 微机原理及应用课程设计说明书- 16 -初始化温度显示范围?开机显示“0000”读出温度值温度计算处理显示数据刷新设置报警器温度上下限值发温度转换命令YN读取温度温度报警范围?蜂鸣器报警显示当前文风SET 键按下?YNNY图 4-1 主程序流程图 微机原理及应用课程设计说明书- 17 -4.3.2 读出温度子程序读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校验有错时不进行温度数据的改写。因为单片机只连接一个 DS18B20,所以可以省

33、掉读取序列号及匹配等过程。直接使用命令 CCh 跳过 ROM。单片机启动 DS18B20,并读取温度值的主要过程是初始化 DS18B20、发跳过 ROM 命令、发温度转换命令、等待温度转换完成、复位、读取温度暂存器,将温度值字节移入温度暂存器等。当采用 12 位分辨率时转换时间约为 750ms,在本程序设计中采用延时法等待温度转换的完成。其程序流程图如图 3.2.1 所示 微机原理及应用课程设计说明书- 18 -初始化DS18B209 字节完?发跳过 ROM命令读取操作,CRC 校验YN发读取温度命令CRC 校验正确?移入温度暂存器YN结束Y图 4-2 读出温度子程序流程图 微机原理及应用课程

34、设计说明书- 19 -4.3.3 温度超限报警子程序温度超限报警子程序主要是当温度超过正常温度范围时,利用蜂鸣器发声,对用户进行水温超限报警提示。由于蜂鸣器的工作电流一般比较大,以至于单片机的 I/O 口是无法直接驱动的,所以本程序利用三极管放大电流来构成驱动蜂鸣器的驱动电路。温度超限报警子程序流程图如图 3.3.1 所示。开始控制端口 P1.7=0结束控制端口循环取反延时蜂鸣器发生图 4-3 温度超限报警子程序流程图4.3.4 温度数据处理子程序温度数据处理子程序将 RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负的判定,其程序流程图如图 3.4.1 所示。 微机原理及应用课程设

35、计说明书- 20 -开始温度是否零下温度求补码标识置 1结束计算小数位温度 bcd温度求补码标识置 1计算整数位温度 bcdYN图 4-4 温度数据处理子程序流程图4.3.5 显示数据刷新子程序显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位为 1时将符号位显示位移入第一位。程序流程图如图 3.5.1 所示。 微机原理及应用课程设计说明书- 21 -温度标志位为 1?结束温度数据移入显示寄存器最高位显示分离出的数据最高位显示负温度标志“”YN分离显示温度(百、十、个位)图 4-5 显示数据刷新子程序流程图4.3.6 按键查询处理子程序按键采用扫描查询方式,设置标志位 tem

36、p1,当标志位为 1 时,显示设置报警温度上限;当标志位为 2 时,显示设置报警温度下限;否则显示当前温度。程序流程图如图3.6.1 所示。 微机原理及应用课程设计说明书- 22 -ADD 键按下?SET 键按下报警温度值加 1YN报警温度值减 1温度设置标志位为 0?调用显示子程序YNYDEC 键按下?N图 4-6 按键查询子程序流程图 微机原理及应用课程设计说明书- 23 -5 系统调试过程通过上面的硬件设计和软件设计过程,设计的工作已经基本完成,接下来的工作就是对所设计好的应用系统进行调试。通过调试可以检查出系统出现的一些错误,从而进行下一步的修改。(1)在 Protel 99 SE 中

37、,对硬件电路图进行 ERC 电气规则检查。 图 5-1 protel 原理图 微机原理及应用课程设计说明书- 24 -图 5-2 ERC 电气规则检查结果 微机原理及应用课程设计说明书- 25 -图 5-3 PCB 图(2)程序调试程序经过调试显示“0 错误,0 警告” 。表示程序调试通过。 微机原理及应用课程设计说明书- 26 -图 5-4 程序调试通过示意图(3)protues 调试图 5-5 protues 仿真图 微机原理及应用课程设计说明书- 27 -结 论在这次数字温度计设计的过程中,我主要通过查阅网络资料和图书馆相关书籍,再加上跟指导老师的讨论与沟通,基本完成了设计的要求。由于之

38、前主要学习了单片机的一些基本应用,对测温元件这部分不了解,通过查阅资料,了解常用的测温元件,比较它们之间的优缺点,由于用 DS18B20 测量温度,在其内部就能进行 A/D 转换,输出数字量与单片机 AT89C51 进行通信,无需外加 A/D 转换器,转换速度快,降低了成本,而且简化了电路,提高了系统的集成度,因此将数字温度传感器作为本设计的测温元件。其他功能部分也进行方案设计、对比,最终确定了总体的设计方案。在进行软件设计的时候也按照先整体后细节的顺序进行编程,将各功能程序作为子程序分开编写,按设计的主程序流程调用子程序,完成设计的功能要求。该系统具有很强的扩展性,还可以组建多点测温检测网络

39、,可以应用于多种场合,具有很强的使用价值。在程序的编写当中遇到过很多大大小小的问题,其中在做数码管动态扫描的时候,端口的通断控制由于仿真硬件的连接和程序设计不一致,使数码管显示不正常;还有蜂鸣器报警电路,由于程序的设计不合理,刚开始做出来的时候,只要测量的水温进入了温度的报警范围,蜂鸣器就会一直报警,不会停,后来加了一个判断条件,设置了一个小循环,循环结束就自动停止报警,确定了一个具体的报警时间,使设计更合理。通过遇到问题,解决问题反反复复,一步一步的完善了我的设计。通过这次的设计,增加了我在单片机应用方面的知识,也让我学到了做一件事的坚持,还有,当你无法单独完成一件事的时候,不要一味地逞强,

40、你要懂得如何向老师和同学寻求帮助,在此再次感谢我的指导老师吴家碚老师,以及给予我帮助的同学们,谢谢你们! 微机原理及应用课程设计说明书- 28 -致 谢在陈飞老师的指导下,我完成了本次设计。本设计从选题到完成,每一步都是在他的指导下完成的,倾注了老师大量的心血。另外,本设计的完成也离不开其他老师和各位同学给我的建议和帮助,是他们让我明白了团队合作的精神。在此,我谨向陈飞老师和帮助过我的老师和同学们,表示崇高的敬意和衷心的感谢! 微机原理及应用课程设计说明书- 29 -参考文献1Protel99SE EDA 技术及应用徐峥颖编著,北京:机械工业出版社,20052单片机系统的 protues 设计

41、与仿真张靖武编著,北京:电子工业出版社,20073单片机原理及接口技术李朝青编著,北京:北京航空航天大学出版社,20054MCS-51 单片机应用开发实用子程序边春远编著,北京:人民邮电出版社,20055张毅刚,彭喜元. 单片机原理与应用设计. 北京:电子工业出版社,2008.46徐铮颖,孙海维.Protel 99 se EDA 技术及应用.北京:机械工业出版社,2012.2 7谭浩强.C 程序设计(第三版).北京:清华大学出版社,20058刘文涛.单片机应用开发实例.北京:清华大学出版社,2005.99高卫东,辛友顺,韩彦征.51 单片机原理与实践.北京:北京航空航天大学出版社.2008.1

42、 微机原理及应用课程设计说明书- 30 -附录 源程序代码/DS18B20 的读写程序,数据脚 P2.7/温度传感器 18B20 汇编程序,采用器件默认的 12 位转化/最大转化时间按 750US,显示温度-55 到+125 度,显示精度为 0.1 度/显示采用 4 位 LED 共阳显示测温值/P0 口为段码输入,P2.0P2.4 为位选/*/#include#include /_nop_();延时函数用#define dm P0 /段码输出口#define uchar unsigned char#define uint unsigned intsbit yin=P17; /蜂鸣器报警发音sb

43、it 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; /显示当前温度和设置温度的标志位为 0 时,显示当前温度uint h,temp;uchar r; /测得的温度值 微机原理及应用课程设计说明书- 31 -uchar high=100,low=25; /预设的报警温度的上下限值/*温度小数部分用查表法*/uchar cod

44、e distab16=0 x00,0 x01,0 x01,0 x02,0 x03,0 x03,0 x04,0 x04,0 x05,0 x06,0 x06,0 x07,0 x08,0 x08,0 x09,0 x09; /小数段码表uchar code table_dm12=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x00,0 x40; /共阴 LED 段码表 09 不亮 -uchar table_dm1=0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0 x87,0 xff,0

45、xef;/09个位带小数点的段码表uchar data temp_data2=0 x00,0 x00; /读出温度暂放uchar data display5=0 x00,0 x00,0 x00,0 x0,0 x00; /显示单元数据,共 4 个数据和一个运算暂存/*11us 延时函数*/void delay(uint t) for(;t0;t-); /*DS18B20 复位函数*/ow_reset(void) uchar x=1; while(x) while(x) DQ=1;_nop_();_nop_(); /从高拉到低 DQ=0; delay(50); /550us DQ=1; delay

46、(6); /66us x=DQ; /x=0 复位成功,继续下一步 delay(45); /延时 550us x=DQ; 微机原理及应用课程设计说明书- 32 - 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&0 x01; /最低位移出 delay(6); /66us val=val

47、/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|=0 x80; delay(6); /66us DQ=1; 微机原理及应用课程设计说明书- 33

48、- return(value);/*读出温度函数*/read_temp() ow_reset(); /初始化 DS18B20 delay(200); write_byte(0 xcc); /执行 Skip 命令,直接进入功能命令 write_byte(0 x44); /发转换命令 ow_reset(); /复位 delay(1); write_byte(0 xcc); /执行 Skip 命令,直接进入功能命令 write_byte(0 xbe); /读取温度寄存器 temp_data0=read_byte(); /读温度值的低字节 temp_data1=read_byte(); /读温度值的高

49、字节 temp=temp_data1; temp4; /取中间 8 位,即整数部分的值 display3=display4/100; /取百位数据暂存 display1=display4%100; /取后两位数据暂存 display2=display1/10; /取十位数据暂存 display1=display1%10; /个位数据 r=display1+display2*10+display3*100; /测得的温度值/符号位显示判断/ if(!display3) display3=0 x0a; /最高位为 0 不显示 if(!display2) display2=0 x0a; /次高位为

50、0 不显示 if(n) display3=0 x0b; /负温度时最高位显示-/*温度超限报警函数*/void fayin() uchar a,b; yin=0; /为蜂鸣器控制端口送低电平 for(a=0;a100;a+) /发声时间 yin=!yin; /对蜂鸣器控制端口信号取反 for(b=0;b120) horl=256-horl;n=1; display3=horl/100; display3=display3&0 x0f; display2=horl%100/10; display1=horl%10; display0=0; if(!display3) display3=0 x0a

51、; /最高位为 0 时不显示 if(!display2) display2=0 x0a; /次高位为 0 时不显示 if(n) display3=0 x0b; /负温度时最高位显示-/*扫描函数*/void scan() int j; for(j=0;j=3) temp1=0; break; /*主函数*/void main() uchar c=0; dm=0 x00; /初始化端口 w0=0; w1=0; w2=0; w3=0; yin=0; for(h=0;h4;h+) /开机显示0000 displayh=0; ow_reset(); /开机先转换一次 write_byte(0 xCC); /Skip ROM write_byte(0 x44); /发转换命令 for(h=0;h=0 xfe2f)|(temp=0 x0780) /温度是否在测量范围-30120内? work_temp(read_temp(); /处理温度数据 微机原理及应用课程设计说明书- 38 -if(c=high|r=low) c+; fayin(); scan(); else scan(); /显示温度值 keyscan(); else keyscan(); /*结束*/

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!