❶ 关于51单片机如何接收串口的大量数据
这要看你这个大量有多大了,连续接收数据一般都是开辟一个缓冲区,而缓冲区是受内部寄存器空间限制的,最大256个(52单片机),还不能全用做缓冲区,得留下工作寄存器去,位地址也得留下一些,堆栈也得留下一些,所以这些因数都需要考虑到。
如果不开辟缓冲区得话,接收后就处理,可能有丢失一些数据的可能。
❷ 关于51单片机串口通信接收多位数据
是你串口中断接收数据溢出了。应该改为
if(RI)
{
receive[i]=SBUF;
i++; //此处的i需要定义为全局变量,不然你每次都会被清零,也就是数据永 远都是recive[0]=SBUF;
if(i>?) //此处填写你的数据最大长度,主程序中数据分析完自后要对i清零。
{
i=0;
}
}
if(TI)
{
TI=0;
........//发送程序
}
❸ 谁能帮我回答一个关于51单片机的问题: 简述串行口接收和发送数据的过程。
串行接口的接收和发送是对同一个地址(99H)两个物理控制的特殊寄存器SBUF进行读与写得,当向SBUF发写命令时,即向缓冲期SBUF装载并开始TXD引脚向外发送一帧数据,发送完便发送中断标志T1=1,在满足串行口接收中断标志位R1=0的条件下,置允许接收位REN=1就会接收一帧数据进行移位寄存器,并装载和接收到SBUF中,同时使R1=1当发读SBUF命令时(执行 MOVA SBUF)便由接收缓冲期SBUF的信息通过内部总线送到CPU。
❹ 51单片机串口接收问题
串口接收是双缓存相互交换接收的,你只要在发送一个字节的时序内就取走上次的数据那不会出错的。所以在这最好用中断来完成最好。
❺ 请问51单片机怎么通过串口接收字符串能解释一下代码吗谢谢了
看流程是什么了,如果等待14个字节接收完,那就是for循环,或者while等待。如果只是接收的话,就中断,然后去读数组,超过14个字节就处理。
❻ 51单片机串口数据接收问题
可以参考的仿真实例,单片机串口通讯,可以仿真试试。
❼ 51单片机的串口接收数据并分析
可惜我不能贴图
12864去电子城买时找专做显示屏的柜台买。
只要是专业生产LCD的公司,都会配有c语言的驱动程序(通常是51的程序),还有电子档LCD说明书
买来稍微修改就可以用啦
❽ 51单片机通过串口实现数据的发送与接收程序
串口收发,要有通信协议。也就是什么时候开始接收,接收到指令后,转发什么数据。这个要知道,才可以写。而且使用不同的51单片机,其内部寄存器配置是不同的。
一般来说,过程如下:
1,配置串口参数、波特率等,开启串口中断;
void Init_UART()
{
}
2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;
程序一般为:
void UART_ISR() interrupt x using y
{
;串口中断处理函数
}
x - 单片机的C51中断号
y - 指定使用的当前工作寄存器组号(0-3 PSW中的RS0,RS1组合)
3,主程序
int main(void)
{
Init_UART();
while(1)
{
;//数据发送函数
}
}
❾ 51单片机串口接收数据问题
每完成一次字节传输, RI都会被置为,此时就会进中断
也就是说,发送完0后, 程序会立刻跳到串口中断里面
一般的,我们会设置一个缓冲队列,来及时存储刚进来的数据,并设置标志位,来通知主函数串口缓冲区的状态
❿ 51单片机如何进行多字节串口接收!!!
看数据量和数据速度,如果数据量小,间隔大。那么完全可以单独接收和显示。如果是间隔时间小,可以在接收到开始标志之后,把需要的数据存在数组中,在收到结束标志之后慢慢解析数据包