【蓝桥杯串口万能代码模板】教你应对所有蓝桥杯串口问题 ...

打印 上一主题 下一主题

主题 985|帖子 985|积分 2955

【蓝桥杯串口万能代码模板】教你应对所有蓝桥杯串口问题

资料

为了便于诸位获得代码模板,将代码放在文章前面。
链接:https://pan.quark.cn/s/a50306ab6f4b
提取码:Ch3g

背景

​ 蓝桥杯串口是国赛的一个考点,对于大部家世一次到场蓝桥杯的同砚有较大难度,总是出现吸收、发送乱码的问题。本文旨在从代码角度教会串口,对串口的根本知识不作讲解。
​ 该代码模板是我客岁到场蓝桥杯时看了很多文章和博客写出来的,自以为具有较强的万能性和灵活性,仅改变一处即可应对各种差别环境。如代码或逻辑有疏忽,还请诸位不吝见教。
资料

为了便于诸位获得代码模板,将代码放在文章前面。
链接:https://pan.quark.cn/s/a50306ab6f4b
提取码:Ch3g
前提工作


  • 串口通讯是一种两台设备传递信息的一种方式,对两台设备的通讯速率有着极高的要求,即波特率。这里选择波特率为 9600 Baud。
  • 由于蓝桥杯比赛体系频率大多采取12MHz,后续也以此频率作为演示
波特率的产生


  • 打开STC-ISP,这里可以主动天生串口波特率代码,按照下图进行配置。

  • 如果芯片采取的是AT89C52,还需要额外对辅助寄存器AUXR进行配置
    1. sfr AUXR = 0x8e;
    复制代码
  • 如果定时器总使能停止没有在其他地方打开,那么还需要在波特率产生代码末端加上EA = 1;
发送方式


  • 串口的发送的前提需要用到以下两个函数代码;
  1. void SendByte(float send_data)
  2. {
  3.        
  4.         SBUF = send_data;
  5.         while(TI == 0);
  6.         TI = 0;
  7. }
  8. char putchar(char c)
  9. {
  10.         SendByte(c);
  11.         return c;
  12. }
复制代码

  • SendByte()是串口发送数据的重要函数;
  • putchar()函数是对本来"stdio.h"库里的putchar()函数得到重定义,是搭建万能模板必备的代码块。至于为什么要有这个,就没必要懂了;
  • 万能发送模板:有了以上两个函数的支持,我们可以直接调用printf()函数进行数据的发送,该函数可以或许应对所有的发送环境(注意是printf而不是sprintf),以第十四届模拟题II的发送要求为例:
    1. printf("Voltage:%.2fV",UART_U);
    2. printf("TEMP:%.1f℃",UART_TEMP);
    复制代码
    注:printf()函数是C语言库里的一个函数,常用于打印数据使其可视化,详细用法请自行百度~
  • 在串口助手界面需要完成以下配置

吸收方式


  • 串口的吸收是在串口停止里进行的。串口1的停止优先级为4
  • 以吸收到符号A为例,串口停止内的代码按照如下模板来写
    1. void UART() interrupt 4
    2. {
    3.         if(RI==1)
    4.         {
    5.                 RI = 0;
    6.                 PC = SBUF;
    7.                 if(PC =='A')
    8.                 {
    9.                         //此处写接收到符号A的处理
    10.                 }
    11.         }
    12. }
    复制代码
测试

​ 将上述所有代码语句组合起来,构成链接里的工程文件。
​ 测试要求:PC端发送字符A,单片机向PC端发送UART_U和UART_TEMP的值(在其他代码中,这两个参数可以作为读取R2的电压值和DS18B20的温度值),UART_U取小数点后两位,UART_TEMP取小数点后1位。
​ 测试结果如下,测试成功。

注:代码中,UART_U和UART_TEMP均为 float 浮点型变量,如果其他类型变量(如unsigned char),记得修改printf()函数里的变量类型。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表