㈠ 单片机与单片机之间如何进行串行通信
1、将两个单片机的RXD与TXD相连
2、根据需要传输的数据编写传输协议
3、编写串行通信程序,将自己需要发送的数据按照协议进行发送
4、编写接收程序,按照协议进行接收
5、将两个程序分别写入两个单片机,运行。
㈡ 两个单片机之间的串口通信问题
单片机串口通信的问题,其实你只有一个问题,就是:
p0=0xf0;
s2buf=0xfc;
p0=s2buf;
//为什么这里p0是0x00
?
你觉得p0应该等于0xfc对不对?之所以出乎你的预料,是因为s2buf寄存器地址是一个,实际是两个寄存器,一个只读,一个只写。s2buf=0xfc是写发送缓冲寄存器s2buf,p0=s2buf是读接收缓冲寄存器s2buf,在没有接收的字符时,接收缓冲寄存器s2buf是未知的,现在恰好是0,p0当然等于0x00。
㈢ 两个8051单片机之间用方式2串行通信
串行口是单片机与外界进行信息交换的工具,8051单片机的通信方式有两种:
并行通信:数据的各位同时发送或接收。
串行通信:数据一位一位次序发送或接收。
串行通信的方式
异步通信
用一个起始位0表示字符的开始,用停止位1表示字符的结束,中间夹着8个数据位,字符能一个接一个传送
CPU与外设之间必须有字符格式和波特率两项规定
字符格式规定能使双方把0和1串理解成同一种意义,原则上自由制定,通用角度使用标准如ASCII
波特率即数据传输速率,每秒传送的二进制位数,如120字符/s,每个字符10数位,则传送波特率为1200波特
同步通信
去掉了开始结束标志提高速度,但由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。
通信方向
在串行通信中,把通信接口只能发送或接收的单向传送办法叫单工传送;把数据能双向传递称为双工传送。半双工传送两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。全双工传送是能同时发送接收。
串行接口结构
51单片机一个可编程的全双工串行通信接口。可用作异步通信方式(UART),与串行传送信息的外部设备相连接。或用于通过同步或异步标准通信协议进行全双工的8051多机系统,使用TTL或CMOS移位寄存器来扩充I/O口。
8051单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。
㈣ 两个单片机串口通信程序
两个单片机串口通信,用仿真来实现比较容易做,两个单片机的引脚TXD和RXD交叉连接即可。为了显示通信效果,P2口接两个数码管可显示接收的数据,P1口接两个四位数字开关,用于输入数据,然后从串口发送到另一单片机,两个单片机互发数据,电路相同,程序也相同。仿真图如下。
㈤ 两个单片机串口通讯故障问题
电压问题,电脑输出电压与单片机不符 2、通讯问题,查看连接口,及协议 3、单片机问题,芯片程序是否正确 4、连接线问题,换连接线试试。串口通讯如果波特率如果有误差的话,有时候会出现数据错误的,这很正常。比如12M晶振,如果波特率为9600,就会又一些误差。一个用12V电池经过7805稳压管供电,电源没有问题,不至于会影响到通信。两个不同的板子不同的电源,那么两个板子的地(GND)是必须接到一起的,即要共地的。你的两个板子的串口是TXD,RXD直接连接的,即是TTL连接还是用RS232或RS485连接只有在RS485模式下,只接两条线就可以通信的,TTL连接或RS232连接都必须共地,另外,TTL连接的距离要很短的,最好还是接成RS232连接可靠。单片机 与 单片机 直接 串口通信,需要连接 RXD、TXD、GND, 如果 用同一个 电源 只连接 RXD、TXD 是没有问题 的, 如果 不是 同一个 电源,则必须 连接RXD、TXD、GND。 如果 距离比较 长 几百米,可以转换成 RS485 连接 只要RS485 的 A、B 两根线就可以。单片机 通过RS232串口 与PC 通讯,一般来说应该不成问题的, 现在的单片机应该抗干扰也是不成问题的, 你可以 先试试 不接 强电,光控制继电器,和其它的所有正常操作,如果这样正常, 才能说明干扰问题,否则可能是软件问题。用排除法找到问题的所在。