51单片机串口通信出现问题
发布网友
发布时间:2022-05-14 07:30
我来回答
共4个回答
热心网友
时间:2023-10-09 21:17
void main()
{
InitUart();
while(1) {
if(RI) {
RI = 0;
if(SBUF == 0) P0 = smg[0]; //通过数码管显示接收到的信息
if(SBUF == 1) P0 = smg[2]; //通过数码管显示接收到的信息
if(SBUF == 2) P0 = smg[12]; //通过数码管显示接收到的信息
if(SBUF == 3) P0 = smg[14]; //通过数码管显示接收到的信息
};
};
}
如果是ASCII码,加上引号即可:
if(SBUF == '0') P0 = smg[0]; //通过数码管显示接收到的信息
if(SBUF == '1') P0 = smg[2]; //通过数码管显示接收到的信息
if(SBUF == '2') P0 = smg[12]; //通过数码管显示接收到的信息
if(SBUF == '3') P0 = smg[14]; //通过数码管显示接收到的信息
热心网友
时间:2023-10-09 21:18
确定一下你波特率有没有算对!感觉TH1和TL1应该一下才对
一样
波特率没问题的话就把你字码表改一下就可以了
改成
发送0,数码管显示0
发送1,显示2
发送2,显示c;
发送3,显示e
程序如下,该如何该呢?
#include
unsigned char smg[]={
0xc0,0xa4,0x83,0xa1,0x99,
0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86};
//定义一个共阳极数码管字库
不过你的字库好像有问题0到f有16个数你的怎么只有15个
热心网友
时间:2023-10-09 21:18
再调试一下,收到串口助手数据之后再让它返回到电脑串口,看看是否是原始数据。目的是查一下是串口出了问题还是数码管编程有问题来自:求助得到的回答
热心网友
时间:2023-10-09 21:19
LZ采用T1的定时器方式是2为自动重装初值,很明显TH1和TL1这两个值不一致,波特率有问题
51单片机串口通信问题
建议检查:单片机出来的是TTL的,跟PC连接需要max232;txd和rxd是否接反;串口连接线是否有问题(非下载线);串口速率等参数是否一致,单片机晶振决定频率;公共地是否连接正常;连续发送数据给单片机,测单片机rxd口有无波形;单片机程序中设置断点看有否收到数据;...
51单片机串口通信乱码.闹不清什么问题
串口乱码,可能是波特率不匹配,或者误差较大所致。
51单片机串口通信收到乱码
单片机发送的是ASCII码,所以,串口助手接收时,要显示字符型,即十六进制显示的选项不要打勾。
51单片机串口通信收到乱码
若是收正确,送有问题;可以查下TXD这PIN的线路是否存在错误。若是有收到,但资料不正确;查下TH1,TL1的值是否正确。光看1、2、3的传送,应该没有错!还可以先送单个资料如1,看单笔传送是否正确。若是单个正确,那就是冲突问题了!
51单片机串口通信问题
一个一个问题回答:1、是在一个字节接收成功或一个字节发送成功以后进入中断程序(不过,一般在发送时是将中断关闭的,也就不进入中断了)。此时,定时器的作用就是为了设定串口速率,因为单片机的速度和串口的速度不是一个数量级的,所以一定要有个变速箱。2、数据的接收是由硬件控制的,其实,数据的...
51单片机串口通讯(模式1)问题:发送内容前半部分出错,后半部分正确。错...
ET1=1;此语句是罪魁祸首,定时器1已经作为串口波特率发生器了,就不能做其他用途了,此时定时必须禁止中断,而你程序中恰恰相反,来了句ET1=1;开启了定时器1中断,导致串口波特率发生混乱。那当然串口通信会有问题了,删掉ET1=1;该语句即可。
51单片机与计算机串口通信无法读出数据?
答:1 判断你的硬件有没有问题;方法是 用跳线讲串口的pin2 和pin3短接,用串口调试助手发送数据看调试助手能不 能自己收到,能就说明是单片机程序有问题 2 你检查你的波特率是生成程序是否正确, 中断和主程序用 1楼给你程序,我看了 没问题。这样就可以实现串口通信了 ...
两个51单片机485串口通信接收数据出错原因?大概发送三、五次会有一次...
1.有人在发送数据之前,先关闭了串口中断!等待发送完毕后,再打开串口中断。这样,在发送数据的等待期间内,如果收到了数据,将不能进入中断函数,也就不会保存的这个新收到的数据。这种处理方法,就会遗漏收到的数据。2.有人在发送数据之前,并没有关闭串口中断,当 TI = 1 时,是可以进入中断...
51单片机串口通信中断的问题
程序里面,既然开通了中断功能,那你就一直使用中断功能,为什么你还要使用查询功能呢?甚至有时把中断给禁止了,这里面容易出现问题哈。你不要使用查询功能,就一直使用中断,具体程序查看下面:include<reg52.h> define uint unsigned int define uchar unsigned char void delay(int z);char a,flag;vo...
51单片机与PC进行串口通信,用串口调试工具显示数据没数据。。。_百度知...
首先检测你的硬件电路。方法是,拔掉你的单片机,把RXD和TXD脚短路。然后在串口调试助手里面,选任意波特率发送任意字符,如果收到的是发送的内容,则能肯定MAX232和RS-232之间连接正确。接下来就要检查你的程序了 最容易出问题的就是波特率了。如果你用12M的晶振,那么,最好设置波特率为1200 或 2400。