共工科技

串口只能传输01(串口只能传输字符串吗)

本篇目录:

单片机串口发送的数据一直是00;求解

你这是主程序就不对,那是无条件发送的,所以开机后就不断地发。

Ti);时等待发送完成时也会触发中断函数,此时sbuf里面为空,数据之前被取走了。

串口只能传输01(串口只能传输字符串吗)-图1

提问的时候选择代码格式为C,然后直接贴代码就行。一堆图片根本没法看。

那说明你的串口没有配置成功,如果单片机的串口配置成功后,默认的管脚电平为高电平,如果你的管脚为低电平,串口是作为数据来接收的,所以收到0,再仔细查看你的串口初始化程序,以及你的电路是否虚焊,是否电路连接有问题。

串口是RS232还是RS485的,查一下程序,是程序发送的0吧,不然不会自己发0的。

串口只能传输01(串口只能传输字符串吗)-图2

51单片机通过串口只能发送数据不能接受数据,仿真都是好的

你这是仿真还是实物开发板?这串口通信是单片机与电脑吗?电脑上只能用串口调试助手,才能发送0x01,那接收的数据为什么用0x01?换个字母或数字的ASCII码,电脑上或仿真才方便发送。

实际上你的发送也没成功。还是你的串口两端引脚没接好。2--3 3-2 5-5。

首先,你的程序没有问题,不能接收数据,从以下几个原因找:这是在实验板上做测试吗,那看一下实验板上单片机的晶振频率是不是10592MHz,必须是这个频率,否则就无法接收数据。

串口只能传输01(串口只能传输字符串吗)-图3

TMOD没有设置,定时器1的工作方式没有确定,是按照方式0运行的,不是方式2的自动重装模式,波特率对不上,数据不会正确。另外,REN(SCON.4)应该为1,否则不允许接收,自然收不到数了。

SBUF0 = temp; //将接收到数据送出.while(TI0 == 0); //发送标志位是否产生.TI0 = 0; //清发送标志位 ……上述程序,会死机的。

51单片机串口通讯总是发送00

应该会在上电时随机发送一个数据,这是由于上电时状态不太稳定造成的,解决办法是程序开始加一个几十毫秒的延时。

第二:如果串口数据是必须接收的,那么1楼和2楼所说的就不可以了,其实正常的处理中断就可以了,只要注意中断的优先级就好。

串口是RS232还是RS485的,查一下程序,是程序发送的0吧,不然不会自己发0的。

Ti);时等待发送完成时也会触发中断函数,此时sbuf里面为空,数据之前被取走了。

atmege48单片机串口发送0x01,电脑接收到的却是0x7f是什么原因?

1、TTL输入,低于2V就认为是0,高于0就认为是1。当232的TX和RX连接在TTL的TX和RX上的时候会出现这个问题。

2、出现这个问题,可能是波特率不一致,或者波特率误差等原因造成。

3、SBUF0 = temp; //将接收到数据送出.while(TI0 == 0); //发送标志位是否产生.TI0 = 0; //清发送标志位 ……上述程序,会死机的。

单片机串口发0x01,为什么PC端接收到的确实0x06呢?

1、串口232:逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V。TTL输入,低于2V就认为是0,高于0就认为是1。当232的TX和RX连接在TTL的TX和RX上的时候会出现这个问题。

2、你这是仿真还是实物开发板?这串口通信是单片机与电脑吗?电脑上只能用串口调试助手,才能发送0x01,那接收的数据为什么用0x01?换个字母或数字的ASCII码,电脑上或仿真才方便发送。

3、接收不了数据有几个方面的原因:第一:你的必须是RS232接口,也就是你的接口芯片与接口是否一致。第二:你的晶振与波特率是否对得上,看你的软件应该是10592M的晶振的配置。9600BPS的。看你的晶振是否对得上。

4、这是晶振的误差造成的,校准波特率后才能正常通信。

5、第一步,确认单片机与PC电脑的波特率相同,单片机的波特率通过示波器可以得知,你不断的发送0X55或0XAA。这样子,很明显的看到010101这样的数据。通过测量脉冲的时间你可以计算出单片机的波特率。

到此,以上就是小编对于串口只能传输字符串吗的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。

分享:
扫描分享到社交APP
上一篇
下一篇