Ⅰ 两个单片机串口通讯故障问题
电压问题,电脑输出电压与单片机不符 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 通讯,一般来说应该不成问题的, 现在的单片机应该抗干扰也是不成问题的, 你可以 先试试 不接 强电,光控制继电器,和其它的所有正常操作,如果这样正常, 才能说明干扰问题,否则可能是软件问题。用排除法找到问题的所在。
Ⅱ 两个单片机UART通信不能正常进行
单片机串口可以在115.2k可靠传输,不要怀疑波特率,如果你的波特率计算真的没有错误的话;
从你的条件不会退出能通信的结果,肯定有的细节你没有说明,不知是什么;
如果真的如你所说,只能让一片单片机不断的发,示波器监视发送是否正常;串口助手给另一片单片机发数据,看接受是否正常,一步步来。
如果还没问题就是看你的线是否过长,是否有干扰等
Ⅲ 我使用5V的sst单片机和3.3V的某型号芯片通讯(spi串行),软件使用厂家的驱动程序,但传输数据不稳定
我做的项目也存在电平转换的问题,是关于SPI串口时钟电平的问题。从3.3V转换成5V,我利用两个三极管解决了,程序运行正常。不知道你的是不是和我的一致。 你的单片机没有SPI接口吗?难道还要模拟时序实现? 没有明白你的问题,可以找我聊下。
Ⅳ 51单片机串口通讯,在接收一端某处我用xdata就很正常,用data或idata程序就不太稳定请问问题可能出在哪
你使用xdata区存放接收的数据时表现正常,但在使用data或idata区时程序不稳定,这可能是因为内存不足。51单片机的内存仅有128字节,包括工作寄存器区和堆栈区,如果存放的数据较多,很容易导致内存溢出。
假设你的程序占用105个字节,那么留给数据存储的空间就非常有限了。如果你使用的是扩展外部数据存储器,那么idata区可以扩展到256字节。将接收数组放在0x80区,可以有效利用这部分空间。例如,声明变量如下:
unsigned char idata buf[80] _at_ 0x80;
这样,可以确保你的数据不会溢出,并且程序运行更加稳定。
在工程设置中选择AT89C52单片机型号,可以增加idata区的大小,从而提供更多的存储空间。同时,确保程序逻辑合理,避免不必要的变量和函数调用,以减少内存占用。
综上所述,内存不足是导致程序不稳定的主要原因。通过合理分配内存空间,优化程序逻辑,可以有效解决这一问题。
Ⅳ 单片机在烧程序的时候出了问题。
这是串口和你单片机的通讯出了问题,通常有一下几种情况:
1、你的学习板上面有“程序烧写开关”,每次烧程序的时候需要把这个开关拨到特定的位置;
2、单片机供电不稳定;
3、有些单片机下程序的时候需要重新上电,也就是说在电脑上点击“下载”后需要把单片机下电后再上电,如:89C51
4、你的串口驱动有问题,如果你用的是U转串,要确定你的串口驱动运行正常
Ⅵ 单片机串口通信 波特率已经相同了 为什么接收有差错
从数据很明显看到出错的都是最高位,也就是帧内最后一个数据位,所以这是波特率误差累积导致的。
检查你两边通讯的波特率设置参数,检查你的串口波特率计算过程和结果,检查你的单片机的时钟精度。
Ⅶ 串口通讯,上位机每正常发送10次,单片机正常接收一次
不是你错了,而是串口通行本来就不稳定,要稳定就必须校验和判断是始末位,这样才能保证通信的可靠。这种情况很正常,你接收的越多错误率越高,高到你无法使用,这是我试验过的。