《本科毕业设计---基于avr的水温控制系统.doc》由会员分享,可在线阅读,更多相关《本科毕业设计---基于avr的水温控制系统.doc(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、毕业论文题 目: 基于嵌入式的水温调控系统 学 校: 昆明理工大学 学 院: 信息工程与自动化学院 专 业: 计算机科学与技术 年 级: 2011级 姓 名: 学 号: 指导教师单位: 昆明理工大学信自工程与自动化学院 指导教师姓名: 指导教师职称: 讲师 Graduate ThesisSubject: The water temperaturecontrol system based on Embedded SystemSchool : Kunming University of Science and Technology Faculty: School of Information En
2、gineering and Automation Major : Computer science and technologyGrade : Number: Name : Guiding Teachers Department: Faculty of Information Engineering and Automation,Kunming University of Science and Technology Guiding Teachers Name : Guiding Teachers Position : Lecturer ii 设计(论文)专用纸目录毕业论文i目录I摘 要IIA
3、bstractIII前 言IV第一章 绪 论11.1水温控制系统的应用背景11.2水温控制研究的意义11.3水温控制的研究现状21.4本论文的主要内容2第二章 设计内容及方案32.1单片机控制水温方案32.1.1 ATmega128的特点32.1.2 ATmega128单片机的内部结构62.1.3 ATmega128的引脚说明72.2 水温传感器方案92.2.1 DS18B20的特点92.2.2DS18B20工作方式102.2.3 DS18B20的ROM指令132.3显示部分的实现142.3.1 LCD 1602液晶显示屏原理:142.3.2液晶工作过程:152.3.3 RAM地址映射图162
4、.4 键盘设置162.5控制继电器与温度警告172.6 用户设置保存182.6.1 ATmega128片内EEPROM的特点182.6.2 EEROPM的原理192.7 供电模块20第三章 软件设计及其实现213.1、主程序流程图213.2各个模块流程图223.2.1 DS18B20流程图223.2.2键盘流程图263.2.2控制模块273.2.4显示模块283.2.5存储器模块293.3开发工具的介绍31第四章 系统仿真与实现374.1 Proteus仿真电路374.2仿真过程及软件使用384.3系统结果调试384.4 实际测试39第五章 结 论41第六章 总结与体会42致 谢45参考文献4
5、6附录47一、 使用手册47二、源代码481、主程序:482、液晶屏程序:543、DS18B20温度采集程序:554、EEPROM程序59摘 要近年来,随着我国经济的快速发展,温度控制的需求与日俱增,温度控制要求越来越高并且逐渐走向了智能化、无人化。水温控制领域繁多例如工业控制,智能家具、化学领域、农业繁殖等等。本系统以AVR单片机为核心、利用Ds18B20温度传感器采集温度、1602液晶显示当前状态、人工在键盘设置的温度、通过继电器控制加热设备。从而达到单片机控制水温的保持在规定的范围内。此外加入了EEPROM来存储当前设定的温度,达到断电而不丢数据的安全设置。关键词: AVR单片机;温度控
6、制;温度传感器;1602液晶显示器;EEPROM ;AbstractIn recent years, the rapid development of Chinas economy cause peoples needs for temperature control increasingly. Intelligent and unmanned are the key technique in requirement for temperature control. The water temperature control field various in many area such as
7、 industrial control, intelligent home system, chemical field, agricultural breeding and so on. This temperature control system is mainly composed of AVR microcontroller as a core, Ds18B20 temperature sensor as a gather temperature, and 1602 LCD as the screen. At the same time the keyboard which can
8、be used for setting temperature value, resetting and showing the present temperature value. Also through relay control to heat the equipment. So as to achieve the microcontroller to control the water temperature with keeping within the prescribed scope. In addition, this system added EEPROM equipmen
9、t is for power-off protection, that is, to record the present temperature value in order to prevent information lost when outages. Keyword: AVR; temperature control; temperature sensor; 1602 LCD; EEPROM;前 言 温度控制无论是工业中还是生活都有着非常重要的地位,无论是温度过高或者过低都会使能源与水资源的浪费。现在我国很多地区有着程度不同的能源与水资源的缺乏。在没有计算机控制之前,温度的控制相对困
10、难。随着计算机科学技术与传感器技术的不断发展,计算机与传感器器件的价格不断降低,并且技术的日益成熟、可靠,使得用微型控制器来实现水温控制完全可以实现。用科技改变生活,提高生产变得越来越热门。目前单片机已经在嵌入式控制技术中得到了广泛应用,各个领域中都有用到,其特点有体积小、耗电低、控制简单、扩展好等特点,结合不同的外设,既可实现不同的功能,利用单片机可以组成不同的嵌入式控制系统,信息数据的采集系统。通过单片机使在控制中温度能够方便的采集、控制及显示。并且可以通过算法编程等操作,得到的数值更加精确。本系统以AVR单片机为核心、利用Ds18B20温度传感器采集温度、1602液晶显示当前状态、人工在
11、键盘设置的温度、通过继电器控制加热设备。从而达到单片机控制水温的保持在规定的范围内。此外加入了EEPROM来存储当前设定的温度,达到断电而不丢数据的安全设置,从而达到断电保护的作用。60 第一章 绪 论1.1水温控制系统的应用背景单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段,单片机的发展使计算机技术发生一场深刻的改革。随着大规模电路的发展与应用,出现了微型计算机与组装计算机,单片机凭借着凭借着其速度快、可靠高、价格低廉,在工业、农业、军事、航天、以及日常生活的产品中得到广泛使用。温度与人类活动息息相关,从古代烧火取暖到当今的工业温度控制,处处体现了温度对于人类的重要性,随着生产
12、力的提高,人类对温度的控制不仅仅在于模糊的估计,而是精确的控制。温度控制技术同时得到迅速发展。自18世纪工业革命以来:工业过程离不开温度的控制。其中一点就是水温的控制。水温控制在生产中及生活中都发挥着重要的作用,如在一些现代化车间里,生产特殊要求产品加工需要在一定的温度下才能进行,水产养殖中,也要对水的温度进行严格的控制,才能确保达到最好的效果,在家居生活中,我们同样力不开水温的控制,如电加热饮水机、热水器等,都要用到水温控制系统。水温控制对于人类的活动中应用十分广泛。在人为规定的温度控制范围内并且能在温度人类无法承受的环境中运行。通过使用算法与数据的收集处理,使成品在保证测量温度准确的同时还
13、能保证低功耗。1.2水温控制研究的意义随着社会的发展、科技的进步。温度作为一大重要的测量单位越来越重要。温度的过高或过低都会造成能源的过多消耗也会造成水资源的浪费。利用嵌入式技术控制水温,既能达到良好掌握水温的高地又能节约成本。在没有计算机控制之前,控制水温是难以实现的。而当今随着计算机科学的进步,计算机技术逐渐成熟,而且电子器件的价格不断降低、可靠性也不断提高,利用嵌入式控制技术来调节水温是完全可以实现的。此课题来设计并且完成一套水温控制的模型,可利用在工业控制、智能家具、农业生产等等行业中。温度控制器的运用越来越广泛,如电冰箱、空调、锅炉等都得用到.日常经常用到的温度控制器主要分为机械式和
14、电子式.传统多为机械式控制器,但机械式较易损坏且不精确.随着科学技术的迅猛发展,利用微处理器控制在日常生活中得到了更为广泛的应用,因为它使用更方便且相当精确,对人们的生活起到了深远的影响.1.3水温控制的研究现状我国开始20世纪80年代。国内工程技术人员在学习发达国家温控技术的基础上,掌握了室内温度微型计算机控制技术,此技术仅限于控制温度的单环境因子。国外对温度控制技术研究始于20世纪70年代。先是采用模拟式的组合仪表,采集现场信息并进行指示、记录和控制。80年代末出现了分布式控制系统。目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度控制技术发展很快,一些国家在实
15、现自动化的基础上正向着完全自动化、无人化的方向发展。1.4本论文的主要内容1. 第一章介绍了选题的背景和重要意义以及当前的水温控制研究状况,比较和分析了现有的研究方法,阐述了本论文的主要内容。2. 第二章介绍了本系统中设计概念、技术背景、功能模块及其使用。3. 第三章介绍了本系统的各个模块电路设计及其实现、介绍原理和使用元器件的参数。4. 第四章电路的仿真及其实现、调试。5. 第五章总结了本设计所做的工作和成果。第二章 设计内容及方案本课题方案总概:Ds18b20温度传感器ATmega128LDC1602显示器 加热器 继电器 键盘2.1单片机控制水温方案ATmega128是ATMEL公司的
16、8位系列单片机的最高配置的一款单片机,稳定性极高,应用极其广泛。本系统原定用51单片机作为控制芯片,但是由于考虑到拓展性,与稳定性采用当今流行的ATMEL公司的mega系列单片机。综合考虑采用ATmega128单片机作为控制器。2.1.1 ATmega128的特点1、 高性能、低功耗的AVR 8位微处理器。2、先进的RISC结构 -133条指令且大多数可以再一个时钟周期内完成;-328通用工作寄存器与外设控制寄存器;-全静态工作;-工作于16MHz时性能高大16 MIPS;-只需两个时钟周期的硬件乘法器。2、 非易失性的程序和数据存储器-128K字节系统可编程FLASH,寿命可到10,000次
17、擦写周期;-具有独立的锁定位、可选择的启动代码区,通过片内的启动程序实现 系统内编程,真正达到读修改写操作;-4K字节的内部EEPROM,寿命达100,000次写/擦出周期;-4K字节的内部SRAM;-高达64K字节的优化外部存储器空间;-可以对锁定位进行编程实现软件加密;-可以通过SPI实现系统内编程;3、 JTAGA借口(与IEEE1149.1标准兼容)-符合JTAGA标准边界扫描功能;-支持扩展的片内调试;-通过JTAG接口实现对FLASH,EEPROM,熔丝位和锁定位的编程。4、 外设特点-两个具有独立的预分频器和比较器功能的8位定时/计数器;-两个具有预分频器、比较功能和捕捉功能的1
18、6位定时/计数器;-具有独立分频器的实时时钟计数器;-具有两路8位PWM-6路分辨率可编程(2-16位)的PWM-输出比较调节器;-8路10位ADC8个单端通道;7个差分通道;2个具有可编程增益的差分通道;-面向字节的两线接口;-两个可编程的串口USART;-可工作与主机/从机对的SPI串口;-具有独立的片内振荡器的看门狗定时器;-片内模拟比较器。5、 特殊的处理特点 -上电复位以及可编程的掉电检测系统;-片内经过标定的RC振荡器;-6种睡眠模式:空闲模式、ADC噪声抑制模式、掉电模式、省电模 式、Standby模式、拓展的Standby模式;-可以通过软件记性选择的时钟频率;-通过熔丝位可选
19、择ATmega103的兼容模式;-全局上拉禁止功能。6、 I/O和封装-53个可编程I/O借口;-64引脚的TQFP与64引脚的MLF封装。7、 工作电压-2.7-5.5V ATmega128L;-4.5-5.5V ATmega128。8、 速度等级 -0-8MHz ATmega128L;2.1.2 ATmega128单片机的内部结构AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与逻辑计算器(ALU)相连,使得每一条指令都可以同时在一个时钟周期访问两个独立寄存器,这种结构可以大大提高代码的效率。并且比普通的复杂指令集高达10倍的吞吐量。2.1.3 ATmega128的引脚
20、说明ATmega128各引脚功能如下:Vcc:数字电路的电源。GND:地。端口A(PA7PAO):端口A为双向I/O口并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。复位发生时端口A为三态。端口A也可以用作其他不同的特殊功能。端口B(PB7PB0):端口B为8位双向I/O口,复位发生时端口B为三态。端口B也可以用作其他不同的特殊功能。端口C(PC7PC0):端口C为8位双向I/0口,复位发生时端口C为三态。端口C也可以用作其他不同的特殊功能。在ATmegal 03兼容模式下,端口C只能作为输
21、出,而且在复位发生时不是三态。端口D(PD7PD0):端口D为8位双向I/0口,复位发生时端口D为三态。端口D也可以用作其他不同的特殊功能。端口E(PE7PE0):端口E为8位双向I/0口,复位发生时端口E为三态。端口E也可以用作其他不同的特殊功能。端口F(PFTPF0):端口F为ADC的模拟输人引脚。如果不作为ADC的模拟输入.端口F可以作为8位双向I/0口并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能.则端口被外部电路拉低时将输出电流。复位发生时端口F为三态。如果使能JTAG接口.则复位发生时引脚PF 7(TDI)、PF
22、5(TMS)和PF4(TCK)的上拉电阻使能。端口F也可以作为J TAG接口。在ATmegal03兼容模式下,端口F只能作为输入引脚。端口G(PG4-PG0):端口G为5位双向I/O口,并具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时.若内部上拉电阻使能.则端口被外部电路拉低时将输出电流。复位发生时端口G为三态。端口G也可以用作其他不同的特殊功能。在ATmegal 03兼容模式下,端口G只能作为外部存储器的锁存信号以及32kHz振荡器的输入,并且在复位时这些引脚初始化为PG0=1、PG1=1以及PG2=0。PG3和PG4是振荡器引脚。RESET:
23、复位输入引脚。超过最小门限时间的低电平将引起系统复位。低于此时间的脉冲不能保证可靠复位。XTALl:反向振荡器放大器及片内时钟操作电路的输入。XTAL2:反向振荡器放大器的输出。AVCC:AVCC为端口F以及ADC转换器的电源.需要与Vcc相连接.即使没有使用ADC也应该如此。使用ADC时应该通过一个低通滤波器与Vcc连接。AREF:AREF为ADC的模拟基准输入引脚。PEN是SPl串行下载的使能引脚。在上电复位时保持为低电平将使器件进入。SPl串行下载模式,在正常工作过程中PEN引脚没有其他功能。2.2 水温传感器方案本系统采用的温度传感器为封装探头的 DS18b20温度传感器。DS18B2
24、温度传感器具有体积小、无需AD转化、抗干扰能力强、硬件开销低、精度高的特点。封装后可以在多个场合使用,例如高炉水循环,农业大棚,洁净室测温等各种各种非极限场合。可靠性高,体积小用方便,封装形式多样,适用于冷冻库,粮仓,储罐,电讯机房,电力机房,电缆线槽等测温和控制领域。轴瓦,缸体,纺机,空调,等狭小空间工业设备测温和控制。汽车空调、冰箱、冷柜、以及中低温干燥箱等。供热/制冷管道热量计量,中央空调分户热能计量和工业领域测温和控制。2.2.1 DS18B20的特点1、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。2 、测温范围 55
25、+125,固有测温误差(注意,不是分辨率,这里之前是错误的)1。3、 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。4、 工作电源: 3.05.5V/DC (可以数据线寄生电源)5 、在使用中不需要任何外围元件6、 测量结果以912位数字量方式串行传送7 、不锈钢保护管直径 68 、适用于DN1525, DN40DN250各种介质工业管道和狭小空间设备测温9、 标准安装螺纹 M10X1, M12X1.5, G1/2”任选10 、PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连
26、接。2.2.2DS18B20工作方式DS18B20原理图1) 初始化主机(单片机)首先发出480960微秒的低电平,然后释放总线提到高电平,随后的480微秒的时间内对总线进行检测,若有低电平的出现说明总线上有传感器做出了应答。若无低电平出现一直都是高电平说明总线上无传感器的应答。做为从传感器的DS18B20在一上电后就一直在检测总线上是否有480960微秒低电平的出现,如果有,在总线转为高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉单片机本器件已做好准备。若没有检测到则一直在检测等待。2) 读操作主机发出各种操作命令都是向DS18B20写0和写1组成的命令字节,接
27、收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则将总线置为低电平,若主机想写1,则将总线置为高电平,持续时间最少60微秒直至写周期结束,然后释放总线为高电平至少1微秒给总线恢复 。而DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。3)写操作对于读数据操作时序也分为读0时序和读1时序两个过程。读周期是从主机把单总线拉低1微秒之后就
28、得释放单总线为高电平,让DS18B20把数据传输到单总线上。从机(DS18B20)在检测到总线被拉低1微秒之后,开始送出数据,若是要送出0,就把总线拉为低电平到读周期结束。若要送出1则释放总线为高电平。单片机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60微秒才能完成2.2.3 DS18B20的ROM指令指令名称指令代码指令功能温度变化44H启动传感器温度转化,转换时间最长500ms,结果存在内部9字节的RAM中。读暂存器0BEH读取R
29、AM中的数据。写暂存器4EH向内部RAM发出的第3、4字节上写上下限温度命令,然后传送该两个字节。复制暂存器48H将RAM中的3 4个字节复制在内部EEPROM中。重调EEPROM0B8H将内部的EEPROM中的呢荣复制在3、4字节。读取供电方式0B4H读DS18B20的供电模式,寄生供电为“0”,外界供电发送“1”。读ROM33H读取DS18B20的ROM中编码(即64位地址)0ROM匹配55H发送此命令后,接着发送64位ROM编码,访问总线上连接的DS18B20然后一一做出响应。搜索ROM0F0H用于挂在总线上的DS18B20个数和识别64位ROM地址0跳过ROM0CCH跳过ROM直接访问
30、DS18B20的温度转换命令,适用于单片机0报警搜索0ECH在超过温度上下限,该命令做出响应2.3显示部分的实现本系统利用LCD 1602显示屏显示实时温度,设置温度(上限与下限)。1602液晶显示器是一种专门用来显示字母、数字、符号的点阵型液晶模块。他是由若干个5*7或5*11的点阵符号组成,每一个点阵都可以显示一个字符。本系统显示内容为:实时温度、预设温度上限、预设温度下限。预期规划为两行,其中第一行为显示实时温度(Real Temperature )用“RT”表示,预设温度上限用“TL”,表示预设温度显现用“TH表示”。所以用1602液晶屏显示内容完全足够。2.3.1 LCD 1602液
31、晶显示屏原理:引脚说明:编号引脚说明1VSS电源地2VDD电源正极3VL液晶显示偏压信号4RS数据/命令选择端5RW读写选择端6E使能端714D0D7数据I/0口15BLA背光源正极16BLB背光源负极2.3.2液晶工作过程:1、操作步骤:1)初始化2)写命令(RS=L)设置显示坐标3)写数据(RS=H)2、写操作时序:2.3.3 RAM地址映射图2.4 键盘设置轻触开关是一种电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。我们使用的开关如下图:本系统采用非编码按键组成的独立按键,其中有四个按键(S1-S4)。其中的作用为S1控制温度下限加一、S2控制温度下限减一、S3控
32、制温度上限加一、S4控制温度下限减一。独立按键原理图 2.5控制继电器与温度警告继电器是一种电控制器件,是当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统和被控制系统之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。本系统使用的继电器为光继电器,并采用其中的常闭借口,在温度低于下限温度时,打开继电器从而控制加热设备对水环境进行加温。当水温符合预设值的上限,关闭继电器。并另外接入光耦保护单片机的电路。同时在I/O口并联一个发光二极管,表示温度警告与
33、加热设备正在工作。光继电器其特点为1、 无触点,因此没有触点磨损、使用寿命几乎无限;2、 无震动和弹跳;防震、抗摔;3、 体积小;高可靠;4、 AD/DC兼容5、 输入输出完全隔离6、 可控制各种负载(电灯、二极管、马达、加热器等)继电器电路图:继电器规格:250AC 10A30DC 10ACOIL:5V DC 2.6 用户设置保存本系统采用ATmega128片内的EEPROM作为数据存储器。EEPROM为带电可擦可编程只读存存储器。芯片可重复擦写和写入,从而解决了普通PROM只可一次性写入的弊端。EEPROM的擦除无需借助其它设备,它是以电信号来修改里面的内容,并且以Byte为最小修改单位,
34、所以不必将数据全部洗掉才能写入,摆脱了EPROM Eraser与编程器的限制。2.6.1 ATmega128片内EEPROM的特点ATmega128包含了4K字节的EEPROM。它是一个独立的数据空间,可以按字节读写。EEPROM的寿命至少为100,000次(擦除次数)。EEPORM的访问有地址寄存器、数据寄存器与控制寄存器来决定。当执行EEPRO读操作时,CPU会停止4个周期工作,然后再执行后续指令;当执行EEPROM写操作的时,CPU会停止2个周期工作,然后在执行后续指令。EEPROM地址寄存器EEARH与EERAL:EEPROM数据存储器EEDR:EEPROM控制寄存器EECR:2.6.
35、2 EEROPM的原理1、写入过程:1)发送器件地址(0XA0)2)发送要写入EEPROM的内存地址3)发送要写入的数据2、读过程:1)发送写入的器件地址(0XA0)2)发送要读的EEPROM的内存地址3)发送读出的器件地址(0XA1)4)读取数据2.7 供电模块供电模式如下:1、 采用USB口接在电脑供电;2、 使用电源适配器供电规格:输入:AC100240V50-60HzMax :0.2A输出:DC 5V 1000mA第三章 软件设计及其实现本系统采用循环查询方式、显示与控制温度,其中包括DS18B20采集温度程序,LCD 1602显示与驱动程序、键盘扫描、EEPROM的驱动与读/存程序以
36、及数据处理程序。编程采用C语言编程,开发软件使用ICCAVR与AVR stdio4 ,烧写软件方式有两种:JTAG仿真器或者ISP下载器.开始3.1、主程序流程图 结束信息处理扫描电路显示温度温度信息采集转化显示固定字符3.2各个模块流程图3.2.1 DS18B20流程图DS18B20经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。所以当我们只想简单的读取温度值的时候,只用读取暂存器中的第0和第1个字节就可以了。读取温度值的步骤如下:1)初始化2)跳过ROM操作3)发送温度转换命令4)跳过ROM操作5)发送读取温度命令6)读取温度值开始初始化N初始化成功 判断YROM
37、指令存储操作读操作 结束1、初始化/*DS18B20复位函数*/unsigned char ds1820_reset(void) unsigned char i;flag = SREG;/*中断保护*/CLI();/*关中断*/DQ_OUT;DQ_CLR;delay_10us(49);/*延时500uS(480-960)*/DQ_SET;DQ_IN;delay_10us(7);/*延时80uS*/i = DQ_R;delay_10us(49);/*延时500uS(保持480uS)*/if (flag & 0x80) SEI(); /*恢复中断状态*/if (i) return 0x00;els
38、e return 0x01;2、读操作/*DS18B20字节读取函数*/unsigned char ds1820_read_byte(void) unsigned char i;unsigned char value = 0;flag = SREG;/*中断保护*/CLI();/*关中断*/for (i = 8; i != 0; i-) value = 1;DQ_OUT;DQ_CLR;NOP();/*延时4uS*/NOP();NOP();NOP();DQ_SET;DQ_IN; delay_10us(1); /*延时10uS*/if (DQ_R) value|=0x80;delay_10us(5
39、);/*延时60uS*/if (flag & 0x80) SEI(); /*恢复中断状态*/return(value);3、写操作/*DS18B20字节写入函数*/void ds1820_write_byte(unsigned char value) unsigned char i;flag = SREG;/*中断保护*/CLI();/*关中断*/for (i = 8; i != 0; i-) DQ_OUT;DQ_CLR;NOP();/*延时4uS*/NOP();NOP();NOP();if (value & 0x01) DQ_SET;delay_10us(7);/*延时80uS*/DQ_SE
40、T;/*位结束*/value = 1;if (flag & 0x80) SEI(); /*恢复中断状态*/4、温度转化/*启动ds1820转换*/void ds1820_start(void) ds1820_reset();ds1820_write_byte(0xCC);/*勿略地址*/ds1820_write_byte(0x44);/*启动转换*/5、读温度/*DS8B20读取温度信息*/unsigned int ds1820_read_temp(void) unsigned int i;unsigned char buf9;ds1820_reset();ds1820_write_byte(0xCC);/*勿略地址*/ds1820_write_byte(0xBE);/*读取温度*/for (i = 0; i 9; i+) bufi = ds1820_read_byte();i = buf1;i = 8;i |= buf0;return i;Y3.2.2键盘流程图温度上限值加1按键1检测是否按下YY高温大于低温温度上限值减1按键2检测是否按下结束开始YY高温大于低温按键3检测是否按下温度下限值加1Y温