基于AT89C51单片机、LCD显示、3点DS18B20温度控制器设计学士学位论文(24页).doc

上传人:1595****071 文档编号:37156244 上传时间:2022-08-30 格式:DOC 页数:24 大小:4.53MB
返回 下载 相关 举报
基于AT89C51单片机、LCD显示、3点DS18B20温度控制器设计学士学位论文(24页).doc_第1页
第1页 / 共24页
基于AT89C51单片机、LCD显示、3点DS18B20温度控制器设计学士学位论文(24页).doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《基于AT89C51单片机、LCD显示、3点DS18B20温度控制器设计学士学位论文(24页).doc》由会员分享,可在线阅读,更多相关《基于AT89C51单片机、LCD显示、3点DS18B20温度控制器设计学士学位论文(24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-基于AT89C51单片机、LCD显示、3点DS18B20温度控制器设计学士学位论文-第 20 页 密级: 公开 科学技术学院NANCHANG UNIVERSITY COLLEGE OFSCIENCE AND TECHNOLOGY 学 士 学 位 论 文 THESIS OF BACHELOR(20092013年)题 目 基于AT89C51设计温度控制器 学 科 部: 信息学科部 专 业: 通信工程 班 级: 通信091班 学 号: 7023809013 学生姓名: 指导教师: 起讫日期:2012年11月26日2013年5月26日南昌大学 科学技术学院学士学位论文原创性申明本人郑重申明:所呈交的

2、论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式表明。本人完全意识到本申明的法律后果由本人承担。作者签名: 日期:学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权南昌大学可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于保 密 ,在 年解密后适用本授权书

3、。不保密 。(请在以上相应方框内打“” )作者签名: 日期:导师签名: 日期:目录 摘要IAbstractII第一章 绪论11.1 选题的依据及意义11.2 国内外研究现状及发展趋势11.3 本课题研究内容1第二章 主要硬件介绍22.1 单片机AT89C5122.2 DS18B20温度传感器32.3 液晶显示器LCD16024第三章 构架设计63.1 硬件构架63.2各模块仿真图73.3 程序构架9第四章 软件仿真104.1 稳压直流电源仿真原理图104.2 温度控制系统模块仿真图11第五章 硬件制作和结论125.1 实物结果图片125.2 硬件的测试与检修145.3 总结描述14参考文献(R

4、eferences)15致 谢16附录17基于AT89C51设计温度控制器专业:09级通信工程 学号:7023809013 姓名:朱宇 指导老师:张福阳摘要:随着现代化科技的进步,在很多工业控制场合需要非常精确的控制温度的变化。这就需要高精度的温度控制器来实现此目的。本次设计的作品是基于单片机AT89C51、温度采集器DS18B20、液晶显示器LCD1602为一体的多点温度控制器,包含整流稳压电源功能、键盘设置温度上下限功能、控制报警功能等。以实现设计出测量准确、快速显示、精度高、可调温控范围等优点的温度控制系统。关键词:温度控制器,AT89C51,DS18B20,LCD1602 Design

5、 a Temperature Controller Base on AT89C51Abstract: With the modernization of science and technology progress, in many industrial control occasions requiring very precise control of temperature change. This requires high precision temperature controller to achieve this goal. The design of the works i

6、s based on AT89C51, temperature acquisition DS18B20, LCD1602 as one of the multi point temperature controller, and with the rectification and regulated power supply function, keyboard set upper and lower temperature function, control and alarm functions. In order to achieve accurate measurement, fas

7、t display, high precision, adjustable temperature range and other advantages of the temperature control system.Keywords: temperature control, AT89C51, DS18B20, LCD1602第一章 绪论1.1 选题的依据及意义随着现代化科技的进步,在很多工业控制场合需要非常精确的控制温度的变化,例如:发酵罐的温度控制,孵卵器的温度控制等,都需要对上限、下限温度进行严密控制。而在日常生活中,温度的控制应用也非常广泛,例如:热得快,电饭锅,冰箱,电脑等家用

8、电器都应用到温度的控制器。因而在各种环境下,温度温控制系统越来越凸显其重要性。1.2 国内外研究现状及发展趋势在现今的国内外温度控制器的研究中主要有两种控制目标,即动态温度跟踪与恒值温度控制。动态温度跟踪实现的控制目标是使被控对象的温度值按预先设定好的曲线进行变化。恒值温度控制的目的是使被控对象的温度恒定在某一数值上,且要求其波动幅度(即稳态误差)不能超过某一给定值。我国对于温度测控技术的研究较晚,始于20世纪80年代。我国工程技术人员在吸收发达国家温度测控技术的基础上,才掌握了温度室内微机控制技术,该技术仅限于对温度的单项环境因子的控制。我国温度测控设施计算机应用,在总体上正从消化吸收、简单

9、应用阶段向实用化、综合性应用阶段过渡和发展。在技术上,以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统,与发达国家相比,存在较大差距。国外对温度控制技术研究较早,始于20世纪70年代。先是采用模拟式的组合仪表,采集现场信息并进行指示、记录和控制。80年代末出现了分布式控制系统。目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度测控技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。未来的温度控制器的研究将向着智能化和高性能化发展。智能可定义为:能有效的获取、传递、处理、再生和利用信息,从而在任意给定的环境下成功的达到目

10、的的能力。人工智能是应用除了数学式子以外的方法把人们的思维过程模型化,并利用计算机来模仿人的智能的学科。它的应用范围远比控制理论广泛,如包括判断、理解、推理、预测、识别、规划、决策、学习和问题求解等,是高度脑力行为和体力行为的综合。而高性能则体现在固件本身的工艺上,在极高温、极低温、强酸碱等各种极端的环境中仍然能正常工作。1.3 本课题研究内容 用单片机AT89C51、开发工具Keil C51及C语言设计一个温度控制器。用Proteus进行模拟仿真,要求检测、显示三个地点的温度,硬件作品能够通过按键设置上、下限温度。在检测到温度高于上限,或者低于下限温度后,自动控制继电器或开关电路,并用声光等

11、形式报警。同时要求作品中包含直流稳压电源功能。第二章 主要硬件介绍2.1 单片机AT89C51 1、特征概述:AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。2、管脚功能:VCC:供电电压。GN

12、D:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。 P2口:P2口为一个内部上拉电阻的

13、8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是

14、由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如:P3.0 RXD(串行输入口),P3.1 TXD(串行输出口),P3.2 /INT0(外部中断0),P3.3 /INT1(外部中断1),P3.4 T0(记时器0外部输入),P3.5 T1(记时器1外部输入),P3.6 /WR(外部数据存储器写选通),P3.7 /RD(外部数据存储器读选通),P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当复位时,应保持2个机器周期有效。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,AL

15、E端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH)

16、,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.2 DS18B20温度传感器 图2.1 引脚示意图 图2.2 实物图 1、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电 。 2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温 。 4、DS18

17、B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内 。 5、温范围55+125,在-10+85时精度为0.5。 6、可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 7、在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快 。 8、测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 表2.1 DS18B20温度测量分辨率表R1R0分辨率/b测量精度温度最大转换时间/ms

18、0090.593.7501100.25187.510110.12537511120.06257502.3 液晶显示器LCD1602 图2.3 LCD1602实物图 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 图2.4 LCD

19、1602引脚图管脚功能介绍,LCD1602采用标准的16脚接口,其中: 第1脚:VSS为电源地。 第2脚:VCC接5V电源正极。 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第714脚:D0D7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极

20、。 表2.2 LCD1602的内部显示地址 1 234567891011121314151680H81H82H83H84H85H86H87H88H89H8AH8BH8CH8DH8EH8FHC0HC1HC2HC3HC4HC5HC6HC7HC8HC9HCAHCBHCCHCDHCEHCFH 第三章 构架设计3.1 硬件构架1、主机:由于系统控制方案简单,数据量也不大,因此选用AT89C51作为控制系统的核心。2、温度检测:本系统温度检测部分是采用Dallas半导体公司生产的数字化温度传感器DSl8B20。3、电源电路:由直流稳压电源提供+9V电源,在本次设计中, 将220V的市电降压到12V,经桥式

21、整流和滤波后再使用7809芯片获得较为稳定的+9V电源。4、显示器:使用LCD1602液晶显示器,2*16字符显示。动态显示A、B、C三点的温度值。5、报警器:报警功能由蜂鸣器,LED灯来实现,当实时温度超出预置温度范围时。控制端口驱动蜂鸣器鸣叫、LED闪烁灯报警,并控制继电器的动作。6、键盘:键盘有四个功能键,设置键,上加键,下减键,确定键。用于设置上、下限温度。 综上所述:设计出温度控制系统构架如图3.1所示。 图3.1 温控系统构架图3.2各模块仿真图 在proteus软件的仿真实验中,温控系统构架中各个模块如下图所示:图3.2是温度显示模块,在显示屏中动态的显示A、B、C三点的温度值。

22、图3.3是DS28B20温度测试模块,单片机通过循环读取这三个DS18B20的数据,实时更新显示屏的数据显示。图3.4是报警功能模块,它的功能是通过声、关形式做出报警,绿灯模拟继电器工作,实现对电路的控制。图3.5是按键模块,进入设置功能和调节上、下按键后,显示屏会对应显示设定的报警温度值。图3.6是晶振和复位电路,这个模块主要是使单片机能够正常工作。 图3.2温度显示模块 图3.3 DS18B20温度传感器模块 图3.4 报警模块 图3.5 按键控制模块 图3.6 复位及晶振模块3.3 程序构架在本设计中,程序构架设计如图3.7和图3.8所示。在设计过程中通过3个I/O口循环读取DS18B2

23、0的数据,以达到实时动态显示A、B、C三点的温度。设置功能是通过检测外部中断0产生中断,可随时设置温度的上、下限值,并通过确认键来退出中断。 图3.7 主程序构架框图 图3.8 中断程序构架第四章 软件仿真4.1 稳压直流电源仿真原理图在本设计中,独立电源的原理图如图4.1所示。变压器的指标为:220V转12V,功率是25W。整流电路是于4个1N914二极管组成。C1的指标为:1000uF/25V,主要是为平稳化直流电压而设制的。C2的作用是滤除高频杂波。稳压芯片采用的是78L09,经过78L09稳压后,在VO口输出稳定的+9V电压供温控模块使用。D6为指示灯,D6点亮则说明电源已经工作。 图

24、4.1 稳压电源原理图4.2 温度控制系统模块仿真图 在完成整个温控系统的仿真任务中,首先要熟悉proteus软件和keil软件的基本使用方法。在proteus软件中按照预先设计好的硬件构架搭建电路,由于这软件的元器件名都是英文标注的,我们可事先在网上查找到相关的元器件英文对照表,这样,搭建电路图才会事半功倍。元器件的选择要适合电路的需要,因而参数指标也要事先计算好。Keil是一款单片机程序编辑软件,能将C语言和汇编语言进行编译、连接,生成单片机运行文件。而在proteus和keil结合仿真中,proteus软件主要是运行keil中生成的.hex文件。特别要注意的是在keil软件中生成.hex

25、文件必须在设置中选择12.0MHz晶振和执行生成.hex文件这两个选项。生成好的.hex文件可通过双击proteus中单片机后把.hex文件根目录加载到单片机中即可运行。在本次设计中,可调节任意一个DS18B20的读数和观察LCD1602显示的读数来验证程序的正确与否。按键功能是通过中断方式来设置的,其优点是随时可以设置报警温度的上、下限值,退出中断后又立即可以进行温度的测、显和报警功能。C点B点A点 图4.2 温控模块仿真图第五章 硬件制作和结论5.1 实物结果图片 图5.1实物图是指针式万用表测量稳压直流电源,万用表档位调到直流10V档,测出读数为9V。指示灯点亮。说明直流稳压电源工作正常

26、,并达到设计要求的标准。读数为:9V 图5.1 稳压电源 图 5.2所示为温控系统的实物图片,温控系统的所有子电路模块都焊接在同一块电路板上。LCD1602插槽DS18B20继电器AT89C51蜂鸣器 图5.2 温控系统实物图图5.3所示为电路板的焊接实物图,布线要尽量使实物外观完美,也要减少跳线的使用量。在本次设计中,由于事先画好布线草图,所以在跳线的使用上只用了2根。 图5.3 电路板焊接及走线图图5.4是在通电后,液晶显示器正确显示A、B、C三点的温度值。此时,测得常温A点的值为26.9,B点值为26.7,C点的值为26.9。 图5.4 正确显示温度值5.2 硬件的测试与检修1、硬件调试

27、:第一步:对单片机烧录可执行文件,这一步要先学会烧录软件和烧录器的使用。第二步:检查焊接是否有虚焊、短路、断路,无误后上电测工作电压是否正常。电压正常则可断电插入单片机和显示屏。 第三步:上电,检测各个功能是否达到设计要求。2、硬件检修:硬件检修是针对调试中出现的问题进行查找、修理、改进。下面是几种常见的故障和修理的办法:(1)稳压电源没有电压输出,指示灯不亮。一般是稳压芯片7809的引脚接错了,分清引脚功能,正确接入即可。(2)LCD1602显示器不亮,可查看插槽和排针的顺序是否一致,且查看是否有接触不良,也可以调节控制背光电源的变阻器。(3)单片机不能读取DS18B20,或者不能不能正确读

28、取DS18B20的读数,可先查看DS18B20的引脚是否接错,引脚焊接无误的话可查看程序和仿真是否正确。5.3 总结描述基于单片机AT89C51设计的数字式多点温度控制系统具有温度采集、显示、简单的设置及控制报警功能。给它提供稳定的工作电压是保证其工作正常的重要前提,因此,设计中包含了稳压直流电源的设计要求。稳压直流电源制作是通过降压、整流、滤波、稳压实现的。在实际作品中稳压电源工作稳定,完全符合设计要求。设计的温度控制器测温范围宽为-55+125,作品中使用到的DS18B20测量精度可通过编程调节,精度范围为0.250.0625。在本设计中采用的是默认分辨率,即12位二进制表示一个数值,精度

29、是0.0625。温度显示器使用LCD1602,它能显示16*2个字符,所以它可以实时的显示单片机从DS18B20中采集的温度数值,把三点的温度同时显示在同一块液晶显示器中。本设计中还添加了按键设置功能,通过按键的设置功能可以对报警温度进行设置,如果A、B、C三点的温度有任意一个温度低于或者高于设置好的范围就会触发报警功能和继电器控制功能,在程序中,报警功能和控制功能是通过将读取的温度值与设定好的p、q两个参数的值进行比较后经过单片机的判断而做出的响应。总结整个设计过程,从选题到硬件的完成,我的收获颇丰。首先,我在确定题目后查找和阅读了很多相关的理论知识,尤其是对DS18B20这个器件做了很多的

30、了解,也重新温习了一遍单片机应用知识和C语言的应用知识。其次,刚开始我对于proteus的使用不了解,然后我通过观看、模仿网络上的proteus的教学视频,初步掌握了这个软件的基本使用方法和技巧。在结合keil编程软件的仿真中,进一步加强了对硬件的了解。最后,完成硬件作品也是很关键的步骤,再多的理论知识也只有通过其产生的实物应用才能体现它的价值。因而制作出完美的实物作品是必不可少的。经过自己的努力和细心,通过焊接、调试、检修我制作出了硬件作品,验证了自己在本次设计中学习到的知识和设计的正确性。参考文献(References)1郭天祥.新概念51单片机C语言教程.北京:电子工业出版社,2009.

31、2李建忠.单片机原理与应用.西安:西安电子科技大学出版社,2009.3房小翠,王金凤. 单片微型计算机与机电接口技术.北京:国防工业出版社,20024李珍. 单片机原理与控制技术. 北京:清华大学出版社,20025阎实. 数字电子技术基础.北京:高等教育出版社,1983.6谭浩强. C语言程序设计(第三版).北京:清华大学出版社,2005.7陈杰,黄鸿.传感器监测与技术.北京:高等教育出版社,2002.8张红润,张亚凡,邓洪.传感器原理与应用.北京:清华大学出版社,2008. 9童师白,华成英.模拟电子技术基础.北京:高等教育出版社,1980.10朱清慧,张凤蕊.proteus教程.北京:清华

32、大学出版社,2008.致 谢经过将近六个月,终于将毕业设计完成了,在设计过程中遇到了无数的困惑,都在同学和老师的帮助下找到了解决办法,尤其要强烈感谢我的毕业设计指导老师张福阳老师,他对我进行了无私的指导和帮助,不厌其烦的对我的设计提出建议和帮助我进行论文的修改。另外在校工程训练实验室仿真和制作硬件的时候,实验室管理老师也给我提供很多器件资料和硬件制作方面的帮助,在此向这位实验室管理老师表示最衷心的感谢,同时也感谢这次毕业设计所涉及到的参考文献的各位学者和作者,本设计参考了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本次设计和论文的写作。更要感谢我的几个室友,在我程序

33、设计中给予我很多建议和帮助,在生活坏境上给我营造了一个良好的学习、设计的氛围。 由于我的学术水平和设计水平有限,因而在作品和论文上有很多不足之处,恳请各位老师和同学批评和指正,四年的大学生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始,四年来的求学生涯,在师长、亲友的大力支持下,走得辛苦却也收获颇丰,在毕业设计和论文即将付梓之际,思绪万千,心情久久不能平静,可是我更急切地要把我的敬意和赞美献给每一位教过我的老师,尤其是指导老师,虽然我不是您最出色的学生,但我保证我今后肯定是您最为之骄傲的学生。在跟您相处的日子中,您严谨的治学,渊博的学识,深邃的思想,雄阔的视

34、野,为我营造了一种良好的精神氛围,授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我有山重水复疑无路,柳暗花明又一村。在此,再次真诚地向每位教过我的老师致谢,感谢你们。祝愿敬爱的老师们在今后工作和生活中一帆风顺,心想事成。 2013年5月24日附录:基于单片机AT89C51温度控制器程序如下:#include#includetypedef unsigned char uint8;typedef unsigned int uint16;typed

35、ef char int8;typedef int int16;sbit RS=P20;sbit RW=P21;sbit EN=P22;sbit BUSY=P07;sbit DQ=P27; /温度输入口sbit EQ=P26;sbit FQ=P25;sbit SET=P32;/设置sbit ADD=P11;/加减sbit SUB=P12;/减键sbit OK=P13;/确定键sbit LED=P17;sbit BEEP=P16;uint8 flag;int p=30,q=0,k=0;int data set4;uint8 num_temp=0123456789;#define nops(); _

36、nop_(); _nop_(); _nop_(); _nop_(); /定义空指令 4usvoid delay(uint16 n) while (n-);void delay_ms(uint16 m) uint8 n=120; while(m-) while(n-); * DQ:18B20复位函数void DS1802_reset() uint8 flag=1; while(flag) while(flag) DQ=1; delay(1); DQ=0; delay(50); /550us DQ=1; delay(6); /66us flag=DQ; delay(45);/延时500us fla

37、g=DQ;/500us后总线释放,DQ=1; DQ=1; * EQ:18B20复位函数void EQDS1802_reset() uint8 flag=1; while(flag) while(flag) EQ=1; delay(1); EQ=0; delay(50); /550us EQ=1; delay(6); /66us flag=EQ; delay(45);/延时500us flag=EQ;/500us后总线释放,DQ=1; EQ=1; * FQ:18B20复位函数void FQDS1802_reset() uint8 flag=1; while(flag) while(flag) F

38、Q=1; delay(1); FQ=0; delay(50); /550us FQ=1; delay(6); /66us flag=FQ; delay(45);/延时500us flag=FQ;/500us后总线释放,DQ=1; FQ=1; * 18B20写1个字节函数 * 向1-WIRE总线上写一个字节void write_byte(uint8 dat) uint8 i; for(i=0;i=1; /右移一位 DQ=1; delay(1); /*EQ: 向1-WIRE总线上写一个字节void EQwrite_byte(uint8 dat) uint8 i; for(i=0;i=1; /右移一

39、位 EQ=1; delay(1); /*FQ: 向1-WIRE总线上写一个字节void FQwrite_byte(uint8 dat) uint8 i; for(i=0;i=1; /右移一位 FQ=1; delay(1); * 18B20读1个字节函数 * 从1-WIRE总线上读取一个字节uint8 read_byte() uint8 i,byte=0; for(i=0;i=1; DQ=1; _nop_(); DQ=0; nops(); DQ=1; nops(); if(DQ=1) byte|=0x80; delay(6); DQ=1; return byte; /*EQ*/uint8 EQr

40、ead_byte() uint8 i,byte=0; for(i=0;i=1; EQ=1; _nop_(); EQ=0; nops(); EQ=1; nops(); if(EQ=1) byte|=0x80; delay(6); EQ=1; return byte; /*FQ*/uint8 FQread_byte() uint8 i,byte=0; for(i=0;i=1; FQ=1; _nop_(); FQ=0; nops(); FQ=1; nops(); if(FQ=1) byte|=0x80; delay(6); FQ=1; return byte; * 启动温度转换void start_

41、temp_sensor() DS1802_reset(); write_byte(0xcc); / 发Skip ROM命令 write_byte(0x44); / 发转换命令 /*EQ启动温度转换*/void EQstart_temp_sensor() EQDS1802_reset(); EQwrite_byte(0xcc); / 发Skip ROM命令 EQwrite_byte(0x44); / 发转换命令 /*FQ启动温度转换*/void FQstart_temp_sensor() FQDS1802_reset(); FQwrite_byte(0xcc); / 发Skip ROM命令 FQwrite_byte(0x44); / 发转换命令 * 读出温度int16 read_temp() uint8 temp_data2; / 读

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁