首页 电子温度计的设计

电子温度计的设计

举报
开通vip

电子温度计的设计电子温度计的设计 引言 ............................................................. 1 1.概述 ........................................................... 1 1.1 设计的目的及意义 ......................................... 1 1.2 单片机简介 .................................................

电子温度计的设计
电子温度计的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 引言 ............................................................. 1 1.概述 ........................................................... 1 1.1 设计的目的及意义 ......................................... 1 1.2 单片机简介 ............................................... 1 2. 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 论证 ....................................................... 2 3系统元件选择 ................................................... 2 3.1 主控制器选择 .............................................. 2 3.2温度传感器DS18B20 ......................................... 3 3.2.1 DS18B20的特性 ....................................... 3 3.2.2 DS18B20的外形和内部结构 ............................ 4 3.2.3 DS18B20与单片机的接口电路 .......................... 4 3.3 数码管 .................................................. 5 4.系统硬件设计 ................................................... 5 4.1总体设计 .................................................. 5 4.2 各部分电路分析 ............................................ 6 4.1.1 温度采集部分 ......................................... 6 4.2.2复位电路 ............................................. 6 4.2.3晶振电路 ............................................. 6 4.2.4 超限报警电路 ......................................... 7 4.2.5 数据显示数码管电路部分 .............................. 7 I 4.2.6 电源部分 ............................................. 8 5 系统软件部分的设计 ............................................ 8 5.1 温度的采集 ............................................... 9 5.1.1 时序及协议 ........................................... 9 5.1.2 设计流程 ........................................... 11 5.2 温度数据的处理 .......................................... 11 5.3 数值的显示 .............................................. 11 总结 ............................................................ 12 致谢 ............................................................ 13 参考文献: ...................................................... 14 附录 ............................................................ 15 附录一 源程序 ............................................... 15 附录二 系统原理图 ........................................... 26 II 电子温度计的设计 :该设计介绍了DS18B20型数字温度传感器内部结构及工作时序,并提出了以 DS18B20和 AT89C51为核心设计的数字温度计设计方案。实践证明,该数字式温度计的 测温范围为-50~+110?,精度误差在 0.1?以内,具有测温精度高,控制性能良好等特点。 设计还介绍了一种基于51单片机和DS18B20数字温度传感器来进行温度测量的方法,包括温度传感器芯片的选取、单片机与温度传感器接口电路的设计,以及实现温度信息采集 和数据传输的软件设计。该温度计完全适用于一般的应用场合,也可在高低温报警、远距 离多点测温控制等方面进行应用。 数字温度计,单片机,温度传感器 III The Design of Electronic Thermometer : This paper introduced the inner structure and job sequence of the digital temperature sensor DS18B20,and put forward a digital temperature design of the core design according to DS18B20 and AT89C51.Practice testifies that the digital temperature's measurement range is-50~+ 110?,and accuracy error is within 0.1?. It has high measurement temperature accuracy,fine controlling characteristic,and so on.A practical temperature measuring method based on microcontroller and DS18B20 digital temperature sensor was presented.The selection of temperature sensor chip was discussed and the design of hardware interface circuit and related software were dealt with in more details.The temperature completely fits to be used for the average application,also may be used to the field of high or low temperature alarm,controlling of the remote and multiple spot's temperature measurement, and so on. Digital Thermometer , Microcontroller , Temperature sensor IV 在传统的温度测量系统中,一般采用热电偶或铂电阻进行温度测量。在这些电路中, 有这样一些问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 必须解决:为了进行准确的温度测量,必须给铂电阻提供一个良好的恒流 源;由于热电偶出来的信号是模拟信号,所以此信号在送给CPU之前必须先进行A/D转换,然后再送给CPU进行处理;并且热电偶的信号很微弱,只有十几个mA,因此在A/D转换之前通常还需要进行增益放大。因此,采用热电偶和铂电阻进行温度测量,需要考虑 很多问题,构成的系统也比较复杂。DALLAS公司推出的数字式温度传感器DS18B20很好地解决了这样一些问题,DS18B20采用一线接口,只需占用单片机的一个I/O口位,其外围电路也非常简单;并且DS18B20将测得的温度信号转换为数字量输出,可以与单片机 直接相连,而不需进行信号放大和A/D转换,大大简化了电路的设计,因此系统采用了 DS18B20作为温度传感器进行温度采集。 单片机实现的电子温度计的毕业设计是在学习单片机,汇编语言,PROTEUS软件等基础上,综合应用所学的理论知识完成。虽然该设计题目类似于课程设计题目,但因涉及原 理图、硬件的选型、软件语言的选择等的要求,已经符合毕业设计的要求。 设计目的:整个系统以单片机AT89C51为核心,结合数字温度传感器DS18B20数码管显示等,实现温度的示数。 单片机应用系统具有体积小、功耗低、功能强、性能价格比高、易于开发和推广等优 点,在自动化控制、仪器仪表和家用电器等领域中得到了广泛的应用。单片机应用系统设 计主要包含以下两方面 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 : (1)深入研究单片机的芯片功能,掌握与其相关的接口电路,熟练掌握与其相关的软件 语言和设计方法,学习和了解现有系统的设计原理和方法。 (2)学习和掌握传感器技术,掌握电子技术的一般设计原理和方法。 微型计算机可分为普通微型计算机和单片微型计算机,前一种指我们通常所用的PC机,后者正是这次设计所使用的,简称单片机。所谓单片机(Single Chip Micro-computer)就是把中央处理器CPU、随机存储器RAM、只读存储器ROM、定时器/计数器及I/O接口等主要功能部件集成在一片大规模或超大规模集成电路芯片上的微型计算机,即在一个芯片上 实现一台微型计算机的基本功能。近年来随着超大规模集成电路工艺的发展,单片机作为 微型计算机的一个分支而获得飞速发展。由于它具有体积小、价格低、功能强、应用方便、 可靠性高等优点,因而广泛渗透于实时控制、智能报警(如汽车防撞报警器)、仪器仪表、 通讯导航、家用电器等各个领域,从尖端科学到日常用具,单片机几乎无处不在。随着设 备向小型智能化方向的发展和计算机在控制系统中的作用,单片机作为高新技术之一,发 展空间是相当大的。 如果是简单控制对象,只需利用这样的单片机作为控制核心,不需要增加别的外部设 备和扩展某些接口就能实现;对于复杂的系统,单片机的应用和接口扩展也很方便。单片 机系统归纳起来有以下特点: (1) 由于系统规模较小,本身不具有自我开发能力,需借助专用开发工具进行系统的 开发和调试,使得实际应用系统简单实用,成本低,效果好。 (2) 系统配置以满足对象的控制要求为出发点,使得系统有较高的性能价格比。 (3) 应用系统通常将程序驻留在ROM中,无需软硬磁盘作软件载体,使系统不易受到 干扰,可靠性高,使用方便。 (4) 应用系统所用存储器芯片可选用EPROM、EEROM、OTP芯片或利用掩膜形式生产,便于成批开发和应用。 (5) 由于系统小巧玲珑,控制能力强,体积小,便于安装于被控设备之内,大大推动 了机电一体化产品的开发。 (6) 系统是超大规模集成电路,它的工作电压10V左右,功耗小,使得系统具有更好的性价比。 方案一:热电偶的实现办法,需要比较多的外部硬件支持,电路复杂,软件调试复杂, 制作成本高。实现上需要温度的补偿,在满足精度时有一定的难度。 方案二:智能传感器DS18B20作为检测元件,测温范围-55?~125?,分辨率最大可 达0.0625?。DS18B20可以直接读出被测温度值。而且采用3线制与单片机相连,减少了外部硬件电路,具有低成本和易使用的特点。LED数码管作为显示器件,通过89C51 构建最小系统。 综上所述,权衡各方面的利弊,我采用方案二。 AT89C51 (1)适应电压范围更宽,电压范围:3.0~5.5V,寄生电源方式下可由数据线供。 (2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理 器与DS18B20的双向通讯。 (3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点 测温。 (4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三 极管的集成电路内。 (5)温范围-55?~+125?,在-10~+85?时精度为?0.5?。 (6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5?、0.25?、0.125?和0.0625?,可实现高精度测温。 (7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。 (8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 (9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如图3-1: 引脚定义: (1) DQ为数字信号输入/输出端; (2) GND为电源地; (3) VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 内部结构如下图 DS18B20内部结构图 确保DS18B20在其变换期得到足够的电源电流,在I/O线上提供一强的上拉。连接图如下图 而此处采用外部电源供电方式,即在DQ与单片机接口处必须填加上拉电阻,该电阻一般为4.7K。 常见的LED显示具有清晰明亮的特点。是显示接口也是绝大多数单片机应用系统必备 的部件之一。 发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。它由若干个发 光二极管按一定的规律排列而成。当某一个发光二极管导通时,相应的一个点或一笔画被 点亮,控制不同组合的二极管导通,就能显出各种字符。 显示器的结构常用的7段显示器的结构如图所示,发光二极管的阳极连在一起的称为 共阳极显示器,阴极连在一起的成为共阴显示器。1位显示器由8个发光二极管组成,其中7个发光二极管a~g控制7个笔画的亮或暗,另一个控制一个小数点的亮和暗,这种 笔画的七段显示器能显示的字符较少,字符的形状有些失真,但失控简单,使用方便。 该系统是以AT89C51芯片为核心,通过检测DS18B20的工作与否,然后将其内部的数字量温度读到单片机,通过相应的数码管显示,当温度超出设定的温度时用蜂鸣器报警。 其外围电路包括复位电路、晶振电路。 系统框图如下图: 数据显示部分 控 温度采集部分 制 超限报警 复位电路 器 晶振电路 系统框图 a).温度采集电路的功能是采集传感器周围的温度,并将其转换成数字信号输出 b). 电路原理图 a).电路的功能是完成对单片机的复位,具有上电复位功能和按键复位功能。 b).电路原理图 单片机的复位就是对单片机的初始化,就是让程序重新开始执行,也就是说让单片 机的PC寄存器初始化为0000H。一般的初始化是指进入程序的正常初始化,但是当程序 出错或者操作错误使系统处于死锁状态时,为了摆脱困境也需要按复位键使系统重新启 动。复位方式有自动复位和手动。我们在本设计中采用自动复位的上电复位方式。晶振为 12MHZ。复位电路如图 a).电路功能是产生稳定的时钟脉冲供单片机工作, b).电路原理图 AT89C5l中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐 振器一起构成自激振荡器。 外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振 荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振 荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体, 我们推荐电容使用30pF?10pF,而如使用陶瓷谐振器建议选择40pF?10F。用户也可以采用外部时钟。采用外部时钟的电路如下图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。 报警电路设置的原因是,该电子温度计的限定范围为0—100度。当超出这个范围时 就要求有报警指示。该处采用PNP三极管9015进行驱动蜂鸣器,三极管工作在开关状态。 原理图如下图 a). b).因为要显示0?~100?,分辨率0.1?,该部分至少有四个数码管来显示数值。单片 机的资源有限,在这里只能采用动态扫描的方法。在该接法中,单片机使用的口线为P0 口,作为输出口,需要上拉,图中的电阻均为10K。数码管采用共阳管。 电路接口电路如下图 a)部分的功能是使单 b)变压器变压输出,把高电压变成低电压,输出的电压值是正弦图形。桥堆全桥整流后 输出的电压是波浪一样的图形,就是把正弦的负半周转到正半周,C1整流后输出一个衰减 的波浪图形,因为C1充电了,7805是稳压模块,输出一个恒定的5V电压,C3和C2滤出杂散波和公频,7805的输出端不能高于输入端,所以加二极管保护7805。原理图如下 电源原理图 软件部分主要有三部分构成:(1) 温度的采集;(2) 温度数据的处理(3) 数值的显示。 该部分设计时主要考虑DSl8B20工作过程及时序 DSl8B20工作过程中的协议如下: 初始化ROM操作命令存储器操作命令处理数据 (1) 初始化 单总线上的所有处理均从初始化开始 (2) ROM操作品令 总线主机检测到DSl820的存在便可以发出ROM操作命令之一 (3) 存储器操作命令 指令 代码 Write Scratchpad(写暂存存储器) [4EH] Read Scratchpad(读暂存存储器) [BEH] Copy Scratchpad(复制暂存存储器) [48H] Convert Temperature(温度变换) [44H] Recall EPROM(重新调出) [B8H] Read Power supply(读电源) [B4H] (4) 时 序 主机使用时间隙(time slots)来读写DSl8B20的数据位和写命令字的位 a).初始化 时序见下图.主机总线发送一复位脉冲(最短为480us的低电平信号)接着在释放总线 并进入接收状态,DSl8B20在检测到总线的上升沿之后等待15-60us,接着DS18B20发出 存在脉冲(低电平持续60-240 us)如图中虚线所示 : 初始化时序 b).写时间隙 当主机总线从高拉至低电平时就产生写时间隙,从开始15us之内应将所需写的位送到总线上DSl8B20,在15-60us间对总线采样若低电平写入的位是0见下图4-2左;若高电平写入的位是1见下图4-2右,连续写2位间的间隙应大于1us 写时隙图 c).读时间隙 见下图4-3主机总线从高拉至低电平时总线只须保持低电平l5μs之后在t1时刻将总线拉高产生读时间隙读时间隙在t1时刻后t2时刻前有效tz距to为15μs也就是说tz时刻前主机必须完成读位并在to后的60μs-120μs内释放总线 读时隙图 该设计软件部分的灵魂就在于DS18B20的使用:温度读取,需严格时序。该模块的设 计主程序流程图如下图;温度转换子程序下图: 初始化 开始 跳过ROM匹配 初始化温度 写DS18B20 调用温度子程序 发出温度转换指令 将读出的温度格式化,并 转化成BCD码 跳过ROM匹配 显示温度 读DS18B20 主程序框图 温度转换子程序 该部分是在将温度传感器的数字量读入单片机后的处理内容。主要包括正负号的处 理、负数、正数、小数点的处理以及温度的比较,最终决定是否报警。 P0口接数码管的七段显示及小数点,P2的前四个口接数码管的公共端,作为片选信 号。这里采用动态扫描的方式,在软件仿真时比较容易通过,但硬件焊接后难以出结果。 本次毕业设计是对以往知识的综合应用,不但了解了AT89C51型单片机及其相关芯片 的系统结构、工作原理,设计是按照单片机应用系统的开发步骤,开发硬件电路和软件开 发的基本思路和方法进行的。 硬件系统的设计完成后,就要在其基础上设计系统所需要的软件系统,系统功能是软 硬件共同实现的,两者缺一不可。由于软件的可伸缩性,最终实现的系统功能可强可弱, 差别很大。因此,在硬件结构确定后,软件是系统功能强弱的决定性因素。对于单片机如 果没有软件系统,系统功能无法实现。所以软件系统的正确与否是实现系统功能的关键。 软件系统不仅要正确还要能准确实现系统的功能要求。 本设计的软件系统采用模块化的设计思想来实现。模块化设计是将一个大的程序按功 能分割成一些小的模块,各个模块相对独立、结构清晰、接口简单。利用这种模块化设计 有许多优点;减少了程序设计的复杂性;提高了元件的可靠性;缩短了开发周期;避免程 序开发的重复劳动;易于维护和功能扩展。本设计的软件功能模块分为:温度采集,温度 数据处理,主程序模块,延时子程序等。 在整个系统设计过程中,严格按照硬件电路的设计规程,各个步骤都按 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 有条不紊 的进行,做到了设计工作分配合理,进程安排得当,文档资料充分,使整个系统的设计获 得了圆满的成功。总体来说这次所设计的电子温度计符合设计要求,能够达到预期的目标。 同时我也看到,由于时间和技术上的一些原因,系统中还有很多需要完善的地方,有待于 以后工作中改进。 在本设计即将完成之际,首先我要对导师致意和衷心的感谢!在整个毕业设计的过程 中,翻阅了大量有关论文的书籍和相关资料,一点一点的分类、整理,丰富了自己的知识, 也拓宽了视野。从整理资料到形成论文的过程不是件容易的事情。在撰写论文中,也遇到 了很多不懂的知识点和失误,但是都得到了解决。 毕业设计的过程是一个自我总结,自我学习的过程,但也和老师、同学的帮助分不开 的。最后,再次感谢本次毕业设计的导师,使我完成了这次毕业设计。感谢各位同学对我 的帮助,只要我们不断的努力,不断的学习,我们的前途就是美好的! : [1]马忠梅等.单片机的C语言应用程序设计(第三版).北京航空航天大学出版 社.2004. [2]先锋工作室.单片机程序设计实例.清华大学出版社.2003. [3]万光毅等.单片机实验与实践教程. 北京航空航天大学出版社.2004. [4]李叶紫等.MCS-51单片机应用教程. 清华大学出版社.2004. [5]潘永雄著.新编单片机原理与应用.西安电子科技大学出版社.2005. [6]汪德彪著.MCS-51单片机原理及接口技术.电子工业出版社.2003. [7]汪建校、杨建国等.51系列单片机及C51程序设计.科学出版社.2002. [8]何宏等、单片机原理与接口技术.国防工业出版社.2006. #include //头函数 #include #define uchar unsigned char #define uint unsigned int uchar code LED_CODE[]={ 0xc0,0xf9,0xa4,0xb0,0x99, //0--4 0x92,0x82,0xf8,0x80,0x90, //5--9 0xbf}; // '-' uchar code LED_POINT_CODE[]={ 0x40,0x79,0x24,0x30,0x19, //0.--4. 0x12,0x02,0x78,0x00,0x10}; //5.--9. uchar Temp_H,Temp_L; uchar disp_ds18b20[6]; uchar num; uchar alarm_num; char temp_max; char temp_min; sbit DQ=P3^7; sbit SPEAK = P1^0; sbit motor=P1^1; sbit led=P1^2; bit alarm_flag; void display(void); float ds18b20_float_date(uchar templ); void disp_float(float date); /*********初始化*******/ void init(void) { num=0; alarm_flag=0; alarm_num=0; temp_max=99; //设置温度上限值 temp_min=0; //设置温度下限值 TMOD=0x01; //定时器T0工作于方式1 TH0=(65536-50000)/256; //定时器T0赋初值 TL0=(65536-50000)%256; EA=1; //开总允许中断 ET0=1; //开定时器T0中断 TR0=1; //启动定时器T0 } /******1us的延时(12M)延时子程序*******/ void delay_us(uchar x) //when crystal is 12M ,a*2+5 us , { // 子程序调用要5us,while 就等于DJNZ指令 while (--x); //x取值1~255; } /******1ms的延时(12M)延时子程序*******/ void delay_ms(uchar x) { uchar i,j; for (i=0; i>= 1; //右移一位 } } uchar read1820(void) { uchar i; uchar temp=0; DQ = 1; _nop_(); //准备读; for(i=0;i<8;i++) { temp >>= 1; //低位先发; DQ = 0; //读开始脉冲; _nop_(); //延时; DQ = 1; //必须写1,否则读出来的将是不预期的数据; delay_us(2); //延时9us; _nop_(); if(DQ) //在12us处读取数据; temp |= 0x80; delay_us(30); //延时65us; DQ = 1; //拉高电平 _nop_(); //恢复总线; } return temp; } void Rdtemp(void) { uchar k,tmp_int; uint tp; float m=1.0, tmp_float; init1820(); //初始化DS1820 display(); write1820(0xcc); //跳过ROM //delay_ms(2); write1820(0x44); //温度转换命令 // _nop_(); // DQ=1; // delay_ms(250); //多个1820时要延时,单个就不用 // delay_ms(250); // delay_ms(250); init1820(); //初始化DS1820 display(); write1820(0xcc); //跳过ROM write1820(0xbe); //读占存器命令 display(); Temp_L=read1820(); //温度值低位字节(其中低4位为二进制的小数部分) Temp_H=read1820(); //高位值高位字节(其中5位为符号位) init1820(); display(); tp=Temp_H*256+Temp_L; /************ 正负号处理 **********/ num=0; k=Temp_H>>4; if(k>0) { tp=((~tp)+1); Temp_L=tp%256; disp_ds18b20[num++]=LED_CODE[10]; } /************ 正数处理 *************/ display(); tp=tp>>4; tmp_int=(tp&0x7f); if(tmp_int<10) disp_ds18b20[num++]=LED_POINT_CODE[tmp_int]; else if(tmp_int<100) { disp_ds18b20[num++]=LED_CODE[(tmp_int/10)]; disp_ds18b20[num++]=LED_POINT_CODE[(tmp_int%10)]; } else { disp_ds18b20[num++]=LED_CODE[(tmp_int/100)]; disp_ds18b20[num++]=LED_CODE[((tmp_int%100)/10)]; disp_ds18b20[num++]=LED_POINT_CODE[((tmp_int%100)%10)]; } /************ 负数处理 **************/ display(); tmp_float=ds18b20_float_date(Temp_L); display(); disp_float(tmp_float); if(num>=6) num=0; } float ds18b20_float_date(uchar tmpl) { uchar i,a,b,k; float m=1.0,p; p=0.0; b=0; k=(tmpl&0x0f); if( k==0 ) return (p); for(i=0;i<4;i++) { a=(k&0x01); b=(a|b); b=(b<<1); k=(k>>1); } b=(b>>1); p=((m/b)/2); return (p); } /**********温度值小数显示部分处理函数**************/ void disp_float(float date) { uchar g,s; uint b,q; g=(date*10); //个分位 disp_ds18b20[num++]=LED_CODE[g]; //送个分位 s=date*100; s=s%10; // 十分位 disp_ds18b20[num++]=LED_CODE[s]; //送十分位 b=date*1000; b=(b%100)%10; //百分位 disp_ds18b20[num++]=LED_CODE[b]; //送百分位 q=date*10000; q=((q%1000)%100)%10; //千分位 disp_ds18b20[num++]=LED_CODE[q]; //送千分位 } /**********显示函数**************/ void display(void) { uchar i; P2=0x01; //P2口赋初值控制数码管的位 for(i=0;i<6;i++) { P0=disp_ds18b20[i]; //数码管段显示 delay_ms(1); //1ms延时 P2=(P2<<1); //数码管位控制 } } /**********温度比较函数******************/ void Compare_Temp(char temp_min,char temp_max) //比较温度 { uchar tl_temp; //定义变量 uchar y; uint tp; init1820(); //初始化DS1820 display(); write1820(0xcc); //skip rom命令 display(); write1820(0x44); //convert T 命令 display(); init1820(); //初始化DS1820 display(); write1820(0xcc); display(); write1820(0xbe); display(); Temp_L=read1820(); //温度值低位字节(其中低4位为二进制的小数部分) Temp_H=read1820(); //高位值高位字节(其中5位为符号位) init1820(); //初始化DS1820 display(); if(( Temp_H&0xf8)!=0x00) //温度为负温度时处理 { Temp_L=~Temp_L; //低8位取反 Temp_H=~Temp_H; //高8位取反 tl_temp= Temp_L+1; //低8位加1 Temp_L=tl_temp; //计算后重新存入数组 if(tl_temp>255) Temp_H++; //如果低8位大于255,向高8位进 1 tp=Temp_H*256+Temp_L; //将转换的温度放入到tp中间变量中 y=tp>>4; //右移4位,除去小数部分 if(y>((~temp_min)+1)) //与设定的警戒下限值比较 alarm_flag=1; //低于下限值 else alarm_flag=0; //在下限值之上 } else // 温度为正温度时处理 { tp=Temp_H*256+Temp_L; //读取的温度为正温度 tp=tp>>4; //除去小数部分 y=(char)tp; //转为符号型 if(y>temp_max) //比较与设定的上限警戒值 alarm_flag=1; // 大于上限警戒值 else alarm_flag=0; //小于上限警戒值 } } /**********主函数*************/ void main(void) { uchar i; init(); //初始化 while(1) { Rdtemp(); //调读取温度函数 display(); Compare_Temp(temp_min,temp_max); //比较温度函数 // delay_ms(200); //延时大约 200ms for(i=0;i<30;i++) display(); //显示函数 } } /*****定时器T0中断子程序*******/ void timer0() interrupt 1 { TH0=(65536-50000)/256; //定时器T0赋初值 TL0=(65536-50000)%256; //alarm_num++; if((alarm_flag==1))// && (alarm_num%2==0)) { SPEAK=~SPEAK /*产生方波,驱动扬声器发出警报声音*/; motor=0 /*驱动电机工作*/; led=0 /*超出范围时,警报且红灯闪烁*/; } else { SPEAK=0; motor=1; led=1; } if(alarm_num>250) alarm_num=0; } 附录二 系统原理图 系统原理图包括两部分:整体原理图和电源部分原理图。系统原理图如图A Bell P1.0LS19015Q1 DP4.7KP0.77gRes1P0.63fR4P0.52e89C51P0.44dP0.35P1.7RXDc810P0.28P1.6TXDbA711VCCP0.196P1.5ALE/PaA630P0.0101P2.310uFP1.4PSEN529D4Cap Pol1P1.3WR416C1P1.2RD317P1.1DP2P0.77P1.0P2.7g128P0.63P2.6f27P0.52T1P2.5e1526P0.44T0P2.4d1425P0.35INT1P2.3c1324P0.28INT0P2.2bA1223P0.196P2.1aA221KP0.0101P2.2P2.021Res1D3RESET30pF9R1P0.7324.7KP0.6DPC433RERes1VCCP0.77X2P0.5g1834R3P0.63P0.4f35P0.52P0.3e30pF36SIP-3P0.44X1P0.2d1937SW-PBP0.35P0.13cC338RESETVCCP0.28EA/VPP0.02bA3139DQP0.1961aAGNDP0.0101P2.1U1P1.0Q5D2 100DPRes1P0.77gR2P2.3P0.63fP2.2P052eP2.1P0.44dP2.0P0.35cVCCREP0.2821bA12MHzP0.7P0.196aAP0.6P0.0101P2.0XTALP0.5YP0.4D1P0.3P0.2P0.1P0.0 VCC 图A:系统原理图 电源部分原理图如图B: 图B:电源部分原理图
本文档为【电子温度计的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_594905
暂无简介~
格式:doc
大小:176KB
软件:Word
页数:32
分类:工学
上传时间:2017-09-02
浏览量:26