蓝桥杯单片机----串口通信的基本应用

        串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

        STC15F2K60S2系列单片机有两个高速异步串行通信端口,分别为UART1和串UART2,对于串口的初始化我们可以借助STC下载器软件里提供的代码进行参考编写,例:

        有了STC下载器为我们提供的串口初始化程序以后,剩下的就简单多了,在程序里编写相应的发送程序函数和接受程序函数就OK了。

设计内容:

        1.上位机发送一个十六进制数,开发板按照接收到的指令让相应LED位点亮。如上位机发送0X55,则L1、L3、L5、L7灯点亮,L2、L4、L6、L8灯熄灭。

        2.每按下一次S4按键,开发板向上位机发送字符串abc并自动切换到下一行。

#include <stc15f2k60s2.h>

#define uchar unsigned char   //定义无符号字符类型uchar
#define uint unsigned int     //定义无符号整型类型uint
	
uchar code dat[]={"abc\r\n"};

void delayms(int ms);          //延时函数
void allinit();                //初始化函数
void keyscan();                //独立按键函数
void UartInit(void);		//[email protected]
void urte_send(unsigned char *p,unsigned char inter);

void main()//主函数
{
	allinit();                  //初始化函数
	UartInit();                 //串口初始化
	EA = 1;ES = 1;              //打开总中断,打开串口中断
	while(1)
	{
		keyscan();                //独立按键函数
	}
}

void UartInit(void)		//[email protected]
{
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x40;		//定时器1时钟为Fosc,即1T
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//设定定时器1为16位自动重装方式
	TL1 = 0xC7;		//设定定时初值
	TH1 = 0xFE;		//设定定时初值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
}
void urte1() interrupt 4       //串口中断入口
{
	if(RI==1)                    
	{
		RI = 0;  
		P2=0X80;P0=SBUF;
	}
}
void urte_send(unsigned char *p,unsigned char inter) 
{
	unsigned char i;
	for(i=0;i<inter;i++)      //判断发送字符串长度
	{
		SBUF=*(p+i);            //需要发送的字符串保存到SBUF缓存器
		while(TI==0);           //判断串行发送数据结束否
		TI=0;                   //TI清零
	}
}
void keyscan()
{
	if(P33==0)  //判断P33是否等于0
	{
		delayms(5);    //延时5ms
		if(P33==0)     //再次判断P33是否等于0 
		{
			urte_send(dat,7); //发送定义字符串数据
		}
		while(!P33);   //如果按键不松开,则一直循环
	}
}
void delayms(int ms)//延时函数
{
	uint i,j;
	for(i=ms;i>0;i--)
		for(j=845;j>0;j--);
}
void allinit()//初始化函数
{
	P2=0XA0;P0=0X00;      //关闭蜂鸣器继电器
	P2=0X80;P0=0XFF;      //关闭所有LED灯
	
	P2=0XC0;P0=0XFF;      //选中所有数码管段选
	P2=0XFF;P0=0XFF;      //关闭所有数码管
}

 

Guess you like

Origin blog.csdn.net/qq_45385706/article/details/115678378