基于WIFI传输的单片机传感器设计.docx_第1页
基于WIFI传输的单片机传感器设计.docx_第2页
基于WIFI传输的单片机传感器设计.docx_第3页
基于WIFI传输的单片机传感器设计.docx_第4页
基于WIFI传输的单片机传感器设计.docx_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要随着现代信息技术的飞速发展和传统工业改造的逐步实现能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用单片机STC90C516RD+作为主控制器件,DSl8B20作为测温传感器通过LCD1602液晶实现温度显示。并通过DSl8B20直接读取被测温度值,进行数据转换,将检测的温度数据通过单片机串口发送给PC机和WIFI收发模块进行实时监控显示,而智能安卓手机又可以通过相应的APP接受到WIFI模块发送的数据,从而又可以在我们的智能手机上进行实时显示监控,这样一来我们就可以创建一个WIFI传输的MCU温度采集监控系统了。由于DS18B20的物理化学性能稳定,线性度较好,在0100最大线性偏差小于0.1。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。关键词:单片机,DSl8B20测温传感器,MCU串口,WIFI模块,智能安卓手机II Abstract With the gradual implementation of the rapid development of modern information technology and the transformation of traditional industries. Able to work independently of the temperature detection and display system used in many fields. The traditional temperature detection for thermal resistance as the temperature sensitive element. Thermal resistance of low cost, but the subsequent signal processing circuit, moreover the reliability is relatively bad, the temperature measurement accuracy is low, the examination system also has certain error. Compared with the traditional thermometer, here is the design of digital thermometer reading convenience, a wide range of temperature measurement, accurate temperature measurement, digital display, applicable to a wide range of. Single chip STC90C516RD+ as the main control device, DSl8B20 as a temperature sensor through the LCD1602 LCD temperature display. And DSl8B20 measured by direct reading temperature value, data conversion, the temperature data detected by microcontroller serial port to send to the PC and WIFI transceiver module for real-time monitoring, smart Android mobile phone can receive WIFI module to send data through the APP, which can real-time display control in intelligent mobile phone we, MCU temperature acquisition system so that we can create a WIFI transmission. The DS18B20 physical and chemical properties of stability, good linearity, at 0 100 maximum linear error is less than 0.1 . The device can transmit digital signals directly to the microcontroller, easy to handle and control mcu. In addition, the thermometer temperature measurement device can be used directly to measure temperature, thus simplifying the data transmission and processing.Key words: MCU,DS18B20 temperature sensor,MCU serial port,The WIFI module,Intelligent Android mobile phone; IV 目录摘 要.IIAbstract.II前 言 1绪论.1 论文选题背景2一:系统总体方案设计.31.1系统设计流程31.2 系统设计整体功能描述4二:系统硬件设计.52.1元器件的选择5 2.1.1MCU的选型.5 2.1.2温度传感器的选型.72.2单元电路模块设计.10 2.2.1复位电路及时钟电路.10 2.2.2电源电路.12 2.2.3UART串口通信电路.12 2.2.4DS18B20测温电路.14 2.2.5LCD显示电路.15 2.2.6 MCU与WIFI模块接口图.17 2.3总体原理图设计.19 2.3.1Proteus原理图.19 2.3.2 Protel99SE原理图.20 2.4系统PCB图.21 2.5系统3D效果图.23三:系统软件设计253.1系统总流程图253.2LCD显示模块25 3.2.1原理介绍253.2.2显示流程图263.3DS18B20转换模块363.3.1DS18B20转换原理介绍363.3.2DS18B20转换流程图38 3.4UART通信程序463.4.1232串口通信原理介绍463.4.2 232串口通信实物图.483.4.3串行通讯RS232程序.49 3.5延时子程序50四:Proteus仿真.524.1仿真软件介绍52 4.2Proteus仿真52总 结.55致 谢.56参考文献.58附 录.59 系统程序.59 前 言 随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于WIFI传输的单片机的测温系统,详细描述了利用数字温度传感器DS18B20和WIFI模块开发相互通信的一个实时测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详细分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现温度采集,LCD1602液晶显示和通过单片机串口和、WIFI模块进行数据的传送,将测温数据在PC机或智能手机上实时显示,如果需要用户还可以自己另外设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与STC90C516RD+结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,如果加上WIFI模块后,通过智能手机控制,那么完全可以创建一个智能家居控制系统,因此它有广泛的应用前景绪论 论文选题背景 随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段: 传统的分立式温度传感器模拟集成温度传感器 智能集成温度传感器目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,通过温度传感器采集完温度数据后我们还要进行实时显示,因此就延续出各种显示装备,常用有数码管,LCD1602显示,然而随着智能系统的不断发展,因此诞生了基于WIFI传输的MCU温度采集监控显示系统,这样一来我们就可以通过智能手机实时监控了,因此研究温度的测量方法和装置具有重要的意义。一:系统总体方案设计1.1:系统设计流程 本设计通过PROTEUS软件画出MCU控制温度传感器LCD显示的原理图,然后利用KEIL软件编写程序代码,生成HEX文件后,下载到PROTEUS原理图的MCU中,进行仿真调试。这个过程的成功说明原理图正确,并且为后续工作奠定了软件基础。 仿真调试成功后,再利用AltiumDesigner6.9绘制电器原理图,最后生成PCB图,布局布线完成后,拿去制板。制板完成后,需要调试焊接电路,最后将仿真用的HEX文件烧写到实物单片机中可以看到LCD1602显示测温值然后和WIFI模块串口连接,通过串口将测温值数据传送到PC机中显示和智能手机APP中显示实现智能控制,经过多次调试,反复修改程序,达到理想结果。1.2 系统设计整体功能描述本研究成功,在温度测量系统中,实际温度值由DS18B20温度传感器设计的电路进行测量。通过温度传感器测量的温度数据送入单片机STC90C516RD+;对采样数据进行变换处理后送给LCD1602显示,并且通过单片机串口把温度数据传送给PC机和WIFI模块,通过PC机串口调试助手实时显示测试温度数据值或者通过智能手机接受WIFI发送的温度数据进行显示。这样一来,整个系统就可以在LCD1602、PC机串口调试助手、安卓智能手机APP中进行多方的控制显示了,本系统的控制功能由单片机STC90C516RD+的程序来实现。整体设计框图如图二:系统硬件设计2.1元器件的选择 2.1.1MCU的选型STC90C516RD+系列单片机是宏晶科技推出的新一代超高速/低功耗的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位脚可直接接地。1.增强型6 时钟/ 机器周期,12 时钟/ 机器周期 8051 CPU2.工作电压:5.5V - 3.8V(5V 单片机)/3.8V - 2.4V(3V 单片机)3.工作频率范围:0-40MHz,相当于普通8051的 080MHz.4.用户应用程序空间 64K字节5.片上集成 1280字节RAM6.通用I/O口(35/39 个),复位后为: P1/P2/P3/P4 是准双向口/ 弱上拉(普通8051 传统I/O 口)P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器 / 仿真器可通过串口(P3.0/P3.1)直接下载用户程序,8K 程序3 - 5 秒即可完成一片8.EEPROM 功能9.看门狗10.内部集成MAX810专用复位电路,外部晶体12M以下时,可省外部复位电路,复位脚可直接接地。11.共3个16位定时器/计数器,其中定时器0还可以当成2个8位定时器使用12.外部中断4路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒13.通用异步串行口(UART),还可用定时器软件实现多个UART14.工作温度范围:0-75/-40-+8515.封装:LQFP-44,PDIP-40,PLCC-44 此处我们使用的是DIP双列直插封装;单片机STC90C516RD+管脚图为:2.1.2温度传感器的选型DS18B20是DALLAS公司生产的一款超小体积、抗干扰能力强、精度高的数字温度传感器。不需A/D转换电路,直接将温度值转换成数字量。DS18B20的测量范围为-55-125,精度为0.5。DS18B20引脚如引脚功能说明: NC :空引脚,悬空不使用; VDD :可选电源脚,电源电压范围35.5V。当工作于寄生电源时,此引脚必须接地。 DQ :数据输入/输出脚。漏极开路,常态下高电平。 GND :为电源地DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。 该字节各位的意义如下:TM R1 R0 1 1 1 1 1低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表1所示:(DS18B20出厂时被设置为12位) 表1 DS18B20温度转换时间表R1R0分辨率/位温度最大转向时间00993.750110187.510113751112750根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。2.2单元电路模块设计2.2.1复位电路及时钟电路STC90C516RD+单片机芯片内部设有一个反向放大器所构成的振荡器,XTAL1和XTAL2分别为振荡电路的输入端和输出端,时钟可以由内部或外部产生,在XTAL1和XTAL2引脚上外接定时元器件,内部振荡电路就会产生自激振荡。本系统采用的定时元件为石英晶体和电容组成的并联谐振回路。晶体频率选择12MHz,C1、C2的电容取33PF,电容的大小可起到频率微调的作用。时钟电路如图2.3所示(晶振电路)单片机具有多种复位电路,本系统采用电平式开关复位与上电复位方式,具体电路如下所示。当上电时,C1相当于短路,使单片机复位,在正常工作时,按下开关使单片机复位,当系统时钟频率为12MHz时,C1=22uF,R1=200,R2=1k,其缺点是干扰易于串入复位端,在多数条件下,不会造成单片机错误复位,但会引起内部某些寄存器错误复位,这时可以在RESET端加一个去耦电容。如图(复位电路)2.2.2电源电路采用USB接口提供5V电源。2.2.3UART串口通信电路2.2.4DS18B20测温电路2.2.5LCD显示电路字符型1602液晶显示是一种专门用于显示字母、数字、符号等点阵式的LCD。其内部的字符发生存储器(CGROM)存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”,所以我们可以根据需要灵活设计。RS、RW的值控制单片机对它的读写:RS=0RW=0写入指令寄存器(清清屏等);RS=0RW=1读busy(DB7)以及读取位址计数器(DB-DB6)的值;RS=1RW=0写入数据寄存器(显示各字符等);RS=1RW=1从数据寄存器读取数据。每次在对LCD进行读写操作时,都要对其进行标志位忙检测,标志位BF=1表示液晶显示器忙,暂时无法接收来自单片机的数据或指令。当BF=0时,表示液晶显示器可以接收单片机的数据或命令。1602的数据和指令传输是通过D0D7这8位数据线来完成的。对1602采用总线方式读写,其原理图如图2.2.6MCU与WIFI模块接口图 随着互联网越来越快的发展,以及手机、笔记本电脑的普及,用户对能够随时随地上网的需求越来越迫切,WiFi通信技术在手机上网、电脑上网的应用越来越广泛,WiFi的发展与应用在实际生活中得到了越来越快的发展。WiFi的全称是WirelessFidelity,又叫802.11b标准,是IEEE定义的一个无线网络通信的工业标准,是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术,它可以帮助用户访问电子邮件、Web和流媒体。其主要特性为:速度快、可靠性高、通信距离远。在开放性区域,通讯距离可达305米,在封闭性区域,通讯距离为76米到122米,在家庭上网、办公室上网和旅途上网方便快捷。由于WiFi覆盖范围广、速度快、可靠性高、无需布线、健康安全及计费便宜等特点,已成为当今无线网络接入的主流标准,只要随身携带的电子设备集成了WiFi无线通信终端用户,就可以在WiFi覆盖区域内随时拨打或接听电话、快速浏览网页、下载或上传音视频文件、收发电子邮件,而无需担心花费太高和网速太慢等问题。目前,我国许多的车站、机场、学校、办公密集区、繁华商场、图书馆、知名旅游景点都有WiFi信号的覆盖。 WIFI232 模块用于实现串口到 WIFI 数据包的双向透明转发,我们无需关心具体细节,模块内部完成协议转换,串口一侧串口数据透明传输,WIFI 网络一侧是 TCPIP 数据包,通过简单设置即可指定工作细节,设置可以通过模块内部的网页进行,也可以通过串口使用 AT 指令进行,也可以使用设置软件,一次设置永久保存。 关于串口的连接,模块的引脚引出为 3.3V TTL 电平,不能直接和计算机连接,需要带底板或者用户有 TTL转 RS232 的转接线再连到计算机上。 基于WiFi的许多优点,通过串口调试工具和相应的APP,可以成功的利用WiFi实现了电脑与手机,电脑与单片机,单片机与手机之间的数据传输。2.3总体原理图设计依据上述各个部分电路图,对总体原理图进行设计如下图2.3.1Proteus原理图利用上述原理图实现仿真功能,并利用KEIL烧写程序代码,最后经过多次调试程序,使程序能够完成系统要求的功能。2.3.2 Protel99SE原理图2.4系统PCB图2.5系统3D效果图三:系统软件设计3.1系统总流程图3.2LCD显示模块3.2.1原理介绍通过对LCD1602 RS、RW、EN的读写数据操作将DS18B20检测的温度数据通过MCU处理后写给LCD1602进行显示;LCD1602液晶会实时显示测量的温度值。第一行显示我们默认给的一串字符:tempertury,第二行才是显示我们测试的温度数值。3.2.2显示流程图显示流程图如图void delay(uint16 i)/一次相当于10us左右,这个延时是有误差的while(i-);void ds18b20init()/18b20的初始化dq=1;delay(1);dq=0;delay(80);dq=1;delay(5);dq=0;delay(20);dq=1;delay(35);void ds18b20wr(uint8 dat) /18b20写数据uint8 i;for(i=0;i=1;delay(8);/在时序上只有这一块对时序要求最准确,他的时间必须大于15usdq=1;delay(1);uint8 ds18b20rd() /18b20读数据uint8 value,i;for(i=0;i=1;dq=1;if(dq=1)value|=0x80;delay(8);/在这一块也对时间要求特别准确,整段程序必须大于60usreturn value;uint8 readtemp() /读取温度内需要复位的uint8 b;ds18b20init();/初始化ds18b20wr(0xcc); /发送忽略ROM指令ds18b20wr(0x44); /发送温度转换指令delay(100);ds18b20init(); /初始化ds18b20wr(0xcc); /发送忽略ROM指令ds18b20wr(0xbe); /发读暂存器指令a=ds18b20rd(); /温度的低八位b=ds18b20rd(); /温度的高八位b4;a=a&0x0f; /温度的小数部分return b;void uartinit()TMOD=0x20;/选择方式2,自动装载模式SCON=0x50;TH1=0xF3; /波特率取的是4800;所以在串口调试助手上面波特率选择2400.如果选择4800的话,结果就是乱码。但可以在初始化的时候加一条倍频语句。PCON=0x80;TL1=0xF3;TR1=1; /这个一定要打开void temppros()/uint16 k;float dio;dio=a*0.0625;k=dio*10000;/取小数点后两位有效数字tempdata0=d0;tempdata1=d1;tempdata2=d2;tempdata3=d3;tempdata4=d4;tempdata5=d5;tempdata6=d6;tempdata7=d7;tempdata8=d8;tempdata9=d9;tempdata10=d10;tempdata11=d11;tempdata12=d12;tempdata13=d13;tempdata14=d14;tempdata15=d15;tempdata16=d16;if(c=0x80)/读取到负温度即为补码,要将其转换成源码tempdata17=fuhao0;temp=temp-1;temp=(temp)|0x80;/负数的补码即为反码+1;而负数的反码为其源码取反,除了符号位;正数的补码等于正数的反码等于正数的源码elsetempdata17=fuhao1;temp=(temp);tempdata18=numtemp/100;tempdata19=numtemp%100/10;tempdata20=numtemp%100%10;tempdata21=fuhao2;tempdata22=numk/1000;tempdata23=numk%1000/100;tempdata24=fuhao3;/tempdata25=fuhao4;tempdata26=fuhao5;tempdata27=fuhao6;void wrc(uint8 c)delay(1000);rs=0;rw=0;e=0;P0=c;e=1;delay(10);e=0;void wrd(uint8 dat)delay(1000);rs=1;rw=0;e=0;P0=dat;e=1;delay(10);e=0;rs=0;void lcdinit()delay(1000);wrc(0x38);wrc(0x38);wrc(0x38);wrc(0x06);wrc(0x0c);wrc(0x01);void display()uint8 i;for(i=0;i17;i+)wrd(d1i);wrc(0x80+0x43);if(c=0x80)/读取到负温度即为补码,要将其转换成源码wrd(-);temp=temp-1;temp=(temp)|0x80;/负数的补码即为反码+1;而负数的反码为其源码取反,除了符号位;正数的补码等于正数的反码等于正数的源码elsewrd(+);temp=(temp);wrd(numtemp/100);wrd(numtemp%100/10);wrd(numtemp%100%10);wrd(.);wrd(numk/1000);wrd(numk%1000/100);wrd(0xdf);wrd(C);void main()uint8 j;lcdinit();uartinit();while(1)temp=readtemp();display();temppros();for(j=17;j28;j+)SBUF=tempdataj;while(!TI); /数据发送完成后硬件自动置一TI=0; /需要软件清零delay(50000);/延时一段时间作为传送间隔时间 3.3DS18B20转换模块3.3.1DS18B20转换原理介绍DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。 DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。 该字节各位的意义如下:TM R1 R0 1 1 1 1 1低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表1所示:(DS18B20出厂时被设置为12位) 表1 DS18B20温度转换时间表R1R0分辨率/位温度最大转向时间00993.750110187.510113751112750根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。3.3.2DS18B20转换流程图程序如下:void ds18b20init()/18b20的初始化dq=1;delay(1);dq=0;delay(80);dq=1;delay(5);dq=0;delay(20);dq=1;delay(35);void ds18b20wr(uint8 dat) /18b20写数据uint8 i;for(i=0;i=1;delay(8);/在时序上只有这一块对时序要求最准确,他的时间必须大于15usdq=1;delay(1);uint8 ds18b20rd() /18b20读数据uint8 value,i;for(i=0;i=1;dq=1;if(dq=1)value|=0x80;delay(8);/在这一块也对时间要求特别准确,整段程序必须大于60usreturn value;uint8 readtemp() /读取温度内需要复位的uint8 b;ds18b20init();/初始化ds18b20wr(0xcc); /发送忽略ROM指令ds18b20wr(0x44); /发送温度转换指令delay(100);ds18b20init(); /初始化ds18b20wr(0xcc); /发送忽略ROM指令ds18b20wr(0xbe); /发读暂存器指令a=ds18b20rd(); /温度的低八位b=ds18b20rd(); /温度的高八位b4;a=a&0x0f; /温度的小数部分return b;void temppros()/uint16 k;float dio;dio=a*0.0625;k=dio*10000;/取小数点后两位有效数字tempdata0=d0;tempdata1=d1;tempdata2=d2;tempdata3=d3;tempdata4=d4;tempdata5=d5;tempdata6=d6;tempdata7=d7;tempdata8=d8;tempdata9=d9;tempdata10=d10;tempdata11=d11;tempdata12=d12;tempdata13=d13;tempdata14=d14;tempdata15=d15;tempdata16=d16;if(c=0x80)/读取到负温度即为补码,要将其转换成源码tempdata17=fuhao0;temp=temp-1;temp=(temp)|0x80;/负数的补码即为反码+1;而负数的反码为其源码取反,除了符号位;正数的补码等于正数的反码等于正数的源码elsetempdata17=fuhao1;temp=(temp);tempdata18=numtemp/100;tempdata19=numtemp%100/10;tempdata20=numtemp%100%10;tempdata21=fuhao2;tempdata22=numk/1000;tempdata23=numk%1000/100;tempdata24=fuhao3;/tempdata25=fuhao4;tempdata26=fuhao5;tempdata27=fuhao6;3.4UART通信程序3.4.1232串口通信原理介绍: RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,其中RS是RecommendedStandard的缩写,代表推荐标准,232是标识符,C代表RS-232的最新一次修改(1969年),它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。DB25的串口一般只用到的管脚只有2(RXD)、3(TXD)、7(GND)这三个,随着设备的不断改进,现在DB25针很少看到了,代替它的是DB9的接口,DB9所用到的管脚比DB25有所变化,是2(RXD)、3(TXD)、5(GND)这三个。因此现在也都把RS232接口叫做DB9。由于RS232接口标准出现较早,难免有不足之处,主要有以下四点:(1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。(2)传输速率较低;通讯速率(波特率BaudRate):缺省常用的是9600bps,常见的还有1200、2400、4800、19200、38400、115200等。波特率越大,传输速度越快,但稳定的传输距离越短,抗干扰能力越差。(3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 (4)传输距离有限。3.4.2232串口实物图:3.4.3串行通讯RS232程序:void uartinit()TMOD=0x20;/选择方式2,自动装载模式SCON=0x50;TH1=0xF3; /波特率取的是4800;所以在串口调试助手上面波特率选择2400.如果选择4800的话,结果就是乱码。但可以在初始化的时候加一条倍频语句。PCON=0x80;TL1=0xF3;TR1=1; /这个一定要打开for(j=17;j28;j+)SBUF=tempdataj;while(!TI); /数据发送完成后硬件自动置一TI=0; /需要软件清零3.5延时子程序我们的延时函数通过给while赋一个初值让其不断死循环,直到while内变量为0就自动结束,即让CPU不断在处理这个语句,也就起到了延时的作用。void delay(uint16 i)/一次相当于10us左右,这个延时是有误差的while(i-);四:Proteus仿真4.1Proteus介绍ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论