我想用安卓手机跟单片机ttl通信,需要什么软件和硬件?
这要看哪种单片机,常用的是串口远距离是rs485,有一些高档的单片机也用CAN总线通信,这种方式汽车上常用。
http://www.ca800.com/apply/html/2007-12-7/n25043.html上位机与下位机通信的设计初步1 引言现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。
加之单片机的计算能力有限,难以进行复杂的数据处理。
因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。
2 PC机与单片机8051之间的通信特点在工业控制系统中,各种数据的采集和执行机构的控制都是由下位机或探测站来完成。
由于单片机具有体积小、价格低廉、可应用于恶劣工业环境的特点,在分布式控制系统中大多采用单片机作为下位机来进行数据采集和现场控制。
在这些应用中,单片机只是直接面向被控对象底层。
而对采集到的数据进行进一步分析和处理的工作是由功能强大的主控PC机来完成的。
因此,PC机和单片机之间就有着大量的数据交换。
3 PC机与单片机8051通信的硬件设计通常PC机和单片机之间的通信是通过串行总线RS-232实现的。
因此采用一种以MAX232为核心的通信接口电路。
该接口电路适用于由一台PC机与多个8051单片机串行通信的设计,其原理和方法同样适用于PC机与其它单片机之间的串行数据通信。
其原理框图见图1:图1 单片机与PC机通信原理框图该框图中,起着重要作用的是RS-232C通信接口电路。
它是上位机和下位机之间信息传递的枢纽,一切数据的传输必需由它完成,上位机直接利用它的RS-232串行口,为此,采用了RS-232串行通信来接收或上传数据和指令。
但RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换。
在此电路中,采用MAX232实现TTL逻辑电平和RS-232电平之间的相互转换。
MAX232由单一的+5V电源供电,只需配接5个高精度10μF/50V的钽电容即可完成电平转换。
因此,避免了用1488和1489时必需两路电源的麻烦。
转换后的串行信号TXD、RXD直接与PC机的串行口连接。
如此设计,既可发挥出PC机强大的计算和显示功能,又可以体现出单片机灵活的控制功能,有利于对现场信号的实时采集、处理和监控。
3.1 8051与PC机之间的通信协议在许多场合的测控系统中,约定PC机和8051单片机的通信协议为:Number+Command+Length+Data+CheckNumber:下位机的机号,若设计中有3台下位机,即Number 取01H,02H,03H,分别代表:#1,#2,#3号下位机;Command:本次命令的代码;Length:本次发送数据段的字节数;Data:要发送的数据段;Check:1字节的校验码。
本设计只考虑一个8051单片机,故可对上述通信协议进行简化。
3.2 8051和PC机之间通信的软件设计VB提供了串行端口控件Mscomm方便应用程序实现串行通讯,该控件屏蔽了通信过程中的底层操作,程序员应用时只需设置、监视Mscomm控件的属性和事件即可完成对串行口的初始化和数据的输入、输出工作。
汇编语言是一种执行效率高、可读性强的语言。
为实现通讯正常,PC机与单片机约定如下:波特率:2400bps;信息格式:1个起始位,8位数据位,1个停止位,无奇偶校验位;串行口操作模式:标准异步串行通信,串行口模式1;传送方式:PC机采用查询方式接收数据,8051单片机采用中断方式接收信息。
(1) 总体功能设计通过综合分析,本系统至少应具备如下功能:PC机与单片机8051都可发送和接收数据,进行可以异步串行通信;PC机键盘输入发送给单片机8051,单片机接收PC机发来的数据并送LED显示;单片机8051键盘的每次输入以BCD码送给单片机的LED显示,单片机发送的数据由四次按键的BCD码组成,发送时作为一个队列发送,PC机接收单片机发送来的数据并送窗口显示;上位机程序即PC端程序采用VB6.0制作,人机界面友好,界面简洁,功能完善,下位机程序即单片机端采用汇编语言进行开发。
系统功能模块图见图2和图3。
图2 上位机模块图3 下位机模块(2) 通讯流程图主程序实现下位机即单片机8051系统的初始化,8255初始化,设置单片机串行口控制寄存器SCON,电源控制寄存器PCON,定时器T1初始化,开中断。
系统不停的对键盘和RxD线进行监测,当通过扫描发现有按键输入时,经过按键处理后就启动该模块向上位机PC端发送所检测到的键码;当单片机8051监测到RxD线上有数据到时就启动该子程序对PC发来的数据进行接收,同时经过BCD转换送单片机系统的LED进行显示以方便和PC机发送的数据进行比较,以确认通信是否正确。
流程图见图4。
图4 主程序流程图图5 数据队列发送流程图数据队列发送子程序当单片机8051键盘已有4次输入时,就启动该模块向上位机PC端发送所检测到的键码。
流程图见图5。
键码发送子程序当单片机8051检测到键盘有输入时,就通过按键处理启动该模块向上位机PC端发送所检测到的键码。
流程图见图6。
图6 键码发送流程图图7 ...
单片机与PC双向通信
串行通信--发送 CODE SEGMENT ASSUME CS:CODE ORG 1300H START: JMP SERIAL SECOPORT EQU 0051H SEDAPORT EQU 0050H SERIAL: call for8251 MOV DS:[077AH],1701H MOV DS:[077CH],0501H MOV DS:[077EH],0802H redikey:call dispkey cmp byte ptr ds:[0752h],10h jc wattxd jmp funckey WATTXD: MOV DX,SECOPORT IN AL,DX TEST AL,01H JZ WATTXD MOV AL,BYTE PTR DS:[0752H] MOV DX,SEDAPORT OUT DX,AL WATRXD: MOV DX,SECOPORT IN AL,DX TEST AL,02H JZ WATRXD MOV DX,SEDAPORT IN AL,DX CMP BYTE PTR DS:[0752H],AL JZ seri2 MOV DS:[077AH],1c1cH MOV DS:[077CH],101bH mov ds:[077eh],1010h sererr: CALL DISP JMP sererr seri2: mov cx,0018h ser3: call disp loop ser3 jmp redikey funckey:CMP BYTE PTR DS:[0752H],1FH JNZ REDIKEY MOV DS:[077AH],191AH MOV DS:[077CH],1819H mov ds:[077eh],1010h monit: CALL DISP JMP monit dispkey:call disp call key mov ah,al ;newkey mov bl,ds:[0748h] ;ltime mov bh,ds:[0749h] ;lkey mov al,01h mov dx,0ff21h out dx,al cmp ah,bh mov bh,ah ;bh=new key mov ah,bl ;al=time jz disk4 mov bl,88h mov ah,88h disk4: dec ah cmp ah,82h jz disk6 cmp ah,0eh jz disk6 cmp ah,00h jz disk5 mov ah,20h dec bl jmp disk7 disk5: mov ah,0fh disk6: mov bl,ah mov ah,bh disk7: mov byte ptr ds:[0748h],bl mov byte ptr ds:[0749h],bh mov byte ptr ds:[0752h],bh mov al,ah ret disp: push cx mov dx,077fh mov ah,20h disp0: mov cx,00ffh mov bx,dx mov bl,ds:[bx] mov bh,0h push dx mov dx,0ff22h mov al,cs:[bx+13fdh] out dx,al mov dx,0ff21h mov al,ah out dx,al disp1: loop disp1 pop dx dec dx shr ah,01h jnz disp0 pop cx ret data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh db 0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh db 90h,0a3h,0a1h,86h,8fh key: mov al,0ffh mov dx,0ff22h out dx,al mov bl,00h mov ah,0feh mov cx,08h key1: mov al,ah mov dx,0ff21h out dx,al shl al,01h mov ah,al nop nop nop nop nop nop mov dx,0ff23h in al,dx not al nop nop and al,0fh jnz key2 inc bl loop key1 jmp nkey key2: test al,01h je key3 mov al,00h jmp key6 key3: test al,02h je key4 mov al,08h jmp key6 key4: test al,04h je key5 mov al,10h jmp key6 key5: test al,08h je nkey mov al,18h key6: add al,bl cmp al,10h jnc fkey mov bl,al mov bh,0h mov al,cs:[bx+147eH] ret nkey: mov al,20h fkey: ret data2: db 07h,04h,08h,05h,09h,06h,0ah,0bh DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh
单片机与传感器的RS485通信
首先是看编译能否通过?能编译,说明语法没问题,但能否实现要求的功能,必须实际测试,看程序没用。
你把程序烧录到单片机,上电实际测试。
不论是谁,都是要实际测试的。
为什么写一个程序要反复调试上百次?就是反复不断测试找问题修改,直到完全达到设计要求。
几个小元件 自制TTL刷机线
典型的串行通讯标准是RS232和RS485.它们定义了电压,阻抗等.但不对软件协议给予定义 区别于RS232, RS485的特性包括: 1. RS-485的电气特性:逻辑“1”以两线间的电压差为+(2—6) V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。
接口信号电平比RS -232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。
2. RS-485的数据最高传输速率为10Mbps 3. RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。
4. RS-485接口的最大传输距离标准值为4000英尺,实际上可达 3000米,另外RS-232-C接口在总线上只允许连接1个收发器,即单站能力。
而 RS-485接口在总线上是允许连接多达128个收发器。
即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。
因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。
因为RS485接口组成的半双工网络 ,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。
RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔) ,与键盘连接的键盘接口RS485采用DB-9(针)。
RS485编程 串口协议只是定义了传输的电压,阻抗等,编程方式和普通的串口编程一样!!!—————————————————————————————— 再详细点说就是:rs485 由于RS-232-C接口标准出现较早,难免有不足之处,主要有以下四点: (1) 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL电路连接。
(2) 传输速率较低,在异步传输时,波特率为20Kbps。
(3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
(4) 传输距离有限,最大传输距离标准值为50英尺,实际上也只能 用在50米左右。
针对RS-232-C的不足,于是就不断出现了一些新的接口标准,RS-485就是其中之一,它具有以下特点: 1. RS-485的电气特性:逻辑“1”以两线间的电压差为+(2—6) V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。
接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片, 且该电平与TTL电平兼容,可方便与TTL 电路连接。
2. RS-485的数据最高传输速率为10Mbps 3. RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。
4. RS-485接口的最大传输距离标准值为4000英尺,实际上可达 3000米,另外RS-232-C接口在总线上只允许连接1个收发器, 即单站能力。
而RS-485接口在总线上是允许连接多达128个收发器。
即具有多站能力,这样用户可以利用单一的RS-485接口方便地建立起设备网络。
因RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。
因为RS485接口组成的半双工网络,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。
RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。
3. 采用RS485接口时,传输电缆的长度如何考虑? 在使用RS485接口时,对于特定的传输线经,从发生器到负载其数据信号传输所允许的最大电缆长度是数据信号速率的函数,这个 长度数据主要是受信号失真及噪声等影响所限制。
下图所示的最大电缆长度与信号速率的关系曲线是使用24AWG铜芯双绞电话电缆(线 径为0.51mm),线间旁路电容为52.5PF/M,终端负载电阻为100欧 时所得出。
(曲线引自GB11014-89附录A)。
由图中可知,当数据信 号速率降低到90Kbit/S以下时,假定最大允许的信号损失为6dBV时, 则电缆长度被限制在1200M。
实际上,图中的曲线是很保守的,在实 用时是完全可以取得比它大的电缆长度。
当使用不同线径的电缆。
则取得的最大电缆长度是不相同的。
例 如:当数据信号速率为600Kbit/S时,采用24AWG电缆,由图可知最 大电缆长度是200m,若采用19AWG电缆(线径为0。
91mm)则电缆长 度将可以大于200m; 若采用28AWG 电缆(线径为0。
32mm)则电缆 长度只能小于200m。
RS-485总线,在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。
RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。
加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。
RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。
RS-485用于多点互连时非常方便,可以省掉许多信号线。
应用RS-485 可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。
以往,PC与智能设备通讯多借助RS232、RS485、以太网等方式,主要取决于设备的接口规范。
但RS232、RS485只能代表通讯的物理介质层和链路层,如果要实现数据的双向访问,就必须自己编写通讯应用程序,但这种程序多数都不能符合...
PLC采用什么方式通信?特点是什么?
1 通信装置的硬件描述 PLC与PC机之间实现通道,可使二者互补功能上的不足,PLC用于控制方面既方便又可靠,而PC机在图形显示、数据处理、打印报表以及中文显示等方面有很强的功能。
因此,各PLC制造厂家纷纷开发了适用于本公司的各种型号PLC与PC机通信的接口模块。
三菱公司开发的FX-232AW接口模块用于FX2系列PLC与计算机通信。
还有与以太网连接的接口模块AJ71E71、与MAP网连接的接口模块AJ71M51-S1、与FAIS MAP网连接的接口模块AJ71M51M1等。
不同的通信方式,有着不同的成本价格和不同的适用范围。
在此介绍一种通过PC机的RS-232口与PLC进行通信的实现方法。
FX2系列PLC的编程接口采用RS-422标准,而计算机的串行口采用RS-232标准。
因此,作为实现PLC计算机通信的接口电路,必须将RS-422标准转换成RS-232标准。
RS-232与RS-422标准在信号的传送、逻辑电平均不相同。
RS-232采用单端接收器和单端发送器,只用一根信号线来传送信息,并且根据该信号线上电平相对于公共的信号地电平的大小来决定逻辑的“1”(-3~-15V)和“0”(+3~+15V); RS-422标准是一种以平衡方式传输的标准,即双端发送和双端接收,根据两条传输线之间的电位差值来决定逻辑状态。
RS-422电路由发送器、平衡连接电缆、电缆终端负载和接收器组成。
它通过平衡发送器和差动接收器将逻辑电平和电位差之间进行转换(+2V表示“0”,-2V表示“1”)。
选用MAXIM公司的MAX202实现RS-232与TTL之间的电平转换。
MAX202内部有电压倍增电路和转换电路,仅需+5V电源就可工作,使用十分方便;选用MAX490实现RS-485与TTL之间的转换。
每片MAX490有一对发送器/接收器,由于通信采用全双工方式,故需两片MAX490,另外只需外接4只电容即可。
PLC的RS-422接口配接DB-25型连接器,而PC机一般用DB-9型连接器。
硬件电路图如图1所示。
将RS-232的RS、CS短接,这样对计算机发送数据来说,PLC总是处于就绪状态。
也就是说,计算机在任何时候都可以将数据送到PLC内。
又由于DR、ER交叉连接,因此,对计算机接收数据来说,必须等待至PLC处于准备就绪状态。
2 通信装置的软件描述 2.1 FX2系列PLC与计算机之间通信协议 FX2系列PLC与计算机之间的通信采用RS-232标准,其传输速率固定为9600bps,奇偶校验位采用偶校验。
数据格式如图2所示。
数据以帧为单位发送和接收。
一个多字符帧由力所示的五部分组成,其中和校验值是将命令码ETX之间的的呢字符的ASCII码(十六进制数)相加,取得所得和的最低二位数。
STX和ETX分别表示该字符帧的起始标起和结束标志。
FX2系列与计算机之间的通信是以主机发出的初始命令,PLC对其作出响应的方式进行通信的。
共有0、1、7、8四种命令,上位机实现对PLC的读写和强行置位。
通过ENQ、ACK和NAK,上位机协调与PLC的通信应答。
2.2 通信过程 采用Bland C编写主机与PLC的通信程序。
首先必须对COM1口进行初始化,波特率为9600bps,奇偶校验位采用偶校验,七位有效数据。
通信的初始化检测过程如图4所示。
当计算机接收到来自PLC的应答字符ACK后,就可以进入数据通信了。
通信的时序图如图5所示。
计算机可对PLC内各软设备进行读、写和强制ON/OFF操作。
除开PLC的计时器和计数器的设定值采用常数时,以及文件寄存器内的数据,FX2系列PLC的所有开关量输入、输出以及各软件设备对计算机都是透明的。
其操作时的多字符帧的格式如图3所示。
但不同的操作在“多个字符”项内有所不同。
例如,计算机对PLC的软设备Y20~Y37进行读操作,查装置地址表为00A2,读取2字节数据。
其状态如图6(a)所示,主机发出的命令格式如图6(b)所示,PLC返回的信息如图6(c)所示。
如传送的命令有错误,PLC返回NAK信号,本次操作失败,重新进行。
为了保证主机与PLC的通信准确无误,上位机也必须按通信协议进行和校。
如接收的信息有误,则重新读取。
如重复3次仍不行,则显示错误信息。
使用C语言很容易实现以上编程。
主机还可向PLC写数据,进行单点的强近置位和复位。
对于运行在控制和实验室环境飞速下本方案运行可靠、性价比高、体积小、但是对于通信距离长,环境恶劣的发问,需加光电隔离等措施。