微机原理及应用课程设计基于单片机数字温度计设计_第1页
微机原理及应用课程设计基于单片机数字温度计设计_第2页
微机原理及应用课程设计基于单片机数字温度计设计_第3页
微机原理及应用课程设计基于单片机数字温度计设计_第4页
微机原理及应用课程设计基于单片机数字温度计设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

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

2、导教师签名: 年 月 日 微机原理及应用课程设计说明书 - 1 - 目 录 摘摘 要要 .2 1 1 引引 言言 .3 1.1 问题的提出.3 1.2 任务与分析. 3 2 2 系统方案设计系统方案设计 .5 2.1 系统设计方案 . 5 2.2 系统总体框图 .6 3 3 系统硬件电路设计系统硬件电路设计 .7 3.1 89c51 单片机.7 3.2 数字温度传感器 ds18b20.9 4 4 系统软件设计系统软件设计 .14 4.1 proteus软件环境介绍 .14 4.2 protel软件环境介绍.15 4.3 程序流程图.15 5 5 系统调试过程系统调试过程 .23 结结 论论 .

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

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

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

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

7、运行实现的源代码来源。把.hex 文 件加载到 at89c51 单片机芯片,然后在 proteus 软件环境中运行硬件电路,温度的大小就 可以正常显示了。 微机原理及应用课程设计说明书 - 4 - 本设计的系统主要由:at89c51 为中央处理芯片,用于数据处理,初值设定。时钟芯 片 ds1302 是本例的核心模块,由他提供时钟信息并由 led 显示,用 c 语言进行编程。 本系统可以分为以下 4 大模块: 能用汇编语言或其它可编译的语言(如 c51 语言)编写 51 系列的单片计算机系统 程序。 能用一种工具软件绘制电路原理图,对硬件系统电路各个器件能正确地标出连接 编号。 对软件的各个子程

8、序能顺利的调试通过。 调试整个系统,使其能按设计要求正确的工作。 完成毕业设计的说明书一份。 完成与毕业设计内容相关的英文资料翻译。 对温度传感器的测量精度要求达到误差小于1 微机原理及应用课程设计说明书 - 5 - 2 系统方案设计 2.1 系统设计方案 2.1.1 温度测量电路的设计方案论证与选择 方案一:方案一:采用传统的温度传感器测量水温。传统的单片机温度检测系统采用热电偶和热电 阻测量温度,而热电偶和热电阻测出的一般都是电压,须包含模拟测量电路及 a/d 转换 电路将其转换成对应的温度,且占用单片机的引脚多,有时还需要 i/o 扩展接口芯片, 需要比较多的外部硬件电路支持,硬件电路复

9、杂,软件调试复杂,降低了系统的可靠性, 且制作成本高。 方案二:方案二:采用 dallas 公司生产的数字温度传感器 ds18b20 测量水温。使用 ds18b20 测量 温度,能代替模拟温度传感器和信号处理电路,完成温度的采集,并在其内部就能进行 a/d 转换处理测量到的数据,输出的数字量能直接与单片机 at89c51 进行通信,无需外 加 a/d 转换器,转换速度快,简化了系统的外围电路,降低了制作成本,提高了系统的 集成度,且其测量精度能达到设计要求的1。 综上所述,选择方案二采用数字温度传感器 ds18b20 完成温度的采集和数据的处理,组 成温度测量电路。 2.1.2 温度显示方式选

10、择 方案一:方案一:采用字符型 lcd 显示。lcd 具有轻薄短小、低耗电量、无辐射危险,平面直角显 示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等 特点。但由于只显示水温这样的数字,信息量比较小,且由于 lcd 液晶是以点阵的模式 显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多, 其制作成本也偏高。在使用时,不能有静电干扰,否则容易烧坏液晶的显示芯片,不易 维护。 方案二:方案二:采用 led 数码管显示。led 数码管具有:低能耗、低损耗、低压、寿命长、耐老 化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护的优点,同

11、时其 精度比较高,称量快,精确可靠,操作简单。数码管采用 bcd 编码显示数字,程序编译 容易,资源占用较少,制作成本也较低。 综上所述,选择方案二采用 led 数码管显示测量的水温。 微机原理及应用课程设计说明书 - 6 - 2.2 系统总体框图 2.1 系统组成 经过方案的比较与论证,最终确定的系统框图如图 1.2.1 所示。其中由温度传感器 ds18b20 完成温度数据的采集和处理,直接与单片机通信,将测量的温度送入 4 位 led 数码管显示电路中显示,当测量的水温超过设定的正常范围时,利用蜂鸣器报警电路进 行报警提示。 图 2-1 系统设计框图 微机原理及应用课程设计说明书 - 7

12、- 3 系统硬件电路设计 3.1 89c51 单片机 at89c51 是一种带 4k 字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能 cmos 8 位微处理器, 俗称单片机。at89c2051 是一种带 2k 字节闪烁可编程可擦除只读存储器的单片机。单片 机的可擦除只读存储器可以反复擦除 100 次。该器件采用 atmel 高密度非易失存储器制 造技术制造,与工业标准的 mcs-51 指令集和输出管脚相兼容。由于将多功能 8 位 cpu 和 闪烁存储器组合在单个芯片中,atmel 的

13、 at89c51 是一种高效微控制器,at89c2051 是它 的一种精简版本。at89c51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的 方案。 图 3-1 89c51 单片机引脚图 89c51 单片机与早期 intel 的 8051/8751/8031 芯片的外部引脚和指令系统完全兼容, 只不过用 flash rom 替代了 rom/eprom 而已3。89c51 单片机内部结构如图所示。 微机原理及应用课程设计说明书 - 8 - 图 3-2 89c51 单片机内部结构示意图 各引脚的功能如下: vcc:供电电压。 gnd:接地。 p0 口:p0 口为一个 8 位漏级开路双向 i

14、/o 口,每脚可吸收 8ttl 门电流。当 p1 口的管 脚第一次写 1 时,被定义为高阻输入。p0 能够用于外部程序数据存储器,它可以被定义 为数据/地址的第八位。在 fiash 编程时,p0 口作为原码输入口,当 fiash 进行校验时, p0 输出原码,此时 p0 外部必须被拉高3。 p1 口:p1 口是一个内部提供上拉电阻的 8 位双向 i/o 口,p1 口缓冲器能接收输出 4ttl 门电流。p1 口管脚写入 1 后,被内部上拉为高,可用作输入,p1 口被外部下拉为低电平 时,将输出电流,这是由于内部上拉的缘故。在 flash 编程和校验时,p1 口作为第八位 地址接收。 p2 口:p

15、2 口为一个内部上拉电阻的 8 位双向 i/o 口,p2 口缓冲器可接收,输出 4 个 ttl 门电流,当 p2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为 输入时,p2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2 口当用于 外部程序存储器或 16 位地址外部数据存储器进行存取时,p2 口输出地址的高八位。在 给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2 微机原理及应用课程设计说明书 - 9 - 口输出其特殊功能寄存器的内容。p2 口在 flash 编程和校验时接收高八位地址信号和控 制信号。 p3 口:p3 口管脚是

16、 8 个带内部上拉电阻的双向 i/o 口,可接收输出 4 个 ttl 门电流。 当 p3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下 拉为低电平,p3 口将输出电流(ill)这是由于上拉的缘故。 rst:复位输入。当振荡器复位器件时,要保持 rst 脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在 flash 编程期间,此引脚用于输入编程脉冲。在平时,ale 端以不变的频率周期输出 正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时 目的。然而要注意的是:每当用作外

17、部数据存储器时,将跳过一个 ale 脉冲。如想禁止 ale 的输出可在 sfr 8eh 地址上置 0。此时, ale 只有在执行 movx,movc 指令是 ale 才 起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ale 禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次 /psen 有效。但在访问外部数据存储器时,这两次有效的/psen 信号将不出现。 /ea:当/ea 保持低电平时,则在此期间 cpu 只访问外部程序存储器(0000h-ffffh) , 不管是否有内部程序存储器。注意加密方式 1 时,/ea 将内部锁定为 r

18、eset;当/ea 端保 持高电平时,则执行内部程序存储器中的程序。在 flash 编程期间,此引脚也用于施加 12v 编程电源(vpp) 。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。 3.2 数字温度传感器 ds18b20 3.2.1 ds18b20 的性能特点2 ds18b20 温度传感器是美国 dallas 半导体公司最新推出的一种改进型智能温度传感器, 与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过 简单的编程实现 912 位数字值读数方式。ds18b20 有以下的功能特点: 独特的单线接口仅需要一个端

19、口引脚进行通信; 多个 ds18b20 可以并联在唯一的三线上,实现多点组网功能; 微机原理及应用课程设计说明书 - 10 - 无需外部器件; 低压供电,电源范围为 35v;可本地供电,也可以通过数据线供电(寄生式供电) ; 零待机功耗; 温度以 9 或 12 位数字量读出; 用户可定义的非易失性温度报警设置; 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 负电压特性,电源极性接反时,温度计不会因发热而烧毁,只是不能正常工作; ds18b20 可将检测到的温度值直接转化成数字量,并通过串行通信的方式与主控制器进 行数据通信。 3.2.2 ds18b20 的内部结构及功能3 3

20、.2.2.1 ds18b20 的内部结构 ds18b20 采用 3 脚 pr-35 封装或 8 脚 soic 封装,其内部结构主要包括寄生电源、温度传 感器、64 位激光 rom 和单总线接口、存放中间数据的高速暂存器 ram、用于存储用户设 定温度上下限值的 th 和 tl 触发器、存储与控制逻辑、8 位循环冗余校验码(crc)发生 器等 7 部分。内部结构如图 2.2.1 所示。 图 3-3 ds18b20 内部结构图 3.2.2.2 高速暂存器 ram ram 是由 9 个字节的高速暂存器和非易失性电擦写 eeprom 组成。高速暂存 ram 包含 8 字节存储器,其结构如图 2.2.2

21、 所示。其中第 1、2 字节存储测得的温度,第 3、4 字 微机原理及应用课程设计说明书 - 11 - 节存储上下限报警温度 th 和 tl,是易失性的,每次上电复位时被刷新。第 5 字节为配 置寄存器,它的内容用于确定温度值的数字转换分辨率。第 6、7、8 字节保留未用,表 现为全逻辑 1。.第 9 字节是读出前面 8 个字节的 crc 码,用来检验数据,从而保证通信 数据的正确性。ram 中 eeprom 用于存储 th、tl 和配置寄存器的值。数据先写入 ram,经 校验后再传给 eeprom。通过 ds18b20 功能命令对 ram 进行操作。 图 3-4 高速暂存 ram 结构图 d

22、s18b20 的温度测量范围是-55+125,分辨率的默认值 12 位。当 ds18b20 接收到 温度转换命令后,开始启动转换。转换完成后的温度值以 16 为带符号扩展的二进制补码 形式存储在高速暂存存储器的第 1、2 字节。单片机可以通过单线接口读出该数据,读数 据时低位在前,高位在后,数据格式以 0.0625/lsb 形式表示。温度数据值格式如图 2.2.3 所示。 当符号位 s=0 时,表示测得的温度值为正值,可以直接将二进制数转换为十进制数; 当符号位 s=1 时,表示测得的温度值为负值,要先将补码变成原码,再计算其对应的十 进制数。 图 3-5 温度数据值格式 3.2.2.3 cr

23、c 发生器 在 64 位 rom 的最高有效字节中存有循环冗余校验码(crc) 。主机根据 rom 的前 56 位来计算 crc 值,并和存入 ds18b20 中的 crc 值作比较,以判断主机收到的 rom 数据是 否正确。 微机原理及应用课程设计说明书 - 12 - crc 的函数表达式为:crc=x8+x5+x4+1 此外,ds18b20 尚需依上式为暂存器中的数据来产生一个 8 位 crc 送给主机, 作为数据校验用。 2.2.3 ds18b20 电源供电方式3 ds18b20 可以采用两种方式供电,一种是采用电源供电方式,如图 2.2.4 所示,此 时 ds18b20 的 1 脚接地

24、,2 脚作为信号线,3 脚接电源。另一种是寄生电源供电方式,如 图 2.2.5 所示,单片机端口接单线总线,为保证在有效的 ds18b20 时钟周期内提供足够 的电流,可用一个 mosfet 管来完成对总线的上拉。 图 3-6 外部电源供电 图 3-7 寄生电源供电 当 ds18b20 出于写存储器操作和温度 a/d 转换操作时,总线上必须有强的上拉,上 拉开启时间最大为 10us。采用寄生电源供电方式时 vdd 和 gnd 端均接地。由于单线制只 有一根线,因此发送接口必须是三态的。 3.2.4 ds18b20 的命令集3 3.2.4.1 rom 操作命令 rom 操作命令如表 3-1 所示

25、。 表 3-1 rom 操作命令 微机原理及应用课程设计说明书 - 13 - 指令说明 读 rom 命令(33h)读 ds18b20 的序列号 搜索 rom 命令(f0h)识别总线上个器件的编码 匹配 rom 命令(55h)用于多个 ds18b20 的定位 跳过 rom 命令(cch)此命令执行后,存储器操作将针对总线上的所有器件 报警搜索 rom 命令(ech)仅温度超限的器件对此命令作出响应 3.2.4.2 ram 操作命令 ram 操作命令如表 3-2 所示。 表 3-2 ram 操作命令 指令说明 温度转换(44h)启动温度转换 读暂存器(beh)读全部暂存器内容,包括 crc 字节

26、写暂存器(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 与单片机的 p2.7 相连,即可进行通信。ds18b20 使用外部电源供 电方式,r1 为上拉电阻。ds18b20 与单片机通信只需要占用单片机的一个 i/o

27、口,使用 非常方便。 微机原理及应用课程设计说明书 - 14 - 图 3-8 ds18b20 与 at89c51 连接的电路图 4 系统软件设计 4.1 proteus软件环境介绍 本系统的硬件设计首先是在 proteus 软件环境中仿真实现的。proteus 软件是来自 英国 labcenter electronics 公司的 eda 工具软件,proteus 软件有十多年的历史,在 全球广泛使用,除了具有和其它 eda 工具一样的原理布图、pcb 自动或人工布线及电路 仿真的功能外,其革命性的功能是,它的电路仿真是互动的。针对微处理器的应用,还 可以直接在基于原理图的虚拟原型上编程,并实现

28、软件源码级的实时调试。如果有显示 及输出,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,还能看到运行后输入输出 的效果。proteus 建立了完备的电子设计开发环境,尤其重要的是 proteus lite 可以完 全免费,也可以花微不足道的费用注册达到更好的效果2。 proteus 是目前最好的模拟单片机外围器件的工具。可以仿真 51 系列、avr、pic 等 常用的 mcu 及其外围电路(如 lcd,ram,rom,键盘,马达,led,ad/da,部分 spi 器 件,部分 iic 器件.) 。其实 proteus 与 multisim 比较类似,只不过它可以仿真 mcu,当然,软件仿真精度

29、有限,而且不可能所有的器件都找得到相应的仿真模型,用开 发板和仿真器当然是最好选择,可是初学者拥有它们的可能性比较小。当然,硬件实践 还是必不可少的。在没有硬件的情况下,proteus 能像 pspice 仿真模拟/数字电路那样 仿真 mcu 及外围电路。另外,即使有硬件,在程序编写早期用软件仿真一下也是很有必 要的。proteus 软件主要具有以下几个方面的特点: 1、设计和仿真软件 proteus 是一个很有用的工具,它可以帮助学生和专业人士提高他 们的模拟和数字电路的设计能力。 2、它允许对电路设计采用图形环境,在这种环境中,可以使用一个特定符号来代替元器 件,并完成不会对真实电路造成任

30、何损害的电路仿真操作。 3、它可以仿真仪表以及可描述在仿真过程中所获得的信号的图表。 4、它可以仿真目前流行的单片机,如 pics, atmel-avr, motorola, 8051 等。 5、在设计综合性方案中,还可以利用 ares 开发印制电路板。 微机原理及应用课程设计说明书 - 15 - 4.2 protel 软件环境介绍 protel 印制板设计软件包是澳大利亚 protel technology 公司与 1990 年推出的电 子 cad 产品,具有方便、易学、实用、快速以及高速度、高步通率的特点。它采用了分 层次下拉窗口菜单结构形式,用户基本上不需要记背太多的键盘命令,用鼠标点击

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

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

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

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

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

36、度值正负的 判定,其程序流程图如图 3.4.1 所示。 微机原理及应用课程设计说明书 - 20 - 开始 温度是否零 下 温度求补码 标识置 1 结束 计算小数位温 度 bcd 温度求补码 标识置 1 计算整数位温 度 bcd y n 图 4-4 温度数据处理子程序流程图 4.3.5 显示数据刷新子程序 显示数据刷新子程序主要是对分离后的温度显示数据进行刷新操作,当标志位为 1 时将符号位显示位移入第一位。程序流程图如图 3.5.1 所示。 微机原理及应用课程设计说明书 - 21 - 温度标志位为 1? 结束 温度数据移入 显示寄存器 最高位显示 分离出的数据 最高位显示负温 度标志“” y

37、n 分离显示温度 (百、十、个位) 图 4-5 显示数据刷新子程序流程图 4.3.6 按键查询处理子程序 按键采用扫描查询方式,设置标志位 temp1,当标志位为 1 时,显示设置报警温度 上限;当标志位为 2 时,显示设置报警温度下限;否则显示当前温度。程序流程图如图 3.6.1 所示。 微机原理及应用课程设计说明书 - 22 - add 键 按下? set 键按下 报警温度值 加 1 y n 报警温度 值减 1 温度设置标志 位为 0? 调用显示 子程序 y n y dec 键按下? n 图 4-6 按键查询子程序流程图 微机原理及应用课程设计说明书 - 23 - 5 系统调试过程 通过上

38、面的硬件设计和软件设计过程,设计的工作已经基本完成,接下来的工作就 是对所设计好的应用系统进行调试。通过调试可以检查出系统出现的一些错误,从而进 行下一步的修改。 (1)在 protel 99 se 中,对硬件电路图进行 erc 电气规则检查。 图 5-1 protel 原理图 微机原理及应用课程设计说明书 - 24 - 图 5-2 erc 电气规则检查结果 微机原理及应用课程设计说明书 - 25 - 图 5-3 pcb 图 (2)程序调试 程序经过调试显示“0 错误,0 警告” 。表示程序调试通过。 微机原理及应用课程设计说明书 - 26 - 图 5-4 程序调试通过示意图 (3)protu

39、es 调试 图 5-5 protues 仿真图 微机原理及应用课程设计说明书 - 27 - 结 论 在这次数字温度计设计的过程中,我主要通过查阅网络资料和图书馆相关书籍,再 加上跟指导老师的讨论与沟通,基本完成了设计的要求。 由于之前主要学习了单片机的一些基本应用,对测温元件这部分不了解,通过查阅 资料,了解常用的测温元件,比较它们之间的优缺点,由于用 ds18b20 测量温度,在其 内部就能进行 a/d 转换,输出数字量与单片机 at89c51 进行通信,无需外加 a/d 转换器, 转换速度快,降低了成本,而且简化了电路,提高了系统的集成度,因此将数字温度传 感器作为本设计的测温元件。其他功

40、能部分也进行方案设计、对比,最终确定了总体的 设计方案。在进行软件设计的时候也按照先整体后细节的顺序进行编程,将各功能程序 作为子程序分开编写,按设计的主程序流程调用子程序,完成设计的功能要求。该系统 具有很强的扩展性,还可以组建多点测温检测网络,可以应用于多种场合,具有很强的 使用价值。 在程序的编写当中遇到过很多大大小小的问题,其中在做数码管动态扫描的时候, 端口的通断控制由于仿真硬件的连接和程序设计不一致,使数码管显示不正常;还有蜂 鸣器报警电路,由于程序的设计不合理,刚开始做出来的时候,只要测量的水温进入了 温度的报警范围,蜂鸣器就会一直报警,不会停,后来加了一个判断条件,设置了一个

41、小循环,循环结束就自动停止报警,确定了一个具体的报警时间,使设计更合理。通过 遇到问题,解决问题反反复复,一步一步的完善了我的设计。 通过这次的设计,增加了我在单片机应用方面的知识,也让我学到了做一件事的坚 持,还有,当你无法单独完成一件事的时候,不要一味地逞强,你要懂得如何向老师和 同学寻求帮助,在此再次感谢我的指导老师吴家碚老师,以及给予我帮助的同学们, 谢谢你们! 微机原理及应用课程设计说明书 - 28 - 致 谢 在陈飞老师的指导下,我完成了本次设计。本设计从选题到完成,每一步都是在他 的指导下完成的,倾注了老师大量的心血。另外,本设计的完成也离不开其他老师和各 位同学给我的建议和帮助

42、,是他们让我明白了团队合作的精神。在此,我谨向陈飞老师 和帮助过我的老师和同学们,表示崇高的敬意和衷心的感谢! 微机原理及应用课程设计说明书 - 29 - 参考文献 1protel99se eda 技术及应用徐峥颖编著,北京:机械工业出版社,2005 2单片机系统的 protues 设计与仿真张靖武编著,北京:电子工业出版社, 2007 3单片机原理及接口技术李朝青编著,北京:北京航空航天大学出版社,2005 4mcs-51 单片机应用开发实用子程序边春远编著,北京:人民邮电出版社, 2005 5张毅刚,彭喜元. 单片机原理与应用设计. 北京:电子工业出版社,2008.4 6徐铮颖,孙海维.p

43、rotel 99 se eda 技术及应用.北京:机械工业出版社, 2012.2 7谭浩强.c 程序设计(第三版).北京:清华大学出版社,2005 8刘文涛.单片机应用开发实例.北京:清华大学出版社,2005.9 9高卫东,辛友顺,韩彦征.51 单片机原理与实践.北京:北京航空航天大学出版 社.2008.1 微机原理及应用课程设计说明书 - 30 - 附录 源程序代码 /ds18b20 的读写程序,数据脚 p2.7 /温度传感器 18b20 汇编程序,采用器件默认的 12 位转化 /最大转化时间按 750us,显示温度-55 到+125 度,显示精度为 0.1 度 /显示采用 4 位 led

44、共阳显示测温值 /p0 口为段码输入,p2.0p2.4 为位选 /*/ #include #include /_nop_();延时函数用 #define dm p0 /段码输出口 #define uchar unsigned char #define uint unsigned int sbit yin=p17; /蜂鸣器报警发音 sbit w0=p20; /数码管 4 sbit w1=p21; /数码管 3 sbit w2=p22; /数码管 2 sbit w3=p23; /数码管 1 sbit add=p24; /温度加 sbit dec=p25; /温度减 sbit set=p26; /

45、温度设置切换键 sbit dq=p27; /温度输入口 int temp1=0; /显示当前温度和设置温度的标志位为 0 时,显示当前温度 uint h,temp; uchar r; /测得的温度值 微机原理及应用课程设计说明书 - 31 - uchar high=100,low=25; /预设的报警温度的上下限值 /*温度小数部分用查表法*/ uchar code 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; /小数段码表 u

46、char 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 xef; /09个位带小数点的段码表 uchar data temp_data2=0 x00,0 x00; /读出温度暂放 uchar data display5=0 x00,0 x00,0 x00,0 x0,0 x00; /显

47、示单元数据,共 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(6); /66us x=dq; /x=0 复位成功,继续下一步 delay(45); /延时 550us x=dq; 微机原理及应用课程设计说明书 - 32 - dq=1; /拉高电平 /*ds18b20 写命令函

48、数*/ /向 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 /最低位移出 delay(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_();

温馨提示

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

评论

0/150

提交评论