基于单片机的温度报警器设计(方案)-毕业论文.doc
《基于单片机的温度报警器设计(方案)-毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的温度报警器设计(方案)-毕业论文.doc(29页珍藏版)》请在咨信网上搜索。
天津滨海职业学院全日制高等职业教育 毕业实践环节毕业设计(典型性项目)说明书 基于单片机的温度报警器设计(方案) 作者:李佳璐 院系:天津滨海职业学院机电工程系 专业:电子信息工程技术 年级:2012级 学号:20120012113 指导教师:××× 时间:2015年4月 主要内容简介 在农业生产中,温室的温度很难把握。往往超过或低于允许值,致使大批良种的报废,耽误农时,影响生产。这就需要设计一个温度报警器,在环境温度超过一定范围时报警,来提醒使用者。 基于以上背景设计基于单片机的温度报警器。 本设计采用ATMEL公司的ATmega16单片机为硬件核心系统,添加数码管、按键和温度传感器芯片,组成完整的硬件系统。采用C语言为编程语言,进行系统的软件系统开发。通过本系统硬件、软件部分设计完成如下目标: 1、完成系统的硬件部分设计,硬件部分包括电源、显示、按键、温度接口、报警触发等部分设计。在此基础上保证软件功能实现。 2、温度报警器可以通过按键方便设定报警范围。 3、温度报警器通过数码管显示实时显示测量的环境温度。当环境温度温度超出设定范围时,启动报警。 本设计硬件制作方便,通过C语言程序实现软件设计,可移植性强,能够精准的对环境进行温度测量并显示,实用性强。 关键字:M16 ;18B20 ;温度控制;C语言 目 录 一、绪论 4 (一)研究背景与现状 4 (二)设计内容及要求 4 二、关键技术简介 5 三、M16单片机概述 6 (一)ATmega16 的主要性能 6 (二)M16的基本组成及引脚 6 (三)M16的引脚基本功能 6 (四)外部晶体振荡器 8 四、温度传感器18B20介绍 8 (一)温度传感器18B20的特性 8 (二)温度传感器18B20的基本组成,见下图4所示。 9 (三)温度传感器18B20的测温操作 10 五、硬件设计 12 (一)硬件电路设计 12 (二)电源和复位电路设计 13 (三) 输入、输出部分设计 14 (四)驱动部分设计 15 六、软件设计 15 (一)显示部分设计 15 (二)按键检测设计 21 (三)1-wire 是一种通讯协议实现 23 (四)软件总体设计 28 一、绪论 (一)研究背景与现状 1.在农业生产中,温室的温度很难把握。往往超过或低于允许值,致使大批良种的报废,耽误农时,影响生产。日常生活中,经常要用到高功率电器,但是高功率电器的发热量大,有时候可能引起火灾。等等之类的情况,这就需要一个温度报警器在环境温度超过一定范围时报警,来提醒使用者。经过试用和改进,温度报警器可适用于变压器超温报警、环境温度监测、配电柜温度监测及风扇自动控制、机房、仓库、鱼塘、蔬菜大棚温度监测及报警等等。 2.温度控制器目前普遍采用的几种方法: 方案一:采用单总线的DS1820的温度传感器的控制仪。 方案二:采用集温湿度传感器于一体的SHT11芯片为主要芯片的控制仪。 虽然SHT11是瑞士Sensiri-on公司生产的具有二线串行接口的单片全校准数字式新型相对湿度和温度传感器,可用来测量相对湿度、温度和露点等参数,具有数字式输出、免调试、免标定、免外围电路及全互换的特点。但是本设计只对温度控制,设计原理简单,基于经济效益的考虑此次选择传统的模拟式温度度传感器既方案一。 (二)设计内容及要求 1.本温度报警器为超温报警,及高于选定的高温或低于选定的低温均预报警,也就是说温度超过某个选定的温度范围则报警,温度在这个范围内则不报警。外观如图1所示: . 图1 设计外观图 2.使用方法: 打开电源开关然后按如下操作: 打开电源开关然后按如下操作: (1)下限设置:按下“SET”,进入温度上限设置,数字闪烁,同时左第1位最上面显示一横,表示上限设置,按一次“↑”温度值加0.1摄氏度,按一次“↓”,温度值减小0.1摄氏度,设置好上限; 这时再按“SET”一次,进入下限温度设置,数字闪烁,同时左第1位最下面显示一横,表示是下限设置,按一次“↑”温度值加0.1摄氏度,按一次↓,温度值减小0.1摄氏度,设置好下限,再按一次“SET”,退出上下限设置,并把设置好的上下限参数保存到EEPROM中 (2)负载载控制开关控制: 有时不需要控制负载,就是待机状态,在工作状态下,按下"WAIT",下面的数码管会关显示,什么也不显示,表示不控制负载,这时再按下WAIT,又回到工作状态,设置状态也保存EEPROM中,交替显示所设定的温度上下限值。 二、关键技术简介 1. 单片机的技术的背景状况 单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板,但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别。只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性。 2.目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。 三、M16单片机概述 (一)ATmega16 的主要性能 1、先进的、高性能的的8位CPU内核结构: 1)耗先进的RISC (精简指令集计算机)结构; 2)高速度,低功耗的 新8 位中央处理器; 2、非易失性程序和数据存储器: 3、丰富的核外功能资源电路:完善的串、并、及JTAG(联合测试行动组) 接口。 4、电压范围宽、功率消耗低、时钟频率灵活。 5、极高的性价比和适于高级语言开发; (二)M16的基本组成及引脚 M16的基本组成及引脚配置,见下图2所示。 图2 M16的组成结构图 (三)M16的引脚基本功能 1、VCC:数字电路电源(+5V) 2、GND:地(0V) 3、端口A( PA7„PA0) 端口A 为8 位双向I/O 口,也是A/D 转换器的模拟输入端。具有可编程的内部上拉电阻。其输出缓冲器可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。 4、端口B(PB7..PB0) 为8位双向I/O 口,具有可编程的内部上拉电阻。 作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。 5、端口C(PC7..PC0) 为8 位双向I/O 口,具有可编程的内部上拉电阻。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C 也处于高阻状态 6、端口D(PD7..PD0) 为8位双向I/O 口,具有可编程的内部上拉电阻。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。 7、RESET: 复位输入引脚。 8、XTAL1: 反相振荡放大器与片内时钟操作电路的输入端。 9、XTAL2: 反相振荡放大器的输出端 9、XTAL2: 反相振荡放大器的输出端。 10、AVCC:端口A与A/D转换器的电源。 11、AREF:A/D 的模拟基准电压输入引脚。 (1)ATmega16所有的I/O端口及外围设备都被放置于I/O专用空间。所有的I/O寄存器都可以通过IN 与OUT指令来访问,在32个通用工作寄存器和I/O 之间传输数据。 地址为0x00 - 0x1F 的前32个I/O 寄存器还可用SBI 和CBI 指令直接进行位寻址,而SBIS 和SBIC 则用来检查某一位的值。 (2)M16系统内可编程的Flash程序存储器:ATmega16具有16K字节(8K字0000-1FFF)的在线编程Flash,用于存放程序指令代码。其结构具有两个主要的存储器空间:应用程序存储空间和引导程序存储空间。两个空间通过对应锁定位来选择,引导区程序可用SPM指令再应用修改 (四) 外部晶体振荡器 外部晶体振荡器接线图,如下图3所示。 图3 外部晶体振荡器 四、温度传感器18B20介绍 (一)温度传感器18B20的特性 1.DS18B20 可以程序设定 9~12 位分辨率可调,适用电压为 3V~5V,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在 EEPROM 中,掉电后依然保存。DS18B20 的性能是新一代产品中最好的!性能价格比也非常出色! DS1822 与 DS18B20 软件兼容,是 DS18B20 的简化版本。省略了存储用户定义报警温度、分辨率参数的 EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。TO-92、SOIC 及 CSP 封装可选,经济型版本无 EEPROM 合自己的经济的测温系统。 2.继“一线总线”的早期产品后,DS1820 开辟了温度传感器技术的新概念。DS18B20 和 DS1822 使电压、 特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。 (二)温度传感器18B20的基本组成,见下图4所示。 图4 温度传感器 DS1820 数字温度计以 9 位数字量的形式反映器件的温度值。 DS1820 通过一个单线接口发送或接收信息,因此在中央微处理器和 DS1820 之间仅需一条连接线(加上 地线)。用于读写和温度转换的电源可以从数据线本身获得,无需外部电源。 因为每个 DS1820 都有一个独特的片序列号,所以多只 DS1820 可以同时连在一根单线总线上,这样就 可以把温度传感器放在许多不同的地方。这一特性在 HVAC 环境控制、探测建筑物、仪器或机器的温度以及 过程监测和控制等方面非常有用。 1.引脚说明 16 脚 SSOP PR35 符号 说明 8 2 DQ 数据输入/输出脚。对单线操作:漏极开路 7 3 VDD 可选的 VDD 引脚。 DS1820S(16 脚 SSOP):所有上表中没提到的脚均接地 DS1820 的主要部件模块 图5 DS1820 的主要部件模块 图5 的方框图示出了 DS1820 的主要部件。DS1820 有三个主要数字部件:1)64 位激光 ROM,2)温度传 感器,3)非易失性温度报警触发器 TH 和 TL。器件用如下方式从单线通讯线上汲取能量:在信号线处于高 电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再 给寄生电源(电容)充电。DS1820 也可用外部 5V 电源供电。 (三)温度传感器18B20的测温操作 DS1820 通过一种片上温度测量技术来测量温度。图6示出了温度测量电路的方框图。 图6 温度测量电路图 DS1820 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一 个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55℃的一个值。如果计数器 在门周期结束前到达 0,则温度寄存器(同样被预置到-55℃)的值增加,表明所测温度大于-55℃。 同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振 荡器的抛物线特性。然后计数器又开始计数直到 0,如果门周期仍未结束,将重复这一过程。 斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过改变计数 器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度 下计数器的值和每一度的计数值。 DS1820 内部对此计算的结果可提供 0.5℃的分辨力。温度以16bit 带符号位扩展的二进制补码形式读 出,表 1 给出了温度值和输出数据的关系。数据通过单线接口以串行方式传输。DS1820 测温范围-55℃~+125℃,以 0.5℃递增。如用于华氏温度,必须要用一个转换因子查找表。 意 DS1820 内温度表示值为 1/2℃LSB。 最高有效(符号)位被复制充满存储器中两字节温度寄存器的高 MSB 位,由这种“符号位扩展”产生出了示于表 1 的 16bit 温度读数。可用下述方法获得更高的分辨力。首先,读取温度值,将 0.5℃位(LSB)从读取的值中截去,这个值 叫做 TEMP_READ。然后读取计数器中剩余的值,这个值是门周期结束后保留下来的值(COUNT_REMAIN)。最 后,我们用到在这个温度下每度的计数值(COUNT_PER_C)。用户可以用下面的公式计算实际温度值: TEMPEATURE=TEMP_READ-0.25=(COUNT_PER_C-COUNT_REMAIN)/COUNT_PER_C DS18B20的使用: CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。 DS18B20常用控制命令,如表4-1所示。 表1 DS18B20 控制命令表 指 令 约定代码 操 作 说 明 温度转换 44H 启动DS18B20进行温度转换 读暂存器 BEH 读暂存器9个字节内容 写暂存器 4EH 将数据写入暂存器的TH、TL字节 复制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中 重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH字节 读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU 五、硬件设计 (一)硬件电路设计 系统设计包括硬件系统、软件系统两部分组成,系统硬件电路如图5-1所示。硬件系统设计由电源、复位、按键、传感器接口、报警驱动、显示等部分组成。它们可以分成三类: 1)电源、复位:复位、按键部分 2)输入输出:按键、显示部分 3)驱动:传感器接口、报警驱动部分 图7 系统硬件原理图(1) (二)电源和复位电路设计 系统采用交流供电,系统经过外接12V交流变压器,将市电变成12V交流电。系统经过全波整流将交流电变成直流电,一部分整流后直流电通过直流稳压芯片7812变成平滑的12V直流电,提供给报警器接口。另一部分整流后直流电通过直流稳压芯片7805变成平滑的直流电,提供给系统其他部分。 单片机常见的复位电路有:上电复位、手动复位。本设计采用上电复位。 图7 系统软件原理流程图(2) (三) 输入、输出部分设计 输入、输出部分是单片机的信息传输通道,本部分实现按键的读取(输入)、温度值的显示(输出)。 传统的按键设计,由电阻和按键组成,电阻的一端接电源,电阻的另一端接按键和单片机引脚。当按键按下时,单片机引脚为低电平;当按键放开时,单片机引脚为高电平。 本系统在进行输入部分在设计时利用了ATmega16单片机的内部上拉电阻,直接将按键连接到引脚,节省了4个电阻。 显示部分设计由8个共阳级数码管和8个三极管组成,采用动态显示方法实现数字显示。8个数码管的数字脚并接到单片机PA端口,确定数码管的显示内容;数码管公共端分别接三极管发射极,确定在某一时刻,那个数码管显示。8个三极管集电极电源,三极管基极接极接单片机PC端口,当某PC端口为高电平时,对应数码管被选中,数字脚显示数字。 (四)驱动部分设计 传感器接口按照18b20的要求,接电源和地后,数据引脚通过上拉电阻接单片机即可。 报警器采用电平驱动,具体报警设备可以外接,也可用蜂鸣器。此外还采用发光二极管、小灯泡等发光设备进行报警提示。外接报警设备通过三极管驱动继电器完成 六、软件设计 (一)显示部分设计 1、数码管的外观 图8数码管的外观 图9 5011系列数码管的引脚排列 一个“8”字型的显示模块用“a、b、c、d、e、f、g、dp” 8 个发光二极管组合而成。每个发光二极管称为一字段。其内部电原理图如图6-3、6-4,分别是共阴极和共阳极LED数码管两种结构形式。 图10共阴极数码管 图11共阳极数码管 以共阴极数码管为例,由图中可以看出:如果要点亮数码管的某一段,只需将该段加上高电平,然后使数码管的公共端3、8脚为低电平,那么该段就会点亮。 2、单个数码管的电路连接 单个数码管的电路连接可以直接同AVR单片机的某个口连接。在图6-5中,PC0接A段对应引脚,PC1接B段对应引脚, PC7接dp段对应引脚,采用的是共阳极数码管。 图12单个数码管的电路连接 2、单数字的显示 单数字的显示通过PC端口输出数字对应字段的编码,在数码管上就可显示对应数字。程序如下: #include<avr/io.h> #include<util/delay.h> unsigned char seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98},i; int main() { DDRC=0xff; PORTC=0xff; while(1) { for(i=0;i<=9;i++) { PORTC=seg[i]; _delay_ms(2000.0); } } } 程序的关键是字形编码的书写,不同的字形编码会得到不同的符号。在字形编码众多时,字形编码会占用大量的内存空间,字形编码这类数据的特点是:我们只需要读取它们的内容,而不会修改其内容,即只进行读操作不进行写操作。这种特点的数据,可以看成常数,对于常数可以保存在程序区。 3、多数字动态显示 单个数码管仅显示一个数字,多数情况往往需要显示多个数字。多个数字的显示多采用动态显示方法。4数码管动态显示原理图,如图6-6所示。 图13 四数码管动态显示原理图 从多数字动态显示电路可以看出:所有的数码管的相同脚连在一起,再接到PC端口。各数码管的公共端分别接在PD0~3。 4、基本多数字动态程序 在多数字动态显示电路下,要显示数字的字形数据由PC端口送出,此字形数据由那个数码管显示,只要那个数码管的公共端同其他不同,对共阳极那个数码管的公共端为高电平,其他为低电平。程序如下: #include<avr/io.h> #include<util/delay.h> #include<avr/pgmspace.h> const prog_uchar seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98}; unsigned char i; int main() { DDRC=0xff; PORTC=0xff; DDRD=0xff; PORTD=0xff; while(1) { PORTC=pgm_read_byte(seg+0); PORTD=0xf8; _delay_ms(50.0); PORTC=pgm_read_byte(seg+1); PORTD=0xf4; _delay_ms(50.0); PORTC=pgm_read_byte(seg+2); PORTD=0xf2; _delay_ms(50.0); PORTC=pgm_read_byte(seg+3); PORTD=0xf1; _delay_ms(50.0); } } 这个基本多数字动态程序不够灵活,只能显示提前设定的数字,通过带缓冲区的多数字动态程序可以灵活实现数字显示。 5、带缓冲区的多数字动态程序 带缓冲区的多数字动态程序是将显示部分提出,单独写成子程序,在调用子程序前,将要显示数据放入显示缓存区,再调用显示子程序。 #include<avr/io.h> #include<util/delay.h> #include<avr/pgmspace.h> const prog_uchar seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98}; unsigned char buf[]={4,7,9,8},i; void dsp(); int main() { DDRC=0xff; PORTC=0xff; DDRD=0xff; PORTD=0xff; while(1) { dsp(); } } void dsp() { PORTC=pgm_read_byte(seg+buf[0]); PORTD=0xf8; _delay_ms(50.0); PORTC=pgm_read_byte(seg+buf[1]); PORTD=0xf4; _delay_ms(50.0); PORTC=pgm_read_byte(seg+buf[2]); PORTD=0xf2; _delay_ms(50.0); PORTC=pgm_read_byte(seg+buf[3]); PORTD=0xf1; _delay_ms(50.0); } 数组buf为显示缓存区,在其中放入不同数值,执行显示子程序dsp后,会显示对应数字。 (二)按键检测设计 按键是基本方便的输入手段,可通过按键开关控制发光二极管的亮灭来,说明AVR单片机的端口检测外部信号的功能和方法。 1、单按键的电路 典型的单按键的电路如图6-7所示,在按键没有按下时,PA5引脚信号为高电平,当按键按下时PA5引脚信号为低电平。通过检测引脚的电平会方便的知道按键的状态。 图14 按键电路 我们日常所说的按键,外观如图6-8所示,有四个脚。按键两侧的脚是连通的,之所以做成四个脚,是为了安装牢固。 图15 按键开关 2、按键的响应过程 理想的按键的闭合和断开时,接触点的电压应该立即变高或者变低,但是由于机械触点的弹性以及按键按动时电压突变等原因,在触点闭合或断开的瞬间会出现电压抖动现象,如图6-9所示。在发生抖动的时间一般在5-10ms。 一次按键处理过程如下:当按键按下之后,相应的按键接触点的电压以高低电平的方式输入到单片机的I/O口。按键的闭合与断开是有一定时间的,一般为0.1-1S。而AVR单片机的机器周期一般为1us甚至更短,在0.1-1S的时间段内,程序会检测很多次按键的输入电平,这样单片机可能会认为按键被按下了多次,从而出现误判。 图17 按键闭合断开时的电压波动示意图 3、按键去抖动的方法和原理 为了去除按键的抖动,保证单片机对按键的一次输入只响应一次,可以采用硬件和软件两种方法:硬件电路去抖动是在外围电路中加入去抖动电路(如R-S触发器);软件去抖动是在程序中加入延时程序以跳过抖动时间,等待信号稳定后再次判断按键的输入电平,如果信号电平保持不变,则可以确认一次按键按下。 ●硬件去抖动电路的原理 用R-S触发器形成去抖电路是单片机外围电路设计中常用的方法,这种方法可以减少单片机软件对按键动作的延时和计算。典型的硬件去抖动电路如图6-10,74LS02构成一个R-S触发器电路实现按键的消抖电路。 图6-10 74LS02实现的硬件消抖电路 ●软件消抖的原理和实现 软件消抖的基本原理是在软件中对按键进行两次检测确认,记载第一次检测到按键按下后,间隔10ms左右再次检测按键是否按下,只有在两次都检测到按键按下时才最终确认有键按下,这样就避开了按键的抖动时间,从而消除了抖动的影响。 在按键接口软件的设计中,除了要考虑按键消抖外,一般还要判别按键的释放,只有检测到按键释放后,才能确定为一次完整的按键动作。 通用的案件检测程序如下: Keyscan() { if((PINA&0X20)==0) //判断按键是否按下,等于0表示按键按下 { delayms(20); //延时20ms。避开按键抖动时间 if((PINA&0X20)==0) //再次判断按键是否按下, { … //按键按下的处理程序 } } While((PINA&0X20)==0); //判断按键是否放开,不等于表示按键释放,退出处理函数 } (三)1-wire 是一种通讯协议实现 对18b20的操作实质是1-wire 是一种通讯协议。1-wire 是一种通讯协议,它只有一个信号线,信号线即可以进行输入也可以进行输出操作。在此基础上进行移植,在实际应用过程中意义重大。 而以往使用AVR进行引脚操作时,一个引脚要么输入、要么输出。在1-wire下,一个引脚既要实现输入操作、也要实现输出操作,因而需要对DDR操作进行深入的了解,认识DDR操作对引脚电平的影响。 1-wire通讯协议基本基本操作包括复位、写数据位、读位数据。8个位操作形成字节数据的读写,所有操作都在复位后才可以开始。 1、复位时序 对DS18B20进行所有操作之前,首先要将它复位。复位时序图6-11如下: 图18 复位时序图 (1)主机将信号线置为低电平,时间为480~960μS。 (2)主机将信号线置为高电平,时间为15~60μS。 (3)从机(DS18B20)发出60~240μS 的低电平作为应答信号,后释放信号线,信号线恢复为高电平。主机收到此信号后,才能认定复位操作完成,可以对DS18820进行其它操作。 2、对DS18B20操作的宏复位的实现代码 为实现代码的可移植性,实现对DS18B20的操作代码前,定义如下宏。 #define OW_PIN PD0 #define OW_IN PIND #define OW_OUT PORTD #define OW_DDR DDRD #define OW_GET_IN() ( OW_IN & (1<<OW_PIN)) #define OW_OUT_LOW() ( OW_OUT &= (~(1 << OW_PIN)) ) #define OW_OUT_HIGH() ( OW_OUT |= (1 << OW_PIN) ) #define OW_DIR_IN() ( OW_DDR &= (~(1 << OW_PIN )) ) #define OW_DIR_OUT() ( OW_DDR |= (1 << OW_PIN) ) 3、复位的实现代码 unsigned char ow_reset(void) { unsigned char err; OW_OUT_LOW(); OW_DIR_OUT(); //主机将信号线置为低电平 _delay_us(490); //延时480us OW_DIR_IN(); //主机将信号线置为高电平,因为有上拉电阻 _delay_us(66); //延时60us err =OW_GET_IN(); _delay_us(490-66);//保证取DS18820应答信号时间为480 us if(OW_GET_IN()==0) err = 1; return err; } 4、写位数据操作时序 图19写位操作时序图 写位数据操作时序如图6-12,主机将信号线从高电平拉至低电平,产生写起始信号。低电平的持续时间要大于1μS小于15μS。从信号线的下降沿开始,在15~60μS的时间内从机(DS18B20)对信号线检测,如信号线为高电平,则写1,如信号线为O,则写0,从而完成了一个写周期。在开始另一个写位周期前,必须有1μS以上的高电平恢复期(制造商称为间隙)。重复八次写位数据操作,实现写字节操作。 5、写字节数据操作的实现代码 void ow_byte_wr(unsigned char b) { unsigned char i, j; for(i=0;i<8;i++) { OW_DIR_OUT(); // //主机将信号线置为低电平 _delay_us(1); // 延时1us if(b & 0x01) //写数据 { OW_DIR_IN(); //写1 } else { OW_DIR_OUT(); //写0 } _delay_us(15-1); //延时15us _delay_us(60-15);//保证延时60us OW_DIR_IN(); b >>= 1; } } 6、读位数据操作时序 图20 读位操作时序图 读位数据操作时序如图6-13,主机将信号线从高电平拉低至低电平1μS以上,产生读起始信号。DS18820在信号线下降沿15μS后,将数据放到信号线上,供主机读取。主机读位数据操作的持续时间至少要60μS, 位数据操作完成后数据线恢复为高电平。从而完成了一个读周期。在开始另一个读周期前,必须有1μS以上的高电平恢复期。 7、读字节数据操作的实现代码 unsigned char ow_byte_rd(void) { unsigned char i; unsigned char dat = 0; // dat用于存储读到的数据,先清零 for(i = 0;i < 8;i++) //共读8位数据,构成一个字节 { OW_DIR_OUT(); //定义为输出(拉低数据线) _delay_us(1); //拉低1微秒 OW_DIR_IN(); //定义成输入,读入数据(同时也相当于拉高数据线) _delay_us(15); //延时 dat >>= 1; //数据右移,读顺序:先低后高 if(OW_GET_IN()) //读数据, { dat |= 0x80; //如果是高,置1,右移数据 } _delay_us(45); //延时大于60us,有1us间隙 } return dat; //返回读到的1字节数据 } (四)软件总体设计 在实现按键、显示、温度采集后,就可以进行主程序设计,主程序由初始化和循环两部分组成。初始化部分先对各端口初始化,后延时500ms,等待系统稳定,最后读取保持在EEPROM内的温度上下限值保存到内存变量。 循环部分依次执行四个操作: 读取环境温度值;检测按键状态,如进行上下限值修改,修改上下限值后存入EEPROM内;判断环境温度是超出上下限范围 ,如果超出上下限范围打开报警,否则关闭报警;显示环境温度。 参考文献 1、文生平,赵国平,江剑强,基于MATLAB的熔体温度控制设计研究 2007.6 2、王宝库,多功能检测控制系统的设计 2006.4.1 3、赵亮,赵国锐,单片机C语言编程与实例 2003.5 4、 谢自美.电子线路设计*实验*测试.华中科技大学出版社,2003.6 5、张友德等,单片微型机原理应用和实验,电子工业出版社2008.5- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 温度 报警器 设计 方案 毕业论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文