单片机和pc机通过rs232进行串口通信

2021-01-13 16:01:09 字数 2447 阅读 9759

1楼:沈阳_大伟

利用电脑上的串口助手,向单片机发送数据,单片机原封不动的再反馈回来

若满意,请记得采纳,谢谢

//串口波特率 9600 ,单片机晶振 11.0592

#include //通用89c52头文件

char aa,fe=0;

void ms***m(void)//串口初始化

void main(void)//主函数}}

void ser() interrupt 4//串口接收,中断方式

在调试rs232串口通信时,单片机往pc机上发数据,串口调试助手可以接收,但是pc往单片机发数据,接收不到。

2楼:

先解释一下现象:

(1)max232的12脚即r1out连接到了单片机的rx脚,因此使用探头碰max232的12引脚时导入了干扰信号,所以接收到了乱的数据。同时,也证明了单片机的接收电路和程序都没有问题。

(2)板子上的地接到示波器上的地,pc才能收到数据,说明单片机与pc没有共地。同时,也证明了单片机的发送电路、程序和pc的接收电路都没有问题。

原理:(1)pc的串口即rs232有9个引脚,与单片机通信时用到三个引脚,依次是2脚rx、3脚tx、5脚信号gnd。

(2)而单片机串口与此相反,2脚tx、3脚rx、5脚信号gnd。

(3)只要把这三根线依次连接,2-2、3-3、5-5即可完成通信。

(4)同时,根据实际通信设备接口不同,串口线也分多种,如直连线、交叉线、公母头区别等。

故障排除流程:

(1)用万用表等测量max232的14脚t1out与开发板串行接口的2脚tx、max232的13脚r1in与开发板串行接口的3脚rx、开发板串行接口的5脚与电源地是不是分别连接。如果连接没问题,则进行下一步。

(2)用万用表等测量串口线,pc端的2脚与单片机端的2脚、pc端的3脚与单片机端的3脚、pc端的5脚与单片机端的5脚是不是分别对应,如果对应连接没问题,则进行下一步。

(3)将pc上串行接口的2、3引脚短接。

(5)如果收不到,则说明pc的串口问题(排除串口工具没有开错串口或短接没问题的情况下),换台电脑试下。能收到,则说明电脑端收发都没问题,进行下一步。

(6)将串口线插到电脑上,开发板端的插头不插而直接将2、3脚短接。再次用串口工具发送,看是否能接收到,如果能接收到,则证明串口线没问题,进行下一步。

(7)将串口线插到开发板得串行接口上,再使用串口工具收发。

(8)如果以上都不行,则自己做3根线,也可以使用杜邦线,将pc的tx与开发板的rx、pc的rx与开发板的tx、pc的信号地与开发板的地分别相连。再用串口工具收发测试。

通过以上步骤,则可以逐步排查到问题的具体原因。不过,根据问题及之后的描述,最大的可能性是串口线用的不对,导致pc串口与开发板串口的3根线没有分别对应上。

3楼:

如果用的是51单片机,除了确认电缆没问题外,

可以查一下又没有可能不小心把对应rxd的sfr给赋值0了,查这个不一定要看程序,可以拔掉单片机芯片看串口上接收引脚波形,不好拔的话,按住单片机复位开关不松手也许也可以。

4楼:匿名用户

单片机往pc上能发说明串口本身应该没有问题:如果是你自己做的板子最好查看一下单片机接收那一路是否有虚焊或有短路情况(直接使用现成的开发板无视)。

然后仔细查看下程序是否有问题,再在程序中下断点,就下在接收到数据的下一条**。然后发数据,如果断住说明数据收到了,是后面处理点亮led的**的问题。如果没有那就是没接收到。

还没有就再使用示波器,示波器要设置成低电平触发模式,单片机的串口(tx,rx)平时都是高电平,起始位是低电平,后面就是你设置的数据位(7位或8位),还有停止和校验位根据你设置的情况。数据发送都是瞬间完成的,所以一定要使用触发模式,如果捕捉不到,说明pc端的发送有问题,可以换个串口调试工具,还不行换跟串口线,再不行换台电脑。一般到此问题肯定能解决了啊(除非中途有操作失误的情况)

另外,一般使用串口还是使用中断模式,可以节省系统资源,降低功耗!

5楼:

步骤一,串口调试可以对你的单片机

发送吗?如果可以,那就是你pc程序问题,如果不可以,那就是你单片机问题,但是也可能是步骤二问题。

步骤二:发送数据不对,一般常见的,比如16进制发送?还是acsii发送?

步骤三:学会使用“串口监视”的小工具,监视数据包是否遵循协议。

步骤四:看你pc程序吧。用串口监视工具可以发现,可能你的pc程序都没有包出来。

6楼:

1、单片机串口控制在scon里有个ren寄存器设置正确吗?接收允许标志。

2、串口中断开了吗?即使是查询方式也要有ri状态可以查询才能接收。

3、单片机串口接收最好还是用中断方式,方便的多void isr_serial(void) interrupt 4sbuf= i; // echo

while(!ti);

ti = 0;}

单片机多串口通信怎么办,“单片机串口通信,串口助手调试收发都正常,接到一块就不正常”请问您是怎么解决的?谢谢

1楼 匿名用户 解决办法是 1 采取串口级联方式,那么一个串口就可以了。 2 扩展串口,比如用一片8251可以扩展两个串口。 单片机串口通信,串口助手调试收发都正常,接到一块就不正常 请问您是怎么解决的?谢谢 2楼 匿名用户 每片单片机单独与串口助手通信成功。说明你的2个单片机串口通信都很正常, 但...

单片机的双串口通讯怎样能让两个串口不互相冲突

1楼 匿名用户 一个用t1产生波特率,一个用自带的brt发生器产生波特率 一个中断的时候立即关总中断,避免另外一个造成中断重入,中断完成后开总中断 这样就能完全避开冲突。比如stc12c5a60s2或者nxp的p89lpc952都是双串口的,我都用过。 2楼 匿名用户 两个用相同的波特率,都用brt...

单片机中串行接口和并行接口是干什么用的

1楼 珠山龙少 串行接口,简称串口,是采用串行通信协议的扩展接口。 并行接口,简称并口,也就是lpt接口,是采用并行通信协议的扩展接口。 串口和并行口是用来通信的,但是单片机的串口和并口还可以用来做i o接口。 串口和并口都能通过直接电缆连接的方式实现双机互连,在此方式下数据只能低速传输。 2楼 匿...