收藏 分销(赏)

LabVIEW湿度检验系统.doc

上传人:精*** 文档编号:2953990 上传时间:2024-06-12 格式:DOC 页数:34 大小:682.04KB
下载 相关 举报
LabVIEW湿度检验系统.doc_第1页
第1页 / 共34页
LabVIEW湿度检验系统.doc_第2页
第2页 / 共34页
LabVIEW湿度检验系统.doc_第3页
第3页 / 共34页
LabVIEW湿度检验系统.doc_第4页
第4页 / 共34页
LabVIEW湿度检验系统.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

1、沈阳工学院毕业设计题 目: 基于单片机和LabVIEW湿度 探测系统设计和实现 院 系: 信息和控制学院 专 业: 测控技术和仪器 班级学号: 10305219 学生姓名: 王宏 指导老师: 耿欣 成 绩: 年 月 日目 录1 方案设计1 1.1 设计任务要求1 1.2 系统方案设计1 1.3 编程语言和调试环境选择22 系统硬件设计4 2.1 单片机最小系统电路设计4 2.2 湿度采集电路设计5 2.2.1 湿度传感器选择5 2.2.2 DHT11电路设计6 2.3 串口通信部分电路设计7 2.3.1 串口芯片选择7 2.3.2 MAX3232电路设计8 2.4 电源部分电路设计93 系统软

2、件设计10 3.1 软件系统总体工作步骤10 3.2 湿度采集程序设计10 3.3 串口通信部分程序12 3.4 LabVIEW程序设计13 3.4.1 实时湿度曲线模块13 3.4.2 参数设置模块14 3.4.3 LabVIEW程序框图设计14参考文件16附录A 硬件原理图17附录B 程序代码18附录C 实物图241 方案设计1.1 设计任务要求本设计关键设计一个以湿度传感器,单片机和虚拟仪器为关键设计一个小型湿度检测系统,该系统功效以下:现场湿度实时检测并传输,上位机湿度显示,包含实时湿度曲线,具体设计包含,硬件和软件两个部分,硬件设计包含测量电路设计,单片机和上位机虚拟仪器接口电路设计

3、;软件设计包含下位机C语言程序设计和上位机LabVIEW程序设计,下位机完成数据测试,上位机完成数据显示和分析。1.2 系统方案设计本设计上位机实现部分采取了LabVIEW,LabVIEW是一个开放性通用程序开发系统,含有强大数据采集、数据处理、数据分析和仪器控制功效。本设计要实现功效是构建一个小型湿度检测系统,既然是湿度检测那自然就有数据采集部分,而在LabVIEW中数据采集硬件部分关键是 ( Data Acquisition-DAQ)卡,它和LabVIEW有很好接口程序,用LabVIEW实现数据采集,就是在LabVIEW中控制多种DAQ卡(或设备)完成特定功效,不过本设计中采取湿度传感器本

4、身就是数字信号而且传输数据也较为简单,所以本设计中下位机和上位机数据传输是利用单片机对数字信号进行换算处理以后再经过串口传送至PC端LabVIEW进行实时显示。所以确定初步设计思绪:湿度传感器采集到特定湿度数字信号,再利用单片机将这些数字信号根据一定运算转换成Ascii码形式湿度值然后经过串口传送至PC端,在PC端LabVIEW监控界面能够完成对串口参数设置、平均湿度,最高湿度,最低湿度参数和实时温度曲线显示和数据存放等功效。本设计关键是串口通讯部分,是整个设计关键部分,串口通信部分是上位机和下位机之间联络纽带,将二者紧密联络起来,形成一个完整设计。此次设计中串口通讯关键经过LabVIEW自带

5、部分串行通信模块就行构建很完成。本设计实现湿度检测系统简单实用,灵活性强,实用性高,而且操作简单,易于掌握。1.3 编程语言和调试环境选择本设计过程编译语言采取C语言,编译调试环境采取Keil uVision4。C语言一共有32个关键字和9种控制语句,程序书写很形式自由,而且大小写要区分。把低级语言实用性和高级语言基础结构和语句结合起来。C 语言能够像汇编语言一样对位、字节和地址进行操作,而这三者恰恰就是计算机最基础工作单元。同时C语言运算符包含范围也很广泛,一共有34种运算符。C语言把赋值、括号、强制类型转换等全部作为了运算符处理。这就使C语言运算类型很丰富,表示式类型也多样化了。假如能灵活

6、得使用多种运算符,就能够实现在其它高级语言中难以实现运算。C语言数据类型有:实型、整型、字符型、指针类型、共用体类型、数组类型、结构体类型、共用体类型等。这些全部能用来实现多种复杂数据结构运算。而且C语言引入了指针概念,这就使程序效率更高了。C语言提供多个运算符和表示式值方法,对问题表示可经过多个路径取得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量和字符型数据及逻辑型数据能够通用等1。C语言描述问题比汇编语言快速,工作量小、可读性好,易于调试、修改和移植,而代码质量和汇编语言相当。C语言通常只比汇编程序生成目标代码效率低10%20%。C语言有丰富数据结构和运算符。

7、包含了多种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现多种数据结构运算。C语言能直接访问硬件物理地址,能进行位(bit)操作。兼有高级语言和低级语言很多优点。它既可用来编写系统软件,又可用来开发应用软件,已成为一个通用程序设计语言。2月公布Keil uVision4,Keil uVision4引入了灵活窗口管理系统,为使用者提供一个整齐,高效环境来开发应用程序,开发人员使用Keil uVision4能够同时使用多台监视器,而且提供了视觉上改变,新用户界面能够让使用者愈加好地利用屏幕空间,从而更有效地组织多个窗口。3月ARM企业公布最新集成开发环境RealView MDK开发工具中

8、集成了最新版本Keil uVision4,其编译器、调试工具实现和ARM器件最完美匹配。现在使用Keil uVision4产品有Keil MDK-ARM,Keil C51,Keil C166和Keil C251。最新Keil uVision4 IDE,意在提升开发人员生产力,实现愈加快,更有效程序开发。uVision4引入了窗口管理系统,使用方法更为灵活,能够拖放到视图内任何地方,包含支持多显示器窗口。uVision4在Vision3 IDE基础上,增加了更多大众化功效2。1多显示器和灵活窗口管理系统;2系统浏览器窗口显示设备外设寄存器信息;3调试还原视图创建并保留多个调试窗口布局;4多项目工

9、作区简化和众多项目。Keil uVision4开发界面图1.1所表示。图1.1 Keil uVision4开发界面图2 系统硬件设计系统硬件部分包含测量电路设计,单片机和上位机虚拟仪器接口电路设计,本设计中湿度采集电路主控芯片采取STC89C52、湿度传感器采取DHT11、单片机和上位机虚拟仪器接口电路部分采取串口通信芯片MAX3232,电源部分电路采取USB直接从PC处取电。下面将对各部分电路分别介绍。2.1 单片机最小系统电路设计本设计控制系统因为较为简单,没有其它特殊要求,只需要控制DHT11进行湿度实时采集后经过串口将数据实时传送至上位机LabVIEW处理即可,本设计选择STC89C5

10、2单片机,STC89C52各个参数大家全部很熟悉了,再次就不一一赘述了,本小节讲一下STC89C52最小系统连接。 VCC :接+5V电源,供电即可。 GND :接地即可。XTAL1:单片机上时钟管脚,是独立输入和输出反相放大器,它们能够被配置为使用石英晶振片内振荡器,或是器件直接由外部时钟驱动。XTAL2:单片机上时钟管脚,是独立输入和输出反相放大器,它们能够被配置为使用石英晶振片内振荡器,或是器件直接由外部时钟驱动。RST:STC89C52复位信号输入引脚,当复位引脚RST(第9管脚)出现2个机器周期以上高电平时候,单片机就实施复位操作。假如RST连续为高电平,单片机就处于循环复位状态。复

11、位操作使得内部特殊功效寄存器内容均被设成已知状态。EA:应接高电平,访问内部ROM。STC89C52实物图图2.1所表示。图2.1 STC89C52实物图STC89C52最小系统原理图图2.2所表示。图2.2 STC89C52最小系统原理图2.2 湿度采集电路设计2.2.1 湿度传感器选择本系统是为建立小型湿度采集平台,所以湿度传感器挑选至关关键,经过多方资料查阅和咨询大致确立了以下多个方案:方案一:采取CHR-01湿敏电阻。CHR-01湿敏电阻适适用于阻抗型高分子湿度传感器,它工作电压为交流1V左右,其频率为50Hz2kHz,测量湿度范围为20%90%RH,测量精度5%,工作温度范围为0+8

12、5,最高使用温度120,阻抗在60%RH(25)时为30(2140.5)K。采取555时基或RC振荡电路,将湿度传感器等效为阻抗值,测量振荡频率输出,振荡频率在1k Hz左右。方案二:采取HF3223/HTF3223。HF3223/HTF3223采取模块式结构,属于频率输出式集成湿度传感器,相对湿度在0%99%RH范围内,精度为5%,测量指标和测量精度比较高,不需要校准就能够达成完全交换性,可靠性和稳定性全部比较高,而且响应速度相当快,能够应用于线性电压输出和线性频率输出电路中, HTF3223在HF3223基础上多了一个温度传感器。HF3223湿度传感模块将湿度信息转化为频率信号,传输给单片

13、机进行分析、处理和控制显示3。方案三:采取DHT11数字温湿度传感器,DHT11是一款采集数据正确且无需校准数字信号输出温湿度传感器,它应用了专业数据量模块采集技术和温度和湿度传感技术,可靠性相当高,而且数据采集稳定,且使用寿命长。可和一个高性能8位单片机相连接,实现对温湿度数据实时检测,该产品相当契合我们本设计中设计需要。综合比较三种方案,因为本设计是将采集到数据经过串口传输到上位机部分,所以采取集成式数字型传感器DHT11,会提升整个系统运行速度,而且电路设计也较为简单,所以在满足设计要求情况下,我们选择方案三即DHT11来作为本设计湿度传感器。2.2.2 DHT11电路设计本设计中采取D

14、HT11湿度传感器有四个引脚,包含VCC,GND,DATA,NC,就是除了接+5V电源和地以外只有一个数据口,是单总线数据控制模式器件,所以其连接是时候DATA口需要加510K上拉电阻,其它并无尤其地方。DHT11关键技术参数:供电电压: 3.35.5V DC输 出: 单总线数字信号测量范围: 湿度20-90%RH, 温度050测量精度: 湿度+-5%RH, 温度+-2分 辨 率: 湿度1%RH, 温度1互 换 性: 可完全交换 。长久稳定性: 1%RH/年相关对DHT11时序控制等会在软件部分具体说明,DHT11实物图图2.3所表示。 图2.3 DHT11实物图DHT11原理图图2.4所表示

15、。图2.4 DHT11原理图 DHT11DATA接上拉电阻后连接到STC89C52RCP1.0口进行控制,NC口悬空即可,VCC接+5V电源,GND接地。2.3 串口通信部分电路设计2.3.1 串口芯片选择本设计中需要将采集到湿度数据传送至PC端LabVIEW中进行处理,因为电脑串口是RS232电平,不能和单片机TTL电平直接通信,所以需要使用串口通信芯片将单片机TTL电平转换为RS232电平,此处可选芯片有MAX232和MAX3232,MAX3232是MAX232升级版而且价格相差又不多,所以此处我们选择MAX3232作为串口通信芯片,下面对MAX3232参数做简明说明。MAX3232含有二

16、路驱动器和二路接收器,配置了1uA关断模式,实现了低功耗和延长产品使用寿命。关断模式中,MAX3232接收器保持运行状态,在低功耗情况下,实现了对外部设备实时监测。MAX3232引脚、和MAX242还有MAX232全部是相互兼容,理论上是能够无差异交换。MAX3232即使工作在高速数据传输下,仍然能够确保RS232标准要求正负5.0V最小发送器输出电压4。MAX3232采取专有低压差发送器输出级,利用双电荷泵在3.0V至5.5V电源供电时就能够实现良好RS232通信,MAX3232仅需四个0.1uF外部小尺寸瓷片电容,就能够确保在120kbps高速数据传输下,还能有效保持RS232输出电平。2

17、.3.2 MAX3232电路设计本设计中串口通信芯片是MAX3232芯片,其利用双电荷泵在3.0V至5.5V电源供电时能够实现稳定RS232数据通信,电路中电容值在MAX3232芯片手册上全部为0.1uf。MAX3232相当于串口和单片机直接桥梁,MAX3232有两路接收器和两路驱动器,本设计中只需要利用到其中一路即可。下面介绍一下DB9串口各个引脚。DB9头各管脚定义:1载波检测DCD;2接收数据RXD;3发送数据TXD;4数据终端准备好DTR;5信号地SG;6数据准备好DSR;7请求发送RTS;8清除发送CTS;9振铃提醒RI。MAX3232引脚图图2.5所表示。图2.5 MAX3232引

18、脚图MAX3232电路连接原理图图2.6所表示。图2.6 MAX3232原理图经过原理图可知MAX3232连接方法,其1脚和3脚直接连接104瓷片电容,4脚和5脚直接也连接104瓷片电容,2脚和6脚分别接104瓷片电容后接地,本设计中我们用到是1路接收器和1路驱动器,其DOUT1连接到DB92脚即接收数据口,RIN1连接到DB93脚发送数据口,其和单片机连接口是ROUT1和DIN1分别连接到单片机串口P3.0和P3.1。.2.4 电源部分电路设计 本设计中全部元器件全部是用+5V供电即可,而且需要设计需要和PC端进行实时数据传输,所以电源部分设计是直接利用USB母座经过USB线从笔记本USB口

19、取电即可,在电源和地端并上10uf电解电容和104磁片电容,其得到电压刚好是+5V而且很稳定足以满足本设计需求,电源部分原理图图2.7所表示。图2.7 电源部分原理图3 系统软件设计3.1 软件系统总体工作步骤系统初始化本系统整体步骤是:利用DHT11进行实时湿度实时采集并经过串口传输给上位机经过LabVIEW进行处理,本设计中软件下位机工作步骤图3.1所表示。湿度采集串口传送至PC图3.1 软件下位机步骤图由系统整体步骤可知,本设计软件部分设计可分为上位机部分软件设计和下位机软件部分设计,下面先介绍下位机部分软件设计。3.2 湿度采集程序设计本设计中采取DHT11是经典单总线数据通信元器件,

20、即只使用DATA引脚就能够完成全部控制和数据传输,采取单总线数据格式,一次通讯时间长度在4ms左右,温度和湿度数据分小数部分和整数部分还有校验码,DHT11数据精度是1%,所以她读取到小数部分是不存在一直为零,所以我们只需要对整数部分数据进行处理即可,操作步骤以下:一次完整数据传输数据长度为40bit,高位在前低位在后。数据为,8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验数据,总共为40bit,假如前面32bit计算总和等于后面校验位则证实此次数据读取是正确,若不等于,证实数据读取错误,必需重新读数据。DHT11控制步骤大致是:主控芯片发送

21、一次开启信号以后,DHT11从低功耗模式转换为高速模式,等候到主控芯片开启信号结束以后,DHT11发送响应信号,由主机接收判定以后,DHT11开始送出40bit数据,并触发信号采集,我们估量需要使用到数据段对数据进行采集,但通常全部是全部采集,这么才能够使用DHT11自带数据校验功效。DHT11每接收到一次开启信号则触发一次温湿度数据采集,假如没有收到开启信号,则一直处于低功耗模式,不采集数据。DHT11DATA总线在低功耗模式时为高电平,主控芯片把DATA拉低等候DHT11响应,而且主控芯片把DATA拉低必需大于18ms,确保DHT11能稳定检测到开启信号。DHT11接收到主控芯片开启信号以

22、后,等候主控芯片开启信号结束后,然后DHT11会发出80us低电平响应信号。主机发送开启信号结束后,延时等候40us左右后, 即可读取DHT11响应信号,判定其为响应信号以后即可开始读取40bit数据位。DATA总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号以后,会再把DATA总线拉高80us,准备发送40bit数据,每一bit数据全部以50us低电平作为间隙,高电平长短判定了数据位是高还是低。当最终一bit数据传送完成以后,DHT11会拉低DATA总线50us,以示数据传输结束,随即总线由上拉电阻拉高而且进入空闲状态,对DHT11进行数据采集需要尤其注意是,两次采集间隔必需

23、在1s以上,不然采集命令无效。本设计中DATA口连接在单片机P1.0口,依据DHT11通信协议,首先由单片机P1.0口主动产生要求激发信号,然后将数据线控制权交给传感器,接着单片机经过while语句不间断检验P1.0口高低电平,从而达成对时序正确把握,解析出正确传输数据,在经过对其数据分析处理,即可得到目前湿度值,DHT11采集程序步骤图图3.2所表示。P1.0拉低延时18ms程序开始P1.0拉高延时40usNDHT11响应信号Y数据读取数据校验返回图3.2 DHT11程序步骤图3.3 串口通信部分程序STC89C52单片机上有一个通用异步接收发送器UART,经过引脚RXDP3.0和TXDP3

24、.1可外部电路进行全双工串行异步通信,发送数据时由TXD端送出,接收时数据由RXD端输入串行端口有4种基础工作方法,经过编程设置,能够使其工作在任一方法,本设计中实用是工作方法1。51单片机串行端口关键由SCON、PCON这两个寄存器来控制,用于设置传输速率,是否触发中止,数据位,标志位,校验位,和接收或发送模式选择。串口通信关键还用到了一个数据寄存器SBUF,SBUF为发送和接收所共用寄存器。当在发送模式时,只写不读;接收模式时,只读不写。设置完成发送条件以后,向SBuF写入数据就开启了串口发送;读SBuF就能够读取到串口接收到数据。在不一样工作方法中,由时钟振荡频率分频值或由定时器T1定时

25、溢出时间来确定串口波特率,串口通信程序步骤图图3.3所表示。T1为工作方法2,开中止程序开始串口方法1,波特率9600,许可接收串口发送完成NY清除标志位返回图3.3 串口通信程序步骤图3.4 LabVIEW程序设计 该设计设计思想是:由湿度传感器检测信号,经过单片机控制串口传送至PC,进入计算机虚拟仪器程序,对采集到湿度进行上位机湿度显示,包含实时湿度曲线,平均湿度,最高湿度,最低湿度参数测量和显示。本系统组成和其它基于虚拟仪器系统组成一样,全部由系统前面板及和之相对应程序框图两大部分组成。下面以前面板开始介绍整个LabVIEW整体构架,整个上位机检测界面前面板图3.4所表示。图3.4 检测

26、系统前面板图由图3.4能够看到,前面板关键由串口配置,接收数据缓冲区和实时湿度曲线,平均湿度,最高湿度,最低湿度参数等和部分参数输入控件组成。3.4.1 实时湿度曲线模块实时湿度曲线模块由波形图表控件组成,它用来依据所测湿度值来绘制湿度改变曲线,从而对湿度走势一目了然,能够依据需要设置曲线样式等参数,实时湿度曲线模块图图3.5所表示。图3.5 实时湿度曲线模块图3.4.2 参数设置模块参数设置模块中可对端口选择、波特率、数据位、奇偶校验、停止位。波特率是传输速率,默认值为9600。数据位是输入数据位数,数据比特值介于5和8之间,默认值为8。奇偶校验制订要传输或接收每一帧所使用校验方法:0为无校

27、验(默认);1为奇校验;2为偶校验;3为校验位一直为1;4为校验位一直为0。停止位指定用于表示帧结束停止位数量5。参数设置模块图3.6所表示。图3.6 参数设置模块图3.4.3 LabVIEW程序框图设计本设计关键是利用到LabVIEW串口通信功效,所以程序框图关键由一个while循环、一个条件结构、VISA配置串口、VISA写入、VISA读取和VISA关闭等控件组成。其中有些控件我们在前面板中已经介绍,在此我们关键介绍串口通讯用到多个子V I 6。系统总程序框图图3.7所表示。图3.7 总程序框图程序开始首先利用VISA 配置串口模块对串行口进行初始化,然后判定开始运行按钮是否按下,若按下开

28、始使能串口采集。本设计中我们关键使用VISA实现串口通信,所以下面具体讲解一下VISA使用,在labview功效面板Instrument I/OSerial 目录下,包含串行通信所需要集成模块。利用这些模块,能够很方便设计出基于串行通信控制系统。需要注意是,在使用这些模块前,需安装在光盘上VISA驱动程序,也可从NI网站无偿下载最新VISA驱动程序,下面介绍一下最常见串行通信模块7。1、VISA 配置串口用于初始化所选择串行口。其中VISA 资源名称用于选择所用到串行口,PC机中常见到串口号分别用COM1和COM2表示,流控制用于设置握手方法。波特率、数据位、停止位、奇偶校验分别用于设置串行通

29、信波特率,数据位长度,停止位和校验方法8。2、VISA Write用于将 Write Buffer中字符写到VISA 资源名称指定串行接口中。3、VISA Read用于从VISA资源名称指定串行口中读取要求字节数数据,并把这些数据传输给Read Buffer。其中,Byte count 用于设置要读取字节数。4、VISA Close用于关闭VISA 资源名称指定串行口,让出串行口使用权。参考文件1 李广弟单片机基础M北京:北京航空航天出版社,2 唐俊翟单片机原理和应用M北京:冶金工业出版社,3 周航慈单片机应用程序设计技术M北京:北京航天航空大学出版社,4 勒达单片机应用系统开发实例导航M北京

30、:人民邮电出版社,5 陈树学,刘萱LabVIEW宝典M北京:电子工业出版社,6 刘君华基于LabVIEW虚拟仪器设计M北京:北京电子工业出版社,7 赵茂泰智能仪器原理及应用M北京:电子工业出版社,8 蔡建安,陈洁华基于LabVIEW工程软件应用M重庆:重庆大学出版社,附录A 硬件原理图图A 硬件原理图附录B 程序代码#include #include /typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */typedef signed char S8; /* defined f

31、or signed 8-bits integer variable 有符号8位整型变量 */typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */typedef signed int S16; /* defined for signed 16-bits integer variable 有符号16位整型变量 */typedef unsigned long U32; /* defined for unsigned 32-bits integer variable 无符号32位

32、整型变量 */typedef signed long S32; /* defined for signed 32-bits integer variable 有符号32位整型变量 */typedef float F32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */#define uchar unsigned char#def

33、ine uint unsigned int#define Data_0_time 4/-/-IO口定义区-/-/sbit P2_0 = P20 ;/-/-定义区-/-/U8 U8FLAG,k;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U8 outdata5; /定义发送字节数 U8 i

34、ndata5;U8 str5= ;U8 count, count_r=0;U16 U16temp1,U16temp2;SendData(U8 *a)outdata0 = a0; outdata1 = a1;outdata2 = a2;outdata3 = a3;outdata4 = a4;count = 1;SBUF=outdata0; void Delay(U16 j) U8 i; for(;j0;j-) for(i=0;i27;i+); void Delay_10us(void) U8 i; i-; i-; i-; i-; i-; i-; void COM(void) U8 i; for(

35、i=0;i8;i+) U8FLAG=2; /- /- while(!P2_0)&U8FLAG+);Delay_10us();Delay_10us();/Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while(P2_0)&U8FLAG+); /- /- /超时则跳出for循环 if(U8FLAG=0)break; /判定数据位是0还是1 / 假如高电平高过预定0高电平值则数据位为 1 U8comdata=1; U8comdata|=U8temp; /0 /rof /-/-湿度读取子程序 -/-/-以下变量均为全局变量-/-温度高8位=

36、U8T_data_H-/-温度低8位= U8T_data_L-/-湿度高8位= U8RH_data_H-/-湿度低8位= U8RH_data_L-/-校验 8位 = U8checkdata-/-调用相关子程序以下-/- Delay();, Delay_10us();,COM(); /-void RH(void) /主机拉低18ms P2_0=0; Delay(180); P2_0=1; /总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); /主机设为输入 判定从机响应信号 P2_0=1; /判定从

37、机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!P2_0) /T ! U8FLAG=2; /判定从机是否发出 80us 低电平响应信号是否结束 while(!P2_0)&U8FLAG+); U8FLAG=2; /判定从机是否发出 80us 高电平,如发出则进入数据接收状态 while(P2_0)&U8FLAG+); /数据接收状态 COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_temp=U8comdata; COM(); U8T_data_L_tem

38、p=U8comdata; COM(); U8checkdata_temp=U8comdata; P2_0=1; /数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp=U8checkdata_temp) U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8chec

39、kdata_temp; /fi /fi/-/main()功效描述: AT89C51 11.0592MHz 串口发 /送温湿度数据,波特率 9600 /-void main()/uchar str6=RS232;/* 系统初始化 */TMOD = 0x20; /定时器T1使用工作方法2TH1 = 253; / 设置初值TL1 = 253;TR1 = 1; / 开始计时SCON = 0x50; /工作方法1,波特率9600bps,许可接收 ES = 1;EA = 1; / 打开所以中止 TI = 0;RI = 0;Delay(1); /延时100US(12M晶振)while(1) /- /调用温湿

40、度读取子程序 RH(); /串口显示程序 /- str0=U8RH_data_H; str1=U8RH_data_L; str2=U8T_data_H; str3=U8T_data_L; str4=U8checkdata; SendData(str) ; /发送到串口 /读取模块数据周期不易小于 2S Delay(0);/elihw/ mainvoid RSINTR() interrupt 4 using 2if(TI=1) /发送中止 TI=0;if(count!=5) /发送完5位数据 SBUF= outdatacount;count+;if(RI=1) /接收中止 RI=0; 附录C 实物图图C1 实物图

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服