找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2252|回复: 8
打印 上一主题 下一主题
收起左侧

51单片机与PC串口通信 跪求大神指点

[复制链接]
跳转到指定楼层
楼主
ID:241675 发表于 2018-2-6 21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言编程:PC将很多数据(这些数据的内存大小 大于51单片机内存,例如一张处理后的彩色图片数据)发送给单片机,51单片机再将这些数据用P2^0脚(一个IO口)发给后续的电路编程。跪求大神指点
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:273292 发表于 2018-2-7 08:44 | 只看该作者
就是一个串口发送和接受的程序呗,只要准备好数据就行啊
回复

使用道具 举报

板凳
ID:241675 发表于 2018-2-7 18:15 | 只看该作者
xdl932365660 发表于 2018-2-7 08:44
就是一个串口发送和接受的程序呗,只要准备好数据就行啊

数据由上位机处理图片后的数据;
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P2_0=P2^0;
#define TXD P2_0
uchar output;
void UART_Init()  //串口初始化
{
        TMOD=0x22;
        SCON=0x50;
        PCON=0x00;
        TL1=TH1=0xfd;
  TL0=TH0=0xA0;
  TF0=0;       
        EA=1;
        TR1=1;
}

void Rec_data()//接收数据
{
        while(!RI);
        RI=0;
        output=SBUF;
}

void waitTF0()
{
        while(!TF0);
        TF0=0;
}

void sent_data()//发送数据
{
        uint j=8;
        TR0=1;
        while(j--)
        {
                TXD=(bit)(output&0x01);
    waitTF0();               
                output=output>>1;
        }
        TR0=0;
}
void main()  
{
        UART_Init();
        while(1)
        {
                Rec_data();
    sent_data();
        }
}

这是我写的,不过有错,串口输进去的数据和由P2^0口出来的数据不一样,而且这样可能误码率很大。
回复

使用道具 举报

地板
ID:282980 发表于 2018-2-8 01:07 | 只看该作者
串口编程。二进制
回复

使用道具 举报

5#
ID:282439 发表于 2018-2-8 08:20 | 只看该作者
Rec_data()如果与 sent_data()的速度不一致,那就有问题了。
回复

使用道具 举报

6#
ID:282743 发表于 2018-2-8 08:49 | 只看该作者
你单纯用定时来做IO口传输,肯定不行的,接收端都不知道从哪里开始是数据。可以模仿spi接口,加一根片选信号,再加一根线做时钟。
回复

使用道具 举报

7#
ID:241675 发表于 2018-2-8 16:57 | 只看该作者
arthuryu 发表于 2018-2-8 08:20
Rec_data()如果与 sent_data()的速度不一致,那就有问题了。

如果Rec_data()和sent_data()速度配置成一样,那问题来了,如果我把数据全部接收完再一一发送出去,单片机内存不够;如果接一个数据立马就发送出去,那将会造成百分之四五十的误码率。学习编程时间不长,思想还不够开阔,望您指点一下。
回复

使用道具 举报

8#
ID:241675 发表于 2018-2-8 17:00 | 只看该作者
Hoperliu 发表于 2018-2-8 01:07
串口编程。二进制

您能不能具体点,编程时间还不长,思路还没那么开阔。感谢感谢
回复

使用道具 举报

9#
ID:241675 发表于 2018-2-10 09:40 | 只看该作者
天天涨停 发表于 2018-2-8 08:49
你单纯用定时来做IO口传输,肯定不行的,接收端都不知道从哪里开始是数据。可以模仿spi接口,加一根片选信 ...

51单片机信号输出后接的使4066BD信号(调制用的),该芯片只需要接一根输入信号,SPI接口需要4根线,其3根都接不上
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表