蓝桥杯单片机竞赛——串口通信程序设计

目录

一、竞赛板串口通信相关资料解析

2、单片机串口接收数据解析

3、返回指令格式

二、程序设计

1、串口1初始化程序

2、串口1中断服务函数设计

3、接收信息分析处理函数

(1)分析指令函数结构

(2)查询数据指令程序

(3)查询参数指令程序

(4)查询参数指令程序

程序包链接


一、竞赛板串口通信相关资料解析

串口通信在蓝桥杯单片机竞赛中出现的次数不多,串口通信对竞赛学生来说也相对难一些,好在竞赛中考点不是很多,由于竞赛板硬件已经固定,只有串口1可用于考核,且串口1也作为程序下载的端口,在竞赛中也只能和上位机PC进行通信演示。

本例以第十届全国决赛中通信部分为例。

1、指令解析

查询数据指令:”ST\r\n”

查询参数指令: ”PARA\r\n”

通信中的指令格式是采用字符形式,在设置串口调试助手也必须采用字符形式发送和接收,其中的 “\r\n”是回车换行的意思,在窗口中并不显示,因此在输入发送指令时必须加回车,然后再按“发送数据”按钮,如下图中的指令就是查询数据指令(ST+回车)。

2、单片机串口接收数据解析

单片机收到的信息都是8位二进制信息,但通信过程要求以字符形式通信,即ASC-II码形式。ASC-II码也是8位二进制编码,在C语言编程中,给字符加单引号就是其ASC-II编码,如A:‘A’。

对0~9数字的ASC-II码是在0~9数值基础上加 30h(或0x30)。

“\r\n”对应的十六进制信息是0dh、0ah(0x0d、0x0a)。

3、返回指令格式

发送:”ST\r\n”      返回:$20,24.32\r\n

发送:”PARA\r\n”   返回:#35,30\r\n

发送:其它\r\n     返回:ERROR\r\n

返回信息包含数据和字符,数据有整数和浮点数,浮点数也定义成整数,在发送时人为添加小数点的ASC-II码。

二、程序设计

1、串口1初始化程序

用STC-ISP的“串口波特率计算器”功能产生初始化程序,注意系统频率要设置为11.0592MHz,用定时器T18位自动重装模式产生波特率,8位数据,波特率按赛题要求设置即可,本例设为9600。程序如下:

void UartInit(void)        //9600bps@11.0592MHz

{

       PCON &= 0x7F;           //波特率不倍速

       SCON = 0x50;              //8位数据,可变波特率

       AUXR &= 0xBF;            //定时器时钟12T模式

       AUXR &= 0xFE;            //串口1选择定时器1为波特率发生器

       TMOD &= 0x0F;           //设置定时器模式

       TMOD |= 0x20;             //设置定时器模式

       TL1 = 0xFD;                 //设置定时初始值 9600

       TH1 = 0xFD;                 //设置定时重载值 9600

       ET1 = 0;                //禁止定时器中断

       TR1 = 1;                //定时器1开始计时

}

在主程序开头调用该函数,并开通串口中断。

2、串口1中断服务函数设计

本例接收、发送数据都采用中断方式。

接收部分,定义接收数组存放信息,定义接收指针变量、数据长度等信息,根据信息结尾特征“0x0d  0x0a”信息判断指令是否结束,结束转存信息即长度供其它程序处理。

发送部分,定义发送数组存放信息,定义发送指针、数据长度等信息,由主程序或其它程序启动发送,在中断函数控制其余信息的发送。程序如下:

unsigned char Rx_data[10];  //接收数组

unsigned char Rx_buff[10];  //接收缓冲

unsigned char Rx_id=0;      //接收存储指针

unsigned char Rx_Lenth;     //接收数据长度

bit  Analysis=0;  //分析标志

unsigned char Tx_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值