导航:首页 > 操作系统 > 单片机串口发送数据

单片机串口发送数据

发布时间:2022-04-14 10:08:41

A. 单片机怎样通过串口向计算机发送数据

单片机怎样通过串口向计算机发送数据:
单片机可以实现与计算机的发送和接收。首先,要正确配置单片机的串口,包括波特率、使用时钟源、COM口、数据位位数、奇偶校验位、停止位位数等,同时要保证计算机的配置和单片机的一致。然后,把要发送的数据送到发送缓存,只能一个字节一个字节的发送。启动单片机发送,就可以完成发送操作。如果打开接收中断,计算机发送数据过来的时候,就会进入到接收中断,单片机进入接收数据状态。
要注意的是,单片机是TTL电平,而计算机是232电平,所以在硬件电路连接上要有电平转换芯片,常用的有MAX232等。

B. C51单片机发送串口数据到电脑

#include <reg52.h>

sbit RELAY = P1^2; //定义继电器:接P1^1
unsigned char command[3],ptr=0,dat;
void delay(unsigned int cnt)
{
while(--cnt);
}
main()
{
TMOD=0x20; //
TH1=0xfd;
TL1=0xfd;
SM0=0;
SM1=1;
REN=1; //控制RI
TR1=1;
/*以上为定时器设置和波特率设置,这样的话,通过串口调试助手发送数据(随意数据)通过改变RI(串口接收标志来实现继电器的吸合与打开 */

while(1)
{
if(RI==1)
{
RI=0;
command[ptr]=SBUF;
ptr++;
if(ptr==2)
{
ptr=0;
if((command[0]=='0')&&(command[1]=='0')&&(command[2]=='7'))RELAY=0;
if((command[0]=='0')&&(command[1]=='0')&&(command[2]=='8'))RELAY=1;
}
}
}
}

C. 编程实现stm32单片机串口的数据收发

int main(void)
{
u16 t;
u16 len;
u16 times=0;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
KEY_Init(); //初始化与按键连接的硬件接口
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("\r\n您发送的消息为:\r\n\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf("\r\n\r\n");//插入换行
USART_RX_STA=0;
}
}
}

D. 单片机串口通信,发送数据感觉不对,请大佬帮看看

你的主循环转得太快,前一个数据还没发送完就把SBUF又填充新数值,这样很容易破坏发送的帧。
既然你不开中断,就应当采用查询工作方式,查询TI标志位确认发送完成之后再进行下一步工作。

E. 单片机串口发送数组,程序如下,请帮忙修改!!!

二进制数组不像字符串一样有结束标志,不能直接用发送数组的函数发送,

作如下修改就可以了(仿真输出结果见代码后面的图):

#include<reg52.h>//注意:11.0592M晶振波特率9600
sbitkey1=P2^0;
sbitkey2=P2^1;
unsignedcharcodeJ50_2[]={0X00,0X00,0XFF,0X09,0X09,0XFF,0XFF,0X4B,0X22,0X01,0X03,0X01,0X0A,0X0A,0X7C,0X00};//如何发送出去
unsignedcharcodeJ50_3[]={0X00,0X00,0XFF,0X09,0X09,0XFF,0XFF,0XAC,0X22,0X02,0X03,0X01,0X0A,0X0A,0X1A,0X00};//如何发送出去
unsignedcharcodeString1[]={"Test1Pass! "};
unsignedcharcodeString2[]={"Test2Pass! "};
/**************************************************************
函数功能:延时若干毫秒
**************************************************************/
voiddelayms(unsignedintms)
{
unsignedinti;
while(ms--)
for(i=0;i<600;i++);
}
/*****************************************************
函数功能:向PC发送一个字节数据
***************************************************/
voidSendByte(unsignedchardat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
/*****************************************************
函数功能:向PC发字符串
***************************************************/
voidSendStr(unsignedchar*str)//第2种发送字符串函数
{
while(*str!=0)
{
SendByte(*str);
str++;
delayms(1);//延时Nms
}
}
/*****************************************************
函数功能:向串口发n个字节数据
***************************************************/
voidSendnBytes(unsignedchar*str,unsignedintn)//发送n个字节函数
{
while(n--!=0)
{
SendByte(*str);
str++;
delayms(1);//延时Nms
}
}
/*****************************************************
函数功能:串口初始化
***************************************************/
voidUartInit(void)
{
SCON=0x50;//串口工作方式1,8位UART,波特率可变
TH2=0xFF;
TL2=0xFD;//波特率:115200晶振=11.0592MHz
RCAP2H=0xFF;
RCAP2L=0xFD;//16位自动再装入值
TCLK=1;
RCLK=1;
C_T2=0;
EXEN2=0;//波特率发生器工作方式
TR2=1;//定时器2开始
}
/*****************************************************
函数功能:主函数
***************************************************/
voidmain(void)
{
UartInit();
SendStr("Howareyou! ");
while(1)
{
//SendStr(J50_2);//发送不成功
SendnBytes(J50_2,sizeof(J50_2));//发送成功
if(key1==0)
{
P1=0xFE;
SendStr(String1);//发送数据
delayms(10);//10ms发送一次数据
P1=0XFF;
delayms(10);
}
//SendStr(J50_3);//发送不成功
SendnBytes(J50_3,sizeof(J50_3));//发送成功
if(key2==0)
{
P1=0xFD;
SendStr(String2);//发送数据
delayms(10);//10ms发送一次数据
P1=0XFF;
delayms(10);
}
}
}

F. 单片机串口怎么发送数字给电脑

需要一个串口驱动程序啊,就像你写其他程序一样,然后使用串口助手这个软件就能实现单片机发送数据到PC的串口助手软件里了

G. 单片机串口c程序发送数据

从你出现的问题看,你应该是发的0,1,2,3……255的数,而不是它们对应的ASCII的值。比如你要发送在串口调试工具中显示0,应该发送0的ASCII值;假设你的串口发送一字节的函数为:sendbyte(unsigned
char
n);
则发送函数可以这样写:
void
send(void)
{
unsigned
char
i;
for
(i=0;i<256;i++)
{
sendbyte(n/100+'0');
sendbyte(n%100/10+'0');
sendbyte(n%100%10+'0');
}
}
去掉16进制显示,就能看到0-255的显示了

H. 单片机怎么通过串口发送一串数据

通过SBUF! 一块是接受,一块发送!还要设置工作方式。

单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

I. 单片机串口发送数据包的问题

我来回答你的问题:
1。串口,即串行通迅(异步心通迅)本来就是一位一位的将数据串行发出,所以你的数据(10字节)肯定是一位一位的发,发完第一字--》第二字节--》。。。第10字节。注意发送某一字节时不能停顿,当然串口会自动完成,不需要人工干扰;发完一个字节后中途肯定是可以停顿的,否则我1ms不发送串口就不工作???肯定不会的了。
2。接收端用状态机来做最方便,编者顺手,读者称心。收到一字节后,自动进入中断,定义一下step来指示接收到了哪一个“阶段”,如:地址检验阶段,然后step++,退出中的,下次再进中断时,就进入了下一个“阶段”了,就是你的“数据长度”,然后step++,退出中断(如果数据如:ID,址址不对就直接返回STEP=0)。。。。。直到接收完整个数据帧;接收完一字节数据肯定是要退出中断去做其它事情的,要不就成了轮循的接收方式,而不叫中断方式了;
以下为我用PIC的USART做的一段状态机接收接收程序:
ISR_USART_RX;串口接收中断
MOVFW
RX_STEP
;the
counter
of
RX
ADDWF
PCL,F
GOTO
ISR_RX_PREAMBLE
;同步头检验
GOTO
ISR_RX_ID_H
;ID_H检验,不对就置RX_STEP=0
GOTO
ISR_RX_ID_L
;ID_L检验,不对就置RX_STEP=0
GOTO
ISR_RX_DATA
;数据
GOTO
ISR_RX_CHECK
;检验
希望楼主能满意我的回答。

阅读全文

与单片机串口发送数据相关的资料

热点内容
我的世界如何编程 浏览:84
vue反编译代码有问题 浏览:948
linuxshell字符串连接字符串 浏览:51
androidviewpager刷新 浏览:438
python编程计算平均分 浏览:678
加密数字货币市值查询 浏览:692
时尚商圈app怎么样 浏览:584
stacklesspython教程 浏览:138
用命令行禁用135端口 浏览:212
linux防火墙编程 浏览:627
pdf阅读器删除 浏览:979
考研人如何缓解压力 浏览:822
买电暖壶哪个app便宜 浏览:505
洛克王国忘记服务器了怎么办 浏览:782
为什么cf登录服务器没反应 浏览:695
服务器如何获取文件列表 浏览:672
creo五轴编程光盘 浏览:14
苹果app网络验证在哪里 浏览:14
博科清空命令 浏览:384
简爱英文pdf 浏览:376