打印
[单片机类]

【蓝桥杯单片机10】串行接口的进阶与实战应用

[复制链接]
6961|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ohy3686 于 2018-4-26 22:57 编辑

【蓝桥杯单片机10】串行接口的进阶与实战应用

广东职业技术学院 欧浩源

    串行接口作为51单片机的重要外设,编程操作并不复杂,但在实际的项目应用中,由于数据结构和通信规约的不同,其程序逻辑也有各种变化,不会像“【蓝桥杯单片机09】串行接口的基本原理与应用”中说的那么简易。
    一般情况下,上位机的命令可能不是一个字节,而是多个字节组成的命令帧,有的长度固定,有的长度变化;而且要求返回的数据可能也不是一个字节,可能是一个数组,也有可能是一个字符串等。在蓝桥杯的比赛中,也不可能让你只是收发一个字节而已,因此,在串口这一个单元中,必须多加一个强化环境,掌握多字节的数据帧收发应用。
    具体的实现有不同的思路,主要还是通过实战案例来理解和强化。

1、单元实训题目


2、程序设计思路与框架
    首先要认真阅读通信规约,在阅读的过程中,头脑中就应该逐渐将文字信息抽象成为数据结构,该定义多少变量,需要多大的数组,程序大致要安排那几个函数,怎么把它们搭建成程序框架...在动手敲代码之前都应该有一个大概而清晰的轮廓。
    就本题来讲,通信规约中明确指导命令帧的长度为4个字节,而且有固定的帧头和帧尾,一个用于接收数据的4字节数组是肯定需要的。什么时候才是命令帧接收完成呢,这就需要一个全局的标志来通知主函数了。
    当然你还需要,串口初始化函数、字符串发送函数、串口数据接收函数、和命名解析执行函数。
    因此,你可以得到下面的程序框架结构:
   

3、关键代码的实现
    教程到了这个阶段,如果你细心观察的话,你就会发现很多代码块是可以重用的,直接拷贝来,一个字母都不用该就能用。例如,串口初始化函数Init_Uart()和单字节发送函数SendByte()就不需要修改,拷过来就能用。
    其他的代码实现起来也不难,几个关键的代码实现,大家可以参考:
    <1> 字符串发送函数
   
    <2> 串口数据接收函数
   
    <3> 命令帧解析执行函数
   

4、小结
     精彩陆续有来。
评论
100029 2024-11-2 13:45 回复TA
代码有问题吧 
jiangzehuan 2022-9-16 22:50 回复TA
感谢老师,真不容易,我悟了! 
Edwardyue 2018-3-24 10:01 回复TA
刚开始学,第一次看到这种串口接收数据方式,学到了 

相关帖子

沙发
白筝黑尾| | 2019-2-18 20:59 | 只看该作者

使用特权

评论回复
板凳
daage| | 2019-3-19 10:44 | 只看该作者
精彩

使用特权

评论回复
地板
ko123ok| | 2024-2-22 14:36 | 只看该作者
点赞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:广东职业技术学院 欧浩源(ohy3686@foxmail.com)    [Zigbee技术&物联网应用] 群:168225322    [技术交流微信]:gzyohy (暗号:宝塔镇河妖)

322

主题

899

帖子

3030

粉丝