




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录第一章 引言3第二章 设计方案42.1 方案设计42.2 温度传感器的选择42.3 显示模块选择42.4 微控制器的选择6第三章 硬件设计73.1 硬件设计思路及总体设计框图73.2 DS18B20应用电路73.3 按键电路83.4 显示电路93.5 报警电路103.6 总体电路10第四章 软件设计124.1 测温模块程序设计124.2 显示模块程序设计144.3 按键模块程序设计174.4 报警模块程序设计184.5 主函数流程图和主程序194.6 模拟看门狗程序设计20第五章 仿真22第六章 结束语24参考文献25附录A26附录B30附录C40致谢48摘要: 本设计的控制器选择AT89
2、C51,AT89C51比较经典且应用很广泛。温度的测量所用的温度传感器选择DS18B20,利用多片DS18B20进行多点测温,选择LCD12864液晶屏作为显示模块。输入模块选择一个矩阵键盘,报警温度上限可以人工设置。当某个测温点的温度超出了报警温度范围,就通过报警器报警,直到人为关闭报警器。DS18B20的精度比较高,测量温度范围不是很广,但是平时生活中应用已经足够了。单片机AT89C51一款应用很广泛的微控制器,它结构简单,应用方便,编程简单,在很多控制系统中有着广泛的应用。本设计没有做实际的硬件,用 Proteus来进行仿真。仿真软件Proteus包含一个元件库,在这个库中有很多仿真的元
3、器件,从这个库中可以查找所需要的器件,然后就可以搭建一个基于软件的硬件系统,然后和软件一起可以进行仿真。采用软件仿真有很多优点,比如软件仿真很灵活,可以低降成本,可以加快设计进度等。关键词: Proteus仿真;温度监控; DS18B20; AT89C51ABSTRACT:AT89C51 was chosen as the device of the main controller. It is more classic and used widely. DS18B20 as the temperature sensor was selected to measure temperature,
4、 and can be used to measure multi-point temperature. As the LCD screen, LCD12864 was used to the display module. According to the need, the alarm temperature limit can be set by choosing a matrix keyboard input module. When one of point temperature exceeds the alarm limit, the alarm apparatus will w
5、ork until shut down alarm manually. DS18B20 is higher, the precision of the measuring temperature range is not very wide, but used in peacetime life is sufficient. Single-chip computer AT89C51 is an application of a wide range of micro controller, its structure is simple, fast and convenient to use
6、and programming of the single, so it is popular in many areas. This design was not doing the actual hardware, software simulation with Proteus. It contains a component library, many simulation components exist in the library, it is able to obtain what it want from the library, and then it can build
7、a hardware system based on software, then can work out the simulation. Using the simulation software has a lot of merit, such as simulation software is flexible, can reduce the cost, it also improves the design plan, etc.KEYWORDS : Proteus Simulation;Temperature Monitoring; DS18B20; AT89C51第一章 引言温度是
8、表示物体冷热程度的物理量。人们的生活处处与温度有关,温度与人们的生活之间的关系非常密切。在工农业生产和日常生活中,很多场合,人们都需要实时的温度检测,保证温度在某个范围内波动,一旦温度超出了这个范围可能会影响生产,重者可能造成重大经济损失。因此,对温度的测量与监控有重要的意义。随着电子技术的发展,微控制器体积越来越小巧,功能越来越多,使用方便灵活,价格便宜。现在人们生产生活的方方面面都已经离不开微控制器了,它已经深入到农业、工业、生活日常用品,如手机、冰箱和空调等产品,它还深入了到国防。基于微控制器的电子温度监控系统有很多优点,如设计简单,使用方便灵活,实时性强,智能化等,所以电子温度监控系统
9、越来越受到人们的青睐,也越来越流行。设计的控制器核心采用AT89C51系列单片机,温度测量模块采用DS18B20进行测温,这款温度传感器是美国Dallas公司开发的产。本设计是一个温度上限可设置,多点测温,温度实时监测,自动报警的智能化温度监控系统。第二章 设计方案2.1 方案设计智能化电子温度监控系统设计简单,使用方便灵活,实时性强,IC集成温度传感器使用简单方便,所以设计方案选择电子式温度监控系统设计,以微控制器做为控制器核心,IC集成温度传器做为温度传感器,测量的温度数值通过显示模块显示,矩阵键盘作为输入模块,蜂鸣器作为报警器。2.2 温度传感器的选择温度传感器的类型有许多。温度传感器的
10、种类主要有热电阻、热电偶。此外,有很多电子制造商也开发了一些比较方便使用的温度传感器,如IC温度传感和测温模块。所以,温度传感器的选择多种多样,要选择适合自己设计需求的传感器。热电阻温度传感器多用于几百摄氏度以内的温度测量,热电阻体积小,对温度变化比较灵敏,误差小。热电偶温度传感器误差较大,灵敏度比较低,但它的测温范围很大,多用于精度要求不高的高温测量,它容易受到环境干扰信号的影响。但是热电偶和热电阻的应用电路设计比较复杂,并且价格昂贵。IC温度传感器的精度一般比较高,电路设计简单,使用方便,价格便宜。本次设计我们选用数字集成IC温度传感器DS18B20。DS18B20图如图2.1。图2.1
11、DS18B20形状DS18B20 的主要特性:(1)有很宽的适应电压范围,芯片工作能耗可以在寄生电源方式下由数据线提供。(2)DS18B20 使用简单,不需要其他外围器件,高度集成,外形如三极管。(3)单总线接口方式,通讯只需要一条I/O线,连接方便。(4)912位可编程的分辨率。(5)DS18B20可以多点组网,一个三态线上可以挂多个DS18B20,进行多点测温。(6)温度测量结果以数字信号的形式直接输出 1。(7)最多在 750ms 内就能完成温度转换 1。(8)有很好的保护能力,当电源接反时不会烧毁 传诚科技.温度传感器DS18B20资料Z. 。2.3 显示模块选择显示模块的种类有很多,
12、大致可以分为数码管、点阵、LCD和彩屏TFT等。数码管适合于数字的显示场合,价格便宜,但是当数码管比较多时,电路设计会比较复杂。点阵的类型很多,点阵常用于一些大型广告牌中,也有小型的点阵,点阵在显示在文字和图形上有优势,显示数字不怎么适合,一是不够直观,二是显得有点浪费。在一些比较小的系统中,1602和12864显示屏用的比较多。1602不仅可以显示数值,还可以显示英文字母,但是1602不能显示文字,12864除可以显示数字和英文字母外,还可以显示文字和简单的图画。彩屏TFT可以显示多种多样的颜色,类型也很多,大小也各不相同,像手机、电脑、彩色电视机上的屏幕。彩屏TFT的驱动很复杂,且价格昂贵
13、。为了比较直观显示,考虑价格和设计的复杂程度,综合各方面因素,本设计选择12864屏作为显示模块。12864液晶屏接口连接方式不复杂,连接也很灵活。12864液晶屏有带字库型的和不带字库的两种类型。带中文字库的液晶屏内部集成了一个字库,内置了足够平时使用的16*16点的汉字和16*8点ASCII字符集,可以显示8*4行16*16点阵的汉字。不带字库的液晶屏内部没有中文字库,需要自己取字模,不带字库的液晶屏虽然取字模有点麻烦,但是不带字库的液晶屏的显示更加灵活,它可以显示一些简单的自制的图形,而且价格比带字库的液晶屏便宜很多。本次设计选择不带字库的AMPIRE12864液晶屏。在Proteus中
14、,它的引脚图如图2.2。图2.2 AMPIRE12864引脚图关于AMPIRE12864液晶屏的管脚,具体介绍如表2-1。表2-1 AMPIRE12864的引脚简介引脚符号状态引脚名称功能CS1、CS2输入片选端低电平时选通,分别控制左右半屏选择E输入读写使能E的下降沿,数据线状态被12864读入,E高电平时,可以读出数据RW输入读、写选择RW=1时为读使能,RW=0时为写使能RS输入数据、指令选择信号RS=1 为数据操作RS=0 为写指令或读状态DB0DB7三态数据总线数据通信接口RST输入复位信号低电平有效V0输入对比度调节端控制对比度,接电位器与VOUT连接VCC/GND输入电源和地2.
15、4 微控制器的选择生产微控制器的厂家很多,产品的类型和种类更加多样。按总线位数分,主要有8位、16位、32位微控制器。如PIC系列,8051系列,AVR系列,Intel的8086系列,ARM系列等,不同厂家生产的单片机型号又不同,功能模块也各不相同,所以可供选择的单片机多如牛毛。选择能够满足设计要求的同时,尽量选择经济,开发简单的微控制器。本设计的控制器选择AT89C51,AT89C51曾经风靡一时,它是ATMEL公司开发地产品,现在应用也很广。它是一种高性能CMOS的8位微处理器,带几K字节不等的闪存存储器,它可编程可擦除且只能读,单片机的可擦除次数可以达到1000次以上 张齐,杜群贵. 单
16、片机应用系统设计技术基于C语言编程M.北京:电子工业出版, 2004.08。外形及引脚排列如图2.3。图2.3 AT89C51引脚图主要特性如下:(1)与MCS-51兼容。(2)一个8位的80c51微处理器CPU。(3)片内有256字节数据存储器,用于存放一些可读可写的数据。(4)片内集成了2K字节的只读的闪存程序存储器ROM。(5)带有4个8位的并行三态I/O端口P0P3,端口都可以按位操作,都可以用作输入和输出。(6)有两个16位定时器/计数器,可以计数或定时3。(7)5个中断源,一个两级中断优先级的中断控制系统。(8)一个全双工UART的串行I/O口。(9)有休闲和掉电两种节点模式。(1
17、0)最高允许振荡频率为24MHz 李朝青. 单片机原理及接口技术M(第三版).北京:北京航空航天大学出版社,2006.12,17-18。第三章 硬件设计3.1 硬件设计思路及总体设计框图以单片机AT89C51做为控制器核心,温度传感器使用DS18B20,测量的温度数值通过LCD12864液晶屏显示,矩阵键盘作为输入模块,报警器选择选择有源蜂鸣器。总体设计框图如图3.1。AT89C51单片机多片DS18B20按键识别电路LCD12864显示模块报警电路图3. 1 系统设计框图3.2 DS18B20应用电路DS18B20测温系统硬件电路非常简单、测量的温度的精度比较高、连接非常方便、最少只需一条I
18、/O线。每一个DS18B20拥有一个独一无二的序列号ID,为此DS18B20通过这个ID号可以仲裁那个芯片响应控制器,实现组网多点测温。下面介绍DS18B20常用的连接电路图。(1) 寄生电源供电形式寄生电源供电形式时,电路图的连接图如图3.2。图3.2 寄生电源供电方式电路图在芯片正常工作的时候,通信线上必须提供足够多的电量,当同一根I/O线上挂接多片DS18B20进行多点测温时,仅仅靠4.7K上拉电阻是无法满足DS18B20工作时所需能量的,这就会造成温度误差极大,甚至温度无法转换 1。(2)外部电源供电方式DS18B20的外部电源供电方式电路图如图3.3所示。在外部电源供电方式,VDD引
19、脚供电DS18B20,GND引脚接地,在这种情况下,温度传感器有足够的能量工作 1。图 3.3 外部供电方式单点测温电路(3) 多点测温电路DS18B20的工作,最好是使用外接电源,可以提供足够的能量,DS18B20的工作稳定,具有很好的抗干扰能力,电路不复杂,这样设计出来的多点温度监控系统更加稳定可靠。本设计采用多片DS18B20并行连接,采用外部供电的方式组成一个多点测温系统,电路仿真图如图3.4。图3.4 外部供电方式下的多点测温电路图3.3 按键电路为了可以人工设置警报温度,就需要按键输入,考虑到输入操作简单方便直观和节省I/O端口,用于输入的按键选择矩阵式按键。矩阵按键电路如图3.5
20、。图3.5 矩阵按键电路本设计还利用一个外部中断方式设计了一个按键,此按键的功能是关闭报警器和报警功能的开关,如图3.6。图3.6 警报关闭和开启按键电路图3.4 显示电路显示模块选择的是LCD12894液晶屏。液晶屏的数据总线接P0口,外部接一个排阻。各个管脚的连接如图3.7。图3.7 显示模块电路图3.5 报警电路报警器接一个三极管,三极管接一个限流电阻接P2.6,当P2.6输出高电平,三极管导通,报警器鸣响报警 阎石主编. 数字电子技术基础M(第五版). 北京:高等教育出版社,2005。报警电路如图3.8。图3.8 报警电路3.6 总体电路由于本设计采用软件仿真的形式,所以图中没有给出与
21、PC机通信的RS232串行通信电路,实际设计时要有的,需要通过它向单片机中烧录程序。本设计的总体仿真电路如图3.9。图3.9 总体仿真电路第四章 软件设计4.1 测温模块程序设计DS18B20的通信接口是单总线接口,对DS18B20操作过程必须先复位,然后发送ROM指令,然后发送一个RAM指令,DS18B20将根据这些指令做出相应的工作。复位时,控制器先将通信总线下拉大概500899us,再释放总线,DS18B20收到这个信息后会等候一段时间,在1759us时间后,DS18B20做出回应会发出60240微秒的低电平,控制器收到此信号表示复位成功 DALLAS公司. DS18B20数据手册Z.
22、2014.04。程序实现如下:char ds18b20_Reset() int i;ds_data=1;ds_data=0;for(i=0;i2000) return 1; /长时间无应答返回1 for(i=0;i30;i+);/延时242us,等待ds18b20释放总线 ds_data=1; return 0; DS18B20的写时序如图4.1。写时序时,每个位的传送需要在60us时间内完成,在前15us内确定要的位是0还是1,DS18B20在后45us的时间内采样。写一个位的步骤是,主机先拉低总线,至少持续1us,如果写0,总线保持低,如果写1,电平拉高,然后延时直到写一个位完成。实现程序
23、如下:void ds18b20_WriteBit(uchar date) uchar j; ds_data=0; for(j=0;j1;j+); /延时4us ds_data=date;/传送一个bit for(j=0;j20;j+);/延时42us ds_data=1;/释放总线 图4.1 写时序图DS18B20的读时序如图4.2。读时序时,每个位需要时间在60us内,在前15us内采样,后延时约45us留给DS18B20做好下一位传送的准备。读一个位的步骤是,主机先拉低总线,至少持续1us,然后释放总线,在靠近15us时采样,然后延时直到读一个位完成。实现程序如下:uchar ds18b2
24、0_ReadBit()uchar i,j;ds_data=0;/开始信号for(j=0;j0;j+);/延时2usds_data=1; /释放总线for(j=0;j1;j+)/延时4usif(ds_data=1) / 读一个bit i=1; / 1else i=0;for(j=0;j1000)break;/如果等待时间过长则break跳出whilelcd_e=0;LCD的写数据/指令程序如下:void lcd_write(uchar date,uchar select) check_busy();lcd_rs=select;lcd_rw=0;lcd_e=1;lcd_data=date;lcd_
25、e=0;要显示的那些数字、文字和图画的字模是以数组的形式放在了ziku.h文件中,其他一些LCD驱动程序如表4-7,更详细信息请参考附录B。表4-7 LCD驱动程序程序名称功能lcd_setX(uchar x)设置行lcd_setPage(uchar page)设置页lcd_setY(uchar y)设置列Columnlcd_setPageY(uchar page,uchar y)设置页、列lcd_ClearScreen(uchar select)扫描清屏lcd_ClearAt(uchar page,uchar y,uchar length,uchar select)在指定位置开始往后清除一个
26、区域lcd_ScreenSelect(uchar cs)左右半屏选择lcd_DisplayCharAt(uchar chars,uchar page,uchar y,uchar select)在指定位置写一个字符(16*8 )lcd_DisplayTextAt(uchar text,uchar page,uchar y,uchar select)在指定位置写一个文字(16*16)lcd_DisplayOnOff(uchar select)开关显示lcd_DisplayData(float dat,uchar page,uchar y,uchar select)在指定位置显示一个一千以内的数,到
27、小数点后一位4.3 按键模块程序设计当使用大量的按键设计,使用矩阵按键可以节省大量的I / O端口。以一个4*4的矩阵键盘为例,如图4.4。图4.4 矩阵按键原理图如图4.4所示,4*4的矩阵按键有4条行线和4条列线,一共有16个交点,在每一个交点处通过一个按键连接,只用了8个I/O口就可以连接16个按键。矩阵按键虽然节省I/O口,但是按键的识别就需要设计一个识别的程序。常用的按键识别方法是逐行(或列)扫描查询法。本设计中,由于仿真软件中没有找到合适的矩阵键盘,所以尽量选着了一个可以凑合的4*3的键盘,程序设计如下:uchar Key_Scan() uchar res;P1=0X0F;/123
28、线低电平res=P1&0x0f; /取低四位if(res!=0x0f)/判断有按键按下吗 delay_ms(5);/延时去抖,再一次判断有无按键按下res=P1&0x0f; /取低四位 if(res!=0x0f)/判断有按键按下吗 P1=0Xef;/1线低电平 res=P1&0x0f; /取低四位if(res!=0x0f)/判断是1线上有按键按下吗 while(P1&0x0f)!=0x0f)FeedDog();/等按键放开/喂狗switch(res) case 0x07:return 1;case 0x0b:return 4;case 0x0d:return 7;case 0x0e:retur
29、n .;default: break; P1=0Xdf;/2线低电平res=P1&0x0f; /取低四位if(res!=0x0f)/判断是2线上有按键按下吗 while(P1&0x0f)!=0x0f)FeedDog();/喂狗;/等按键放开 switch(res) case 0x07:return 2;case 0x0b:return 5;case 0x0d:return 8;case 0x0e:return 0;default: break;P1=0Xbf;/3线低电平res=P1&0x0f; /取低四位if(res!=0x0f)/判断是3线上有按键按下吗 while(P1&0x0f)!=0
30、x0f)FeedDog();/喂狗;/等按键放开switch(res) case 0x07:return 3;case 0x0b:return 6;case 0x0d:return 9;case 0x0e:return -;/对应仿真图中#default: break;return 0xff;4.4 报警模块程序设计报警模块的程序设计比较简单,P2.6为高电平就可以开启报警器。报警器的关闭是通过外部中断的形式设计的,外部中断的触发通过一个按键输入,同时这部分程序还用于报警功能的开启和关闭,通过一个变量BuzzerFlag。当有温度超出设定温度范围时,就通过BuzzerFlag的值选择报警或不报
31、警,程序如下:if(tempAlarmTemp)&BuzzerFlag=0) /当温度大于报警温度,并且报警功能使能 /蜂鸣器报警buzzer=1; lcd_DisplayCharAt(Num,6,0,1); / 显示几号DS18B20报警lcd_DisplayTextAt(12,6,32,1); / 显示鸣响喇叭图标外部中断初始化和中断服务程序如下:void Int0_init() IT0=1;/外部中断0,边沿触发方式EX0=1;/允许外部中断0中断EA=1;/开总中断/外部中断0中断服务程序void Int0() interrupt 0 buzzer=0; /关闭蜂鸣器lcd_Clear
32、At(6,0,8,1); / 清除DS18B20报警号lcd_ClearAt(6,32,16,1);/清除鸣响喇叭图标 lcd_DisplayTextAt(11,6,32,1); / 不鸣响喇叭图标BuzzerFlag=!BuzzerFlag;if(BuzzerFlag=0) /开启报警 lcd_DisplayTextAt(11,4,0,0); /喇叭图标(标注报警开启)else lcd_ClearAt(4,0,16,0); / 清除喇叭图标4.5 主函数流程图和主程序主函数流程图如图4.5。开始初始化读按键是#键吗显示温度界面读温度测量值温度测量值处理温度值显示温度超警报值吗?报警显示温度设
33、置界面读按键是#键吗是*键吗显示设置警报温度是是否否是是否否清除设置温度图4.5 主函数流程图主函数程序详情请参考附录C。4.6 模拟看门狗程序设计看门狗的实质其实就是一个定时器,当开启看门狗,它从零开始计数机器周期,当计数器计满溢出时,会引起单片机复位。看门狗的作用是防止程序死循环在某个地方和跑飞,为了系统的稳定性,看门狗是必不可少的。现在很多单片机内部都集成了硬件看门狗模块,早期的单片机都需要外接一个看门狗芯片,或者用软件模拟看门狗。AT89C51内部是没有看门狗功能的,本设计采用软件模拟看门狗。用定时器T0模拟看门狗,T0工作在方式1,可以定时约65ms,即在65ms内要清一次T0的TH
34、0和TL0,防止定时器溢出中断。中断服务程序模拟单片机复位,把一些特殊的寄存器恢复到复位时的缺省值,把PC值清零,让程序从头执行。这里只给出中断服务程序,详细信息请参考附录C。void timer0() interrupt 1 PSW=0;TCON=0;IE=0;TMOD=0;SCON=0;PCON=0;ACC=0;B=0;SP=0X07;DPL=0;DPH=0;P0=0XFF;P1=0XFF;P2=0XFF;P3=0XFF;/设置PC为0_pop_(ACC);_pop_(ACC);ACC=0;_push_(ACC);_push_(ACC);第五章 仿真本设计通过proteus仿真 arche
35、ng504.Proteus入门教程Z. ,仿真过程和结果如下。(1)上电复位后,报警功能未开启,报警温度为0,依次循环显示每个测温点的温度,时间间隔23s,如下图5.1和图5.2。图5.1 上电仿真图图5.2 上电仿真图(2)当按下#键,进入报警温度设置界面,然后就可以用键盘输入你要设置的警报温度上限,这里输入35,如图5.3所示。当你想从新输入温度,可以按*键清除输入的温度。当再次按下#键时,退出报警温度设置界面,回到温度显示界面,如图5.4。图5.3 警报温度设置界面图5.4 警报温度设置完成仿真图(3)KEY1按键的功能是设置报警开启和关闭,还有关闭报警器。当按下KEY1时,在第三行“警
36、报”前会显示一个喇叭标志,用以表明报警功能开启,如图5.5。图5.5 开启报警功能仿真图(4)当设置好了报警温度,开启了报警功能,一旦有那个测温点的温度超过警报温度,报警器就会鸣响,在第四行会显示报警的测温点的号,并且喇叭标志会显示鸣响状态。如图5.6。当按下KEY1按键,就会关闭报警器,并关闭报警功能,只有在此按下KEY1按键,才会开启报警功能。图5.6 报警时界面图第六章 结束语上面具体分析了各个模块的设计,最后给出了仿真过程中的仿真图。这个设计前后断断续续的花了一个多星期的时间,在程序过程中不断的发现问题,然后不断的调试程序,修改程序。这个设计有很多不足,下限报警温度固定为0,报警温度设
37、置不能输入零下温度等。主要原因是仿真软件中找不到合适的仿真器件,像按键键盘,本来想用个4*4的键盘,这样可以多做几个功能按键,也可以随意设置负温度,原件库中也有4*4的键盘,可是键盘上的标号不是自己想要的,为了更直观,更接近自己的意图,就选择了3*4的键盘,于是输入负温度的按键就没有了。设计下限温度固定是因为,没有地方显示下限警报温度了。设计如果满足实际的需求,可以应用于实际,而如果不满足实际需求,还需要完善,可供参考。设计中,用到了模拟电子、单片机和仿真软件的知识,通过这次设计,把学到了理论知识应用到了实践中,对学过的知识温故而知新,加深了这些方面的知识的掌握,锻炼了自己独立完成任务的能力。
38、为了完成设计,查了很多资料,图书馆里,或者网上,不仅学到了很多知识,还锻炼了查找资料的能力,解决问题的能力。在整个设计中,程序是费时最多的,要先完成每个模块的程序驱动,要彻底弄懂了元器件,才能编写相应的驱动程序,还要不停的调试,查找问题并解决,直到程序运行无误。最后,还要把各个模块的程序整合到一起,以达到我们想要的效果,还要根据实际情况,不停的完善和改写程序,知道最后运行流畅无误。由于个人能力有限,难免有错误和不足的地方。参考文献9 童诗白,华成英主编. 模拟电子技术基础M(第四版). 北京:高等教育出版社,2006.0510 余成波,胡新宇,赵勇主编.传感器与自动检测技术M.北京:高等教育出
39、版社,2004附录A(1)ds18b20.h文件内容:#ifndef _DS18B20_H#define _DS18B20_H#includereg52.h#define uchar unsigned char#define uint unsigned intsbit ds_data=P25;/ds18b20 中的命令定义#define ReadROM 0x33 /读 ROM, #define MatchROM 0x55/ 匹配ROM#define SearchROM 0xf0/搜索 ROM#define SkipROM 0xcc/跳过 ROM#define AlarmROM 0xec/告警搜
40、索命令, #define WriteScratchpad 0x4E/#define ReadScratchpad 0xBE/#define CopyScratchpad 0x48/ #define ConvertT 0x44/启动DS1820进行温度转换#define RecallE2 0xB8/#define ReadPowerSupply 0xB4/读 DS1820 的供电模式。 /函数声明void FeedDog();void delay_ms(uint time);/char ds18b20_Reset();/void ds18b20_WriteByte(uchar date);/uc
41、har ds18b20_ReadByte(); /void ds18b20_ConvertTemp();/void ds18b20_ReadTempCmd(uchar num);/int ds18b20_GetTemp(uchar num);/void ds18b20_WriteBit(uchar date);uchar ds18b20_ReadBit();#endif(2)ds18b20.c文件内容:#includereg52.h#includeds18b20.h/存放各个ds18b20的IDuchar RomID48=0x28,0x01,0x02,0x03,0,0,0,0x22,/0号0x
42、28,0x04,0x05,0x06,0,0,0,0x19,/1号0x28,0x07,0x08,0x09,0,0,0,0x36,/2号0x28,0x10,0x20,0x30,0,0,0,245 /3号; /* DS18b20 复位及存在检测*说明:函数返回一个值,0表示复位成功*/char ds18b20_Reset() int i;ds_data=1;ds_data=0;for(i=0;i1500) return 1; /长时间无应答返回1 for(i=0;i30;i+);/延时242us,等待ds18b20释放总线 ds_data=1; return 0; /*向ds18b20写一个位BIT*/void ds18b20_WriteBit(uchar date) uchar j; ds_data=0; for(j=0;j1;j+); /延时4us ds_data=date;/传送一个bit for(j=0;j20;j+);/延时42us ds_data=1;/释放总线 /*向ds18b20写一个字节*/void ds18b20_WriteByte(uchar date) uchar i; for(i=0;i=1; /*从ds18b20读一个位BIT*/uchar ds18b20_ReadBit()uchar i,j;ds_data=0;/开
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精准备考2024年国际物流师试题及答案
- 2024年专业解析的注册安全工程师试题及答案
- 国际市场趋势与物流策略国际物流师试题及答案
- 深度复习国际物流师试题及答案
- 2025年光纤复合架空地线(OPGW)项目合作计划书
- 保安疫情防控培训课件
- 2024年CPSM考试优胜方案试题及答案
- 临汾市重点中学2025届高三适应性调研考试化学试题含解析
- 电子数据交换在物流中的应用及试题及答案
- 成功应对2024年CPMM的试题及答案建议
- 2024至2030年中国冷轧钢行业发展运行现状及投资潜力预测报告
- 2024年爆破作业人员培训考核必考题库及答案
- 云南省2024年中考道德与法治真题试卷【附真题答案】
- 《安徽省幼儿园保育教育质量自评指导手册》(文本)
- 医保统计信息管理制度
- 如何阐述自己的观点 高中语文统编版必修下册第一单元写作课课件
- 中考数学一轮考点复习课件 专题01 实数(含答案)
- 经鼻高流量氧疗小讲课护理课件
- 电动叉车安全培训课件
- 2019年上海高考英语真题试卷(答案版含听力原文)
- 劳动法与社会保障法课程教学大纲
评论
0/150
提交评论