基于BP网络的智能压力器_第1页
基于BP网络的智能压力器_第2页
基于BP网络的智能压力器_第3页
基于BP网络的智能压力器_第4页
基于BP网络的智能压力器_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

摘要由于目前社会高速发展,智能已经成为各个关键领域最重要的突破方向了。因此,对智能化技术的研究是非常必要的。然而压力监控是工业生产里必不可少的环节,为了提升压力检测的精度,本文研究并设计了一种基于BP神经网络的压力监控系统。系统以单片机为核心,利用BP网络的温度补偿算法进行压力信号的采集与处理。该系统的硬件设计包括基于单片机,压力测量传感器的电路设计,电源电路设计的最低系统设计;软件设计包括C语言基于单片机的方案设计,基于C#上位机软件设计。最终经过联合调试,系统达到了设计目标。关键词:压力传感器;温度补偿;BP神经网络ABSTRACTWiththerapiddevelopmentofsociety,intelligencehasbecomethemostimportantbreakthroughdirectioninallkeyareas.Therefore,theresearchofintelligenttechnologyisverynecessary.However,pressuremonitoringisanindispensablelinkinindustrialproduction.Inordertoimprovetheaccuracyofpressuredetection,thispaperstudiesanddesignsapressuremonitoringsystembasedonBPneuralnetwork.Thesystemtakessinglechipcomputerasthecore,andusesBPnetworktemperaturecompensationalgorithmtocollectandprocesspressuresignals.ThehardwaredesignofthesystemincludesthecircuitdesignbasedonMCU,pressuremeasuringsensorandthelowestsystemdesignofpowersupplycircuit.ThesoftwaredesignincludestheschemedesignofClanguagebasedonMCUandthesoftwaredesignofC#hostcomputer.Finally,afterjointdebugging,thesystemachievesthedesigngoal.Keywords:PressureSensors;TemperatureCompensation;BPNeuralNetwork目录TOC\o"1-3"\h\u摘要 (2)在公式中:i是第i个输出层神经元;j是第j个隐含层神经元;是节点输出;Wij是节点连接权重;f是传输函数;是神经元阈值。式(1)代表连接到隐藏层的隐藏层神经元的总和,i是第i个输出层神经元,即j的总和[14]。权重修正:(3)在公式中:η是学习因素(按照输出误差动态调整);h是动量因子;Ei是计算误差。4基于BP神经网络的压力传感器数据处理BP神经网络的学习过程由四个步骤组成:①输入模式通过中间层从输入层向前传输到输出层;②输出层通过中间层到输入层校正输出误差,并逐层修改连接;③前向传播和反向传播交替执行网络存储器训练;④网络学习融合。在学习过程中,标准的BP算法使用了拥有一个统一的学习速度。每一步的长度正比于它的方向的斜率。权重更新的基本公式是[15]:在公式中,η是步长参数(学习率);Wij(n)是第n个加权校正;是误差平方和负重的负梯度。由于BP只使用局部梯度信息,则η值必须很小,所以算法会跳过最小值,这会导致学习收敛速度变慢,为了加快收敛,常用的方法是增加一个动量因子,其权重更新公式为:在公式中,μ是动量因子,用于抑制局部振荡,以满足加快训练速度和避免局部最小值等要求,提出了一种改进BP算法的方法:①对每个权重使用不同的学习率η,通过指数衰减函数δ(k)表示。这样可以使学习速率η增加更加渐进的区域快于较陡的区域;②在学习过程中,学习率可以根据误差函数E梯度信息进行自适应调整,以改善网络,总结提高网络收敛性能的能力;③使用算法中的动量项,动量项与学习率相同;④防止学习率或动量过大,设定上限;⑤使用参数λ和概率P来控制网络学习过程的记忆和恢复,也就是说,如果误差增加的数量大于λ,学习率和动量系数减小,并且搜索是最佳点重新学习。为了避免波动,搜索是通过概率P随机执行的。使用人工神经网络进行温度补偿是神经网络的基本特征,这使得传感器具有复杂的非线性映射、自组织、自学习和自适应能力。神经网络方法不需要建立包括要消除的非目标参数的功能分析公式,而只需要训练样本,您可以通过学习和培训了解输入和输出的内部联系。神经网络所需的学习样本由多维校准实验数据提供,网络模块通过软件编程实现。神经网络校正压力传感器的框图如图4-1所示。传感器模块为:输入压力P和温度,输出周期T和温度t;网络模块时:输入周期T和温度t,通过BP网络的学习和训练,消除温度t的影响,输出T'或P'。TTT压力传感器神经网络ttT'或P‘温度传感器图4-1温度误差补偿原理图这种设计选择具有单个隐藏层一个神经网络。神经网络的训练和仿真由神经网络工具箱和MATLAB7.8环境中的相应程序实现。由于神经网络的隐藏层使用对数sigmoid函数,因此其输出范围为(0,1),它来自:(7)(8)对实验数据进行归一化,使得处理后的值之间的范围在(0,1)内。归一化的神经网络的输入和输出标准样品数据表为:表4-1神经网络的输入输出标准样本数据表实际温度℃175075100125温度读数Hz00.2780.5020.7331.000实际压力MPa0.05压力读数Hz10.7890.5760.30900.16310.7850.5660.30100.27510.7650.5230.24200.38610.7360.4780.18200.50010.7250.4750.18600.61310.6740.3730.03700.72510.6990.36500.1470.83810.7470.38100.1860.95010.7830.38400.156在基于BP神经网络的温度补偿实验中,输入向量的维数,目标向量的维数为0.005,训练误差为0.005,训练次数为5000,训练的权重和阈值通过实验获得,以获得获得BP神经网络的温度补偿模型。仿真后所得的数据为:表4-2仿真后得到的数据表实际温度℃175075100125温度读数Hz00.2780.5020.7331.000实际压力MPa0.386压力读数Hz1.03920.71290.52070.2015-0.03410.5000.93920.73020.51010.2533-0.11430.6130.96590.73750.46030.07330.02060.7250.94240.71420.48240.0450-0.37160.8380.93830.78390.48880.0792-0.0587补偿仿真曲线为:虚线为补偿前的曲线,实线为补偿后曲线虚线为补偿前的曲线,实线为补偿后曲线图4-2BP神经网络实现温度补偿的图形5压力处理与显示系统设计5.1主控制器电路设计中央控制单芯片是STC89C52单片机其在该设计中使用的单芯片。作为在计算机中的特别重要的分支之一,随着科学的进步,单片机的产生是不可避免的现象,必须经历的阶段。由计算机所需要的模块部分,小的单芯片微型计算机得到了继承,它可以说是:麻雀较小,完整。单片机所继承了用作随机储存的存储器RAM以及内部资源定时器,还是一些丰富的外部接口IO口,用作输入输出的功能,这些分立的模块全部集成在一个小小的芯片上,可谓神奇和不可置信。在控制方面,单片机得到了广阔的发展空间,很多工业上所需要的功能和方式都非常适合单片机这类芯片进行大展身手。单片机的结构和大部分的指令功能是工业设计的福音。它还有另外一个名字:单片微型控制器。这个名字在国外可谓是名声赫赫,当然现在国内也是得到了广泛的应用。图5-1单片机最小系统电路有各种系列在市场上的单芯片微型计算机,它们的功能是不同的。作为用于当前处理器,微处理器51系列的单片机,其另一系列的51单芯片应用被广泛使用,其中大部分是8位处理器内核。以目前的市场来讲,51系类的单片机和其他系列的15位处理器或者说32位处理器相比,处理速度是有着很大的差距,但是,它的处理速度在一般小型工程上来讲完全足够了,况且它相对而言比较便宜的价格也是它应用广泛的主要原因。就对比着STM32这款16位的处理器而言,处理速度比他低了很多,但是STM32的价格也是51单片机的两倍还要多,在两款单片机都可以满足工程所需处理速度的需要,那么首选的当然是价格低廉的51单片机。在51MCU的升级版,52系列MCU已新添加的内部数据存储器RAM。在一些程序功能,数据读取和写入操作是可行的。当在对AT89C1单片机进行数据存放时,只能将存放的数据所占内存下降到一百多B,当然,其中包括程序中进行计算的运算结果和中间传递变量。当所用存放数据的内存需要更多时,这个系列的单片机还有一些内存容量为1K的稍大的RAM。对于52系列单芯片微型计算机,它被广泛应用于市场。进行数据交互所需要的外围设备接口的IO端口是:P0,P1,P2,P3。这些接口的8位处理速度是并行接口,这意味着在进行数据传递时,它们不仅可以进行输出,也可以根据程序进行输入,输入输出的实现,导致现在单片机可以承担一些协方面的东西。常用的协议有:串口协议,单总线协议。单片机很强大,但也不是无所不能的,有一部分功能它也是不具备的,如:EPROM/EEPROM的功能是它本身不具备的。但是可以根据协议进行外部扩展,一般采用IIC协议进行外部扩展ROM,所需芯片为:AT24C02。就现在的科技来看,对这些单片机的研究和应用,是可以慢慢将ROM这类的储存器进行集成到单片机里面的。这也就可以减少程序开发者的麻烦,将自动化产业进一步推进和进步,而且使程序运行的更稳健和快速。对于一些设计规范,特别是51系列单片机,目前,最大允许12MHz的是MCU的市场上的外部振荡。当然,随着单片机芯片的不断优化和发展,其性能也在不间断提高和进步,尤其对于STC89C52系列的单片机来说,振荡频率最大可以提高到40MHz了,以至于当设计的系统实用这些提高的芯片后,处理速度将大大提高和运行指令时间将大大减少,这样的话,采用STC89C52单片机的系统性能也就显著加强。5.2显示电路设计图5-2OLED显示电路如上图所示,OLED液晶显示需要占用单片机的6个引脚,分别是4个数据引脚和电源、地引脚,外加一个可调电阻进行设置液晶背光的亮度,通过IIC协议和单片机进行通信,显示需要显示的信息,本系统要显示采集到的压力值信息。5.3压力采集电路设计图5-3压力检测电路该传感器检测电路的功能是将电阻应变片的电阻变化转换为电压输出。该芯片通过需要其他示例芯片,如一个电压源,一个片上的手表振动器等的外围线集成在一起。在本系统中选择的是5891抵抗应变传感器。因为相应的电压信号较小,所以很需要放大器放大信号。提高了设备的性能和可信度,对传感器信号进行了过滤处理。选择开关时,您可以选择通道A或通道B。万次输入信号分别在±20mV和±40mV里提供的稳定的电源由外部传感器和芯片内的A/D变换器提供电源。器具的自动复位的结果将简化开关的初始化,内部低噪声放大器的编程将相比于用芯片内部寄存器编程的不同的示例的芯片连接。5.4上位机软件设计图5-4压力检测电路上位机软件采用C#进行设计,功能是读取串口发送给上位机的压力数据,并将数据进行展示,完成后的软件设计界面如上图所示。6系统测试根据传统的调整步骤,在软件之前执行调试,并且在启动检测之前进行电源故障检测。整台机器在一台机器上单独测试,启动检测,模块化功能实现和交换机调试按顺序进行。在执行这些测试之前,需要单独调试电源。该系统的测试过程主要分为两个部分:硬件测试和软件测试。6.1硬件测试硬件调试的目的是为了包管硬件体系的精确性。因为如果连接到电网后出现了错误的环境,可能会导致爆炸和其他环境伤害,危及个人安全。连接到电网后的调试需要额外的确认,以便在第一次检查后进行相应的调试。设备调试被细分为电前和电后调试,用于防止短路、开路电路和粘连。张力配置使用数字表。每个试点的电压常数,特别是电容器极性,不得因主图焊接出错,必须简要描述在复本中描述的细元素的基本测量参数和组织精度。任何电路都不能与电源分离。在没有软件的情况下,系统只能测量系统电源电路的输入和输出,每个模块的结果都是正常的。6.2软件测试电源电路紧张测量输出电压是否正常。信号处理的时间可能会更短,电压会以数字形式被伏特计测量。将数据丢失与理论值进行比较,结果可能不准确,正如输出电流稳定,读写操作正常。输出电压模块的精度,按下或不按下键链中的按钮,电平不跳等等。系统实现或比较的结果被缩短了,所以软件领域的代码很少。同样,观察输出精度,针对变化的延迟,延迟时间如果太短,每个模块元件检测准确输入和输出功率,以及每个模块的读写水平之间的联系不是那么久,相关系统软件测试,如果应力处理参数的变化,发现自己。6.3测试结果制作完成的系统整体如图6-1所示。该系统的实际测试是如下,并测试压力传感器的一部分,如图6-2所示。图6-1系统整体结构图图6-2系统主测试结果图可以看到上位机已经准确显示出了此时的压力值,通过对整个系统的运行进行测试,这验证了设计思路的正确性,也验证了系统的硬件的可行性。调试时,设计目标是实现准确的。7结论本设计制作的是通过单片机控制的智能压力器,用单片机作为压力器的控制中心,利用BP神经网络算法进行传感器信号的数据融合,来解决压力传感器中存在的压力和温度之间的交叉干扰问题,从而实现智能化功能。作为现代社会的新发明,智能可以说是未来要发展的一个方向,他能够通过人类事先预设模式自动运作,不用人为进行干预,就可以达到我们所要求的目标。本设计在硬件设计方面较为简单,体积小,携带方面,具有很好的市场前景,实现经济利益的同时,也能促进科技发展。我国作为世界上人口最多的国家,在未来各方面的发展都来离不开智能化,所以BP网络算法作为智能压力器的一种重要手段,在将来的各类智能发展中都会有不可替代的作用。通过构建BP网络的智能压力器系统,到完成整个设计,我觉得能够大大提高我们的设计以及实践能力,这也是适应社会未来智能化自动化的趋势。虽然在这次的整个设计过程中也遇到了许多困难,从一开始的开题报告到软件设计以及后面的论文撰写都是花费大量心思去完成的,这里离不开同学以及老师的帮助。虽然很辛苦,但是大学生涯最后一次的设计也让我受益匪浅,成长了许多。相信这会对我未来的发展道路有着深远的影响。参考文献[1]张朋,陈明,秦波,何鹏举.基于BP神经网络的振动筒压力传感器温度补偿[J].传感技术报,2007,20(10):2213-2217.[2]韦兆碧,刘晔,马志瀛,胡光辉,时德钢.基于RBF网络的光纤位移传感器温度补偿研究[J].电工电能新技术,2004,23(2):42-45.[3]于化景,付华.基于模糊神经网络融合的温度控制方法[J].辽宁工程技术大学学报,2003,22(5):649-650.[4]杨德旭,何凤宇,魏利华.基于BP神经网络温度补偿技术的研究[J].农机化研究,2008,1(1):71-73.[5]孟彦京,汪宁,佟明,杨雅莉.小波神经网络在压力传感器温度补偿中的应用[J].陕西科技大学学报,2009,2(4):84-97.[6]张雪君.电容式压力传感器温度补偿的RBF神经网络[J].北京:传感器技术,2001,20(5):9-11.[7]MukherjeeS,NayarSK.AutomaticgenerationofRBFnetworksusingwavelets[J].PatternRecognition,1996,29(8):1369-1383.[8]刘君华.智能传感器系统[M].西安:西安电子科技大学出版社,2004:1-50.[9]栾桂冬.传感器及其应用[M].西安:西安电子科技大学出版社,2002:1-50.[10]崔淑琴.智能压力传感器的研究与设计[D].哈尔滨:哈尔滨理工大学,2005:2-50.[11]张文竹.智能差压传感器的研制[D].哈尔滨:黑龙江大学,2003:2—10.[12]胡少春.智能压力检测系统测试仪与PC机数据处理软件的设计[D].西安:西安科技大学,2003:2-20.[13]陈岭丽,冯志华.检测技术和系统[M].北京:清华大学出版社,2006:77—133.[14]李戎.压力传感器的现状及发展趋势[J].西安工业学院学报,2002,22(3):241-243.[15]MarkBeale,NeuralNetworkToolbox[M].北京:机械工业出版社,2004.附录1神经网络程序:clearallx=[00.2780.5020.7331.000;0.3860.5000.6130.7250.838];y=[10.7360.4780.1820;10.7250.4750.1860;10.6740.3730.0370;10.6990.36500.147;10.7470.38100.186];net=newff(x,y,6);net.trainparam.goal=0.005;net.trainparam.epochs=5000;[net,tr]=train(net,x,y);iw1=net.IW{1};b1=net.b{1};lw2=net.LW{2};b2=net.b{2};savenetkohlernet;x1=[00.2780.5020.7331.000];y1=sim(net,x)y1=1.03920.71290.52070.2015-0.03410.93920.73020.51010.2533-0.11430.96590.73750.46030.07330.02060.94240.71420.48240.0450-0.37160.93830.78390.48880.0792-0.0587y2=[1.03920.71290.52070.20150.4253];y3=[0.8950.6830.4430.1550];plot(x1,y2,'-',x1,y3,'--')+附录2单片机程序:#include"REG51.h"#include"oled.h"#include"bmp.h"#include<INTRINS.H>sfrP1M1=0x91;sfrP1M0=0x92;sbitALERT_PIN=P2^0;#defineALERT_ONALERT_PIN=0#defineALERT_OFFALERT_PIN=1typedefunsignedcharuchar;typedefunsignedint uint;unsignedchargucYaliVol=0;unsignedchargucYaliVolYuzhi=30;unsignedchargucWorkMode=0;//默认自动模式unsignedintgui1msCount=0;unsignedintgui10msCount=0;unsignedintgui1sCount=0;unsignedintgui2sCount=0;typedefunsignedcharBYTE;typedefunsignedshortWORD;BYTEBUF[8];//接收数据缓存区unsignedcharge,shi,bai,qian,wan;//显示变量intdis_data;//变量//voidDelay5us();voidDelay5ms();//*********************************************************voidconversion(uinttemp_data)//数据转换出个,十,百,千,万{wan=temp_data/10000;temp_data=temp_data%10000;//取余运算 qian=temp_data/1000;temp_data=temp_data%1000;//取余运算bai=temp_data/100;temp_data=temp_data%100;//取余运算shi=temp_data/10;temp_data=temp_data%10;//取余运算ge=temp_data; }voidDelay5us(){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();}voidDelay5ms(){WORDn=560;while(n--);}voidTimer0()interrupt1{TH0=(65536-922)/256;//触发中断时重新装填计时TL0=(65536-922)%256;gui1msCount++;if(0==gui1msCount%1000){gui1sCount++;}}voidTimer1()interrupt3{}voidSendData(unsignedcharDat){unsignedchari=0;SBUF=Dat;while(1){if(TI){TI=0;break;}}}//DS1302引脚定义sbitRST=P1^4;sbitIO=P1^3;sbitSCK=P1^2;//DS1302地址定义#defineds1302_sec_add 0x80 //秒数据地址#defineds1302_min_add 0x82 //分数据地址#defineds1302_hr_add 0x84 //时数据地址#defineds1302_date_add 0x86 //日数据地址#defineds1302_month_add 0x88 //月数据地址#defineds1302_day_add 0x8a //星期数据地址#defineds1302_year_add 0x8c //年数据地址#defineds1302_control_add 0x8e //控制数据地址#defineds1302_charger_add 0x90 #defineds1302_clkburst_add 0xbe//初始时间定义uchartime_buf[8]={0x20,0x19,0x3,0x20,0x00,0x31,0,0x02};//初始时间2019年6月1号23点59分55秒星期二voidserial()interrupt4using3{if(RI){RI=0;}}voidDelay_xms(uintx){uinti,j;for(i=0;i<x;i++)for(j=0;j<112;j++);}typedefunsignedintU16;typedefunsignedcharU8;U8U8FLAG;U8U8temp;U8U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8U8comdata;voidDelay(U16j){U8i;for(;j>0;j--){for(i=0;i<27;i++);}}voidDelay_10us(void){U8i;i--;i--;i--;i--;i--;i--;}#defineNOP()_nop_()/*定义空指令*/#define_Nop()_nop_()/*定义空指令*/sbitSCL=P1^1;//I2C时钟sbitSDA=P1^0;//I2C数据bitack;/*应答标志位*//*******************************************************************起动总线函数函数原型:voidStart_I2c();功能:启动I2C总线,即发送I2C起始条件.********************************************************************/voidStart_I2c(){SDA=1;/*发送起始条件的数据信号*/_Nop();SCL=1;_Nop();/*起始条件建立时间大于4.7us,延时*/_Nop();_Nop();_Nop();_Nop();SDA=0;/*发送起始信号*/_Nop();/*起始条件锁定时间大于4μs*/_Nop();_Nop();_Nop();_Nop();SCL=0;/*钳住I2C总线,准备发送或接收数据*/_Nop();_Nop();}/*******************************************************************结束总线函数函数原型:voidStop_I2c();功能:结束I2C总线,即发送I2C结束条件.********************************************************************/voidStop_I2c(){SDA=0;/*发送结束条件的数据信号*/_Nop();/*发送结束条件的时钟信号*/SCL=1;/*结束条件建立时间大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1;/*发送I2C总线结束信号*/_Nop();_Nop();_Nop();_Nop();}/*******************************************************************字节数据发送函数函数原型:voidSendByte(UCHARc);功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack=0)发送数据正常,ack=1;ack=0表示被控器无应答或损坏。********************************************************************/voidSendByte(unsignedcharc){unsignedcharBitCnt;for(BitCnt=0;BitCnt<8;BitCnt++)/*要传送的数据长度为8位*/{if((c<<BitCnt)&0x80)SDA=1;/*判断发送位*/elseSDA=0;_Nop();SCL=1;/*置时钟线为高,通知被控器开始接收数据位*/_Nop();_Nop();/*保证时钟高电平周期大于4μs*/_Nop();_Nop();_Nop();SCL=0;}_Nop();_Nop();SDA=1;/*8位发送完后释放数据线,准备接收应答位*/_Nop();_Nop();SCL=1;_Nop();_Nop();_Nop();if(SDA==1)ack=0;elseack=1;/*判断是否接收到应答信号*/SCL=0;_Nop();_Nop();}/*******************************************************************字节数据接收函数函数原型:UCHARRcvByte();功能:用来接收从器件传来的数据,并判断总线错误(不发应答信号),发完后请用应答函数应答从机。********************************************************************/unsignedcharRcvByte(){unsignedcharretc;unsignedcharBitCnt;retc=0;SDA=1;/*置数据线为输入方式*/for(BitCnt=0;BitCnt<8;BitCnt++){_Nop();SCL=0;/*置时钟线为低,准备接收数据位*/_Nop();_Nop();/*时钟低电平周期大于4.7μs*/_Nop();_Nop();_Nop();SCL=1;/*置时钟线为高使数据线上数据有效*/_Nop();_Nop();retc=retc<<1;if(SDA==1)retc=retc+1;/*读数据位,接收的数据位放入retc中*/_Nop();_Nop();}SCL=0;_Nop();_Nop();return(retc);}/********************************************************************应答子函数函数原型:voidAck_I2c(bita);功能:主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)********************************************************************/voidAck_I2c(bita){if(a==0)SDA=0;/*在此发出应答或非应答信号*/elseSDA=1;_Nop();_Nop();_Nop();SCL=1;_Nop();_Nop();/*时钟低电平周期大于4μs*/_Nop();_Nop();_Nop();SCL=0;/*清时钟线,钳住I2C总线以便继续接收*/_Nop();_Nop();}/*******************************************************************ADC发送字节[命令]数据函数*******************************************************************/bitISendByte(unsignedcharsla,unsignedcharc){Start_I2c();//启动总线SendByte(sla);//发送器件地址if(ack==0)return(0);SendByte(c);//发送数据if(ack==0)return(0);Stop_I2c();//结束总线return(1);}/*******************************************************************ADC读字节数据函数*******************************************************************/unsignedcharIRcvByte(unsignedcharsla){unsignedcharc;Start_I2c();//启动总线SendByte(sla+1);//发送器件地址if(ack==0)return(0);c=RcvByte();//读取数据0Ack_I2c(1);//发送非就答位Stop_I2c();//结束总线return(c);}#definePCF85910x90//PCF8591地址unsignedintguiAlertCount=0;unsignedcharguiWarningFlag=0;voidYaliPro(){ISendByte(PCF8591,0x40);gucYaliVol=IRcvByte(PCF8591);//ADC3模数转换4 可调0-5vbatteryPowergucYaliVol=255-gucYaliVol;if(gucYaliVol>gucYaliVolYuzhi){guiWarningFlag=1;}else{guiWarningFlag=0;}SendData(gucYaliVol);}voidAlertProcess(void){guiAlertCount++;if(1==guiWarningFlag){if(0==guiAlertCount%2){ALERT_ON;}else{ALERT_OFF;}}else{ALERT_OFF;}}intmain(void){ u8t;unsignedintui1msCount=0;unsignedintui1sCount=0;floattemp;unsignedcharucReadFlag=0;unsignedlongulTmp=0; OLED_Init(); //初始化OLED P2=0xff;P1=0; OLED_Clear();OledShow();

温馨提示

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

评论

0/150

提交评论