51单片机的串联通信,代码不知道错在哪里

img

img


51单片机的串联通信,一共是这两个错误,但是不知道错在哪里,有没有xd指点一下

头文件在工程目录下吗?writecom在哪个文件里定义的?

它说你的writecom()函数不标准,得看原型和调用,在实现writecom()这个函数的.c文件对应的.h文件加上函数声明,再在你调用的地方include这个.h文件,另外检查一下函数定义、声明、调用传参个数、类型是否一致。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7654177
  • 你也可以参考下这篇文章:51单片机给串口调试助手发送随机数,指定命令停止或继续(下位机)
  • 除此之外, 这篇博客: 【51单片机】(三)数码管(原理,静态、动态显示)中的 一.数码管基础知识 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    四位一体数码管:
    在这里插入图片描述
    数码管电路原理:
    在这里插入图片描述
    与之有关的元件——“138译码器”:
    在这里插入图片描述
    ①想要点亮一个数码管并让其显示数字,我们需要操作两个端口,给两个端口不同的电平。我们的单片机数码管上端是共阴极的,所以发光的条件是上端赋予低电平,下端赋予高电平
    【通俗理解:上方LED端口选择要点亮哪一个数码管;下方abcdefg端口确定点亮什么数字。】

    (1)数码管上方有8个接口LED1~8,分别对应接到“译码器”的右输出端。译码器的左端连接单片机的3个P2口。(具体如何用三个P2口控制8个LED输出口,后面会单独讲解)
    (2)每一体数码管下方引出abcdefg和dp共八个接口,分别对应点亮一个LED长条(图中有标注)或是小数点,点亮几个就可以组合成一个数字。这八个接口接到74HC245缓冲器的右输出端,而74HC245的左端连接单片机的8个P0口。74HC245左右端一一对应(A0-B0,A1-B1……)。
    (缓冲器是用来提高单片机驱动能力的一个元件,VCC可以增强信号强度)

    比如我现在想让LED6数码管发出“3”的数字。那么,上方接口所赋予的电平情况应该是(从左往右)1101 1111;下方接口接通abcdg,应该是(从左往右)1111 0010。但是,

    我们在缓冲器左端传入的二进制必须从高位往低位读取。

    比如,现在从左往右端口是1111 0010,但是P0输入端输入的是0100 1111,也就是P0=0x4F。
    在这里插入图片描述 在这里插入图片描述
    为了方便,这里总结数码管段码表:
    在这里插入图片描述

    数码管静态显示时,只能让其中一个数码管发光。也就是说,在同一时间,上端接口只能保证有一个输入0。(具体原因见“译码器”工作方法)

    译码器工作方法:

    左端输入端输入的信号按CBA排序,组成一个三位的二进制数,再将这个二进制数转化为十进制数,这个十进制数对应右端输出端的下标,这个输出端将会输出低电平。

    比如输入:A : 0 、B : 1 、C : 1,排序为110,转十进制为6,Y6口(对应LED7)将会输出低电平,其他端口均输出高电平。



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^