MCU單片機(jī)并行通訊的原理參考
發(fā)布時(shí)間:2017-07-03 責(zé)任編輯:susan
【導(dǎo)讀】某系統(tǒng)中使用了三路串行接口的傳感器(GPS、壓力和風(fēng)向)及三路模擬電流(4~20mA)接口的傳感器(濕度、溫度和水位)?,F(xiàn)需要將這些數(shù)據(jù)匯總后通過串口上傳給PC機(jī),并且要求每路信號數(shù)據(jù)都能夠?qū)崟r(shí)獨(dú)立的接收。
1. 問題的提出
某系統(tǒng)中使用了三路串行接口的傳感器(GPS、壓力和風(fēng)向)及三路模擬電流(4~20mA)接口的傳感器(濕度、溫度和水位)?,F(xiàn)需要將這些數(shù)據(jù)匯總后通過串口上傳給PC機(jī),并且要求每路信號數(shù)據(jù)都能夠?qū)崟r(shí)獨(dú)立的接收。
2.系統(tǒng)設(shè)計(jì)
經(jīng)過分析,我們分別使用一塊2051單片機(jī)接收各路串口傳感器的數(shù)據(jù),同時(shí)使用一塊多路高精度ADC對轉(zhuǎn)換成電壓的溫度等信號采樣,系統(tǒng)結(jié)構(gòu)圖如圖1所示。主從機(jī)之間的具體管腳連接參見圖2。
圖1.系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)中51單片機(jī)作為主機(jī)控制著整個(gè)系統(tǒng)的動(dòng)作并發(fā)起每次通信,每塊2051作為實(shí)時(shí)從傳感器獲取數(shù)據(jù)并在主機(jī)控制下完成通信。主機(jī)和各從機(jī)之間通過并口連接通信。主從機(jī)工作流程如下:
· 主機(jī)上電初始化后,通過P0口發(fā)送從機(jī)地址選中一路從機(jī)并等待應(yīng)答。
· 各從機(jī)上電初始化后接收傳感器串行數(shù)據(jù),然后通過P1口接收主機(jī)地址,當(dāng)?shù)刂放c自己相符后,調(diào)整245方向并由245向主機(jī)發(fā)送傳感器數(shù)據(jù),此過程由握手線負(fù)責(zé)控制。
· 從機(jī)發(fā)送完所有數(shù)據(jù)后再次將245方向改為接收,重新開始接收傳感器數(shù)據(jù)和主機(jī)發(fā)送的地址。
· 主機(jī)按照同樣方式接收所有各路2051數(shù)據(jù)。
· 串口數(shù)據(jù)接收完畢后,主機(jī)控制AD轉(zhuǎn)換并獲取三路信號數(shù)據(jù)。
· 主機(jī)將所有數(shù)據(jù)集合成規(guī)定格式后通過232發(fā)送給PC機(jī)。
主從機(jī)的工作流程圖如圖3所示:
圖2.主從機(jī)間的管腳連接
圖3.主從機(jī)工作流程圖
主要程序代碼分別如下,主機(jī)為:
……
sbit adc_busy=P3^2;
sbit adc_hben=P3^3;
sbit hand1=P2^0;//GPS
sbit hand2=P2^1;//PRESSURE
sbit hand3=P2^2;//WIND
sbit hand4=P2^3;//BAK1
uchar idata gps[96];
uchar idata pressure[9];
uchar idata wind[26];
uchar idata tem[6];
uchar idata hum[6];
uchar idata water_tem[7];
……
P1=0x01;
for(i=0;i《96;i++){
while(hand1!=0);
gps[i]=P1;
while(hand1==0);
}
sendbyte2pc(’#’);
sendbyte2pc(’#’);
sendbyte2pc(’1’);
sendbyte2pc(’ ’);
sendbyte2pc(’ ’);
send2pc(gps,96);
……
從機(jī)為:
……
sbit dir=P3^2;
sbit en=P3^3;
sbit hand=P3^4;
……
loop:
RI=0;i=0;
while(!RI);//wait for receiving ready
if (SBUF!=0x40)//data head
goto loop;
data_str[i]=0x40;i++;
RI=0;
while(!RI);//wait for receiving ready
if (SBUF!=0x40)//data head
goto loop;
data_str[i]=0x40;i++;
do{
RI=0;
while(!RI);
data_str[i]=SBUF;
i++;
}
while(i!=96);
dir=0;en=0;//enable data receiving P1=0xff;
for(i=0;i《100;i++){
if(P1==0x01)
goto send;
}
en=1;
goto loop;
send:
for(i=0;i《96;i++){
dir=1;
P1=data_str[i];
hand=0;
for(j=0;j《5;j++){;}
hand=1;
}
en=1;dir=0;
goto loop;
……
3.結(jié)語
本文中提出的并行通信方法具有電路結(jié)構(gòu)簡單清晰、程序容易實(shí)現(xiàn)等特點(diǎn),已經(jīng)在實(shí)際中證明可行。在調(diào)試過程中可以借用串口助手等軟件接收數(shù)據(jù)來驗(yàn)證通信的可靠性。
特別推薦
- 協(xié)同創(chuàng)新,助汽車行業(yè)邁向電氣化、自動(dòng)化和互聯(lián)化的未來
- 功率器件熱設(shè)計(jì)基礎(chǔ)(八)——利用瞬態(tài)熱阻計(jì)算二極管浪涌電流
- 用于模擬傳感器的回路供電(兩線)發(fā)射器
- 應(yīng)用于體外除顫器中的電容器
- 將“微型FPGA”集成到8位MCU,是種什么樣的體驗(yàn)?
- 能源、清潔科技和可持續(xù)發(fā)展的未來
- 博瑞集信推出高增益、內(nèi)匹配、單電源供電 | S、C波段驅(qū)動(dòng)放大器系列
技術(shù)文章更多>>
- 探索工業(yè)應(yīng)用中邊緣連接的未來
- 解構(gòu)數(shù)字化轉(zhuǎn)型:從策略到執(zhí)行的全面思考
- 意法半導(dǎo)體基金會:通過數(shù)字統(tǒng)一計(jì)劃彌合數(shù)字鴻溝
- 使用手持頻譜儀搭配高級軟件:精準(zhǔn)捕獲隱匿射頻信號
- 為什么超大規(guī)模數(shù)據(jù)中心要選用SiC MOSFET?
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
無線充電
無線監(jiān)控
無源濾波器
五金工具
物聯(lián)網(wǎng)
顯示模塊
顯微鏡結(jié)構(gòu)
線圈
線繞電位器
線繞電阻
線束
限位開關(guān)
陷波器
相變存儲器
消弧線圈
肖特基二極管
心率監(jiān)測儀
欣達(dá)旺
新唐科技
信號發(fā)生器
信號繼電器
行程開關(guān)
修復(fù)設(shè)備
蓄電池
旋轉(zhuǎn)開關(guān)
血壓計(jì)
血氧儀
壓電蜂鳴器
壓接連接器
壓控振蕩器