如何用51串口接受和发送数据,具体程序。

如题所述

第1个回答  推荐于2017-09-05
给你一个我自己写的串口通信程序,上层软件用串口调试助手即可,单片机软件如下:
#include <reg52.h>
#define uchar unsigned char
sbit k5=P2^1;
uchar zf[]={'0','1','2','3','4','5','6','3','7','8','9','a','b','c','d','e','f',0x00};
uchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//字符显示器数组须与上面的字符内容一一对应
delay1ms(uchar);
main()
{
uchar temp,i;
TMOD=0x02; //T1方式2
TH1=TL1=0xfd; //赋初值决定波特率9600
SCON=0x50; //串口工作于方式1即10位(1+8+1)
PCON=0x00; //不加倍
TR1=1; //启动
if(RI==1)
{

temp=SBUF;
RI=0;

for(i=0;i<16;i++)
{
if(zf[i]=temp)
{
P0=dis[i];
delay1ms(100);
}

}

}
if(k5==0)
{
delay1ms(20);
if(k5==0)
{
i=0;
while(zf[i]!=0x00)
{
SBUF=zf[i];
if(TI==1)
TI=0;
i++;

}

}

}

}
delay1ms(uchar j)
{
uchar i;
while(j--)
{
for(i=0;i<125;i++)
{;}
}
}本回答被提问者采纳

如何用51串口接受和发送数据,具体程序。
给你一个我自己写的串口通信程序,上层软件用串口调试助手即可,单片机软件如下:include <reg52.h> define uchar unsigned char sbit k5=P2^1;uchar zf[]={'0','1','2','3','4','5','6','3','7','8','9','a','b','c','d','e','f',0x00};uchar code dis[]={0xc0...

51单片机通过串口实现数据的发送与接收程序
1,配置串口参数、波特率等,开启串口中断;void Init_UART(){ } 2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;程序一般为:void UART_ISR() interrupt x using y { ;串口中断处理函数 } x - 单片机的C51中断号 y - 指定使用的当前工作寄存器组号(0-3 PSW中...

51如何让串口定时发送但不影响接收数据
具体步骤如下:1.初始化串口:配置串口的波特率、数据位、停止位等参数,使串口能够正常发送和接收数据。2.配置定时器:使用定时器0或定时器1,根据需要设置定时时间,例如每隔1秒发送一次数据。3.设置中断:将定时器中断设置为串口发送中断,当定时器溢出时,触发串口发送中断,实现定时发送数据。4.编写中...

C语言51单片机串口通信程序求教
串口通讯,首先设置波特率,再设置串口模式,之后就可以收发数据了。比如:init(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SCON=0x50;}send(unsigned char dat){SBUF=dat;while(TI==0);TI==0;}unsigned char recive(){unsigned char dd;if(RI) { dd=SBUF; RI=0; } return(...

51单片机串口发送数据
程序采用了查询式发送,for(i=0;i<6;i++) {SendChar(askconfig[i]); },共发送了6个字符。再去查询收到否。这种方法,就是有问题的,发送6个字符时,就可能收到了好几个字符,而没有及时保存,完全可能丢失信息。应该采用中断方式接收;发送,也可以用查询,也可以用中断。方法弄清楚了,程...

怎么用51单片机控制GPRS模块接发数据
要通过51单片机控制GPRS模块接发数据,首先需要通过串口通信配置好单片机与GPRS模块的连接,然后编写相应的代码实现数据的发送和接收。在硬件方面,51单片机通常通过串口(如UART)与GPRS模块连接。需要将单片机的TX引脚连接到GPRS模块的RX引脚,RX引脚连接到单片机的TX引脚。同时,为了确保电源稳定,建议为GPRS...

求一个51单片机程序,通过串口发送“hello,I'm STC89C52!”一行字符...
1;EA = 1;\/\/ while(1){ for(i = 0; i < 17; i++){ UART_Send_Byte(TABLE[i]);} UART_Send_Byte('\\n');Delay_1ms(1000);} } \/\/ 向串口发送一个字节数据 void UART_Send_Byte(unsigned char Byte){ ES = 0;TI = 0;SBUF = Byte;while(!TI);TI = 0;ES = 1;} ...

怎么用51单片机向串口调试助手发送字符串?有程序解释更好啊,求解...
ES=1; \/\/启动串口中断 } } void main(){ P1=0xff;uart_init() ;while(1){ } \/\/ 串行中断程序 void commIntProc() interrupt 4 { if(TI){ TI = 0;if(sendPosi < sendCount) \/\/判断是否发送完成 { sendPosi++; \/\/发送一次计数器加一 SBUF = sendBuf[sendPosi];\/\/启动发送 ...

一道51单片机的C语言程序,关于串口通讯的,很简单...
void init(){ } \/\/设置工作方式,这个懂。void main(){ init(); \/\/系统初始化,你懂的 while(1) \/\/主循环部分,一直运行 { if(flag==1) \/\/等待flag标志位置位,当接收到数据的时候在串口接收中断中置位 { ES=0; \/\/禁止串口中断,但是注意发送中断标志位的置位仍然正常 for...

51单片机串行口发送数据到上位机(1)
51单片机的串行口结构主要包括两个独立的数据缓冲寄存器(SBUF)、发送控制器、接受控制器、输入移位寄存器以及控制门电路。发送数据时,数据首先被写入SBUF寄存器,随后通过转换为串行数据并加上起始位和停止位后,通过TXD引脚发送出去。接收数据时,RXD引脚接收到的信号通过移位寄存器被逐位读入SBUF,最终在...

相似回答