精华内容
下载资源
问答
  • 2020-12-29 03:00:02

    《MAX485典型电路》由会员分享,可在线阅读,更多相关《MAX485典型电路(60页珍藏版)》请在人人文库网上搜索。

    1、第9章 串行接口技术,单片机原理、接口及应用,内 容 提 要, RS-485总线扩展 IIC总线扩展接口及应用 SPI总线扩展接口及应用,9.1 RS485总线扩展,RS485标准接口是单片机系统种常用的一种串行总线之一。与RS232C比较,其性能有许多改进,细节请见表9.1所示。 表9.1 RS232C与RS485性能比较,RS485接口可连接成半双工和全双工两种通信方式。常见的半双工通信芯片有MAX481、MAX483、MAX485、MAX487等,全双工通信芯片有MAX488、MAX489、MAX490、MAX491等。,下面以MAX485为例来介绍RS485串行接口的应用。MAX485。

    2、的封装有DIP、SO和uMAX三种,其中DIP封装的管脚如图9.1所示。 管脚的功能如下:RO:接收器输出端。若A比B大200mV,RO为高;反之为低电平。RE:接收器输出使能端。RE为低时,RO有效;为高时,RO呈高阻状态。DE:驱动器输出使能端。若DE1,驱动器输出A和B有效;若DE0,则它们呈高阻态。若驱动器输出有效,器件作为线驱动器用,反之作为线接收器用。DI:驱动器输入端。DI0,有A0,B1;当DI1,则A1,B0。GND:接地。A:同相接收器输入和同相驱动器输出。B:反相接收器输入和反相驱动器输出。VCC:电源端,一般接+5V。,图9.1 MAX485芯片的DIP封装管脚图,MA。

    3、X485典型的工作电路如图9.2所示,其中平衡电阻Rp通常取100300欧姆。MAX485的收发功能见表9.3。,表9.3 MAX485的收发功能,89C51与MAX485的接口电路如图9.4所示。P1.7用来控制MAX485的接收或发送,其余操作同串口 。,9.2 I2C总线扩展接口及应用,9.2.1 原理 I2C(IIC)总线是Philip公司推出的芯片间串行传输总线。它用两根线实现了完善的全双工同步数据传送,可以极为方便地构成多机系统和外围器件扩展系统。IIC总线采用了器件地址的硬件设置方法,通过软件寻址完全避免了器件的片选线寻址方法,从而使硬件系统具有简单灵活的扩展方法。按照IIC总线。

    4、规范,总线传输中的所有状态都生成相对应的状态码,系统中的主机能够依照这些状态码自动地进行总线管理,用户只要在程序中装入这些标准处理模块,根据数据操作要求完成IIC总线的初始化,启动IIC总线就能自动完成规定的数据传送操作。,IIC总线接口为开漏或开集电极输出,需加上拉电阻。系统中所有的单片机、外围器件都将数据线SDA和时钟线SCL的同名端相连在一起,总线上的所有节点都由器件和管脚给定地址。系统中可以直接连接具有IIC总线接口的单片机,也可以通过总线扩展芯片或I/O口的软件仿真与IIC总线相连。在IIC总线上可以挂接各种类型的外围器件,如RAM/EEPROM、日历/时钟、A/D、D/A、以及由I。

    5、/O口、显示驱动器构成的各种模块。,9.2.2 软件IIC总线 假设单片机所用晶体振荡器的频率为6MHz。用P1.7和P1.6分别模拟SDA和SCL,定义如下: SDAEQUP1.7 SCLEQUP1.6 (1)产生起始位和停止位 如果单片机则每个机器周期为2us,我们可分别写出产生时钟SCL和SDA的发送起始条件和停止条件两段子程序如下。若晶振频率并非 6MHz,则要相应增删各程序段中NOP指令的条数,以满足时序的要求。例如,若fosc=12MHz ,则两条NOP指令应增至4条。,发送起始条件START STA: SETB SDA SETB SCL NOP NOP CLR SDA NOP N。

    6、OP CLR SCL RET,发送停止条件STOP STOP:CLR SDA SETB SCL NOP NOP SETB SDA NOP NOP CLR SCL RET,(2)发送应答位和非应答位子程序 IIC总线上的第9个时钟对应于应答位,相应数据线上“0”为“ACK”和“1”为“”。发送应答位和非应答位的子程序分别如下。,发送应答位ACK MACK: CLR SDA SETB SCL NOP NOP CLR SCL SETB SDA RET,发送非应答位ACK MNACK: SETB SDA SETB SCL NOP NOP CLR SCL CLR SDA RET,(3)应答位检查子程序 。

    7、在I2C总线数据传送中,接收器收到发送器传送来的一个字节后,必须向SDA线上返送一个应答位ACK,表明此字节已经收妥。本子程序使单片机产生一个额外的时钟(第九个时钟脉冲,在脉冲的高电平期间读ACK应答位,并将它的状态被复制到F0标志中以供检查。若有正常ACK,则F0标志为0,否则为1。 CACK: SETB SDA ;SDA作输入 SETB SCL ;第9个时钟脉冲开始 NOP MOV C,SDA ;读SDA线 MOV F0,C ;转存入F0中 CLR SCL ;时钟脉冲结束 NOP RET,(4)字节数据发送子程序 由于是SDA接在并行口线,无移位寄存器,因此数据通过指令完成移位再从SDA串。

    8、行输出。遵循时序要求,数据在时钟低电平时变化,高电平时稳定,每一个时钟脉冲传送一位,编写字节数据传送子程序。 该子程序的入口条件是待发送的字节位于累加器ACC中。,WRB: MOV R7,#8 ;位计数器初值 WLP: RLC A ;欲发送位移入C中 JC WR1 ;此位为1,转WR1 CLR SDA ;此位为0,发送0 SETB SCL ;时钟脉冲变为高电平 NOP ;延时 NOP CLR SCL ;时钟脉冲变为低电平 DJNZ R7,WLP ;未发完8位,转WLP RET ;8位已发完,返回,WR1: SETB SDA ;此位为 1,发送1 SETB SCL ;时钟脉冲变高电 平 NOP 。

    9、NOP ;延时 CLR SCL ;时钟脉冲变低电 平 CLR SDA DJNZ R7,WLP RET,(5)字节数据接收子程序 该子程序的功能是在时钟的高电平时数据已稳定,读入一位,经过8个时钟从SDA线上读入一个字节数据,并将所读字节存于A和R6中。 RDB:MOV R7,#8 ;R7存放位计数器初值 RLP: SETB SDA ;SDA输入 SETB SCL ;SCL脉冲开始 MOV C,SDA ;读SDA线 MOV A,R6 ;取回暂存结果 RLC A ;移入新接收位 MOV R6,A ;暂存入R6 CLR SCL ;SCL脉冲结束 DJNZ R7,RLP ;未读完8位,转RLP RET。

    10、 ;8位读完,返回,(6)n个字节数据发送子程序 这段子程序的入口条件:假定控制字节已存放在片内RAM的SLA单元中;待发送数据各字节已位于片内RAM以MTD+1为起始地址的n个连续单元中。NUMBYT单元中存有欲发送数据的字节数。接收到数据的存放首址存放在片内RAM的MTD单元。,WRNBYT: PUSH PSW ;保护现场 WRNBYT1: MOV PSW,#18H ;改用第3组工作寄存器 CALL STA ;发起始条件 MOV A,SLA ;读写控制字节 CALL WRB ;发送写控制字节 CALL CACK ;检查应答位 JB F0,WRNBYT ;无应答位,重发 MOV R0,#MT。

    11、D ;有应答位,继而发数据,第一个数据为首址,WRDA: MOV A,R0 ;读一个字节数据 LCALL WRB ;发送此字节 LCALL CACK ;检查ACK JB F0,WRNBYT1 ;无ACK,重发 INC R0 ;调整指针 DJNZ R5,WRDA ;尚未发完n个字节,继续 LCALL STOP ;全部数据发完,停止 POP PSW ;恢复现场 RET ;返回,(7)读、存数据程序 假设数据接受缓冲区为片内RAM以MRD为首址的n个单元。 这段子程序的入口条件: 片内RAM中的SLA单元存有读控制字节; NUMBYT单元中存有欲接收数据的字节数。 出口条件: 所读出的数据将存入片内。

    12、RAM以MRD为首地址的n个连续单元内。 RDNBYT: PUSH PSW RDNBYT1: MOV PSW,#18H LCALL STA ;发送起始条件 MOV A,SLA ;读入读控制字节 LCALL WRB ;发送读控制字节 LCALL CACK ;检查ACK JB F0,RDNBYT1 ;无ACK,重新开始 MOV R1,#MRD ;接收数据缓冲区指针,GO_ON: LCALL RDB ;读一个字节 MOV R1,A ;存入接收数据缓冲区; DJNZ NUMBYT,ACK;未全接收完,转ACK LCALL MNACK ;已读完所有字节,发 LCALL STOP ;发停止条件 POP P。

    13、SW RET ACK: LCALL MACK ;发ACK INC R1 ;调整指针 SJMP GO_ON ;继续接收,9.2.3 典型IIC串行存储器的扩展,9.2.3.1 串行IIC总线EEPROM AT24CXX的扩展,1)基本原理 AT24CXX的特点是:单电源供电,工作电压范围宽1.8V5.5V;低功耗CMOS技术(100KHz(2.5 V)和400KHz(5V)兼容),自定时写周期(包含自动擦除)、页面写周期的典型值为2ms,具有硬件写保护。,图9.6 AT24CXX的结构和引脚。(a)内部结构图;(b)引脚图。,器件型号为AT24CXX的结构和引脚如图9.6所示,其中 SCL 串行。

    14、时钟端。 SDA 串行数据端。 WP 为写保护,当WP为高电平时存贮器只读;当WP为低电平时存贮器可读可写。 A0、A1、A2 片选或块选。 SDA为漏极开路端,需接上拉电阻到Vcc。数据的结构为8位。信号为电平触发,而非边沿触发。输入端内接有滤波器,能有效抑制噪声。自动擦除(逻辑“1”)在每一个写周期内完成。 AT24CXX采用IIC规程,运用主/从双向通讯。器件发送数据到总线上,则定义为发送器 ,器件接收数据则定义为接收器。主器件(通常为微控制器)和从器件可工作于接收器和发送器状态。总线必须由主器件控制,主器件产生串行时钟(SCL),控制总线的传送方向,并产生开始和停止条件。串行EEPRO。

    15、M为从器件。无论主控器件,还是从控器件,接收一个字节后必须发出一个确认信号ACK。,2)控制字节要求 开始位以后,主器件送出8位控制字节。控制字节的结构(不包括开始位)如下所示: 说明: 控制字节的第14位为从器件地址位(存贮器为1010)。控制字节中的前4位码确认器件的类型。此四位码由飞利浦公司的IIC规程所决定。1010 码即为从器件为串行EEPROM的情况。串行EEPROM将一直处于等待状态,直到1010码发送到总线上为止。当1010码发送到总线上,其它非串行EEPROM从器件将不会响应。,控制字节的第57位为18片的片选或存贮器内的块地址选择位。此三个控制位用于选片或者内部块选择。标准。

    16、的IIC规程允许选择16K位的存贮器。通过对几片器件或一个器件内的几个块的存取,可完成对16K位存贮器的选择,如表9-6所示。 表9-6 AT24CXX的A2A1A0 ,控制字节的A2、A1、A0的选择必须与外部A2、A1、A0引脚的硬件连接或者内部块选择匹配,A2、A1、A0引脚无内部连接的,则这三位无关紧要;作器件选择的,可接高电平或低电平。 AT24CXX的存贮矩阵内部分为若干块,每一块有若干页面,每一页面有若干个字节。内部页缓冲器只能写入一页字节数据,对24LC32和24LC64一次可以存8页(每页8个字节)。 控制字节第8位为读、写操作控制码。如果此位为1,下一字节进行读操作(R);。

    17、此位为0,下一字节进行写操作(W)。 当串行EEPROM产生控制字节确认位以后,主器件总线上将传送相应的字地址或数据信息。,3)确认要求 在每一个字节接收后,接收器件必须产生一个确认信号位ACK。主器件必须产生一个与此确 认位相应的额外时钟脉冲。在此时钟脉冲的高电平期间拉SDA线为稳定的低电平,为确认信号(ACK)。若不在从器件输出的最后一个字节中产生确认位,主器件必须发一个数据结束信 号给从器件。在这种情况下,从器件必须保持数据线为高电平(用表示),使 得主器件能产生停止条件。 注意:如果内部编程周期(烧写)正在进行,AT24CXX不产生任何确认位。,4)写操作 字节写 在主器件发出开始信号。

    18、以后,主器件发送写控制字节即1010A2A1A00(其中R/W读写控制位为低电平“0”)。这指示从接收器被寻址,由主器件发送的下一个字节为字地址 ,将被写入到AT24CXX的地址指针。主器件接收来自AT24CXX的另一个确认信号以后,将发送数据字节,并写入到寻址的存贮器地址。AT24CXX再次发出确认信号,同时主器件产生 停止条件P。启动内部写周期,在内部写周期内AT24CXX将不产生确认信号(见图9.7)。,图9.7 AT24CXX字节写,页面写 如同字节写方式,先将写控制字节、字地址发送到AT24CXX,接着发n个数据字节,主器件发送不多于一个页面字节的数据字节到AT24CXX,这些数据字。

    19、节暂存在片内页面缓存器中,在主器件发送停止信号以后写入到存贮器。接收每一字节以后,低位顺序地址指针在内部加1。高位顺序字地址保持为常数。如果主器件在产生停止条件以前要发送多于一页字的数据,地址计数器将会循环,并且先接收到的数据将被覆盖。象字节写操作一样,一旦停止条件被接收到,则内部写周期将开始(见图9.8)。,图9.8 AT24CXX页面写,写保护 当WP端连接到Vcc,AT24CXX可被用作串行ROM,编程将被禁止,并且整个存贮器写保护。,5)读操作 当从器件地址的R/W位被置为“1”,启动读操作。存在三种基本读操作类型:读当前地址内容,读随机地址内容,读顺序地址内容。 读当前地址内容 AT。

    20、24CXX片内包含一个地址计数器,此计数器保持被存取的最后一个字的地址,并在片内自动加1。因此,如果以前存取(读或者写操作均可)的地址为n,下一个读操作从n+1地址中读出数据。在接收到从器件的地址中R/W位为1的情况下,AT24CXX发送一个确认位并且送出8位数据字。主器件将不产生确认位(相当于产生ACK),但产生一个停止条件。AT24CXX不再继续发送(见图9.9)。,图9.9 AT24CXX读当前地址内容,读随机地址内容 这种方式允许主器件读存贮器任意地址的内容,操作如图9.10所示。,图9.10 AT24CXX读随意地址的内容,主器件发1010A2A1A0后发0位,再发读的存贮器地址,在。

    21、收到从器件的确认位ACK后 产生一个开始条件S,以结束上述写过程,再发一个读控制字节,从器件AT24CXX在发ACK信号后发出8位数据,主器件发后,发一个停止位,AT24CXX不再发后续字节。 读顺序地址的内容 读顺序地址内容的方式与读随意地址内容的方式相同,只是在AT24CXX发送第一个字节以后,主器件不发和STOP,而是发ACK确认信号,控制AT24CXX发送下一个顺序地址的8位数据字,直到x个数据读完(见图9.11)。 图9.11 AT24CXX读顺序地址的内容,防止噪声 AT24CXX使用了一个Vcc门限检测器电路。在一般条件下,如果Vcc低于1.5V,门限检测器对内部擦/写逻辑不使能。

    22、。 SCL和SDA输入端接有施密特触发器和滤波器电路,即使在总线上有噪声存在的情况下,它们也能抑制噪声峰值以保证器件正常工作。,6)串行EEPROM和AT89C51接口 图9.12为8XX51微控制器与4K位的AT24C04串行EEPROM的典型连接。图中P1.6、P1.7提供AT24C04的时钟SCL、SDA和AT24C04进行数据传送,A2、A1、A0内部无连接,为无关位。WP为EEPROM的写保护信号,高电平有效。因为我们要进行写入操作,所以只能把它接低电平。 利用上面的子程序,将8XX51单片机内部RAM 6067H存放的“1”“8”LED显示器的字形 码写入24C04存贮器的2027。

    23、H单元,为检查写入效果,再将24C04的2027H单元的内容读出 存入8XX51内部RAM的40H47H单元,同时送LED显示器显示。,9.2.4 IIC总线接口的串行A/D、D/A扩展,PCF8591是一款典型的IIC总线接口的串行8位A/D、D/A转换器,该器件为单一电源供电(2.56V),CMOS工艺。PCF8591有4路8位A/D输入,属逐次比较型,内含采样保持电路;1路8位D/A输出,内含有DAC的数据寄存器。A/D、D/A的最大转换速率约为11kHz,转换的基准电源需由外部提供。PCF8591的内部结构和外部引脚分别如图9.18所示。,图9.18 PCF8591的内部结构(a)的外。

    24、部引脚(b),PCF8591引脚功能描述见表9.7。 表9.7 PCF8591的引脚功能表,PCF8591的工作字有两个,地址选择字和转换控制字。地址选择字的格式如表9.8所示。表9.8 PCF8591的地址选择字格式,PCF8591的转换控制字存放在控制寄存器中,用于实现器件的各种功能。总线操作时,为主发送的第二个字节。其格式如表9.9所示。 表9.9 PCF8591的转换控制字格式,PCF8591的包括D/A转换和A/D转换两个部分,下面分别介绍之。1)PCF8591的D/A转换D/A转换器是PCF8591的关键单元,除作为D/A转换使用外,还用于A/D转换中。D/A转换使用IIC总线的写。

    25、入操作完成的,其数据操作格式如下:,其中data 1data n为待转换的二进制数字。CONBYT为PCF8591的控制字节。图中灰底位由主机发出,白底位由PCF8591产生。 D/A转换时,控制字中的输出允许位(D6)应为1,写入PCF8591的数据字节存放在DAC数据寄存器中,通过D/A转换器转换成相应的模拟电压通过AOUT引脚输出,并保持到输入新的数据为止。 由于片内DAC单元还用于A/D转换,在A/D转换周期里释放DAC单元供A/D转换用,而DAC输出缓冲放大器的采样、保持电路在这期间将保持D/A转换的输出电压。,2)PCF8591的A/D转换 PCF8591的A/D转换为逐次比较型A。

    26、DC,在A/D转换周期中借用DAC及高增益比较器。A/D转换的时序如图9.21所示,对PCF8591进行读写操作便立即启动A/D转换,并读出A/D转换结果。在每个应答位的后沿触发A/D转换周期,采样模拟电压并读出当前一个转换结果。 A/D转换中,一旦A/D采样周期被触发,所选择通道的采样电压便保存在采样、保持电路中,并转换成8位二进制码(单端输入)或8位二进制补码(差分输入)存放在ADC数据寄存器中等待主器件读出。如果控制字节中自动增量选择位置1,则一次A/D转换完毕后自动选择下一通道。读周期中读出的第一个字节为前一个周期的转换结果。上电复位后读出的第一字节为80H。,PCF8591的A/D转。

    27、换使用IIC总线的读操作,其数据格式如下:,其中data 0data n为A/D的转换结果,分别对应于前一个数据读取期间所采样的模拟电压。上电复位后控制字节状态为00H,如果A/D转换时须设置控制字,须在读操作之前进行控制字节的写入操作。 PCF8591一个典型的应用电路如图9.20所示。假设从A/D的通道0采样数据送至D/A转换输出,利用前面所给出的IIC软件,编程如下:,图9.20 PCF8591的典型应用电路,LCALL STA;启动IIC总线操作 MOV A, #10010001B;访问PCF8591的A/D LCALL WRB LCALL RDB;读上次采样数据,结果存放在R6中 L。

    28、CALL STOP;停止IIC总线操作 LCALL STA;启动IIC总线操作 MOV A, #10010000B;访问PCF8591的D/A LCALL WRB MOV A, #01000000H;设置控制字 LCALL WRB MOV A, R6;从D/A输出采样值 LCALL WRB LCALL STOP;停止IIC总线操作,9.3 SPI总线扩展接口及应用,9.3.1 SPI的原理 SPI(Serial Peripheral Interface 串行外设接口)总线系统是Motorola公司提出的一种同步串行外设接口,允许MCU与各种外围设备以同步串行方式进行通信来交换信息。其外围设备种。

    29、类繁多,从最简单的TTL移位寄存器到复杂的LCD显示驱动器、网络控制器等,可谓应有尽有。SPI总线可直接与各厂家生产的多种标准外围器件直接接口,该接口一般使用4根线:串行时钟线SCK、主机输入/从机输出数据线MISO、主机输出/从机输出数据线MISO和低电平有效的从机选择线SS。由于SPI系统总线只需3根公共的时钟数据线和若干位独立的从机选择线(依据从机数目而定),在SPI从设备较少而没有总线扩展能力的单片机系统中使用特别方便。即使在有总线扩展能力的系统中采用SPI设备也可以简化电路设计,省掉很多常规电路中的接口器件,从而提高了设计的可靠性。,图9.21 一个典型的SPI总线系统结构示意图,一。

    30、个典型的SPI总线系统结构如图9.21所示。在这个系统中,只允许有1个做主SPI设备的主MCU和若干做SPI从设备的I/O外围器件。MCU控制着数据向1个或多个从外围器件的传送。从器件只能在主机发命令时才能接收或向主机传送数据,其数据的传输格式是高位(MSB)在前,低位(LSB)在后。当有多个不同的串行I/O器件若要连至SPI上作为从设备,必须注意两点:一是其必须有片选端;二是其接MISO线的输出脚必须有三态,片选无效时输出高阻态,以不影响其它SPI设备的正常工作。,9.3.2 SPI总线的软件模拟及串并扩展应用 9.3.2.1 SPI总线的软件模拟 对于大多的51单片机而言,没有提供SPI接。

    31、口,通常可使用软件的办法来模拟SPI的总线操作,包括串行时钟、数据输入和输出。值得注意的是,对于不同的串行接口外围芯片,它们的时钟时序有可能不同,按SPI数据和时钟的相位关系来看通常有4种情况,它是由片选信号有效前的电平和数据传送时的有效沿来区分的,传送8位数据的时序种类具体如图9.22所示。,现在用软件来模拟一下图9.22中最上面的一种情况。我们假定图9.21中的MCU为51单片机,系统接有两个从器件,用P1.7模拟SCK,P1.6模拟MOSI,P1.5模拟MISO线,P1.4模拟SS1,P1.3模拟SS2。其模拟的程序如下。,图9.22 SPI总线的4种数据/时钟时序图,SCK BIT P。

    32、1.7 MOSI BIT P1.6 MISO BIT P1.5 SS DB 0 ;分配片选扩展字单元 PF0 BIT 0;分配片选有效前电平标志位 PF1 BIT 1;分配数据传送有效沿标志位 CLR PF0;初始化电平标志位PF0 CLR PF1;初始化沿标志位PF1 MOV SS, #11101111B ;初始化从器件选择字,数据发送程序: MOV R0, #DATA8;待发送的数据放在R0中 MOV C, PF0 MOV SCK, C;欲设置有效电平 NOP ;延时,均可调整,为匹配时序要求 MOV A, SS ANL P1, A;选中从器件 NOP XCH A, R0 MOV R0, 。

    33、#08H ;置循环次数 SPIOUT: MOV C, PF1 MOV SCK, C;准备有效触发沿 CPL PF1 RLC A ;发送下一位数据(从最高位开始),MOV MOSI, C NOP MOV C, PF1 MOV SCK, C;产生有效沿,以便从器件锁存数据 CPL PF1 NOP DJNZ R0, SPIOUT ;8位数据发送未完成,则继续发送下一位 MOV C, PF0 MOV SCK, C MOV A, SS CPL A ORL P1, A;结束SPI总线操作,关闭从器件 RET,数据接收程序: SPIR: MOV C, PF0 MOV SCK, C;欲设置有效电平 NOP ;。

    34、延时,均可调整,为匹配时序要求 MOV A, SS ANL P1, A;选中从器件 NOP MOV R0, #08H ;置循环次数 SPIIN: MOV C, PF1 MOV SCK, C;准备有效触发沿 CPL PF1 NOP MOV C, PF1 MOV SCK, C;产生有效沿,以便从器件锁存数据,MOV MOSI, C;接收下一位数据(从最高位开始) RRC A ;接收到的数据依次存入A CPL PF1 NOP DJNZ R0, SPIIN ;8位数据未接收完,则继续接收下一位 MOV C, PF0 MOV SCK, C MOV A, SS CPL A ORL P1, A;结束SPI总。

    35、线操作,关闭从器件 RET,其它三种情况只需改变初始相位条件即可模拟实现。,9.3.3 10位串行D/A TLC5615的扩展,TLC5615是带有缓冲基准输入的10位电压输出型D/A转换器。器件可在单5V电源下工作,且具有上电复位功能。TLC5615的控制是通过三线串行总线进行,可使用的数字通信协议包括SPI、QSPI以及Microwire标准。低功耗,在5V供电时功耗仅1.75mW,数据更新速率为1.2MHz,典型的建立时间为12.5us。TLC5615广泛应用于电池供电测试仪表、数字增益调整、电池远程工业控制和移动电话等领域。,9.3.3.1 TLC5615的内部结构和外部引脚,TLC5。

    36、615的内部结构如图9.24所示,其主要由16位移位寄存器、10位D/A寄存器、D/A转换权电阻、基准缓冲器、控制逻辑和2倍程放大器等电路组成。,图9.24 TLC5615的内部结构,TLC5615的管脚与Maxim公司的MAX515完全兼容,如图9.25所示。各管脚的功能介绍如下。 DIN:串行数据输入脚 SCLK:串行时钟输入脚 CS:片选端,低电平有效 DOUT:用于菊花链的串行数据 输出端 AGND:模拟地 REFIN:基准输入端,一般接2V 到VCC2V VCC:电源端,一般接+5V,图9.18 TLC5615的引脚图,9.3.3.2 TLC5615的接口及应用,TLC5615与AT。

    37、89C52的典型接口电路如图9.26所示。 TLC5615通过固定增益为2的运放缓冲电阻网络,把10位数字数据转换为模拟电压。上电时,内部电路把D/A寄存器复位为0。其输出具有与基准输入相同的极性,表达式为,TLC5615最大的串行时钟速率不超过14MHz,10位DAC的建立时间为12.5us,通常更新速率限制至80kHz以内。TLC5615的16位移位寄存器在SCLK的控制下从DIN引脚输入数据,高位在前,低位在后。16位移位寄存器中间的10位数据在上升沿的作用下打入10位的D/A寄存器供给D/A转换。其输入的数据格式位为: SPI和AT89C52的接口传送8位字节形式的数据。因此,要把数据。

    38、输入到D/A转换器需要两个写周期。QSPI接口具有从8位至16位的可变输入数据长度,可以在一个写周期之内装入好转换数据代码。当系统不使用D/A转换器时,最好把D/A寄存器设置为全0,这样可以使基准电阻阵列和输出负载的功耗降为最小。依据图9.16,TLC5615的一个简单的应用编程见下。,DIN BIT P1.4;定义I/O口 SCLK BIT P1.7 CS5615 BIT P1.5 DataH EQU 30H DataL EQU 31H TLC5615: CLR SCLK ;准备操作TLC5615 CLR CS5615 ;选中TLC5615 MOV R7, #08H MOV A, DataH。

    39、 ;装入高8位数据 LOOPH: LCALL DELAY ;延时 RLC A ;最高位移向5615 MOV DIN, C SETB SCLK ;产生上升沿,移入一位数据,LCALL DELAY CLR SCLK DJNZ R7, LOOPH MOV R7, #08H MOV A, DataL ;装入低8位数据 LOOPL: LCALL DELAY ;延时 RLC A ;最高位移向5615 MOV DIN, C SETB SCLK ;产生上升沿,移入一位数据 LCALL DELAY CLR SCLK DJNZ R7, LOOPL SETB CS5615 ;结束5615的操作,同时将转换数据代码存。

    40、入10位DA寄存器,启动新一轮的DA转换 RET,9.3.4 AD549 8位串行A/D的扩展,TLC549是以8位开关电容逐次逼近A/D转换器为基础而构造的CMOS A/D转换器。它能通过三态数据输出和模拟输入与微处理器或外围设备串行接口。TLC549仅用输入/输出时钟(CLK)和芯片选择(CS)输入作数据控制,其最高CLK输入频率为1.1MHz。 TLC549的内部提供了片内系统时钟,它通常工作在4MHz且不需要外部元件。片内系统时钟使内部器件的操作独立于串行输入输出的操作,这种独立性使得控制硬件和软件只需关心利用I/O时钟读出先前转换结果和启动转换。TLC549片内有采样保持电路,其转换。

    41、速率可达40kHz。 TLC549的电源范围为36V,功耗小于15mW,总的不可调整误差为0.5LSB,能理想地应用于包括电池供电地便携式仪表的低成本、高性能系统中。,9.3.4.1 器件引脚及等效输入电路,(a)引脚;(b)采样期间等效电路;(c)保持期间等效电路,图9.28 TLC549的器件引脚与等效输入电路,TLC549的管脚与TLC540 8位A/D转换器以及TLC1540 10位A/D转换器兼容,如图9.28a所示。其中,基准端(REF,REF)为差分输入,可以将REF接地,REF接Vcc端,但要加滤波电容。AIN为模拟信号输入端,大于REF电压时转换为全“1”,小于REF电压时转。

    42、换为全“0”。通常为保证器件工作良好,REF电压应高REF电压至少1V。 TLC549在采样期间和保持期间的等效输入电路分别如图9.28b和图9.28c所示。对于采样方式,输入电阻约1k,采样电容约60pF;对于保持方式,输入电阻约5M。,9.3.4.3 TLC549的接口及应用,TLC549与51单片机的接口电路很简单,只要将TLC549的DO、CLK和51单片机的I/O口相接即可,图9.30给出了一种由TLC549和89C51构成的典型的数据采集电路。其中,N1、R1、R2、C2组成一阶低通滤波器;C1、R3可滤除直流;R4、R5是将双极性的模拟输入信号变成05V以适应TLC549的单极性要求。,图9.30 TLC549典型的数据采集电路,利用前面第2节所给出的SPI的模拟子程序,编程如下。 SCK BIT P1.6 ;初始化时钟线 MISO BIT P1.5 ;初始化数据线 CLR PF0 ;初始时钟电平为0 CLR PF1 ;设定上升沿有效 MOV SS, #01111111B ;初始化片选线 LCALL SPIR ;调用SPI总线的模拟读子程序 MOV Buff, A ;保存采样数据。

    更多相关内容
  • MAX485与单片机的接口电路,51最小系统级多级通信电路
  • 非常完整的MAX485单片机半双工通信(含程序和电路
  • max232与单片机的经典连接.pdf
  • MAX485芯片收发详解 实现485通信

    万次阅读 2021-07-30 11:23:13
    MAX485是一个八引脚的RS485电平收发器(只能单工或半双工)。内部含有一个输入信号接收器R和一个输出信号驱动器D。485总线上可以同时连接多个MAX485。图片左边引脚全为TTL电平,右边AB引脚为RS-...MAX485逻辑: ...

    芯片介绍:

            MAX485是一个八引脚的RS485电平收发器(只能单工或半双工)。内部含有一个输入信号接收器R、一个输出信号驱动器D。485总线上可以同时连接多个MAX485。图片左边引脚全为TTL电平,右边AB引脚为RS-485电平。

    MAX485逻辑图:

    一般可以直接把MAX485和单片机连接在一起。RO--RX,DI--TX,AB直接进出去进入485总线。

    收发原理电路——普通收发(一定不要忘记配置DE RE!):

            MAX485的RE DE引脚可以共同控制如上图,也可以分别控制。(补充:旁路电容C1是给芯片供电的。)

    发送:当DR为高电平时,DE使能RE不使能,来自单片机TX引脚的信号从DI 进入通过AB发送到485总线上;

    接收:当DR为低电平时,RE有效DE无效,来自485总线的信号从AB进入MAX485,然后从RO端输出到单片机的RX端。

            DE和RE无论是单独控制还是共同控制,都不可以同时工作,因此MAX485只能是“单工或者半双工”。

    收发原理电路——自动收发:

            就是不用单片机引脚DR,当数据进来的时候,数据会自动通过RXD到单片机,当需要发送数据时,自动通过TXD发送出去。也就是只需要连接单片机的RXD和TXD引脚就可以,无需用单片机引脚连接MAX485芯片的DE RE引脚。

    发送0x55:二进制0b0101 0101,TX发送0时,三极管不通,DE高DI接地,所以AB发送0;TX发送1时,三极管通,RE低进入接收模式,经过上下拉电阻得到A>B,所以AB发送1。

    接收数据:接收时,TX保持高,三极管通,RE低进入接收模式,485总线的数据从AB进入MAX485直接由RX接收。

    多机通信:

            当多机通信时,可以很方便地将MAX485挂在485总线实现,如下图:

     

            多机通信时,是由一台主机多台从机组成的,主从机连接到485总线的方式一样,可以指定一台为主机。当进行通信时,如主机发送数据时,主机DE高而呈现发送态,所有从机RE低而呈现接收态。如需单独与n号从及通信,需要单独呼叫n号从机。

    展开全文
  • 51+MAX485原理 pdf

    热门讨论 2011-03-20 15:14:11
    51和MAX485的硬件连接电路,已做出实物,贡献出来给需要的朋友!参考学习
  • 单片机RS485通信接口、控制线、原理及程序实例

    万次阅读 多人点赞 2017-06-17 16:24:04
    接口的信号电平值较高,达到十几 V,使用不当容易损坏接口芯片,电平标准也TTL 电平不兼容。传输速率有局限,不可以过高,一般到一两百千比特每秒(Kb/s)就到极限了。接口使用信号线和 GND 其它设备形成共地模式...
    RS232 标准是诞生于 RS485 之前的,但是 RS232 有几处不足的地方:
    1. 接口的信号电平值较高,达到十几 V,使用不当容易损坏接口芯片,电平标准也与TTL 电平不兼容。
    2. 传输速率有局限,不可以过高,一般到一两百千比特每秒(Kb/s)就到极限了。
    3. 接口使用信号线和 GND 与其它设备形成共地模式的通信,这种共地模式传输容易产生干扰,并且抗干扰性能也比较弱。
    4. 传输距离有限,最多只能通信几十米。
    5. 通信的时候只能两点之间进行通信,不能够实现多机联网通信。

    针对 RS232 接口的不足,就不断出现了一些新的接口标准,RS485 就是其中之一,它具备以下的特点:
    1. 采用差分信号。我们在讲 A/D 的时候,讲过差分信号输入的概念,同时也介绍了差分输入的好处,最大的优势是可以抑制共模干扰。尤其当工业现场环境比较复杂,干扰比较多时,采用差分方式可以有效的提高通信可靠性。RS485 采用两根通信线,通常用 A 和 B 或者 D+和 D-来表示。逻辑“1”以两线之间的电压差为+(0.2~6)V 表示,逻辑“0”以两线间的电压差为-(0.2~6)V 来表示,是一种典型的差分通信。
    2. RS485 通信速率快,最大传输速度可以达到 10Mb/s 以上。
    3. RS485 内部的物理结构,采用的是平衡驱动器和差分接收器的组合,抗干扰能力也大大增加。
    4. 传输距离最远可以达到 1200 米左右,但是它的传输速率和传输距离是成反比的,只有在 100Kb/s 以下的传输速度,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。
    5. 可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的 RS485芯片来看,有可以挂 32、64、128、256 等不同个设备的驱动器。
    6. RS485 的接口非常简单,与 RS232 所使用的 MAX232 是类似的,只需要一个 RS485转换器,就可以直接与单片机的 UART 串口连接起来,并且使用完全相同的异步串行通信协议。但是由于 RS485 是差分通信,因此接收数据和发送数据是不能同时进行的,也就是说它是一种半双工通信。那我们如何判断什么时候发送,什么时候接收呢?

    RS485 转换芯片很多,这节课我们以典型的 MAX485 为例讲解 RS485 通信,如图 18-1所示。
    图 18-1  MAX485 硬件接口
    图 18-1  MAX485 硬件接口

    MAX485 是美信(Maxim)推出的一款常用 RS485 转换器。其中 5 脚和 8 脚是电源引脚;6脚和 7 脚就是 RS485 通信中的 A 和 B 两个引脚;1 脚和 4 脚分别接到单片机的 RXD 和 TXD引脚上,直接使用单片机 UART 进行数据接收和发送;2 脚和 3 脚是方向引脚,其中 2 脚是低电平使能接收器,3 脚是高电平使能输出驱动器,我们把这两个引脚连到一起,平时不发送数据的时候,保持这两个引脚是低电平,让 MAX485 处于接收状态,当需要发送数据的时候,把这个引脚拉高,发送数据,发送完毕后再拉低这个引脚就可以了。为了提高 RS485 的抗干扰能力,需要在靠近 MAX485 的 A 和 B 引脚之间并接一个电阻,这个电阻阻值从 100欧到 1K 都是可以。

    在这里我们还要介绍一下如何使用 KST-51 单片机开发板进行外围扩展实验。我们的开发板只能把基本的功能给同学们做出来提供实验练习,但是同学们学习的脚步不应该停留在这个实验板上。如果想进行更多的实验,就可以通过单片机开发板的扩展接口进行扩展实验。大家可以看到蓝绿色的单片机座周围有 32 个插针,这 32 个插针就是把单片机的 32 个 IO 引脚全部都引出来了。在原理图上体现出来的就是 J4、J5、J6、J7 这 4 个器件,如图 18-2 所示。
    图 18-2  单片机扩展接口
    图 18-2  单片机扩展接口

    这 32 个 IO 口中并不是所有的都可以用来对外扩展,其中既作为数据输出,又可以作为数据输入的引脚是不可以用的,比如 P3.2、P3.4、P3.6 引脚,这三个引脚是不可用的。比如P3.2 这个引脚,如果我们用来扩展,发送的信号如果和 DS18B20 的时序吻合,会导致 DS18B20拉低引脚,影响通信。除这 3 个 IO 口以外的其它 29 个,都可以使用杜邦线接上插针,扩展出来使用。当然了,如果把当前的 IO 口应用于扩展功能了,板子上的相应功能就实现不了了,也就是说需要扩展功能和板载功能之间二选一。

    在进行 RS485 实验中,我们通信用的引脚必须是 P3.0 和 P3.1,此外还有一个方向控制引脚,我们使用杜邦线将其连接到 P1.7 上去。RS485 的另外一端,大家可以使用一个 USB转 RS485 模块,用双绞线把开发板和模块上的 A 和 B 分别对应连起来,USB 那头插入电脑,然后就可以进行通信了。

    学习了第 13 章实用的串口通信方法和程序后,做这种串口通信的方法就很简单了,基本是一致的。我们使用实用串口通信例程的思路,做了一个简单的程序,通过串口调试助手下发任意个字符,单片机接收到后在末尾添加“回车+换行”符后再送回,在调试助手上重新显示出来,先把程序贴出来。

    程序中需要注意的一点是:因为平常都是将 MAX485 设置为接收状态,只有在发送数据的时候才将 MAX485 改为发送状态,所以在 UartWrite()函数开头将 MAX485 方向引脚拉高,函数退出前再拉低。但是这里有一个细节,就是单片机的发送和接收中断产生的时刻都是在停止位的一半上,也就是说每当停止位传送了一半的时候,RI 或 TI 就已经置位并且马上进入中断(如果中断使能的话)函数了,接收的时候自然不会存在问题,但发送的时候就不一样了:当紧接着向 SBUF 写入一个字节数据时,UART 硬件会在完成上一个停止位的发送后,再开始新字节的发送,但如果此时不是继续发送下一个字节,而是已经发送完毕了,要停止发送并将 MAX485 方向引脚拉低以使 MAX485 重新处于接收状态时就有问题了,因为这时候最后的这个停止位实际只发送了一半,还没有完全完成,所以就有了 UartWrite()函数内DelayX10us(5)这个操作,这是人为的增加了 50us 的延时,这 50us 的时间正好让剩下的一半停止位完成,那么这个时间自然就是由通信波特率决定的了,为波特率周期的一半。
    /****************************RS485.c 文件程序源代码*****************************/
       
    1. #include <reg52.h>
    2. #include <intrins.h>
    3. sbit RS485_DIR = P1^7; //RS485 方向选择引脚
    4. bit flagFrame = 0; //帧接收完成标志,即接收到一帧新数据
    5. bit flagTxd = 0; //单字节发送完成标志,用来替代 TXD 中断标志位
    6. unsigned char cntRxd = 0; //接收字节计数器
    7. unsigned char pdata bufRxd[64]; //接收字节缓冲区
    8. extern void UartAction(unsigned char *buf, unsigned char len);
    9. /* 串口配置函数,baud-通信波特率 */
    10. void ConfigUART(unsigned int baud){
    11. RS485_DIR = 0; //RS485 设置为接收方向
    12. SCON = 0x50; //配置串口为模式 1
    13. TMOD &= 0x0F; //清零 T1 的控制位
    14. TMOD |= 0x20; //配置 T1 为模式 2
    15. TH1 = 256 - (11059200/12/32)/baud; //计算 T1 重载值
    16. TL1 = TH1; //初值等于重载值
    17. ET1 = 0; //禁止 T1 中断
    18. ES = 1; //使能串口中断
    19. TR1 = 1; //启动 T1
    20. }
    21. /* 软件延时函数,延时时间(t*10)us */
    22. void DelayX10us(unsigned char t){
    23. do {
    24. _nop_();
    25. _nop_();
    26. _nop_();
    27. _nop_();
    28. _nop_();
    29. _nop_();
    30. _nop_();
    31. _nop_();
    32. } while (--t);
    33. }
    34. /* 串口数据写入,即串口发送函数,buf-待发送数据的指针,len-指定的发送长度 */
    35. void UartWrite(unsigned char *buf, unsigned char len){
    36. RS485_DIR = 1; //RS485 设置为发送
    37. while (len--){ //循环发送所有字节
    38. flagTxd = 0; //清零发送标志
    39. SBUF = *buf++; //发送一个字节数据
    40. while (!flagTxd); //等待该字节发送完成
    41. }
    42. DelayX10us(5); //等待最后的停止位完成,延时时间由波特率决定
    43. RS485_DIR = 0; //RS485 设置为接收
    44. }
    45. /* 串口数据读取函数,buf-接收指针,len-指定的读取长度,返回值-实际读到的长度 */
    46. unsigned char UartRead(unsigned char *buf, unsigned char len){
    47. unsigned char i;
    48. //指定读取长度大于实际接收到的数据长度时,
    49. //读取长度设置为实际接收到的数据长度
    50. if (len > cntRxd){
    51. len = cntRxd;
    52. }
    53. for (i=0; i<len; i++){ //拷贝接收到的数据到接收指针上
    54. *buf++ = bufRxd[i];
    55. }
    56. cntRxd = 0; //接收计数器清零
    57. return len; //返回实际读取长度
    58. }
    59. /* 串口接收监控,由空闲时间判定帧结束,需在定时中断中调用,ms-定时间隔 */
    60. void UartRxMonitor(unsigned char ms){
    61. static unsigned char cntbkp = 0;
    62. static unsigned char idletmr = 0;
    63. if (cntRxd > 0){ //接收计数器大于零时,监控总线空闲时间
    64. if (cntbkp != cntRxd){ //接收计数器改变,即刚接收到数据时,清零空闲计时
    65. cntbkp = cntRxd;
    66. idletmr = 0;
    67. }else{ //接收计数器未改变,即总线空闲时,累积空闲时间
    68. if (idletmr < 30){ //空闲计时小于 30ms 时,持续累加
    69. idletmr += ms;
    70. if (idletmr >= 30){ //空闲时间达到 30ms 时,即判定为一帧接收完毕
    71. flagFrame = 1; //设置帧接收完成标志
    72. }
    73. }
    74. }
    75. }else{
    76. cntbkp = 0;
    77. }
    78. }
    79. /* 串口驱动函数,监测数据帧的接收,调度功能函数,需在主循环中调用 */
    80. void UartDriver(){
    81. unsigned char len;
    82. unsigned char pdata buf[40];
    83. if (flagFrame){ //有命令到达时,读取处理该命令
    84. flagFrame = 0;
    85. len = UartRead(buf, sizeof(buf)-2); //将接收到的命令读取到缓冲区中
    86. UartAction(buf, len); //传递数据帧,调用动作执行函数
    87. }
    88. }
    89. /* 串口中断服务函数 */
    90. void InterruptUART() interrupt 4{
    91. if (RI){ //接收到新字节
    92. RI = 0; //清零接收中断标志位
    93. //接收缓冲区尚未用完时,保存接收字节,并递增计数器
    94. if (cntRxd < sizeof(bufRxd)){
    95. bufRxd[cntRxd++] = SBUF;
    96. }
    97. }
    98. if (TI){ //字节发送完毕
    99. TI = 0; //清零发送中断标志位
    100. flagTxd = 1; //设置字节发送完成标志
    101. }
    102. }
    /*****************************main.c 文件程序源代码******************************/
       
    1. #include <reg52.h>
    2. unsigned char T0RH = 0; //T0 重载值的高字节
    3. unsigned char T0RL = 0; //T0 重载值的低字节
    4. void ConfigTimer0(unsigned int ms);
    5. extern void UartDriver();
    6. extern void ConfigUART(unsigned int baud);
    7. extern void UartRxMonitor(unsigned char ms);
    8. extern void UartWrite(unsigned char *buf, unsigned char len);
    9. void main(){
    10. EA = 1; //开总中断
    11. ConfigTimer0(1); //配置 T0 定时 1ms
    12. ConfigUART(9600); //配置波特率为 9600
    13. while (1){
    14. UartDriver(); //调用串口驱动
    15. }
    16. }
    17. /* 串口动作函数,根据接收到的命令帧执行响应的动作
    18. buf-接收到的命令帧指针,len-命令帧长度 */
    19. void UartAction(unsigned char *buf, unsigned char len){
    20. //在接收到的数据帧后添加换车换行符后发回
    21. buf[len++] = '\r';
    22. buf[len++] = '\n';
    23. UartWrite(buf, len);
    24. }
    25. /* 配置并启动 T0,ms-T0 定时时间 */
    26. void ConfigTimer0(unsigned int ms){
    27. unsigned long tmp; //临时变量
    28. tmp = 11059200 / 12; //定时器计数频率
    29. tmp = (tmp * ms) / 1000; //计算所需的计数值
    30. tmp = 65536 - tmp; //计算定时器重载值
    31. tmp = tmp + 33; //补偿中断响应延时造成的误差
    32. T0RH = (unsigned char)(tmp>>8); //定时器重载值拆分为高低字节
    33. T0RL = (unsigned char)tmp;
    34. TMOD &= 0xF0; //清零 T0 的控制位
    35. TMOD |= 0x01; //配置 T0 为模式 1
    36. TH0 = T0RH; //加载 T0 重载值
    37. TL0 = T0RL;
    38. ET0 = 1; //使能 T0 中断
    39. TR0 = 1; //启动 T0
    40. }
    41. /* T0 中断服务函数,执行串口接收监控 */
    42. void InterruptTimer0() interrupt 1{
    43. TH0 = T0RH; //重新加载重载值
    44. TL0 = T0RL;
    45. UartRxMonitor(1); //串口接收监控
    46. }
    现在看这种串口程序,是不是感觉很简单了呢?串口通信程序我们反反复复的使用,加上随着学习的模块越来越多,实践的越来越多,原先感觉很复杂的东西,现在就会感到简单了。从设备管理器里可以查看所有的 COM 口号,我们下载程序用的是 COM4,而 USB 转RS485 虚拟的是 COM5,通信的时候我们用的是 COM5 口,如图 18-3 所示。
    图 18-3  RS485 通信试验设置和结果

    图 18-3  RS485 通信试验设置和结果


    转自:http://c.biancheng.net/cpp/html/1966.html


    关于源码里面,为什么串口设置超过30ms未接收到数据,则认为一帧结束了。

    对于这个问题可以参考:http://blog.csdn.net/qq_26093511/article/details/73381395


    展开全文
  • 制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换...下图就是MAX232的基本接线图
  • 多协议接口芯片(如Maxim的MAX3162)可以用来连接一个UART到RS- 485总线架构称为点至点全双工(点对点- FD)的。在PTP连接通常需要驱动器和接收保持不断启用,因此,“现在“就行了。当这样的电路板必须放入一个点对...
  • rs485 与485通讯 接线方法?

    千次阅读 2020-12-30 04:54:34
    6、RS485的接口非常简单,RS232所使用的MAX232是类似的,只需要一个RS485转换器,就可以直接与单片机的UART串口连接起来,并且使用完全相同的异步串行通信协议。但是由于RS485是差分通信,因此接收数据和发送数据...

    展开全部

    RS485通讯的工作原理如下:

    1、采用差分信号。我们在讲A/D的时候,讲过差分信号输入的概e69da5e887aa3231313335323631343130323136353331333365656532念,同时也介绍了差分输入的好处,最大的优势是可以抑制共模干扰。尤其当工业现场环境比较复杂,干扰比较多时,采用差分方式可以有效的提高通信可靠性。RS485采用两根通信线,通常用A和B或者D+和D-来表示。逻辑“1”以两线之间的电压差为+(0.2~6)V表示,逻辑“0”以两线间的电压差为-(0.2~6)V来表示,是一种典型的差分通信。

    2、RS485通信速率快,最大传输速度可以达到10Mb/s以上。

    3、RS485内部的物理结构,采用的是平衡驱动器和差分接收器的组合,抗干扰能力也大大增加。

    4、传输距离最远可以达到1200米左右,但是它的传输速率和传输距离是成反比的,只有在100Kb/s以下的传输速度,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。

    5、可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的RS485芯片来看,有可以挂32、64、128、256等不同个设备的驱动器。

    6、RS485的接口非常简单,与RS232所使用的MAX232是类似的,只需要一个RS485转换器,就可以直接与单片机的UART串口连接起来,并且使用完全相同的异步串行通信协议。但是由于RS485是差分通信,因此接收数据和发送数据是不能同时进行的,也就是说它是一种半双工通信。

    展开全文
  • 随着计算机技术和测控技术的不断发展,在以单片机为核心的数据采集系统中,需要实现单片机和计算机之间的数据交换,并以此来发挥单片机和计算机各自的长处,提升整个系统的性能价格比。在计算机网络和工业控制系统中...
  • 描述RS232作为标准的计算机串行接口已被广泛使用,与此同时,随着现场总线技术的...因此,如何以最简单的方式实现CAN节点RS232串行口的通信就成为工程实践中一个不可回避的问题。本文主要就是说at89c51接max232...
  • MAX232是一种把电脑的串行口...下图为MAX232引脚图和接线图,及RS232引脚定义,带有转串口的电路。TTL/CMOS INPUTS 端.这个端口是的作用是输入TLL或CMOS信号的...一般为0-5V... 低电平为零,高电平为VCC.TTL/CMOS O...
  • 文章目录要点1 参考电阻要点2 接线要点3 体会 国内资料少,找到个非常详细的资料: https://learn.adafruit.com/adafruit-max31865-rtd-pt100-amplifier?view=all 要点1 参考电阻 一般PT100选400欧姆参考电阻,但是...
  • 接口的信号电平值较高,达到十几 V,使用不当容易损坏接口芯片,电平标准也TTL 电平不兼容。 传输速率有局限,不可以过高,一般到一两百千比特每秒(Kb/s)就到极限了。 接口使用信号线和 GND 其它设备形成共地...
  • RS232转换为RS485的接线方法最好有

    千次阅读 2020-12-20 08:36:29
    展开全部RS-232、RS-485的简单介绍RS-232、RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发62616964757a686964616fe59b9ee7ad9431333337616634布的。RS-232在1962年发布,命名为 EIA-232-E,作为...
  • 51单片机与MAX232的连接

    千次阅读 2016-09-28 22:46:59
    MAX23251单片机之间的通信连接很简单,因为所谓的MAX232通信标准,就是对插件样式、信号名称和意义以及所谓的驱动器/接收器的电气模式这种硬件作出规定。一般的都是9针的接口,其中包括CD接口:数据通道接收载波的...
  • 接线时应将单片机的地 PC机串行接口的GND引脚相连,即单片机与PC机共地。  表1 MAX232引脚功能  DB-9连接器如1所示,作为提供多功能I/O卡或主板上COM1和COM2串行接口的连接器,它只提供异步通信的9个信号 ...
  • STM32F207+SN65HVD230+MAX3232控制板AD设计硬件原理+PCB文件,2层板设计,大小为99x61mm,Altium Designer 设计的工程文件,包括完整的原理及PCB文件,可以用Altium(AD)软件打开或修改,可作为你产品设计的参考。...
  • 单片机通过MAX232计算机通信串口联接说明,详细介绍了串口与MAX232,单片机与MAX232之间的联接,由此我们可以自己制作出联接线
  • 1、硬件连接STM32芯片的任意一个串口中的232_RX和232_TX连接,上中的RS232_TXD和RS232_RXD连接一个9针串口硬件。2、引脚功能说明DOUT1(14PIN): RS232线数据输出(到远程RS232系统)RIN1(13PIN): RS232...
  • max232是一种把电脑的串行口rs232信号电平(-10,+10v)转换为单片机所用到的TTL信号点平(0,+5)的芯片,这个芯片的价格比较贵大约要6元,下面我来介绍一下max232引脚以及max232和电脑串口的连接电路,RS232引脚...
  • 【STC单片机学习】第十三课:串口通信和RS485

    千次阅读 多人点赞 2020-11-19 01:46:51
    1.13.3.51单片机的串行通信 1.13.4.STC51的串行通信相关寄存器1 1.13.5.STC51的串行通信相关寄存器2 1.13.6.STC51的串行通信实战1 1.13.7.STC51的串行通信实战2 1.13.8.STC51的串行通信实战3 1.13.9.STC51的...
  • 文章目录1 烧写程序2 LCD16023 PCF85914 独立...仿真图里只关心数据线,电源线无所谓,所以可以看到下里LCD1602就7根线好好接到了单片机,而别的引脚都可以不接。但在实物中需要关注得更多。 实物样子: 实物电路
  • 485通信非自动收发电路: 当单片机要发送数据的时候,控制U3_TEN 为高电平,数据通过TXD发送出去。 当单片机要接收数据的时候,控制U3_TEN为低电平,数据通过RXD接收回来。 485通信自动收发电路: 自动...
  • 单片机与上位机给出的rs232口之间 通过电平转换电路(最上面中的Max232芯片) 实现TTL电平RS232电平之间的转换 PC串口与单片机串口连接方式: 注意这两个DB9:DB91是在电脑上的 DB92是在单片机实验板上焊接着...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 836
精华内容 334
关键字:

max485与单片机接线图