蓝桥杯—串口通信(UART)

1、串口通信相关概念说明 

串口通信解释
通信方式 分为半双工、单工、全双工
数据传输 一位一位的接收或发送
波特率 每秒钟传输的位数
TH1和TL1 设置波特率参数
TMOD 设置定时器1的工作方式
SCON 串行接口控制寄存器
SBUF 串行接口数据发送与接收缓冲器

串行通信可以与外部建立起数据传输渠道,串口中断配置只需记住几个寄存器就行了,

初始化:SCON =0x50;  //串口配置成模式1 ;

TMOD |=0x20;//定时器1,方式2,8位自动重装

TH1=256-(unsigbedchar)(SYSTEMCLOK/BAUDRATE/384+0.5);//定时初值

ES=1;     //串口中断打开

TR1=1;      //启动定时器1

EA=1;  //总中断打开

        在51单片机中需要使用定时器1来产生波特率,因此,如果使用串口通信,则定时器1就不能做其他用途,在初始化串行接口模块的时候,除了要配置SCON寄存器之外,还有根据波特率参数设置定时器1的技术初值。

2、SCON与AUXR寄存器说明

    上述两幅图比较清楚的看出寄存器各个位的功能;按照设计的要求,为寄存器赋值不同的值;

3、相关例子

3.1 题目:接收一段字符串;

#include "reg52.h"  
#include "intrins.h"

#define BAUD	     2400 	  //波特率
#define SYSTEMCLOCK  11059200L //系统时钟频率

sfr AUXR  = 0x8e;    //新增辅助寄存器           
            
void uart_sendstring(unsigned char *str);
//延时函数delay();
void delay()
{
	unsigned char i, j;
    for(i=0;i<180;i++)
	for(j=0;j<200;j++);
}

void main(void)
{ 
    SCON = 0x50; //串口参数为模式1和允许接收          

    AUXR = 0x40;                
    TMOD = 0x00;               
    TL1 = (65536 - (SYSTEMCLOCK/4/BAUD)); 
    TH1 = (65536 - (SYSTEMCLOCK/4/BAUD))>>8;
    TR1 = 1;   //启动定时器1
	EA=1;	   //使能总中断
	ES=1;      //使能串口中断              
   
    while(1){
		uart_sendstring("Hello,World.\r\n");	//接受到的数据
		delay();
	}
}

void uart_sendstring(unsigned char *str)
{
    unsigned char *s;
    
    s = str;
    while(*s != '\0')
    {
        SBUF = *s;		 //将数据放进SBUF缓冲器
		while(TI == 0);  //等待发送数据完成
		TI = 0;			 //清除发送完成标志
        s++;
    }
}

3.2 USB—驱动程序

       1-在windows 7及以上操作系统中安装驱动程序,需以管理员模式运行驱动文件。
       2-驱动安装完成后,连接CT107D竞赛板 和 PC机,可在设备管理器中查看相应串口。
       3-驱动安装选择
                X86文件夹中为32位windows 系统驱动程序
                X64文件夹中为64位windows 系统驱动程序

       当安装完成后可以打开设置——设备——其它设备。

 3.3 串口调试助手

       设置波特率、串口:

        输出显示为:

发布了23 篇原创文章 · 获赞 14 · 访问量 4201

猜你喜欢

转载自blog.csdn.net/fanjufei123456/article/details/104286098