1、摘要本文介绍了无线传输网络技术的概念,从无线传输网络技术的体系结构、网络协议、节点技术出发,归纳了无线传输网络技术的基本特点。基于无线传输节点设计原则及选用微型数字温度传感器DS1820和单片机AT89S51组成数据采集系统,用集成的无线传输技术模块(本设计选用ZigBee集成模块)作为无线传输部分,给出了无线传输网络的通用结构,系统硬件及软件的设计方案和具体实现。最后进行实验环节,实验结果表明本文设计的无线传输网络可以实现温度信息的采集及无线传输。关键词无线传输网络;IEEE 802.15.4;ZigBee协议;DS1820;AT89S51单片机AbstractThis dissertati
2、on describes the concept of WSN. System structure, node technology and protocols of networks of wireless sensor networks are explored as the research work of the beginning. The characteristics and analyze of the protocols of data link layer and network layer are carried out. Then, the protocol struc
3、ture and characteristics of the wireless communication protocol are introduced in detail. It was proposed that basic on the principle of wireless communication protocol and miracle digital temperature communication DS1820 and AT89S51. The solution and practical sensor network basics on the principle
4、 of design. The solution and practical implementation of hardware structure and software of the system is provided, a good consideration of the fact of hardware and software was outlined. At last, the experimental results show that the system can realize wireless communication between the sensor nod
5、es. Key wordsWireless sensor network (WSN);IEEE802.15.4;ZigBee protocol; DS1820;AT89S51目 录1.引言11.1无线传感器的概述11.1.1基于蓝牙技术是我传感器网络11.1.2基于ZigBee技术的传感器网络11.1.3ZigBee与蓝牙的比较12.选用ZIGBEE集成模块的无线传输数据采集系统总体设计22.1系统设计总体方案23.硬件电路的设计33.1芯片CC2430简介33.1.1CC2430的功能特性43.2硬件应用电路设计43.3RFD节点电路53.4温度传感器的构建63.4.1DS1820的工作原理
6、64.基于无线传输温湿度数据采集系统软件的设计84.1系统程序设计84.2协议栈104.3网络节点的软件设计114.4各功能部件的程序流程及程序134.4.1液晶驱动C51程序134.4.2主程序145.系统调试155.1系统开发环境及设备155.2调试步骤155.2.1进入调试155.2.2窗口管理155.2.3查看源文件语句165.2.4查看变量165.2.5设置并监控断点165.2.6在反汇编模式中调试175.2.7完整运行程序176.总结17致谢18附录.211.引言1.1无线传感器的概述 无线传输网络是由许多独立的无线传输网络节点通过无线电波互相通信而构成的无线通信网络1。无线传输网
7、络在配置上分为“点到点”和“主从”两种。1.1.1基于蓝牙技术的无线传输网络蓝牙技术主要面向网络中各类数据及语音设备(如PC拨号网络、笔记本电 脑、数码相机、移动电话和高品质耳机等),通过无线方式将它们连成一个微微网(Piconet),它是实现语音和数据无线传输的开放性规范,是一种低成本、短距离的无线连接技术。其无线收发器是很小的一块芯片,大约有9mm9mm,可方便地嵌入到便携式设备中,从而增加设备的通信选择性。蓝牙技术实现了设备的无连接工作,提供了接入数据网的功能,并且具有外围设备接口,可以组成一个特定的小网。1.1.2基于ZigBee技术的无线传输网络ZigBee是一种近距离、低复杂度、低
8、功耗、低数据速率、低成本的双向无线技术,主要适合于自动控制、传感、监控和远程控制等领域,可以嵌入各种设备中,同时支持地理定位功能。IEEE802.15.4定义了一种廉价的供固定、便携或移动设备使用的极低复杂度、成本和功耗的低速率无线连接技术。1.1.3ZigBee与蓝牙的比较(1)系统复杂性ZigBee的系统复杂性要远小于蓝牙的系统复杂性。ZigBee协议栈2简单,实现相对容易,需要的系统资源也较少,据估计运行ZigBee需要系统资源约28Kb;蓝牙协议栈相对复杂,需要系统资源约为250Kb。一个网络只需要一个网络协调者,其他终端设备可以是RFD,也可以是FFD。RFD的价格要比FFD便宜得多
9、,其占用系统资源仅约为4Kb,因此网络的整体成本比较低。从这一点来说,ZigBee适合有大量终端设备的网络,如传感网络、楼宇自动化等。(2)功耗ZigBee的MAC信道接入机制3有两种:无信标(Beacon)模式和有信标模式。无信标模式就是标准的ALOHACSMA-CA的信道接入机制,终端节点只在有数据要收发的时候才和网络会话,其余时间都处于休眠模式,这样平均功耗非常低。蓝牙主要采用两种方式来控制功率:自适应发射功率和调整基带链接模式。在自适应发射功率控制方式中,从属设备检测到接收信号强度指示值小于最低阈值时,从属设备可以请求主控设备增大的发射功率,反之,当RSSI大于某个规定阈值时,从属设备
10、也可以请求主控设备降低发射功率。蓝牙基带有四种链接模式:活跃(Active)、呼吸(Sniff)、保持(Hold)和休眠(Park)。通过调节基带链接模式,也可以实现节约功率的目的。活跃、呼吸、保持、休眠这四个状态消耗的平均功率逐次减小,但设备响应时间也依次增加通过从技术和应用两方面的分析与比较,可以看出:ZigBee非常适合于低功耗、低数据速率的监视、传感网络。蓝牙则适合于较高数据数率的应用,如语音和数据传输。两者之间同时又存在着竞争。比如,在计算机外设、互动玩具、家庭自动化和工业自动化等应用领域及在未来的穿戴网络中ZigBee技术有较强的竞争力。2.选用ZigBee集成模块的无线传输数据采
11、集系统总体设计2.1系统设计总体方案方案一采用模块和自己的单片机系统组合设计,这要求对单片机技术比较熟悉,当然最好是采用自己熟悉的单片机,主要工作是熟悉ZigBee AT命令集,如何通过AT命令集来操作复杂ZigBee无线网络,由于不需要分析无线协议栈代码和进行高频设计,用户可以将主要精力集中在自己的应用代码开发。 方案二:采用模块或者直接使用ZigBee芯片进行自己的ZigBee应用系统设计。因为不希望进行高频设计,可以从模块开始,直接使用TI等公司提供的ZigBee协议栈源代码和库文件,自己进行应用代码的编写,然后直接下载到模块进行调试,由于EZ-LBee这样的通用,开放,开源模块的出现,
12、使这种开发办法成为了可能。 通过对我所学知识掌握程度以及两操作系统性能及前途等方面的比较我选择方案二作为我的研究方向,同时单片机是我专业的主要课程,通过此可以巩固自己所学的知识,同时如果能够使用带有驱动源代码的模块开发系统,还可以进一步缩短上手时间。zigbee是一种相对较新的技术,这么一来,我不仅可以提高自己的自学能力,而且可以学得新知识。ZigBee无线传感器系统的功能单元结构4如图3-1所示。以ZigBee为基础构建的网络有着更大的网络容量,可以管理更多个网络终端。其中感测单元包括温度传感器与A /D转换器,用于感知和采集信息,并将其转换为数字信号。由处理单元包括嵌入式微处理器、存储器及
13、CC2430芯片,将数据转换为射频信号来进行信号的收发。图3-1ZigBee 无线传感器系统设计方案3.硬件电路的设计3.1芯片CC2430简介CC2430是一颗真正的系统芯片(SOC)CMOS解决方案5,这种方案能够提高性能并且满足2.4GHz ISM波段应用对低成本、低功耗的要求。它包括了一个高性能的2.4GHz DSSS(直接序列)射频收发器核心和一颗工业级小巧且高效的8051单片机控制器。CC2430电路原理图详见附录I所示图3-1CC2430 芯片3.1.1CC2430功能特性如下:(1) 高性能和低功耗的8051微控制器。(2) 集成符合IEEE802.15.4标准的2.4GHz的
14、RF无线收发机。(3) 优良的无线接收灵敏度和强大的抗干扰性。(4) 在休眠模式时仅0.9A的流耗,外部的中断或RTC能唤醒系统。在待机模式时少于0.6A的流耗,外部的中断能唤醒系统。(5) 硬件支持CSMA/CA功能。(6) 较宽的电压范围(2.03.6V)。(7) 数字化的RSSI/LQI支持和强大的DMA功能。(8) 具有电池监测和温度感测功能。(9) 集成了14位模数转换的ADC。(10) 集成了AES安全协处理器。(11) 带有2个强大的支持几组协议的USART,以及1个符合IEEE802.15.4规范的MAC计时器,1个常规的16位计时器和2个8位计时器。(12) 强大和灵活的开发
15、工具。3.2硬件应用电路设计CC2430模块原理图详见附录一图3-3硬件应用电路3.3RFD节点电路该节点可以检测自己所处环境的温度,并可以扫描按键值,然后发送给主机。同时增加了串口的扩展接口,若外接一个RS-232模块,就可以把数据上传到计算机上了。图3-5节点电路原理框图3.4温度传感器的构建3.4.1DS1820的特性独特的单线接口仅需一个端口引脚进行通讯,简单的多点分布应用,无需外部器件,可通过数据线供电;零待机功耗,测温范围-55+125,以 0.5递增。华氏器件-67+2570F,以 0.90F 递增 ,温度以 9 位数字量读出;温度数字量转换时200ms(典型值);用户可定义的非
16、易失性温度报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;应用包括温度控制、工业系统消费品、温度计或任何热感测系统8. 图3-6DS1820 方框图图3-7DS1820封装DS1820引脚及功能:NC :空GND:接地;DQ:数据输入输出脚(单线接口,可作寄生供电);VDD:电源电压。3.4.2DS1820的工作原理DS1820测温原理9:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前到达 0,则温度寄存器(同样被预置到-55)的值增加,表明
17、所测温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到 0,如果门周期仍未结束,则将重复这一过程。斜坡式累加器10用来补偿感温振荡器的非线性,以期待在测温时获得比较高的分辨力。这是通过改变计数器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的数值。DS1820 内部对此计算的结果可提供 0.5的分辨力。温度以 16bit 带符号位扩展的二进制补码形式读出。数据通过单线接口以串行方式传输。DS1820 测温范围-55+125,以 0.5递
18、增。如用于华氏温度,必须要用一个转换因子查找表。3.4.3温度检测系统原理及程序流程图温度检测系统采用寄生电源供电方式11。为保证在有效的DS1820时钟周期内,提供足够的电流,我们用一个MOSFET管和89C51的一个I/O口(P1.0)来完成对DS1820总线的上拉。当DS1820处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10s。采用寄生电源供电方式时VDD必须接地。由于单线制只有一根线,因此发送接收口必须是三态的,为了操作方便我们用89C51的P1.1口作发送口Tx,P1.2口作接收口Rx。通过试验我们发现此种方法可挂接DS1820数十片,距离可达到
19、50米,而用一个口时仅能挂接10片DS1820,距离仅为20米。同时由于读写在操作上是分开的故不存在信号竞争问题。无论是单点还是多点温度检测,在系统安装及工作之前,应将主机逐个与DS1820挂接,读出其序列号。其工作过程为:主机Tx发一个脉冲,待“0”电平大于480s后,复位DS1820,待DS1820所发响应脉冲由主机Rx接收后,主机Tx再发读ROM命令代码33H(低位在前),然后发一个脉冲(15s)并接着读取DS1820序列号的一位。用同样方法读取序列号的56位。对于图3-8系统的DS1820操作的总体流程图如图3-9所示。它分三步完成:系统通过反复操作,搜索DS1820序列号;启动所有在
20、线DS1820做温度A/D变换;逐个读出在线DS1820变换后的温度数据12。图3-8寄生电源供电的DS1820温度检测系统4.基于无线传输温湿度数据采集系统软件的设计4.1系统程序设计系统初始化主要包括节点定义和各参数初始化。ZigBee包含全功能设备FFD和精简功能设备RFD13。程序根据应用要求定义节点是FFD还是RFD,从而确定节点性质。参数初始化主要包括I/O接口和外设的初始化,自定义系统的时钟信号、工作频率、电源管理方式及ZigBee网络层和MAC层的参数,如网络地址、节点所属接口、集群等。主程序主要包括信号采集、计算处理、数据收发以及组网功能,可充分利用CC2430丰富的中断资源
21、对各种类型的事件进行排序和处理。开始定义节点属性定义始终定义节点频率定义电源模式I/O初始化外设初始化定义网络地址和参数定义节点属性、接口通道选择、开终端建立配置文件可运行主程序?进入主程序YN图4-1系统初始化图4-2系统主程序4.2协议栈协议栈14是使用C语言编写的,协议栈使用闪存程序存储器来存储可配置的MAC地址、网络表和绑定表。图4-3协议栈构架4.3网络节点的软件设计网络节点主要负责采集传感器数据并将这些数据传送给协调器(控制器),同时接收来自协调器(控制器)的数据并根据这些数据进行相关操作。网络节点上电后扫描所有信道来找到临近协调器,申请加入此网络。由于采用电池供电方式,必须要保证
22、终端节点的低功耗,设计中采用定时唤醒的方式连接协调器,接收或发送数据。其它时间则转入休眠模式,功耗降到最低。图4-4网络节点软件流程4.4串口通信4.4.1信道选择IEEE802.15.4为2.4GHz频段分配了16个信道,从2405MHz到2480MHz,每5MHz有一个信道,提供250kb/s的传输速率15。信道频率的计算公式为 (4-1)为减少成本,系统仅使用一个信道来创建多条虚拟链路。为避免k=18时(2440MHz)与蓝牙的2437MHz频率在传输数据时发生冲突,取k=20(2450MHz)。4.4.2帧格式系统通信采用了IEEE802.15.4可变帧长的帧格式,如表1所示。同步头(
23、SHR)包含前导序列和SFD。帧控制字段(FCF)、数据序列号、地址信息、MAC有效载荷与帧检测序列(FCS)一起构成了MAC协议数据单元(MPDU)。前导序列被定义为4Byte的0X00,SFD为1Byte,设为0XA7。在接收模式时,同步头用于同步和频偏校正。长度字段定义了MPDU中的字节数,在发送模式中被用于下溢探测。020Byte的地址信息用以标志各个节点。帧有效载荷长度可变。FCS中第一个字节为8bit接收信号强度指标(RSSI)值,最后一个字节包含接收到的长度字段和MPDU最前面8个符号的平均相关值。这个相关值可被作为计算链路质量指示(LQI)的要素。4.4.3控制字CC2430包
24、括了较多的自定义SFR寄存器,如何使用好这些SFR寄存器较为关键。在对USART的控制操作中,CC2430内部集成的USART的控制寄存器和状态寄存器分别是UxUCR和UxCSR(其中x可取值为0和1,表示CC2430集成的两USART中的一个)。UxCSR状态字格式和UxUCR控制字格式如表1所示。用这两个寄存器可完成USART的基本设置,如:SET U0CSR.MODE;选择USART0为UART模式SET U0CSR.RE;允许USART0接收数据MOV U0UCR,#1FH;设置UART的帧格式。此格式为奇偶校验有效,一帧为9位,第9位为偶校验,停止位为高电平,且接收器校验两位停止位,
25、开始位为高电平。CC2430串口波特率的设置与一般8051不同,因为其内部集成了一个波特率发生器,因此不需要使用定时器而只需设置相关的SFR寄存器UxBAUD.BAUD_M7:0 和UxGCR.BAUD4:0, 便可得到系统要求的波特率,其关系式16如下: (4-2)其中,F为系统时钟频率。若F为32MHz,执行下列语句,得到9600b/s的串口波特率:MOV U0GCR,#08HMOV U0BAUD,#3BH;设置波特率为9600b/s实际上对USART的操作还包含对其所连接的I/O口的设置。设置I/O应与硬件密切结合,如:MOV P1SEL,#30H;选择P1.5,P1.4为外部功能口MO
26、V P1DIR,#20H;选择P1.5为输出口,P1.4为输入口CLR P1FGCLR P1FG;清空P1口的中断标志MOV P2SEL,#00H;设置USART0为优4.5各功能部件的程序流程及程序4.5.1液晶驱动C51程序在进行主程序之前,要先了解系统中的液晶扩展的地板的液晶驱动程序。液晶只需要用SPI方式直接写入就行了。在网络协调器中首先初始化CC2430和液晶,然后程序开始初始化协议栈并打开中断。之后程序开始格式化一个网络,若网络格式化成功,可以在液晶上或是通过串口看到格式化网络的信息。初始化建立一个新的网络显示网络的ID号,频道号等进入无线监控状态空中有无线信号?显示温度值和按键提
27、示无信号有节点申请加入网络网络中节点温度和按键信号给该节点分配网络号图4-5网络协调器流程图4.5.2主程序在网络协调器中首先初始化CC2430和液晶,然后程序开始初始化协议栈并打开中断。之后程序开始格式化一个网络,若网络格式化成功,可以在液晶上或是通过串口看到格式化了的网络的信息。通过串口57600,8,N,1可以在串口调试助手中看到网络协调器的无力地址、现在简历网络的网络ID号和频道号等。之后程序进入应用层,处理函数apsFSM( )检测空中的ZigBee信号。如果现在有RFD或路由节点加入网络,则液晶和串口输出都会显示有新的RFD或路由节点加入网络,并且显示加入网络节点的无力地址,此时网
28、络协调器给节点分配网络地址。同样在函数apsFSM( )里接收RFD节点发送过来的温度值和按键值,并在液晶上显示出来,也同时从串口发送出来。5.系统调试5.1系统开发环境及设备IAR Embedded Workbench(简称EW)的C/C+交叉编译器和调试器是当今最完整和最容易使用的专业嵌入式应用开发工具。本次设计中,所用的传输设备由cc2430集成模块。5.2调试步骤5.2.1进入调试 选择菜单ProjectDebug或按快捷键CTRL+D进入调试状态,也可按工具栏上的按钮进入调试。图5-1进入调试5.2.2窗口管理在IAR Embedded Workbench中用户可以在特定的位置停靠窗
29、口,并利用标签组来管理它们。用于也可以使某个窗口处于悬浮状态,让它始终停靠在窗口的上层。状态栏位于主窗口底部,包含了如何管理窗口的帮助信息。图5-2程序调试界面5.2.3查看源文件语句Step Into执行内部函数或子进程的调用;Step Over每步执行一个函数调用;Next statement每次执行一个语句;这些命令在工具栏上都有对应的快捷键。5.2.4查看变量 C-SPY允许用户在源代码中查看变量或表达式,可在程序运行时跟踪其值的变化。使用自动窗口:选择菜单ViewAuto,开启窗口。自动窗口会显示当前被修改过的表达式。连续步进观察j的值的变化情况。图5-3自动串口设置监控点:使用Wa
30、tch窗口来查看变量。选择菜单ViewWatch,打开Watch窗口。点击Watch窗口中的虚线框,出现输入区域时键入j并且回车。5.2.5设置并监控断点 选择Toggle Breakpoint命令,在i+ 语句出插入断点:图5-4设置断点5.2.6在反汇编模式中调试 选择菜单ViewDisassembly,打开反汇编调试窗口,可看到当前C语言语句对应的汇编语言指令。图5-5汇编模式中调试程序5.2.7完整运行程序 选择菜单DebugGo。如果没有断点,程序将一直运行下去。可以看到LED1间隙点亮。完成之后选择菜单DebugStop Debugging退出调试模式。6.总结本次设计以CC243
31、0集成芯片和微型数字温度传感器DS18B20相通信实现无线传输网络节点的组建。把低成本、低功耗的无线ZigBee技术应用于无线网络,实现了对环境温度的自动监测控制,提高了系统应用的灵活性,同时也减少了温度监测系统现场布线带来的各种问题。ZigBee是一门新兴的技术,有着巨大的发展潜力。通过做设计期间的学习,我了解到ZigBee无线传输网络应用市场潜力非常大,可以涉及到人们生活、工作、娱乐、研究等各个方面。以下就如何推广该技术应用提几点看法:(1)医疗领域:在医院,ZigBee无线网络可以帮助医生及时准确地收集急诊病人的信息和检查结果。带有ZigBee终端的患者可以得到24小时的体温、脉搏监控;
32、配有ZigBee终端的担架可以遥控电梯门的开关。在医院,时间就是生命,ZigBee网络可以帮助医生和患者争取每一秒的时间。(2)工业自动化领域:在工业自动化领域,人们可以通过ZigBee网络实现厂房内不同区域温湿度的监控;及时得到机器运转状况的信息;结合RF标签,可以方便的数据统计库存量。(3)智能建筑领域:通过建立完备的ZigBee网络,智能建筑可以感知随处可能发生的火灾隐患,及早提供相关信息;根据人员分布情况自动控制中央空调,实现能源的节约;及时掌握酒店客房内客人的出入信息,以便在突发事件时及时准确的发出通知。总之,通过这次毕业设计让我学会了很多新的概念,掌握了新的技术,也为以后的工作打下
33、了基础。本设计由于能力有限尚有一些错误及许多不足之处,恳请各位批评指正。参考文献1 凌志浩ZigBee无线通信协议的技术支持及其应用前景J世界仪表与自动化,2006(1)2 盛超华,陈章龙无线传感器网络及应用J微型电脑应用,20053 李文仲,段朝玉短距离无线数据通信入门与实战J北京北京航空航天大学出版社,20064 郑霖,曾志民,万济萍等基于 IEEE802.15.4 标准的无线传感器网络J传感器技术,2005,24(7) ,86-885 钱春丽,张兴敢用于矿井环境监测的无线传感器网络J电子技术应用,2006(9)6 金纯,齐岩松,罗祖秋,陈前斌ZigBee 在矿井安全领域的应用J 煤矿安全
34、,2006(2) 7 马永强,李静强,冯立营基于ZigBee 技术的射频芯片CC2430J单片机与嵌入式系统,2006(3) ,45-478 王吉富,马建仓,卢崇基于单片机控制射频芯片CC2420无线通信的实现J电子测量技术,2007(5) ,88-919 凌志浩,周怡颁,郑丽国ZigBee无线通信技术及其应用研究J华东理工大学学报: 自然科学版,2006,32(7) ,801-80510 周祖德基于网络环境的智能控制J北京:国防工业出版社,200411 王权平,王莉ZigBee技术与应用J现在电子信息科技,2004,(1) ,21-2512 姚引娣基于ZigBee的无线管理系统设计J电子技术
35、应用,2007,33(1) ,27-2913 殷明,汪立伟基ZigBee 技术的通用无线通信模块设计J交通与计算机, 2006,5(24) ,110-11214 肖昕宇,戴瑜兴基于ZigBee技术的消防报警定位系统设计J消防与安防,2007(4) ,19-2115 ZigBee Standards OrganizaitonZigBee 2006 specification,2006.25816 J.Frank. Sencond international conference on shape memory and superelastic technologies C. CA, USA, 1
36、997, 310-319.致 谢回顾在台州学院电子信息工程学习的四年,感受颇多。在这四年的求学过程中,我要衷心感谢指导老师叶剑超。感谢他对我在学习、生活等方方面面的悉心指导、热情鼓励和关心,让我在求学的路少走了不少弯路。指导老师实事求是的态度、严谨的治学作风、诲人不倦的教育情怀和对事业的忠诚,必将使我终身受益,并激励我勇往直前,在此,特向我的指导老师表示由衷的感谢和崇高的敬意。同时感谢电子与信息工程的全体老师,他们的教诲让我有了设计本文的潜力,让我有了必要的理论基础,并给我了许许多多的学习机会。感谢师兄师姐师弟师妹们。我们和睦相处,相互帮助,攻克难关,同他们的友谊是我一生的财富。附录附录一、原
37、理图附录二、PCB图附录三、实物图附录四、zigbee模块图附录五、程序#include #include unsigned char code displaybit=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;unsigned char code displaycode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40;unsigned char code dotcode32=0,3,6,9,12,16,19,22,25,28,
38、31,34,38,41,44,48,50,53,56,59,63,66,69,72,75,78,81,84,88,91,94,97;unsigned char displaycount;unsigned char displaybuf8=16,16,16,16,16,16,16,16;unsigned char timecount;unsigned char readdata8; sbit DQ=P37;bit sflag;bit resetpulse(void)unsigned char i;DQ=0;for(i=255;i0;i-);DQ=1;for(i=60;i0;i-);return(
39、DQ);for(i=200;i0;i-);void writecommandtods18b20(unsigned char command)unsigned char i;unsigned char j;for(i=0;i0;j-);DQ=1;elseDQ=0;for(j=2;j0;j-);DQ=1;for(j=33;j0;j-);command=_cror_(command,1);unsigned char readdatafromds18b20(void)unsigned char i;unsigned char j;unsigned char temp;temp=0;for(i=0;i0
40、;j-);if(DQ=1)temp=temp | 0x80;elsetemp=temp | 0x00;for(j=200;j0;j-);return(temp);void main(void)TMOD=0x01;TH0=(65536-4000)/256;TL0=(65536-4000)%256;ET0=1;EA=1;while(resetpulse();writecommandtods18b20(0xcc);writecommandtods18b20(0x44);TR0=1;while(1);void t0(void) interrupt 1 using 0unsigned char x;un
41、signed int result;TH0=(65536-4000)/256;TL0=(65536-4000)%256;if(displaycount=2)P0=displaycodedisplaybufdisplaycount | 0x80;elseP0=displaycodedisplaybufdisplaycount;P2=displaybitdisplaycount;displaycount+;if(displaycount=8)displaycount=0;timecount+;if(timecount=150)timecount=0;while(resetpulse();write
42、commandtods18b20(0xcc);writecommandtods18b20(0xbe);readdata0=readdatafromds18b20();readdata1=readdatafromds18b20();for(x=0;x255)readdata1+;readdata1=readdata14;x=x & 0x0f;readdata1=readdata1 | x;x=2;result=readdata1;while(result/10)displaybufx=result%10;result=result/10;x+;displaybufx=result;if(sfla
43、g=1)displaybufx+1=17;x=readdata0 & 0x0f;x=x1;displaybuf0=(dotcodex)%10;displaybuf1=(dotcodex)/10;while(resetpulse();writecommandtods18b20(0xcc);writecommandtods18b20(0x44); 18B20通讯程序#include #defineuchunsignedchar #defineunintunsignedint #defineDQRB3/定义18B20数据端口#defineDQ_DIRTRISB3/定义18B20D口方向寄存器 #defineW1_INPUT1#defineW1_OUTPUT0#defineFALSE0 #defineTRUE!FALSE #defineDQ_HIGH()DQ_DIR=W1_INPUT#defineDQ_LOW()DQ=0;DQ_DIR=W1_OUTPUT voiddel