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