收藏 分享(赏)

单片机课设,数字温度计.doc

上传人:精品资料 文档编号:10689499 上传时间:2019-12-28 格式:DOC 页数:28 大小:317KB
下载 相关 举报
单片机课设,数字温度计.doc_第1页
第1页 / 共28页
单片机课设,数字温度计.doc_第2页
第2页 / 共28页
单片机课设,数字温度计.doc_第3页
第3页 / 共28页
单片机课设,数字温度计.doc_第4页
第4页 / 共28页
单片机课设,数字温度计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、单片机课程设计I摘 要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于 89C51 单片机的测温系统,详细描述了利用数字温度传感器 DS18B20 开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20 与 AT

2、89C51 结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。关键词:单片机;温度检测;温度传感器单片机课程设计II目录1 绪论 11.1 技术概述 .11.2 本课题的背景和意义 .22 系统设计简介 32.1 数字温度计简介 32.2 设计要求 32.3 设计方案论证 32.4 硬件设计电路 53 设计语言及软件介绍 63.1 汇编语言介绍 63.2 wave6000 软件介绍 .64 软件设计 94.1 概述 94.2 系统程序设计模块 94.2.1 主程序 .94.2.2 读出温度子程序 .104.2.3 温度转换命令子程序 .

3、104.2.4 计算温度子程序 .114.2.5 显示数据刷新子程序 .124.3 控制源程序 134.3.1 汇编程序 .134.3.2 程序清单 .244.4 调试及仿真 25结 论 26参考文献 27单片机课程设计11 绪论1.1 技术概述随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术) 中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领

4、域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器模拟集成温度传感器智能集成温度传感器。在当今信息化时代展过程中,各种信息的感知、采集、转换、传输和处理的功能器件已经成为各个应用领域中不可缺少的重要技术工具。传感器是信息采集系统的首要部件,是实现现代化测量和自动控制的主要环节,是现代信息产业的源头,又是信息社会赖以存在和发展的物质与技术基础。可见理解和撑握传感器的知识与技术有着其极重要的意义。传感器知识面广,如果在

5、实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节的局面。任随书本上把单片机技术介绍得多么重要、多么实用多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会感到对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。本次设计的目的就是让我们在理论学习的基础上,通过完成一个传感品器件的设计,使我们学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。单片机课程设计21.2 本课题的背景和

6、意义数字温度计采用进口芯片组装精度高、高稳定性,误差0.5%,内电源、微功耗、不锈钢外壳,防护坚固,美观精致。 数字温度计采用进口高精度、低温漂、超低功耗集成电路和宽温型液晶显示器,内置高能量电池连续工作5 年无需敷设供电电缆,是一种精度高、稳定性好、适用性极强的新型现场温度显示仪。是传统现场指针双金属温度计的理想替代产品,广泛应用于各类工矿企业,大专院校,科研院所。 温度数我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到

7、底是多少度。 数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即 AD 转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者 PC 机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如 25.0 摄氏度,然后通过显示单元,如 LED、LCD 或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的基本测温功能。 数字温度计根据使用的传感器的不同,AD 转

8、换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据实际情况选择符合规格的数字温度计。 数字温度计有手持式,盘装式,及医用的小体积的等等。单片机课程设计32 系统设计简介2.1 数字温度计简介数字温度计可以准确的判断和测量温度,以数字显示,而非指针或水银显示。故称数字温度计或数字温度表。数 字 温 度 计 采 用 温 度 敏 感 元 件 也 就 是 温 度 传 感 器 ( 如铂 电 阻 , 热 电 偶 , 半 导 体 , 热 敏 电 阻 等 ) , 将 温 度 的 变 化 转 换 成 电 信 号 的 变 化 , 如电 压 和 电 流 的 变 化 , 温 度 变 化 和 电

9、 信 号 的 变 化 有 一 定 的 关 系 , 如 线 性 关 系 , 一 定 的曲 线 关 系 等 , 这 个 电 信 号 可 以 使 用 模 数 转 换 的 电 路 即 AD 转 换 电 路 将 模 拟 信 号 转换 为 数 字 信 号 , 数 字 信 号 再 送 给 处 理 单 元 , 如 单 片 机 或 者 PC 机 等 , 处 理 单 元 经 过内 部 的 软 件 计 算 将 这 个 数 字 信 号 和 温 度 联 系 起 来 , 成 为 可 以 显 示 出 来 的 温 度 数 值 ,如 25.0 摄 氏 度 , 然 后 通 过 显 示 单 元 , 如 LED, LCD 或 者 电

10、 脑 屏 幕 等 显 示 出 来 给 人观 察 。 这 样 就 完 成 了 数 字 温 度 计 的 基 本 测 温 功 能 。2.2 设计要求1、利用温度传感器(DS18B20)测量某一点环境温度2、测量范围为-55125,精度为0.5。3、测量温度由LED 数码管直读显示。2.3 设计方案论证根据系统的设计要求,选择 DS18B20 作为本系统的温度传感器,选择单片机AT89C51 为测控系统的核心来完成数据采集、处理、显示等功能。选用数字温度传感器 DS18B20,省却了采样 /保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统

11、的硬件成本。该系统的总体设计思路如下:温度传感器 DS18B20 把所测得的温度发送到AT89C51 单片机上,经过 51 单片机处理,将把温度在显示电路上显示,本系统显示器用 4 位共阳 LED 数码管以动态扫描法实现。检测范围-55 摄氏度到 125 摄氏度。按照系统设计功能的要求,确定系统由 3 个模块组成:主控制器、测温电路和显示电路。单片机课程设计4本课题以是 89C51 单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主板电路等组成。系统框图主要由主控制器、单片机复位、时钟振荡、LED 显示、温度传感器组成。数字温度计总体电路结

12、构框图如图 2.3 所示。图 2.3 数字温度计总体电路结构框图图 2.4 数字温度计设计电路图AT89C51主控制器显示电路扫描驱动时钟电路复位电路单片机课程设计52.4 硬件设计电路数字温度计设计电路图如图 2.4 所示,控制器使用单片机 AT89C51,温度计传感器使用 DS18B20,用 LED 实现温度显示。单片机课程设计63 设计语言及软件介绍3.1 汇编语言介绍本 次 设 计 软 件 采 用 汇 编 语 言 进 行 编 程 。 汇 编 语 言 是 一 种 功 能 很 强 的 程 序 设 计 语言 , 也 是 利 用 计 算 机 所 有 硬 件 特 性 并 能 直 接 控 制 硬

13、件 的 语 言 。 汇 编 语 言 , 作 为 一 门语 言 , 对 应 于 高 级 语 言 的 编 译 器 , 需 要 一 个 “汇 编 器 ”来 把 汇 编 语 言 原 文 件 汇 编成 机 器 可 执 行 的 代 码 。 高 级 的 汇 编 器 如 MASM, TASM 等 等 为 我 们 写 汇 编 程 序 提供 了 很 多 类 似 于 高 级 语 言 的 特 征 , 比 如 结 构 化 、 抽 象 等 。 在 这 样 的 环 境 中 编 写 的 汇编 程 序 , 有 很 大 一 部 分 是 面 向 汇 编 器 的 伪 指 令 , 已 经 类 同 于 高 级 语 言 。 现 在 的 汇

14、 编环 境 已 经 如 此 高 级 , 即 使 全 部 用 汇 编 语 言 来 编 写 windows 的 应 用 程 序 也 是 可 行 的 ,但 这 不 是 汇 编 语 言 的 长 处 。 汇 编 语 言 的 长 处 在 于 编 写 高 效 且 需 要 对 机 器 硬 件 精 确 控制 的 程 序 。汇 编 语 言 直 接 同 计 算 机 的 底 层 软 件 甚 至 硬 件 进 行 交 互 , 它 具 有 如 下 一 些 优 点 : ( 1) 能 够 直 接 访 问 与 硬 件 相 关 的 存 储 器 或 I/O 端 口 ; ( 2) 能 够 不 受 编 译 器 的 限 制 , 对 生 成

15、 的 二 进 制 代 码 进 行 完 全 的 控 制 ; ( 3) 能 够 对 关 键 代 码 进 行 更 准 确 的 控 制 , 避 免 因 线 程 共 同 访 问 或 者 硬 件 设 备 共 享引 起 的 死 锁 ; ( 4) 能 够 根 据 特 定 的 应 用 对 代 码 做 最 佳 的 优 化 , 提 高 运 行 速 度 ; ( 5) 能 够 最 大 限 度 地 发 挥 硬 件 的 功 能 。同 时 还 应 该 认 识 到 , 汇 编 语 言 是 一 种 层 次 非 常 低 的 语 言 , 它 仅 仅 高 于 直 接 手 工编 写 二 进 制 的 机 器 指 令 码 , 因 此 不 可

16、 避 免 地 存 在 一 些 缺 点 : ( 1) 编 写 的 代 码 非 常 难 懂 , 不 好 维 护 ; ( 2) 很 容 易 产 生 bug, 难 于 调 试 ; ( 3) 只 能 针 对 特 定 的 体 系 结 构 和 处 理 器 进 行 优 化 。3.2 wave6000 软件介绍本次设计采用 wave6000 进行软件设计。伟福仿真品种多、功能强,和国内外同类高档仿真器功能相比,先进的特点如下:单片机课程设计71主机+POD 组合,通过更换 POD,可以对各种 CPU 进行仿真。对待不同的应用场合,用户往往会选择不同的 CPU,从而需要更换仿真器,伟福仿真软。件 WINDOWS

17、版本支持本公司多种仿真器。支持多类 CPU 仿真。仿真器则采用主机+POD 组合,通过更换不同的 POD,可对各种不同类型的单片机进行仿真。为用户提供了一种灵活的多 CPU 仿真系统。2双平台DOS 版本,WINDOWS 版本。其中 WINDOWS 版本功能强大。中文界面,英文界面可任选,用户源程序的大小不再有任何限制,支持 ASM,C,PLM 语言混合编程,具有项目管理功能,为用户的资源共享,课题重组提供强有力的手段。支持点屏显示,用鼠标左键点一下源程序中的某一变量,即可显示该变量的数值。有丰富的窗口显示方式,多方位,动态地显示仿真的各种过程,使用极为便利。本操作系统一经推出,立即被广大用户

18、所喜爱。3双工作模式a 软件模拟仿真(不要仿真器也能模拟仿真)。b 硬件仿真。4双 CPU 结构,100% 不占用户资源。全空间硬件断点,不受任何条件限制,支持地址、数据、外部信号、事件断点、支持实时断点计数、软件运行时间统计。5双集成环境编辑、编译、下载、调试全部集中在一个环境下。多种仿真器,多类 CPU 仿真全部集成在一个环境下。可仿真 51 系列,196 系列,PIC 系列,飞利蒲公司的552、LPC764 、DALLAS320 ,华邦 438 等 51 增强型 CPU。为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。他们由不同的厂家开发,相互不兼容,使用不同

19、的界面。学习使用都很吃力。伟福 WINDOWS 调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编 Make、 Build 和调试工具并提供一个与第三方编译器的接口。由于风格统一,从而大大节省了您的精力和时间。6强大的逻辑分析仪综合调试功能。逻辑分析仪由交互式软件菜单窗口对系统硬件的逻辑或进序进行同步实时采样,并实时在线调试分析,采集深度 32K(E2000/L),最高时基采样频率达 20M,40 路波形单片机课程设计8的可精确实时反映用户程序运行时的历史时间。系统在使用逻辑分析仪时,除普通的单步运行、键盘断点运行、全速硬件断点运行外,还可实现各种条件

20、组合断点如:数据、地址、外部控制信号、CPU 内部控制信号、程序区间断点等。由于逻辑仪可以直接对程序的执行结果进行分析,因此极大地便利于程序的调试。随着科学技术的发展,单片机通讯方面的运用越来越多。在通讯功能的调试时,如果通讯不正常,查找原因是非常耗时和低效的,您很难搞清楚问题到底在什么地方,是波特率不对,是硬件信道有问题,是通讯协仪有问题,是发方出错还是收方出错。有了逻辑仪,情况则完全不一样,用它可以分别或者同时对发送方、接收方的输入或者输出波形进行记录、存储、对比、测量等各种直观的分析,可以将实际输出通讯报文的波形与源程序相比较,可立即发现问题所在。从而极大地方便了调试。7强大的追踪器功能

21、追踪功能以总线周期为单位,实时记录仿真过程中 CPU 发生的总线事件,其触发条件方式同逻辑分析仪。追踪窗口在仿真停止时可收集显示追踪的 CPU 指令记忆信息,可追踪记忆指令 32K 并通过仿真器的断点、单步、全速运行或各种条件组合断点来完成追踪功能。总线跟踪可以跟踪程序的运行轨迹。可以统计软件运行时间。单片机课程设计94 系统软件设计4.1 概述整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性

22、的功能如测量、计算、显示、通讯等。每一个执行软件是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。用汇编语言完成对设计的软件编程,程序开始首先对温度传感器 DS18B20 进行复位,检测是否正常工作;接着读取温度数据,主机发出 CCH 指令与在线的 DS18B20 联系,接着向 DS18B20 发出温度 A/D 转换44H 指令,再发出温度寄存器的温度值 BEH 指令,并反复调用复位,写入及

23、读取数据子程序,之后再经过数据转换,由数码管显示出来,不断循环。4.2 系统程序设计模块系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序和显示数据刷新子程序等。4.2.1 主程序主程序的主要功能是负责温度的实时显示,读出并处理 DS18B20 的测量温度值。温度测量每 1s 进行一次(程序见 4.3.1 节) 。主程序流程图如图 4.2.1 所示。单片机课程设计10NYYN初始化显示调用子程序初次上电?读出温度值温度计算处理显示数据刷新发温度转换开始命令1s 到?图 4.2.1 主程序流程图4.2.2 读出温度子程序读出温度子程的主要功能是读出 RAM 中的 9 字节

24、。在读出时须进行 CRC 校验,校验有错时不能进行温度数据的改写(程序见 4.3.1 节)。读出温度子程序流程图如图 4.2.2所示。4.2.3 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。当采用 12 位分辨率时,转换时间约为 750 ms。在本程序设计中,采用 1s 显示程序延时法等待转换的完成(程序见4.3.1 节) 。温度转换命令子程序图 4.2.3 所示。单片机课程设计11NNYYDS18B20 复位命令跳过 ROM 命令读取温度命令读取操作,CRC 校验9 字节完结束CRC 校验正确移入温度暂存器图 4.2.2 读出温度子程序流程图4.2.4 计算温度子程序计算温

25、度子程序将 RAM 中读取的值进行 BCD 码的抓换运算,并进行温度值正负的判断(程序见图 4.3.1 节) 。其流程图如图 4.2.4 所示。单片机课程设计12NY开始温度值取补码置“”标志计算小数位温度 BCD 值计算整数位温度 BCD 值结束置“+”标志图 4.2.3 温度转换命令子程序图温度零下图 4.2.4 计算温度子程序流程图4.2.5 显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为 0 时,将符号显示位移入下一位(程序见 4.3.1 节) 。显示数据刷新子程序流程图如图 4.2.5 所示。发 DS18B20 复位命令发跳过 RO

26、M 命令发温度转换开始命令结束单片机课程设计134.3 控制源程序4.3.1 汇编程序;DS18B20 温度计;采用 4 位 LED 共阳显示器显示测温值,显示精度 0.1,测温范围-55+125;用 AT89C51 单片机,12MHz 晶振。;=常数定义=TIMEL EQU 0E0H ;20ms,定时器 0 时间常数TIMEH EQU 0B1HTEMPHEAD EQU 36H;=工作内存定义=BITST DATA 20HYYNN温度数据移入显示寄存器十位数 0?百位数 0?百位数显示数据(不显示符号)十位数显示符号百位数不显示结束图 4.2.5 显示数据刷新子程序流程图 单片机课程设计14T

27、IME1SOK BIT BITST.1TEMPONEOK BIT BITST.2TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29H;= 引脚定义=TEMPDIN BIT P3.7;= 中断向量区=ORG 0000HLJMP STARTORG 00BHLJMP T0IT;=系统初始化=ORG 100HSTART: MOV SP,#60HCLSMEM: MOV R0,#20HMOV R1,#60HCLSMEM1: MOV R0,#00HINC R0DJNZ R1,CLSMEM1MOV TMOD,#00100001B ;定时器 0 工

28、作方式 1(16BIT)MOV TH0,#TIMELMOV TL0,#TIMEH ;20msSJMP INITERROR: NOPLJMP STARTNOPINIT: NOPSETB ET0单片机课程设计15SETB TR0SETB EAMOV PSW,#00HCLR TEMPONEOKLJMP MAIN;= 定时器 0 中断服务程=T0IT: PUSH PSWMOV PSW,#10HMOV TH0,#TIMEHMOV TL0,#TIMELINC R7CJNE R7,#32H,T0IT1MOV R7,#00HSETB TIME1SOK ;1s 定时到标志T0IT1: POP PSWRETI;=

29、 主程序=MAIN: LCALL DISP1 ;调用显示子程序JNB TIME1SOK,MAINCLR TIME1SOK ;测温每 1s 一次JNB TEMPONEOK,MAIN2 ;上电时先温度转换一次LCALL READTEMP1 ;读出温度值子程序LCALL CONVTEMP ;温度 BCD 码计算处理子程序LCALL DISPBCD ;显示区 BCD 码温度值刷新子程序LCALL DISP1 ;消闪烁,显示一次MAIN2: LCALL READTEMP ;温度转换开始SETB TEMPONEOKLJMP MAIN;=子程序区=;对 DS18B20 进行复位单片机课程设计16;=INIT

30、DS1820:SETB TEMPDINNOPNOPCLR TEMPDINMOV R6,#0A0H ;延时 480usDJNZ R6,$MOV R6,#0A0HDJNZ R6,$SETB TEMPDINMOV R6,#32H ;延时 70usDJNZ R6,$MOV R6,#3CHLOOP1820: MOV C,TEMPDINJC INITDS1820OUTDJNZ R6,LOOP1820MOV R6,#064HDJNZ R6,$SJMP INITDS1820RETINITDS1820OUT: SETB TEMPDINRET;=读 DS18B20 的程序,从 DS18B20 中读出一个字节的数据

31、=READDS1820: MOV R7,#08HSETB TEMPDINNOPNOPREADDS1820LOOP: CLR TEMPDINNOPNOP单片机课程设计17NOPSETB TEMPDINMOV R6,#07H ;延时 15usDJNZ R6,$MOV C,TEMPDINMOV R6,#3CH ;延时 120usDJNZ R6,$RRC ASETB TEMPDINDJNZ R7,READDS1820LOOPMOV R6,#3CH ;延时 120 usDJNZ R6,$RET;=写 DS18B20 的程序,从 DS18B20 中写一个字节的数据 =WRITEDS1820: MOV R7

32、,#08HSETB TEMPDINNOPNOPWRITEDS1820LOP: CLR TEMPDINMOV R6,#07H ;延时 15usDJNZ R6,$RRC AMOV TEMPDIN,CMOV R6,#34H ;延时 104usDJNZ R6,$SETB TEMPDINDJNZ R7,WRITEDS1820LOPRET;= 读温度 =READTEMP: LCALL INITDS1820单片机课程设计18MOV A,#0CCHLCALL WRITEDS1820 ;跳过程序存储器 MOV R6,#34H ;延时 104usDJNZ R6,$MOV A,#44HLCALL WRITEDS18

33、20 ;开始 AD 转换MOV R6,#34H ;延时 104usDJNZ R6,$RETREADTEMP1: LCALL INITDS1820MOV A,#0CCHLCALL WRITEDS1820 ;跳过程序存储器MOV R6,#34H ;延时 104usDJNZ R6,$MOV A,#0BEHLCALL WRITEDS1820 ;超高速中间结果存储器MOV R6,#34H ;延时 104usDJNZ R6,$MOV R5,#09HMOV R0,#TEMPHEADMOV B,#00HREADTEMP2: LCALL READDS1820MOV R0,AINC R0READTEMP21: L

34、CALL CRC8CALDJNZ R5,READTEMP2MOV A,BJNZ READTEMPOUTMOV A,TEMPHEAD+0MOV TEMPL,A单片机课程设计19MOV A,TEMPHEAD+1MOV TEMPH,AREADTEMPOUT: RET;=处理温度 BCD 码子程序=CONVTEMP: MOV A,TEMPHANL A,#80HJZ TEMPC1CLR CMOV A,TEMPLCPL AADD A,#01HMOV TEMPL,AMOV A,TEMPH ;-CPL AADDC A,#00HMOV TEMPH,A ; TEMPHC HI=符号位MOV TEMPHC,#0BH

35、SJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;+TEMPC11: MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FH ;乘 0.0625MOV DPTR,#TEMPDOTTABMOVC A,A+DPTRMOV TEMPLC,A ;TEMPLC LOW=小数部分 BCDMOV A,TEMPL ;整数部分ANL A,#0F0HSWAP A单片机课程设计20MOV TEMPL,AMOV A,TEMPHANL A,#0FHSWAP AORL A,TEMPLLCALL HEX2BCD1MOV TEMPL,AANL A,#0F

36、0HSWAP AORL A,TEMPHC ;TEMPHC LOW=十位数 BCDMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP A ;TEMPLC HI=个位数 BCDORL A,TEMPLCMOV TEMPLC,AMOV A,R7JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMPHC ;TEMPLC HI=百位数 BCDANL A,#0FHORL A,R7MOV TEMPHC,ATEMPC12: RET;=小数部分码表=TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H

37、DB 06H,07H,08H,08H,09H,09H;=显示区 BCD 码温度值刷新子程序=单片机课程设计21DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,AMOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,AMOV A,TEMPHCANL A,#0FHMOV 72H,AMOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,AMOV A,TEMPHCANL A,#0F0HCJNE A,#010H,DISPBCD0SJMP DISPBCD2DISPBCD0: MOV A,TEMPHCANL A,#0FHJNZ DISPBCD

38、2MOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,#0AH ;符号位不显示MOV 72H,A ;十位数显示符号DISPBCD2: RET;=显示子程=;显示数据在 70H73H 单元内 ,用 4 位 LED 共阳数码管显示,P0 口输出段码数据,;P3 口做扫描控制 ,每个 LED 数码管亮 1ms 时间再逐位循环。单片机课程设计22DISP1: MOV R1,#70H ;指向显示数据首址MOV R5,#0FEH ;扫描控制字初值PLAY: MOV P0,#0FFHMOV A,R5 ;扫描字放入 AMOV P3,A ;从 P3 口输出MOV A,R1 ;取显示数据到 A

39、MOV DPTR,#TAB ;取段码表地址MOVC A,A+DPTR ;查显示数据对应段码MOV P0,A ;段码放入 P0 口MOV A,R5JB ACC.1,LOOP5 ;小数点处理CLR P0.7LOOP5:LCALL DL1MS ;显示 1msINC R1 ;指向下一地址MOV A,R5 ;扫描控制字放入 AJNB ACC.3,ENDOUT ;ACC.3=0 时一次显示结束RL A ;A 中数据循环左移MOV R5,A ;放回 R5 内AJMP PLAY ;跳回 PLAY 循环ENDOUT: MOV P0,#0FFH ;一次显示结束 ,P0 口复位MOV P3,#0FFH ;P3 口复

40、位RET ;子程序返回TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH;共阳段码表 “0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“不亮 ”“-”DL1MS: MOV R6,#14H ;1ms 延时程序,LED 显示程序DL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RET;=单字节十六进制 BCD=单片机课程设计23HEX2BCD1: MOV B,#064H ;十六进制 -BCDDIV AB ;B=A%100MOV R7,A ;R7=百位数MOV A,#0AHXCH

41、 A,BDIV AB ;B=A%BSWAP AORL A,BRET;=;Calculate CRC-8Values. Uses The CCITT-8Polynomial,Expressed As;X8+X5+X4+1;=CRC8CAL: PUSH ACCMOV R7,#08H ;位字节数CRC8LOOP1: XRL A,B ;计算 CRCRRC A ;Move to CarryMOV A,B ;获取 CRC 最后值JNC CRC8LOOP2 ;如果 DATA 等于 0,则跳过XRL A,#18H ;同步到新的 CRC 值CRC8LOOP2: RRC A ;新的 CRC 到 A 中MOV B,

42、A ;存储新的 CRCPOP ACC ;获得剩余位RR A ;传递下一位PUSH ACC ;保存剩余位DJNZ R7,CRC8LOOP1 ;重复第 8 位POP ACCRETEND单片机课程设计244.4 调试及仿真经软件调试-仿真器 proteus 调试通过,并烧录芯片,得到所要求的设计结果。如图4.4 试验成功。图 4.4 数字温度计仿真图单片机课程设计25结 论本设计利用89C51芯片控制温度传感器DS18B20 ,再辅之以部分外围电路实现对环境温度的测控,性能稳定,精度较高,而且扩展性能很强大。由于DS18B20 支持单总线协议,我们可以将多个DS18B20 可以并联到3 根或2 根线

43、上,CPU 只需一根端口线就能与诸多DS18B20 通信,占用较少的微处理器的端口就可以实现多点测温监控系统。可以加入1302 时钟芯片实现对时间进行显示,加之AT24C16 存储芯片来实现对时间和温度数据的记录,利用MAX232芯片和计算机实现串口通讯,这样就可以方便的统计出特定时间内的需要的时间和温度数据。由于DS18B20的测量精度只有0.5 度,往往很多场合需要更加精确的温度,在所测温度精度不变的基础上必须对数据进行校正。由于DS18B20 是基于带隙结构的数字式温度传感器,PN 结增量电压正比于IC 绝对温度(PTAT),它的测温精度较高,但存在着一定的误差.不过,其误差在时间和外部

44、环境变化的条件下,保持相当高的稳定性。针对这一特性,基于线性插补的数学思想,利用DSP技术,对其进行误差校正补偿.这种误差校正的补偿方法,不需增加硬件电路,计算方法简单,软件费用也很小,既提高了测量精度,又不需增加成本。它充分利用监控计算机的处理能力,在监控计算机上用线性插补的数学方法对其进行误差校正补偿,能轻易地将其提高其精度。经过将近两周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程

45、设计重点就在于软件算法的设计,需要有很巧妙的程序算法,让我体会到了写好一个程序并不是一件简单的事。 从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。单片机课程设计26参考文献1 李群芳.张士军 .单片微型计算机与接口技术.第三版.北京:电子工业出版社,2008.2 李光飞.单片机课程设计实例指导.北京:北京航空航天大学出版社,2004.3 沈德金.单片机接口电路与应用程序实例.北京:北京航天航空大学出版社,1990.4 徐爱钧.彭秀华 .单片高级语言 C51 应用程序设计.北京:电子工业出版社,1998.

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报