gwzyou 发表于 2019-8-25 21:15:03

新手关于串口通信的问题,求教

我想让电脑串口发送数据,单片机识别此数字是几,然后显示到数码管上。
可是把接受到的数字定义为 intreceived 或 char received 都不行,怎么定义?还是存在其他问题
#include<reg52.h>
sbit a=P2^2;
sbit b=P2^3;
sbit c=P2^4;
typedef unsigned char u8;
typedef unsigned int u16;
u8 received;
u8 x;

u8 code smg[]={0x3f, 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,
                0x7d , 0x07 , 0x7f, 0x6f };
void play(u16 i)
{a=0;b=0;c=0;

P0=smg;
}

void chuankou()
{
TMOD=0X20;
TR1=1;
TH1=0XF3;
TL1=0XF3;
PCON=0X80;
EA=1;
ES=1;
SCON=0X50;
}

void chuan() interrupt 4
{
received=SBUF;
x=received;
RI=0;
play(x);
}


main()
{chuankou();
while(1);

}

神奇 发表于 2019-8-25 21:51:58

你的晶振是12MHz吧,使用的波特率为2400加倍至4800,所以电脑的串口助手一定要设置波特率为4800,这是前提,然后你要传的是数值,所以要传hex而不是txt,最后,play()函数的参数最好要用char或u8,别用u16。

gwzyou 发表于 2019-8-25 22:13:03

神奇 发表于 2019-8-25 21:51
你的晶振是12MHz吧,使用的波特率为2400加倍至4800,所以电脑的串口助手一定要设置波特率为4800,这是前提 ...

哦哦,其他都对 我用u8也不行,你原来做过类似的吗?

神奇 发表于 2019-8-25 22:15:39

你用的什么板子,上个图看看

gwzyou 发表于 2019-8-25 22:20:12

神奇 发表于 2019-8-25 22:15
你用的什么板子,上个图看看

普中的51,按理说我的程序应该对的吧,改成u16也不行
我听同学说用读数据的函数。。。

神奇 发表于 2019-8-25 22:29:09

普中有好几个型号,到底是哪一个

gwzyou 发表于 2019-8-25 22:37:09

神奇 发表于 2019-8-25 22:29
普中有好几个型号,到底是哪一个

HC6800-ES V2.0   80C51/89C51

gwzyou 发表于 2019-8-25 22:37:34

神奇 发表于 2019-8-25 22:29
普中有好几个型号,到底是哪一个

这个传图好麻烦

神奇 发表于 2019-8-25 22:44:26

不截个图,谁知道你电脑串口这边发的数据对了没有
页: [1]
查看完整版本: 新手关于串口通信的问题,求教