说明:单片机连接电脑,在串口工具上查看单片机发来的数据。接收数据下一章再教。
原料:最小开发板(晶振为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);
}



四、运行结果
⑤串口发送数据

相关文章: