⑤串口发送数据

本文详细介绍了如何使用51单片机通过串口发送数据至电脑,并展示了完整的程序代码。文章首先解释了为何使用最小开发板进行实验的重要性,接着指导读者如何正确连接最小开发板,最后提供了详细的51单片机初始化及数据发送函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:单片机连接电脑,在串口工具上查看单片机发来的数据。接收数据下一章再教。
原料:最小开发板(晶振为115200),51单片机,usb转ttl

在这里插入图片描述

一、为什么要用最小开发版进行实验?
可能刚开始学单片机的你们,都是人手一个单片机学习板,烧录程序到单片机也是用单片机学习板。单片机最小开发板和单片机学习板的晶振不同(学习板的一般为120000),所以在TX发送数据的时候,会乱码。
记住:用学习板烧录完程序之后,将单片机插到最小开发板上,再连接电脑。

当然也有些同学们会直接用最小开发板来下载程序,那样就更好不过了,可以直接忽略这个问题。

二、最小开发板的连线(提示:单片机的P30和P31引脚分别为RX、TX)

在这里插入图片描述

三、程序
重点:
1在百度上仔细了解单片机初始化
2对指针和数组的了解

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

/* 定义I/O口专区  */
sbit led = P0^0;   
/* 定义I/O口专区 结束*/


/*自定义延时函数专区	 开始*/
void delay(int i)
{
while(i--);
}
/*延时函数专区结束*/


/*发送数据专函数区*/
void Send_Uart(uchar value)
{
	SBUF = value;//缓存
	while(TI==0); //每次发送完数据之后TI会自动置1	,即关闭发送功能
	TI = 0;//让TI清零,以便下次送数据
}
/*发送数据专函数区结束*/

/*发送数据函数*/
void send(uchar *puf)
{
	while(*puf != '\0')//指针结束符是\0,当*puf等于\0的时候,说明字符已经输入完成
	{
		Send_Uart(*puf);//每次接受一个字符
		puf++;
	}
	
	delay(1000);//让单片机反应过来
}

/*51单片机初始化*/
void Uart_Init()
{
	TMOD = 0x20;  //定时器1,工作方式2
	PCON = 0x00;  //不加倍率
	SCON = 0x50;  //串口工作方式1
	TH1 = 0xfd;
	TL1 = 0xfd;   //定时器工作方式2可以自重载,这里设置9600波特率
	TR1 = 1;      //启动定时器
	ES = 0;       //打开串口中断
	EA = 1;       //打开总中断 	
}
//一般这个都是配套使用的,要理解的话去百度,仔细了解每个值的意思。
/*51单片机初始化结束*/


void main()//这里弄个小灯闪烁是因为天调试使的时候可以知道代码是否在运行,也可以知道代码在哪一步停止,哪一步出错
{
	Uart_Init();/*51单片机初始化*/
	led = 0;
	send("您好同学们\r\n");// \n是换行
	delay(50000);
	send("欢迎加入佛科院物联网协会\r\n");//哎呀\r忘记是什么意思了。要学会自己百度哦
	led = 1;
	delay(50000);
	led = 0;
	send("你好熟知宇某\r\n");
	delay(50000);
	led = 1;
	

	while(1);
}



四、运行结果

在这里插入图片描述

通过STM32 USART1 完成下列串口通信功能。 串口通信配置:波特率设置为9600bps,8个数据位,1个停止位,无校验。 ① 设置途经地、目的地坐标 通过串口调试工具向设备发送一系列的途经地、目的地坐标,数字以英文逗号 分隔,并用括号包裹。 坐标为整数,X、Y坐标取值范围为0 – 999,坐标轴单位为cm。 举例: 发送: (48,92) 应答: Got it 说明:通过计算机向设备串口发送1组坐标(48,92),若设备处于“空闲”状态, 设备应答Got it, 否则应答Busy。只有一组坐标数据,表示该组数据为目的 地坐标,X坐标为48,Y坐标为92。 举例: 发送: (48,92,90,100,200,3,20,60) 应答: Got it 说明:通过计算机向设备串口发送4组坐标信息,若设备处于“空闲”状态,设 备应答Got it, 否则应答Busy。第一个途经地的X坐标为48,Y坐标为92, 目的地的X坐标为20,Y坐标为60。 ② 删除途经地(路径规划) 通过串口调试工具向设备发送{X,Y},表示删除一个途经地坐标。 举例: 发送: {200,3} 应答: Got it 说明:只要途经地坐标已经设置,且设备尚未经过该途经地点,均可以删除该 途经地坐标。若该途经地不存在或已经失效,返回Nonexistent。 ③ 设置场景 通过串口调试工具向设备发送[1…4],表示配置设备的工作场景。 3 / 8 举例: 发送: [1] 应答: Got it 说明:支持4种工作场景配置,在“运行”状态下,向设备发送[1],表示将设 备的工作场景配置为场景1,其它状态下,设备应答Device offline。 ④ 查询设备状态 通过串口调试工具向设备发送字符?,表示查询设备当前的状态。 举例: 发送: ? 应答: Idle 说明:向设备发送查询设备状态字符?,若设备处于“空闲”状态,设备应答 Idle,处于“等待”状态,设备应答Wait,“运行”状态应答Busy。 ⑤ 查询设备位置 通过串口调试工具向设备发送查询位置字符#,表示查询设备的当前位置。 举例: 发送: # 应答: (9,100) ** 所有串口通信指令和应答内容均为ASCII字符,若设备串口接收到未定义的 指令或错误设置,指令不生效,返回Error。 ** 严格按照上述格式的约定,设计设备的串口通信功能,区分大小写,勿添加 回车、换行等其它内容。
最新发布
03-18
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值