




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要本文介绍了一种虚拟示波器的设计过程。首先介绍了数据采集的方法。下位机采集的数据有温度和电压两种。通过AD转换模块将模拟电压量转化为数字量实现电压采集,温度采集使用的是18B20温度传感器。数据采集完成后根据上位机的需求,将相应的数据通过串口发送给上位机显示。然后进行上位机界面设计。上位机是用LabVIEW设计的,在接收到下位机传过来的数据后将其以波形的形式显示出来,从而实现了示波器的功能。最后给出了本次设计的一个应用实例。关键词:虚拟仪器;示波器;数据采集目录1 绪论12 单片机硬件电路及原理22.1 AT89C516RD+单片机22.2 模数转换42.3 18B20温度传感器53 单片机程序设计73.1 I2C总线介绍73.2 模数转换93.3 温度采集103.4 与电脑数据传输134 PC端软件设计154.1 软件界面设计154.2 主程序154.3 温度采集子程序174.4 电压采集子程序185 设计结果及应用205.1 结果展示205.2 应用实例216 总结体会23参考文献24附录 重要程序清单25测控系统现代仪器设计课程设计说明书1 绪论虚拟仪器是由电脑软件加外部硬件,实现传统仪器的功能的一种软硬件结合系统。与传统仪器相比,虚拟仪器有很多优点,如极大的灵活性。利用相同的外部硬件通过编写不同的软件就可实现不同的功能,并且不像传统仪器那样,一旦制造出来其功能就是固定的,虚拟仪器可根据用户不同的需求进行各种功能优化。同时,虚拟仪器软件基于PC平台,可充分利用其强大的处理能力,出色的完成各种工作。除此之外,虚拟仪器还能大幅降低资金投入、系统开发成本和系统维护成本,为企业带来更高的经济效益。正因为虚拟仪器有着传统仪器无法比拟的优势,他拥有广阔的发展前景。目前虚拟仪器主要用在数据采集与控制、数据处理与分析和数据显示等方面。LabVIEW是一款由美国国家仪器(NI)公司研制开发虚拟仪器开发软件,集成了工程师和科学家快速构建各种应用所需的所有工具,对计算机以及各种外部硬件有很好的支持,可充分发挥计算机的能力,并且有强大的数据处理功能,可以创造出功能更强的仪器。它采用图形化编程方式,不仅使用简单,而且大大提高了软件开发效率。本次课设的PC端软件就是用这款软件设计的。本次课程设计设计的是一个数据采集系统。用单片机采集电压信号和温度信息,通过串口发送到电脑,由软件处理后以波形图的形式显示。模拟电压经AD转换芯片转换为数字电压量,然后便可由计算机处理,而温度信号是由18B20传感器采集,直接得到了数字量。这里只是以这两种物理量为例,其他的物理量一般可以通过传感器转换为相应的模拟电压或数字量,之后便可以采取同样的方法进行处理。2 单片机硬件电路及原理硬件电路的功能是数据采集。其中AD模使用的是PCF8591芯片,用来采集电压信息。温度采集部分用的是DS18B20温度传感器,这个传感器的输出量为数字量,单片机可直接从中读取温度值。单片机根据上位机的命令,选择将温度数据还是电压数据通过串口发送给电脑。电路工作原理如图2.1所示。图2.1 电路工作原理2.1 AT89C516RD+单片机AT89C516RD+是Atmel公司生产的一款微处理器,该处理器共有40个管脚,4组8位I/O口P0P4,其中P0口为双向三态I/O口,其他三组为准双向I/O口,在读管脚值前应先向管脚写1。P0口内部无上拉电阻,使用时应外接上拉电阻,否则无法输出高电平。引脚图如图2.2所示。图2.2 AT89C51引脚图AT89C51支持5个中断源,分别是外部中断0、定时器0、外部中断1、定时器1和串口中断1。中断优先级可配置,默认情况下5个中断为同级中断。P3口的各脚除普通I/O口功能外都有第二功能。P3.0是串口发送脚,P3.1是串口消息接收。P3.2和P3.3分别是外部中断0和外部中断1的输入引脚。外部中断支持低电平触发和下降沿触发两种模式。定时器0有四种工作方式。工作方式0是一个13为定时器,定时的最长时间为213 = 8192us,工作方式1为16位定时器,最长定时时间为65536us,工作方式2是8位定时器,最长定时时间为256us。前两种工作方式在每次定时完成产生中断时都要在中断服务子程序中重新给定时器赋初值,否则从第二次开始定时器将以最长定时时间工作,而工作方式2采用的是8位自动重加载模式。定时器初值写到TH0和TL0中,溢出后硬件会自动将TH0中的值装入TL0中,从而使定时器按原来的定时时长工作。与用程序重装初值相比,硬件自动重装速度很快,因而定时时间更准确,所以常用于串口波特率的发生等对定时精度要求很高的场合。工作方式3是将定时器0拆成了两个8位定时器:TH0和TL0。TH0被固定为一个8位定时器,并使用定时器T1的状态控制位TR1,同时占用定时器T1的中断请求源TF1,此时,定时器TH0的启动或停止只受TR1控制。定时器1只有前三种工作方式,不支持工作方式3,其他与定时器0相同。串口是下位机与电脑通信时非常常见的一种方式。AT89C51支持串口通讯功能,有一个串口。串口通讯有两种常用的电平标准:RS232和TTL电平标准。RS232协议中规定,-3-15V为高电平,+3+15V为低电平,采用的是负逻辑,电脑串口采用这种标准。而TTL对电平标准的规定是0V为低电平,5V为高电平,单片机采用的是TTL电平标准。所以两者之间要想正常完成通讯必须进行电平转换。由于现在的电脑上很少还有串口接口,所以本次设计采用了USB虚拟串口的形式,将USB转换为串口,比直接采用接口进行电平转换更加方便。这里采用的是CH340芯片进行转换,转换电路如图2.3所示。图2.3 CH340 USB转串口电路2.2 模数转换由于现实世界中存在的只能是模拟量,而计算机处理的只能是数字量。所以要想用计算机处理信号就必须将模拟量转换为数字量,这就是模数转换(AD)。模数转化的步骤为采样-采样保持-量化-数字化。采样是感受外界模拟量,这一步的关键在于采样频率的确定。根据奈奎斯特采样定律,只有采样频率大于两倍的最大信号频率时,采集到的信号才能真正反映原信号的变化2。两次采样之间需要一定的时间,这段时间内认为模拟量保持不变,直到下一次采集,这个过程就是采样保持。衡量AD转换的主要指标有分辨率、转换速率、量化误差等。分辨率与采样位数有关。转换速率是指完成一次从模拟转换到数字的AD转换所需的时间的倒数,要想正确完成采样,采样速率必须小于转换速率。量化误差产生是因为模拟量是连续的,而AD的分辨率是有限的,不可能精确的表示出模拟量中的每一个值,只能取与其最接近的值。根据不同的量化方法,量化误差通常等于量化步长或其一半。本次设计中采用的芯片是模数转换芯片是PCF8591。这个芯片同时具备AD和DA(数模转换)功能。PCF8591具有4个模拟输入、1个模拟输出和1个串行IC总线接口,4个模拟输入可编程为单端型或差分输入,输入电压范围为2.5V-6V。引脚图如图2.4所示。图2.4 PCF8591引脚图AIN0AIN3是四路模拟信号输入端,A0A2是引脚地址端,SDA和SCL分别是I2C总线的数据线和时钟线,VREF是参考电压输入端。芯片外部电路如图2.5所示。图2.5 PCF8591电路连接图W1为电位器,按上图连接方式可获得05V的连续可调电压,从AIN0输入。A0A3接地,决定此器件在I2C总线上的地址为0x00。VCC即作为芯片的供电电源,又作为参考电压,所以AD转换的最高电压为VCC。R26和R27为I2C总线的上拉电阻,保证总线工作稳定。PCF8591是8位AD转换器,我们用其采集的电压范围为05v,所以分辨率为5/256v。2.3 18B20温度传感器DS18B20温度传感器具有体积小,硬件开销低,抗干扰能力强,精度高的特点,是一种常用的温度传感器。18B20的外观与三极管很相似,有三个脚。平面面对自己时从左到右依次是地线、数据线和电源正(GND、DQ和VDD),如图2.6所示。图2.6 18B20外观图18B20采用的是独特的单线接口方式,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,使用方便。接线的时候要注意一定不要将电源线接反,否则会严重发热或者烧毁。供电电压范围为3.0 V至5.5 V,无需备用电源。VDD是可供选择的电源端,不使用时可直接接地,此时由数据总线供电。测量温度范围为-55至+125。在-10至+85范围内精度为0.5,可以满足大多数测温场合的要求。18B20的分辨率可由程序控制,可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。其输出量为数字量,在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,对于温度这种缓慢变化的信号来说速度还是非常快的。18B20的硬件连接如图2.7所示。图2.7 18B20硬件连接图3 单片机程序设计3.1 I2C总线介绍I2C总线是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点3。在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,所有与I2C兼容的器件都具有标准的接口,通过地址来识别通信对象,使他们可经由I2C总线直接相互通信。I2C总线由数据线SDA和时钟线SCL两条线构成,既可以发送数据又可以接收数据。各种器件并联在总线上,但每个器件都有唯一的地址。CPU发出的控制信号分为地址码和数据码两部分,地址码用来选择与那个器件通讯,数据码是通讯内容,这样各个器件虽然同时挂在一条总线上却是彼此独立的。I2C总线通信格式如图3.1所示。图3.1 I2C总线通信格式图进行数据传送时,在SCL呈现高电平期间,SDA上的电平必须保持稳定,低电平为数据0,高电平为数据1。只有在SCL为低电平期间,才允许SDA上的电平改变状态。通信过程如下:1. 发送起始信号在SCL为高电平期间,SDA出现一个下降沿则为起始信号。由于其起始条件建立的时间至少需要4.5us,因此一般下降沿要出现在SCL拉高5us之后。SDA出现下降沿是,I2C总线上的从器件会检测到该信号,随后进入等待状态。起始信号由主器件发出。启动时序图如图3.2所示。图3.2 I2C总线启动时序图2. 发送寻址信号主机发送启动信号后,在发出寻址信号。寻址信号的作用是确定总线上要通讯的器件。总线上每个器件都有自己的独特的地址,器件地址有7位和10位两种形式,本次设计采用的是7位形式。寻址地址由一个字节构成,高7位是地址,最低位是读写标识位,为1表示主机从从器件读取数据,为0表示主机向从器件发送数据。主机发送地址后,总线上所有从器件都将这个地址与自己的地址对比,若相同则认为自己是主机此时寻求通讯的对象,然后根据R/W信息确定自己将要接收还是发送数据,否则不做回应,从而可以确定接下来与总线通讯的是哪一个器件。3. 应答信号与非应答信号I2C总线协议规定,每传送一个字节(无论是地址还是数据)后都要有一个回应信号,以确定数据是否被对方收到。从器件发出的回应信号叫做应答信号,主器件发出的回应信号叫非应答信号。从器件接收完一个字节后,在SCL信号为高电平期间,将SDA拉为低电平,表示自己已经正确收到数据。主器件接收数据后不应答(保持SDA为高电平),表示主设备接收结束。应答与非应答的时序如图3.3所示。图3.3 应答与非应答时序图4. 数据传输主机发送寻址信号并得到从器件应答后便可进行数据传输,每次传输一个字节,每个字节传输完成后都需要得到应答(或非应答)信号后才能传输下一个字节。在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,每一位数据都是在SDA上逐位地串行传送的。5. 发送停止信号在时钟线SCL保持高电平期间,数据线SDA被释放,使得SDA返回高电平(即正跳变),称为I2C总线的停止信号,它标志着一次数据传输的终止。停止信号也是一种电平跳变时序信号,而不是一个电平信号,停止信号也是由主控器主动建立的,建立该信号之后,I2C总线将返回空闲状态。停止信号时序图如图3.4所示。图3.4 停止信号时序图3.2 模数转换前边已经介绍过,PCF8591是通过I2C总线传输数据的,所以只要按照I2C总线协议标准,先启动I2C总线,然后发送PCF8591的地址,收到应答信号后即可从总线上读取数据, 读取数据的通信格式为:第一字节第二字节第三字节第四字节写入器件地址(0x90)写入控制字节写入器件地址(0x90)读出一字节数据读取数据的程序如下:unsigned char ReadADC( unsigned char Chl )unsigned char Val;Start_I2C( ); /启动总线 SendByte( AddWr ); /发送器件地址(写)if ( ack = 0 )return(0);/没有应答,返回SendByte( 0x40 | Chl ); /发送器件子地址if ( ack = 0 )return(0);Start_I2C( );SendByte( AddWr + 1 );/发送器件地址(读)if ( ack = 0 )return(0);Val = RcvByte( );NoAck_I2C( ); /发送非应位 Stop_I2C( ); /结束总线 return(Val);3.3 温度采集获取温度信息的方式有多种,如利用热敏电阻或热电偶将温度信息转化为电信号,然后再由单片机处理。也可以利用18B20等数字温度传感器来采集温度信息。但是热敏电阻或热电偶是将温度信息转化为模拟电压量,要想用单片机处理还需要做一步模数转换,比较繁琐。而18B20温度传感器是数字温度传感器,直接将温度转化为数字量,这样处理起来更方便,而且18B20的精度要比普通热电偶高。与第一种方式相比,第二种方式的成本也要低,所以本次设计采用的是第二种方式。18B20的初始化时序如图3.5所示。初始化过程为:先将数据线置高电平1,延时一小段时间(尽可能短),将数据线拉低为0,再延时480960us后数据线置高电平1,这时等待1560ms后18B20会返回低电平0,单片机读到这个低电平后延时至少480us后将数据线再次拉高,初始化过程结束。图3.5 18B20初始化时序图初始化完成后就可以写入和读取数据了。写入数据的过程为:先将数据线电平拉低,精确延时15us后发送一位数据,然后延时45us后将数据线置1。重复这个过程,直到发完一个字节,写的时候先写数据的低位,在写数据的高位,发完一个字节后将数据线置1。写时序图如图3.6所示。图3.6 18B20写时序图读取数据的过程为:将数据线拉高到1,延时2us后将数据线拉低,延时6us后再次将数据线拉高,延时4us后便可读到第一个数据位。重复以上过程,直至读完一个字节,每两位之间要有30us的延时。读取时序图如图3.7所示。图3.7 18B20读时序图有了以上函数,结合18B20的指令,便可实现温度读取。18B20的常用的控制指令如表3-1所示。表3-1 18B20的常用的控制指令指令代码指令作用指令代码指令作用33H读ROM44H温度转换55H匹配ROMBEH读暂存器F0H搜索ROM4EH写暂存器CCH跳过ROM48H复制暂存器ECH告警搜索命令B8H重调E2PROM读取温度的程序如下:unsigned int ReadTemperature(void)/温度读取函数unsigned chara = 0;unsigned intb = 0;unsigned intt = 0;while(Init_DS18B20( ); /检测初始化是否成功 WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0x44); /启动温度转换 DelayMs(10);Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器,前两个就是温度 a = ReadOneChar(); /低位 b = ReadOneChar(); /高位b 4;/取高位TempL= temp & 0x0F;/取低位TempL= TempL * 6 / 10;/保留一位小数 printf(%d.%d, TempH, TempL);/发送数据TI = 1;/手动置标志位温度读取标识的作用是控制读取温度的频率,防止读取太频繁。该标志在定时器中每隔一定时间就会被设为1。程序可采集的信息有电压和温度两种,具体需要进行哪项采集,程序还需要通过接收电脑端发送的命令进行判断,这样才能保证电脑的显示与单片机同步。我们在程序中定义了如下指令:收到字符V则进行电压采集工作,把采集到的电压数据发送到电脑,收到字符T则进行温度采集工作,若收到字符0则停止采集。这一功能放在串口消息处理函数中实现。上位机根据需求,若需要采集温度信息,则向单片机发送字符T,若需要电压信息则向单片机发送V。单片机收到T和V时分别执行不同的程序来获得相应的信息,若收到的是0,则不采集任何数据,从而实现了由软件控制单片机的采集工作。4 PC端软件设计4.1 软件界面设计PC端软件的作用主要是将单片机采集到的数据用波形显示出来。程序界面如图4.1所示。图4.1 软件界面上边一排为操作面板,中间空白区域为采集量随时间变化的波形显示区。启动程序后首先要选择正确的端口号以实现与单片机的通信。打开开关后将开始数据采集。采集项目包括电压和温度两项,默认的项目是温度。控制面板为波形显示控制,包括波形的缩放、移动等操作。另外在右键菜单里LabView也为我们提供了丰富的操作,如自动调整坐标级别、清除图表、更改曲线更新方式以及将波形数据导出等。最下方为一个滑动条,当曲线一屏显示不下时刻滑动滑动条查看不同时刻的数据。4.2 主程序PC端串口通讯是通过LabView的VISA系列控件实现的5。这一些列控件包括串口的打开和关闭、串口初始化、数据的接收和发送以及数据缓冲区的清空等操作。主程序如图4.2所示。图4.2 主程序启动程序后首先会判断端口号是否正确,只有选择的正确的端口号程序才会继续往下执行,确保能够正常的从单片机获取数据;若串口不存在或已被打开则弹出端口错误提示框,然后中止程序。端口错误处理程序如图4.2所示。图4.2 端口错误处理程序选择了正确的端口号后就可以打开开关,用一个case结构判断采集项目选择的是温度还是电压。若选择的是温度则执行温度处理子程序,若是电压则执行电压处理子程序。处理完的数据用波形图显示出来。若关闭开关,则会向单片机发送字符0,通知单片机停止数据采集,然后关闭串口。关闭开关的处理程序如图4.3所示。图4.3 关闭开关的处理程序4.3 温度采集子程序温度采集子程序如图4.4所示。图4.4 温度采集程序进入温度采集程序后先向单片机发送字符T,通知单片机现在需要返回温度数据。单片机返回温度数据采用的是printf(%d.%d, TempH, TempL);语句,语句中的“%d”代表的是整形数,整形数在51单片机中占两个字节,两个整形数之间的“.”占一个字节,所以一个完整的温度数据总共是5个字节。所以先对接收缓冲区的字符数进行判断,若满5个字节则一次性接收。串口接收到的数据仍然是字符串格式,需要将其转换为十进制的数字才能正确的在波形图中显示出来。将数字格式的字符转换为数字用到的是Decimal String To Number节点,输入要转换的字符串与转换的起始位和终止位即可将这部分十进制数字格式的字符串转换为十进制数字。本次程序中对整数部分和小数部分分别进行了转换,然后将两者相加后便得到我们需要的温度值。字符串转数字的程序如图4.5所示。图4.5 十进制形式字符串转数字程序程序中的节点是Build Waveform,作用是将波形图表所需的信息合并,这里输入的信息是系统时间和采集到的数据,这样便能以系统时间为横坐标显示数据温度了。另外还在程序中加了一个800ms的延时,因为温度采集需要一定时间,且温度是缓变信号,每800ms采集一次足以反映出温度的变化同时有能够减小不必要的开销。4.4 电压采集子程序图4.6 电压采集程序电压采集程序如图4.6所示。与温度采集程序类似,进入电压采集程序奇后先向单片机发送字符V,通知单片机进行电压采集。电压采集用的是8位AD,所以得到的电压数据只有一个字节,将这个值写入SBUF就可以发送到电脑了。由于只有一个字节,所以只要串口接收缓冲区中有内容就将其取出,同样取出来之后为字符格式,需要转换为十进制。与温度转换不同的是,这里的字符不是十进制形式的,我们需要的信息是该字符的ASCII码,所以这里用到了另一种转换节点String To Byte Array(图中的),这个节点的作用是将字符串转化为ASCII码数组。因为我们采集的电压是05V,用0255表示,所以还需要进一步转换才能得到真正的电压值。同样,转换完的数值加上时间信息后通过波形图表显示出来。5 设计结果及应用5.1 结果展示连接好硬件电路,打开开关,电脑开始显示温度曲线。从曲线中可以看出我所处环境当前温度为27。然后用手捏住温度传感器,此时温度开始上升。开始阶段上升较快,到达32后上升速度减慢,约一分钟后到达最高温度32.8。这时松开手指,温度开始下降,这一过程符合实际规律,说明该设计可以正确的检测到实际温度并绘制出温度随时间变化的波形。图5.1 温度随时间变化曲线图5.2显示的是电压采集的结果。操作过程是先接好电路,然后采集项目选择电压项,打开开关。此时开始显示电压曲线,起始电压约为2.75V。然后旋转电位器,使输入AD转换芯片的电压发生变化,最终得到如图5.2所示的结果。结果中显示电压最大值为5V,最小值为0V,也与实际情况相吻合。图5.2 电压采集结果5.2 应用实例我们在做标签漏帖检测项目时需要分析传感器传回来的信号,然而公司里没有示波器,所以开始的时候我们只能通过理论分析去写程序。写出的程序中总存在误报问题,由于没有示波器,我们并不知道这个误报是由于传感器传回的信号有问题还是我们的处理程序有问题。有了这个数据采集程序我们便可以测试出传感器的输出波形,从而确定原因所在。光电传感器输出的是一个开关量,检测到标签时信号线与地线接通,将单片机管脚电平拉低,没有标签时信号线悬空,单片机引脚恢复高电平。我们通过程序不断读取信号线所在引脚的电平并将结果发送到电脑,经处理后便得到了图5.3所示的波形。这个波形是在标签接近匀速运动的情况下采集的。图5.3 光电传感器信号波形图有了波形图后我们在根据波形图对程序进行分析。漏张检测程序中是对下降沿计数,测试后发现,程序的计数始终等于波形中下降沿的个数,这就说明我们的处理程序完成了对每一个标签的计数,程序本身没有错误。再仔细分析波形,发现有误报的时候波形中会出现几次明显的不规律的跳变,这些跳变往往是夹杂在正常波形中的,说明传感器的的返回信号受到了干扰,这是造成误报的主要原因。然后我们针对这一情况对程序进行了优化,误报现象明显改善。6 总结体会这次课程设计收获颇丰。从最开始学习I2C总线传输协议、学习各种器件操作方法以及LabView编程方法等到最终完成了一个能够实际应用的数据采集系统,虽然中间经过了很多坎坷,最终的成功还是给了我很大的信心。I2C总线传输协议是一种常用的传输协议,PCF8591芯片就是采用的这种传输方式。通过对该芯片的学习,不但掌握了AD转换的方法,对I2C总线传输协议也有了不少了解。而18B20采用的是单总线的协议,他代表的是另一种通讯方式。虽然现在用到的比较简单,但这些都是那些最基础、必须掌握的内容,有了这些内容做铺垫,以后才能进行深入学习。对于串口通讯,我掌握了发送数据的一种新方式printf();函数的方法。利用这种方式发送多个字符,尤其是需要按某种格式发送的多个字符,非常方便。但使用的时候要注意手动置发送标志位,否则无法发送成功。通过对这些器件的操作,现在已经掌握了一定的学习新器件的方法,不再像刚开始那样,面对一个新器件的说明书感到一头雾水。我发现想要掌握一种器件读懂他的时序图是非常重要的。只要按照时序图,结合操作器件的各种指令,一步一步操作就可以实现对器件的控制。所以我认为,只要读懂了时序图就掌握了这个器件的绝大部分了。对这两个器件操纵的程序,我是对照时序图一点一点写出来的,在多次的失败和不断的尝试中,我也逐渐摸索到了一些读时序图的方法。现在拿到一张新的时序图已经没有当初那种莫名的畏惧与烦躁感了。参考文献1 李广弟等.单片机基础.北京:北京航空航天出版社,2001.72 吴佩清.数字信号处理.北京:清华大学出版社,2011.3 吴国经等.单片机应用技术.北京:中国电力出版社,2004.4 赵茂泰.智能仪器原理及应用J.北京:电子工业出版社,2004.75 刘君华.虚拟仪器图形化编程语言LabVIEW教程.西安:西安电子科技大学出版社,2000附录 重要程序清单1.启动I2C总线的程序:void Start_I2C( )SDA=1; /发送起始条件的数据信号_nop_( );SCL=1;_nop_( ); /起始条件建立时间大于4.7us,延时_nop_( );_nop_( );_nop_( );_nop_( ); SDA=0; /发送起始信号_nop_( ); /起始条件锁定时间大于4_nop_( );_nop_( );_nop_( );_nop_( ); SCL=0; /钳住I2C总线,准备发送或接收数据_nop_( );_nop_( );2. I2C总线发送一个字节
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 证券从业考试要不要铅笔及答案解析
- z01基本安全题库及答案解析
- 儿科护理综合题库及答案解析
- 安全员高级工实操题库及答案解析
- 化验室药品使用规范与管理体系
- 校园安全年度汇报
- IE工艺员年中工作总结
- 幼儿急疹热疹后的护理
- 旅游区规划汇报
- 竞选经理述职报告
- 2024至2030年中国喷水推进器行业发展形势分析及市场前景趋势报告
- 陶渊明专题课件
- 人参培训课件
- 四川省价建筑地下结构抗浮锚杆技术标准
- 2023年航空公司招聘:机场安检员基础知识试题(附答案)
- 糖尿病临床病例分析经典案例
- 老年人体检分析报告总结
- 第4课《用联系的观点看问题》第2框《在和谐共处中实现人生发展》-【中职专用】《哲学与人生》同步课堂课件
- 计量安全防护
- 食品生物技术原理课件
- 制药工程专业导论
评论
0/150
提交评论