51单片机入门实验代码——串口通信并控制直流电机开关

实验一:用串口助手发送数据给单片机,后续用串口助手显示:

学习视频:21.14-串口通信实验--软件编程_哔哩哔哩_bilibili

#include "reg52.h" 

typedef unsigned int u16;
typedef unsigned char u8;

void uart_init(u8 baud)               // 串口初始化
{
	TMOD |= 0x20;
	SCON = 0x50;
	PCON = 0x80;
	TH1 = baud;
	TL1 = baud;
	ES  = 1;
	EA  = 1;
	TR1 = 1;
}


void main()
{
	uart_init(0xFA);
	while(1)
	{			
	
	}
}

void uart() interrupt 4 
{
	u8 rec_data = 0;
	RI = 0;
	rec_data = SBUF;
	SBUF = 	rec_data;
	while(!TI);
	TI = 0;
}

实验二:用串口助手发送数据给单片机,on 来控制电机运行,off 控制电机关闭:

#include "reg52.h" 
#include "string.h"                  // strncmp()比较函数要用到

typedef unsigned int u16;
typedef unsigned char u8;

sbit Motor=P1^0;                     // 电机引脚
u16 i=0;

void uart_init(u8 baud)              // 串口初始化,输入波特率
{
	TMOD |= 0x20;
	SCON = 0x50;
	PCON = 0x80;
	TH1 = baud;
	TL1 = baud;
	ES  = 1;
	EA  = 1;
	TR1 = 1;
}

u8 rec_data[6];                     // 保存串口收发数据
void main()
{
	uart_init(0xFA);                // 串口初始化
	while(1)
	{			
		if(strncmp(rec_data,"on",2)==0)                 // 比较前两位串口数据是否相同
		{			
			Motor=1;                                    // 打开电机
			i = 0;				
		}
		else if(strncmp(rec_data,"off",3)==0)           // 比较前三位串口数据是否相同
		{
			Motor=0;                                    // 关闭电机
			i = 0;				
		}
	}
}


void uart() interrupt 4
{
	
	RI = 0;                                            // 接收标志位清零
	
	if(SBUF!='\n')                                    
	{
		rec_data[i] = SBUF;                            // 将接收到的SBUF数据保存到数组中
		SBUF = 	rec_data[i];                           // 将数组中
		while(!TI);
		TI = 0;                                        // 发送标志位清零
		i++;                                           
	}
	else
	  i=0;

}

以上内容,学习参考所用。如有侵权,Call我必删。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值