標(biāo)題: 51單片機(jī)與PC串口通信 跪求大神指點(diǎn) [打印本頁(yè)]

作者: 東東1995    時(shí)間: 2018-2-6 21:26
標(biāo)題: 51單片機(jī)與PC串口通信 跪求大神指點(diǎn)
C語(yǔ)言編程:PC將很多數(shù)據(jù)(這些數(shù)據(jù)的內(nèi)存大小 大于51單片機(jī)內(nèi)存,例如一張?zhí)幚砗蟮牟噬珗D片數(shù)據(jù))發(fā)送給單片機(jī),51單片機(jī)再將這些數(shù)據(jù)用P2^0腳(一個(gè)IO口)發(fā)給后續(xù)的電路編程。跪求大神指點(diǎn)

作者: xdl932365660    時(shí)間: 2018-2-7 08:44
就是一個(gè)串口發(fā)送和接受的程序唄,只要準(zhǔn)備好數(shù)據(jù)就行啊
作者: 東東1995    時(shí)間: 2018-2-7 18:15
xdl932365660 發(fā)表于 2018-2-7 08:44
就是一個(gè)串口發(fā)送和接受的程序唄,只要準(zhǔn)備好數(shù)據(jù)就行啊

數(shù)據(jù)由上位機(jī)處理圖片后的數(shù)據(jù);
#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()//接收數(shù)據(jù)
{
        while(!RI);
        RI=0;
        output=SBUF;
}

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

void sent_data()//發(fā)送數(shù)據(jù)
{
        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();
        }
}

這是我寫(xiě)的,不過(guò)有錯(cuò),串口輸進(jìn)去的數(shù)據(jù)和由P2^0口出來(lái)的數(shù)據(jù)不一樣,而且這樣可能誤碼率很大。
作者: Hoperliu    時(shí)間: 2018-2-8 01:07
串口編程。二進(jìn)制
作者: arthuryu    時(shí)間: 2018-2-8 08:20
Rec_data()如果與 sent_data()的速度不一致,那就有問(wèn)題了。
作者: 天天漲停    時(shí)間: 2018-2-8 08:49
你單純用定時(shí)來(lái)做IO口傳輸,肯定不行的,接收端都不知道從哪里開(kāi)始是數(shù)據(jù)?梢阅7聅pi接口,加一根片選信號(hào),再加一根線做時(shí)鐘。
作者: 東東1995    時(shí)間: 2018-2-8 16:57
arthuryu 發(fā)表于 2018-2-8 08:20
Rec_data()如果與 sent_data()的速度不一致,那就有問(wèn)題了。

如果Rec_data()和sent_data()速度配置成一樣,那問(wèn)題來(lái)了,如果我把數(shù)據(jù)全部接收完再一一發(fā)送出去,單片機(jī)內(nèi)存不夠;如果接一個(gè)數(shù)據(jù)立馬就發(fā)送出去,那將會(huì)造成百分之四五十的誤碼率。學(xué)習(xí)編程時(shí)間不長(zhǎng),思想還不夠開(kāi)闊,望您指點(diǎn)一下。
作者: 東東1995    時(shí)間: 2018-2-8 17:00
Hoperliu 發(fā)表于 2018-2-8 01:07
串口編程。二進(jìn)制

您能不能具體點(diǎn),編程時(shí)間還不長(zhǎng),思路還沒(méi)那么開(kāi)闊。感謝感謝
作者: 東東1995    時(shí)間: 2018-2-10 09:40
天天漲停 發(fā)表于 2018-2-8 08:49
你單純用定時(shí)來(lái)做IO口傳輸,肯定不行的,接收端都不知道從哪里開(kāi)始是數(shù)據(jù)?梢阅7聅pi接口,加一根片選信 ...

51單片機(jī)信號(hào)輸出后接的使4066BD信號(hào)(調(diào)制用的),該芯片只需要接一根輸入信號(hào),SPI接口需要4根線,其3根都接不上




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1