资源描述
电子信息工程《电子专业基础课程设计》研究汇报
温度测量系统设计
学生姓名:XXX
学生学号:XXXXXXXXXX
指导老师:XXX
所在学院:信息技术学院
专业班级:电子一班
中国·大庆
年 11 月
信息技术学院
课 程 设 计 任 务 书
信息技术 院 电子信息工程 专业 08 级,学号 XXXXXXXXX 姓名 XXX
一、课程设计课题:
温度测量系统设计
二、课程设计工作日自 年 10 月 31 日至 年 11 月 18 日
三、课程设计进行地点: 信息技术学院205
四、 课程设计任务要求: (具体内容见课程设计文档)
1.课题起源: 老师派发题目
2.目标意义: 伴随社会进步和工业技术发展,大家越来越重视温度原因,很多产品对温度范围要求严格,而现在市场上普遍存在温度检测仪器大全部存在精度不够缺点,不利于工业控制者依据温度改变立即做出决定。实时性高、精度高,能够综合处理多点温度信息测量系统就很有必需。
3.基础要求:
1) 采取单片机80C51.要求温度范围0℃~100℃之间 。
2) 温度传感器选择模拟数字全部能够。
3) 在LED中显示温度。
4) 精度达成±1%。
5) 分辨率≤0.1℃
6) 依据精度自选A/D转换芯片。
7) 直流稳压电源自行设计。
8) 辅助电路及元器件自选。
课程设计评审表
指导老师评语:
成绩: 签字: 日期:
目录
1 设计任务要求………………………………………………….……...1
2 方案比较……………………………………………………….……...1
3单元电路设计………………………………………………….……….2
4软件编程……………………………….…………………………...10
总结和体会……………………………………………………………..11
致谢………………………………………………………….………….12
参考文件………………………………………………….…………….13
附录……………………………………………………………………..14
1、设计任务要求
1) 采取单片机80C51.要求温度范围0℃~100℃之间。
2) 温度传感器选择模拟数字全部能够。
3) 在LED中显示温度。
4) 精度达成±1%。
5) 分辨率≤0.1℃
6) 依据精度自选A/D转换芯片。
7) 直流稳压电源自行设计。
8) 辅助电路及元器件自选。
2、方案比较
方案一、采取模拟分立元件,如电容、电感或晶体管等非线形元件,实现多点温度测量及显示,该方案设计电路简单易懂,操作简单,且价格廉价,但采取分立元件分散性大,不便于集成数字化,而且测量误差大。采取模拟温度传感器实现温度测量
方案二、本方案采取AT89S51单片机为关键,经过温度传感器AD590采集温度信号,经信号放大器放大后,送到A/D转换芯片,最终经单片机检测处理温度信号。
图1 方案二框图
方案三、本方案由AT89S51单片机为关键,温度传感器采取是DS18B20数字温度传感器实现温度测量而且由LED显示温度值。
图2 方案三框图
方案比较:DS18B20将温度信号直接转换为数字信号,实现了和单片机直接接口,从而省去了信号调理电路。该元件最大分辨率为0.0625℃能达成设计要求。该仪器电路简单、功效可靠、测量效率高,很好地填补了传统温度测量方法不足。相对和方案1,在功效、性能、可操作性等方面全部有较大提升。相对和方案2,硬件电路简单,易于操作,含有更高性价比,更大市场。所以我采取方案3完成本设计。
3、单元电路设计
3.1 控制电路
3.1.1 单片机电路及原理
At89S51是美国ATMEL企业生产低电压、高性能CMOS8位单片机;片内含有4k字节可反复擦写只读程序存放器(PEROM)和128字节随机存取数据存放器(RAM);器件采取AMTEL企业高密度、非易失性存放技术生产,兼容标准MCS-51指令系统;片内置通用2位中央处理器(CPU)和Flash存放单元,功效强大AT89C51单片机可为您提供很多高性价比应用场所,可灵活应用于多种控制领域。功效特征概述
AT89S51提供以下标准功效:4k字节Flash闪速存放器、128字节内部RAM、32个I/O口线、两个16位定时/计数器、1个5向量两级中止结构、一个全双工串行通信口、片内振荡器立即钟电路,同时,AT89S51可降至0Hz静态逻辑操作并支持两种软件可选节电工作模式;空闲方法停止CPU工作,但许可RAM、定时/计数器、串行通信口及中止系统继续工作;掉电方法保留RAM中内容,但振荡器停止工作并严禁其它全部部件工作一直到下个硬件复位[2]。
引脚功效说明
Vcc:电源电压
GND:地
P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口;作为输出口用时,每位能吸收电流方法驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存放器或程序存放器时,这组口线分时转换地址(低8位)和数据总线复用;在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻
P1口:P1是一个带内部上拉电阻8位双向I/O口;P1输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,经过内部上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。
Flash编程和程序校验期间,P1接收低8位地址
P2口:P2口是一个带有内部上拉电阻8位双向I/O口;P2输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,经过内部上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。
在访问外部程序存放器或16位地址外部数据存放器(比如实施MOVX @DPTR指令)时,P2口送出高8位地址数据;在访问8位地址外部数据存放器(如实施MOVX @RI)时,P2口线上内容(即特殊功效寄存器(SFR)区中R2寄存器内容),在整个访问期间不改变;
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:P3口是一个带有内部上拉电阻8位双向I/O口;P2输出缓冲级可驱动个(吸收或输出电流)4个TTL逻辑门电路,对端口写“1”,经过内部上拉电阻把端口拉到高电平,此时可作输入口;作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流。
P3口除了作为通常I/O口线外,更关键用途是它第二功效;以下表2-1所表示:
表2-1
端口引脚
第二功效
P3.0
RXD (串行输入口)
P3.1
TXD (串行输出口)
P3.2
(外中止0)
P3.3
(外中止1)
P3.4
T0 (定时/计数器0)
P3.5
T1 (定时/计数器1)
P3.6
(外部数据存放器写选通)
P3.7
(外部数据存放器读选通)
P3口还接收部分用于Flash闪速存放器编程和程序校验控制信号。
RST:复位输入;当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位
ALE/PROG:当访问外部程序存放器或数据存放器时,ALE(地址锁存许可)输出脉冲用于锁存地址低8位字节;即使不访问外部存放器,ALE仍以时钟振荡频率1/6输出固定正脉冲信号,所以它可对外输出时钟或用于定时目标;要注意是,每当访问外部数据存放器时将跳过一个ALE脉冲。
如有必需,可经过对特殊功效寄存器(SFR)区中8EH单元D0位置位,可严禁ALE操作,该位置位后,只有一条MOVX和MOVC指令ALE才会被激活,另外该引脚会被微弱拉高,单片机实施外部程序时,应该置ALE无效。
EA/VPP:外部访问许可;欲使CPU仅访问外部程学存放器(地址为0000H FFFFH),EA端必需保持低电平(接地)。需要注意是,假如加密位LB1被编程,复位时内部会锁存EA端状态[3]。
如EA端为高电平(接Vcc端),CPU则实施内部程序存放器中指令。
Flash存放编程时,该引脚加上+12V编程许可电源Vpp,当然这必需是该器件是使用12V编程电压Vpp。
XTML1:振荡器反相放大器及内部时钟发生器输入端。
XTML2: 振荡器反相放大器输出端。
图3 单片机工作电路图
3.1.2 复位电路
复位电路用途:单片机复位电路就好比电脑重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部程序从头开始实施。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞时候,按下复位按钮内部程序自动从头开始实施。
复位电路工作原理:51单片机要复位只需要在第9引脚接个高电平连续2us就能够实现在单片机系统中,系统上电开启时候复位一次,当按键按下时候系统再次复位,假如释放后再按下,系统还会复位。所以能够经过按键断开和闭合在运行系统中控制其复位。电路图以下:
图4 复位电路
3.1.3 晶振电路
晶体振荡器,简称晶振。在电气上它能够等效成一个电容和一个电阻并联再串联一个电容二端网络,电工学上这个网络有两个谐振点,以频率高低分其中较低频率是串联谐振,较高频率是并联谐振。因为晶体本身特征致使这两个频率距离相当靠近,在这个极窄频率范围内,晶振等效为一个电感,所以只要晶振两端并联上适宜电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就能够组成正弦波振荡电路,因为晶振等效为电感频率范围很窄,所以即使其它元件参数改变很大,这个振荡器频率也不会有很大改变。
晶振有一个关键参数,那就是负载电容值,选择和负载电容值相等并联电容,就能够得到晶振标称谐振频率。
通常晶振负载电容为15p或12.5p ,假如再考虑元件引脚等效输入电容,则两个22p电容组成晶振振荡电路就是比很好选择。
晶体振荡器也分为无源晶振和有源晶振两种类型。无源晶振和有源晶振(谐振)英文名称不一样,无源晶振为crystal(晶体),而有源晶振则叫做oscillator(振荡器)。无源晶振需要借助于时钟电路才能产生振荡信号,本身无法振荡起来,所以“无源晶振”这个说法并不正确;有源晶振是一个完整谐振振荡器。
谐振振荡器包含石英(或其晶体材料)晶体谐振器,陶瓷谐振器,LC谐振器等。 在此次课程设计中使用是无源晶振电路图以下示:
图5 晶振电路
3.2 直流电源
在此次课程设计中采取是自主设计直流电源关键是经过变压器进行降压,用二极管整流桥进行整流操作,用稳压芯片对电源实现稳压。
在正常工作情况下输入220V交流电经过整流二极管进行整流使用电桥实现全波整流经过4700uf大电容滤波得到较低直流电压,经过LM7812把直流电压稳压为12V,然后在经过直流稳压芯片LM7805得到了单片机稳定工作电压。以下图示:
图6 自制直流电源
3.3 测温电路
在此次课程设计中使用是DS18B20数字式温度传感器。DS18B20型单线智能温度传感器,属于新一代适配微处理器智能温度传感器。全部传感元件及转换电路集成在形如一只三极管集成电路内。和传统热敏电阻相比,它能够直接读出被测温度,而且可依据实际要求经过简单编程实现9~12位数字值读数方法。其能够分别93.75ms和750ms内完成9位和12位数字量,最大分辨率为0.0625℃ , 而且从DS18B20读出或写入DS18B20信息仅需要一根口线(单线接口)读写。
3.3.1 DS18B20性能特点
单线数字化智能集成温度传感器,其特点是:
① DSI8B20可将被测温度直接转换成计算机能识别数字信号输出,温度值不需要经电桥电路先获取电压模拟量,再经信号放大和A/D转换成数字信号,处理了传统温度传感器存在因参数不一致性,在更换传感器时会因放大器零漂而必需对电路进行重新调试问题,使用方便.
② DS18B20能提供9到12位温度读数,精度高,且其信息传输只需1根信号线,和计算机接口十分简便,读写及温度变换功率来自于数据线而不需额外电源.
③ 每一个DS18B20全部有一个惟一序列号,这就允很多个DS18B20连接到同一总线上.尤其适合于多点温度检测系统.
④ 负压特征:当电源极性接反时,DS18B20即使不能正常工作,但不会因发烧而烧毁 正是因为含有以上特点,DS18B20在处理多种误差、可靠性和实现系统优化等方面和传统多种温度传感器相比,有没有可比拟优越性,所以广泛应用于过程控制、环境控制、建筑物、机器设备中温度检测。
3.3.2 DS18B20和单片机经典接口设计
DS18B20测温系统含有测温系统简单、测温精度高、连接方便、占用口线少等优点。Dsl8B20和单片机硬件连接有两种方法:一是Vcc接外部电源,GND接地,I/0和单片机I/0线相连;二是用寄生电源供电,此时,~UDD和GND接地,I/0接单片机I/0。不管是哪种供电方法,I/0口线全部要接4.7k Q左右上拉电阻。图4给出了DSl8B20和微处理器经典连接。
① DS18B20寄生电源供电方法:
以下面图3.2(a)所表示,在寄生电源供电方法下,DS18B20从单线信号线上汲取能量:在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上电能工作,直到高电平到来再给寄生电源(电容)充电。
独特寄生电源方法有三个好处:
1) 进行远距离测温时,无需当地电源
2) 能够在没有常规电源条件下读取ROM
3) 电路愈加简练,仅用一根I/O口实现测温
要想使DS18B20进行正确温度转换,I/O线必需确保在温度转换期间提供足够能量,因为每个DS18B20在温度转换期间工作电流达成1mA,当多个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够能量,会造成无法转换温度或温度误差极大。
所以,该电路只适应于单一温度传感器测温情况下使用,不宜采取电池供电系统中。而且工作电源VCC必需确保在5V,当电源电压下降时,寄生电源能够汲取能量也降低,会使温度误差变大。
② DS18B20寄生电源强上拉供电方法:
改善寄生电源供电方法以下面图3.2(b)所表示,为了使DS18B20在动态转换周期中取得足够电流供给,当进行温度转换或拷贝到E2存放器操作时,用MOSFET把I/O线直接拉到VCC就可提供足够电流,在发出任何包含到拷贝到E2存放器或开启温度转换指令后,必需在最多10μS内把I/O线转换到强上拉状态。在强上拉方法下能够处理电流供给不走问题,所以也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。
③ DS18B20外部电源供电方法:
以下面图3.2(c)所表示,在外部电源供电方法下,DS18B20工作电源由VDD引脚接入,其VDD端用3~5.5V电源供电,此时I/O线不需要强上拉,不存在电源电流不足问题,能够确保转换精度,同时在总线上理论能够挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电方法下,DS18B20GND引脚不能悬空,不然不能转换温度,读取温度总是85℃。
图7 温度传感器电路
3.4 显示电路
该显示电路是采取7段LED数码管显示温度。电路图以下:
关键工作原理:7段数码管又分共阴和共阳两种显示方法。假如把7段数码管每一段全部等效成发光二极管正负两个极,那共阴就是把abcdefg这7个发光二极管负极连接在一起并接地;共阳是把全部二极管正极连接在一起。假如7段数码管是共阳显示电路,那就需要选择驱动电路。共阳就是把abcdefg7个发光二极管正极连接在一起并接到5V电源上,其它7个负极接到单片机对应IO口。不管共阴共阳7段显示电路,全部需要加限流电阻,不然通电后就把7段译码管烧坏了!限流电阻选择是:5V电源电压减去发光二极管工作电压除上10ma到15ma得数即为限流电阻值。发光二极管工作电压通常在1.8V--2.2V,为计算方便,通常选2V即可!发光二极管工作电流选择在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!对于大功率7段数码管可依据实际情况来选择限流电阻及电阻瓦数!
图 8 LED显示电路
4、软件编程
在本课程设计中使用Keil C51开发软件,该软件是美国Keil Software企业出品51系列兼容单片机C语言软件开发系统,和汇编相比,C语言在功效上、结构性、可读性、可维护性上有显著优势,所以易学易用。用过汇编语言后再使用C来开发,体会愈加深刻。
Keil C51软件提供丰富库函数和功效强大集成开发调试工具,全Windows界面。另外关键一点,只要看一下编译后生成汇编代码,就能体会到Keil C51生成目标代码效率很之高,多数语句生成汇编代码很紧凑,轻易了解。在开发大型软件时更能表现高级语言优势。
该课程设计中关键利用了DS18B20芯片进行测温,该芯片是单总线器件,顾名思义单总线只有一根数据线,所以在通信时时序就显得十分关键,我们在编程时也要十分注意这一点。在程序中测温时首先要对DS18B20进行初始化,初始化过程由单片机发出复位脉冲和芯片响应应答脉冲组成,应答脉冲使主机知道,总线上有从机设备,且准备就绪。因为总线上只挂接了一片测温芯片,所以可直接跳过ROM匹配发出测温命令。该设计可实时显示温度值,便于连续观察。系统源程序见附录。软件步骤图以下所表示:
图9 程序设计步骤图
总结和体会
在此次课程设计中使用是数字温度传感器DS18B20。经过调试成型系统发觉了DS18B20除了上述优点外,还有部分缺点,如:简单硬件连接代价是复杂软件时序,DS18B20在测量温度时候,灵敏度不够高,温度快速改变时无法快速显示出其改变。经过一系列试验发觉:由DS18B20构建测温小系统适适用于环境温度监控,对温度小改变较敏感;不适合应用于要求实时性强、温度跨度大测温方法。
在显示电路中采取数码管显示方法,即使操作简单不过在代码书写时要注意在字型码这块要区分好是共阳极还是共阴极数码管。本文中采取动态扫描方法控制共阳极数码管。在按键处理时使用是软件消抖,要注意延长时间把握。在此次课程设计中了解了很多知识而且为毕业设计书写锻炼了自己。
致谢
这次课程设计使我掌握了很多实践知识,在老师和同学帮助下对单片机有了深入了解。经过这次课程设计使我知道了理论和实际相结合是很关键,只有理论知识是远远不够,只有把所学理论知识和实践相结合起来,从理论中得出结论,进而提升自己实际动手能力和独立思索能力。整个设计过程能够说不是很顺利,因为有很多知识已经淡忘,还有很多新东西没有掌握,所以这次设计在不停复习、学习中度过,使我受益匪浅,也使我对单片机利用有了深入了解和掌握,也为以后学习生活和工作打下良好基础。最终我要衷心感谢帮助我同学。
参考文件
[1] 李朝青.单片机原理及接口技术(修订版).北京:北京航空航天大学出版社,1998
[2] 李广弟.单片机基础.北京:北京航空航天大学出版社,1992
[3] 何立民.单片机应用技术大全.北京:北京航空航天大学出版社,1994
[4] 张毅刚.单片原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990
[5] 谭浩强.单片机课程设计.北京:清华大学出版社,1989
[6]马家辰.MCS-51单片机原理及接口技术.哈尔滨: 哈尔滨工业大学出版社, 1997
[7]康华光.数字电子技术.第四版.北京:高等教育出版社,1998
[8]OMAC Baseline Architecture Functional Requirement.Version 1.0.WWW.arcweb.com.
[9]付家才.单片机测控工程实践技术.北京: 化学工业出版社,
[10]李广弟.单片机基础(修订本).北京:北京航空航天大学出版社,
[11] 诸昌铃.LED显示器系统原理及工程技术.西安:西安电子科技大学出版社,.9
[12]Astrom, Karl J. (Karl Johan).Computer-controlled systems: theory and design. Beijing: Tsinghua University Press, .2
[13]沈红卫.单片机应用系统设计实例和分析.北京:北京航空航天大学出版社,
附录
附录一 电路图
附录二 代码
//DS18B20读写程序,数据脚P2.4 //
//温度传感器18B20汇编程序,采取器件默认12位转化 //
//最大转化时间750微秒,显示温度-55到+125度,显示精度 //
//为0.1度,显示采取4位LED共阳显示测温值 //
//P1口为段码输入,P2^0~P2^3为位选 //
/***************************************************/
#include "reg51.h"
#include "intrins.h" //_nop_();延时函数用
#define Disdata P1 //段码输出口
#define discan P2 //扫描口
#define uchar unsigned char
#define uint unsigned int
sbit DQ=P2^4; //温度输入口
sbit DIN=P1^7; //LED小数点控制
uint h;
uchar flag;
//**************温度小数部分用查表法***********//
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,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
//共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-"
uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; //列扫描控制字
uchar data temp_data[2]={0x00,0x00}; //读出温度暂放
uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //显示单元数据,共4个数据和一个运算暂用
//
//
//
/***********11微秒延时函数**********/
//
void delay(uint t)
{
for(;t>0;t--);
}
//
/***********显示扫描函数**********/
scan()
{
char k;
for(k=0;k<4;k++) //四位LED扫描控制
{
Disdata=0xff;
Disdata=dis_7[display[k]];
if(k==1){DIN=0;}
discan=scan_con[k];delay(90);
discan=0xff;
}
}
//
//
/***********18B20复位函数**********/
ow_reset(void)
{
char presence=1;
while(presence)
{
while(presence)
{
DQ=1;_nop_();_nop_();
DQ=0; //
delay(50); // 550us
DQ=1; //
delay(6); // 66us
presence=DQ; // presence=0继续下一步
}
delay(45); //延时500us
presence = ~DQ;
}
DQ=1;
}
//
//
/**********18B20写命令函数*********/
//向 1-WIRE 总线上写一个字节
void write_byte(uchar val)
{
uchar i;
for (i=8; i>0; i--) //
{
DQ=1;_nop_();_nop_();
DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us
DQ = val&0x01; //最低位移出
delay(6); //66us
val=val/2; //右移一位
}
DQ = 1;
delay(1);
}
//
/*********18B20读1个字节函数********/
//从总线上读取一个字节
uchar read_byte(void)
{
uchar i;
uchar value = 0;
for (i=8;i>0;i--)
{
DQ=1;_nop_();_nop_();
value>>=1;
DQ = 0; //
_nop_();_nop_();_nop_();_nop_(); //4us
DQ = 1;_nop_();_nop_();_nop_();_nop_(); //4us
if(DQ)value|=0x80;
delay(6); //66us
}
DQ=1;
return(value);
}
//
/***********读出温度函数**********/
//
read_temp()
{
ow_reset(); //总线复位
write_byte(0xCC); // 发Skip ROM命令
write_byte(0xBE); // 发读命令
temp_data[0]=read_byte(); //温度低8位
temp_data[1]=read_byte(); //温度高8位
ow_reset();
write_byte(0xCC); // Skip ROM
write_byte(0x44); // 发转换命令
}
//
/***********温度数据处理函数**********/
void work_temp()
{
uchar n=0;
uchar doth,dotl;
uchar flag3=1,flag2=1; //数字显示修正标识
if((temp_data[1]&0xf8)!=0x00)
{
temp_data[1]=~(temp_data[1]);
temp_data[0]=~(temp_data[0])+1;
n=1;
flag=1;
}//负温度求补码
if(temp_data[0]>255)
{
temp_data[1]++;
}
display[4]=temp_data[0]&0x0f;
display[0]=ditab[display[4]];
doth=display[0]/10;
dotl=display[0]%10;
display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x07)<<4);
display[3]=display[4]/100;
display[2]=display[4]/10%10;
display[1]=display[4]%10;
if(!display[3])
{
display[3]=0x0a;
flag3=0;
if(!display[2])
{
display[2]=0x0a;
flag2=0;
}
}//最高位为0时全部不显示
if(n)
{
display[3]=0x0b;//负温度时最高位显示"-"
flag3=0;
}
}
//
//
/**************主函数****************/
main()
{
Disdata=0xff; //初始化端口
discan=0xff;
for(h=0;h<4;h++){display[h]=8;}//开机显示8888
ow_reset(); // 开机先转换一次
write_byte(0xCC); // Skip ROM
write_byte(0x44); // 发转换命令
for(h=0;h<500;h++)
{scan();} //开机显示"8888"2秒
while(1)
{
read_temp(); //读出18B20温度数据
work_temp(); //处理温度数据
scan(); //显示温度值2秒
}
}
//
//*********************结束**************************//
展开阅读全文