基于.AT89S52单片机的数字温度计设计.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
word资料下载可编辑 专业技术资料 基于AT89S52单片机的数字温度计设计 一 引言 在生活和生产中,经常要用到一些测温设备,但是传统的测温设备具有制作成本高、硬件电、和软件设计复杂等缺点。基于AT89S52单片机的数字温度计具有制作简单、成本低、读数方便、测温范围广和测温准确等优点,应用前景广阔。 二 项目要求 基于AT89S52单片机的数字温度计设计具体要求如下: (1)温度值用LED显示。 (2)围为-30℃~100℃,且测量误差不得大于 (3)成本的体积、质量要尽可能小。 三 系统设计 1 框图设计 根据设计要求分析,基于AT89S52单片机的数字温度计设计由AT89S52单片机控制器、电源、显示电路、温度传感器、复位电路和时钟电路组成,系统框图如图1所示。电源给整个电路供电,显示电路显示温度值,时钟电路为AT89S52提供时钟频率。传感器采用美国DALLAS半导体公司生产的一种智能温度传感器DS18B20,其测温范围为-55~125℃,最高分辨率可达0.0625℃ 电源 电源 复位电路 时钟电路 AT89S52 控制器 显示电路 DS18B20 图一 基于AT89S52单片机的数字温度计系统框图 2 知识点 本项目需要通过学习和查阅资料,掌握和了解如下知识: +5V电源原理及设计。 单片机复位电路工作原理及设计。 单片机晶振电路工作原理及设计。 按键电路的设计。 数码管的特性及使用。 DS18B20的特性及使用。 74LS07的特性及使用。 AT89S52单片机引脚。 单片机C语言程序设计。 四 硬件设计 1 电路原理图 控制器使用单片机AT89S52,测温传感器使用DS18B20,用4位共阳极LED数码管以动态扫描法实现温度显示,电路图可见仿真图所示。 2 元件清单 基于AT89S52单片机的数字温度计元件清单如表1所示。 表1 基于AT89S52单片机的数字温度计元件清单 元件名称 型号 数量∕个 用途 单片机 AT89S52 1 控制核心 晶振 12MHZ 1 晶振电路 电容 30Pf 2 晶振电路 电解电容 10μF∕10V 1 复位电路 电阻 1KΩ 5 复位电路 上拉电阻 集成块 74LS07 1 显示驱动 集成块 DS18B20 1 显示驱动 集成块 DS18B20 1 测温电路 电阻 4.7 KΩ 1 复位电路 按键 +5V∕0.5A 1 复位电路 电源 4位 1 提供+5V 七段4位 1 显示电路 数码管 电阻 4.7 KΩ 1 测温电路 五 软件设计 1 程序流程图 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,温度测试每1S进行一次。这样可以在1S之内测量一次被测温度,其程序流程图如图3所示。 读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写,其程序流程图如图4所示。 初始化 初始化 调用显示子程序 1S到? 读出温度值温度计算处理显示数据刷新 发温度转换开始命令 初次上电 N Y Y N 发DS18B20复位命令 发跳过ROM命令 发读取温度命令 读取操作,CRC校验 9字节完? CRC校验正? 移入温度暂存器 结束 图3 主程序流程图 图4 读温度流程图 温度转换命令子程序主要是发温度转换开始命令,采用12位分辨率转换时间约为750ms。程序设计中采用1s显示程序延时等待转换的完成。计算温度子程序将RAM中读取值进行BCD码地转换运算,并进行温度值正负的判定,显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。 2 程序清单 基于AT89S52单片机的数字温度计程序清单如下: #include reg51.h #include intrins.h //延时函数用 #define Disdata P1 //段码输出口 #define discan P3 //扫描口 #define uchar unsigned char #define uint unsigned int sbit DQ=P3^7; //温度输入口 sbit DIN=P1^7; //LED小数点控制 uint h; uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//温度小数部分用查表法 uchar code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0

您可能关注的文档

文档评论(0)

xfnzn + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档