『壹』 兩個單片機之間的無線傳輸
選擇通訊模塊完成傳輸
1:用rf905進行數據傳輸,兩塊單片機都通過串口將數據發送給905,然後通過905發送出去。
2:用PT2262發也可以,如果你不考慮成本的話,你可以用51的一個埠控制一個繼電器當按鍵用
建議nrf24l01這個模塊,spi協議,程序不是很難寫
『貳』 單片機與單片機之間怎麼通信
他們之間的通訊就是相互直接數據的傳輸。比如說,你要用一個單片機控制另外一個單片機,那麼你就可以通過232匯流排連接然後用串口通信,前提是兩個單片機都有發送接收程序,還有相應的指令,就是接收到這個信號,另外一個單片機要做什麼。那樣就可以用一個單片機控制另一個工作。形象化就是你打電話給你朋友跟他說話。
『叄』 您好請問一下,兩個單片機互相傳數據的程序怎麼寫
兩個單片機互相傳數據,其實很簡單的 就是兩個單片機的串口通信,當然需要一個串口通信的協議,如指令碼、數據長度、數據等等,就是什麼指令需要怎麼操作、操作數據是什麼。如這是兩個單片機簡單通信操作的模擬實例可以作為參考。
#include <reg52.h> // 單片機1
#define uchar unsigned char
#include <stdio.h>
unsigned char* c;
sbit k0=P3^2;
sbit k1=P3^3;
sbit led1=P3^5;
uchar k;
bit y0,y1;
bit t,s;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};
void SendOneChar(char c) //發送位元組到PC
{
TI=0;
SBUF = c;
while(!TI);
TI=0;
}
void SendString(char *st) //發送字元串到PC
{
while(*st)
{
SendOneChar(*st++);
}
}
void main()
{
SCON = 0x50; //SCON: mode 1, 8-bit UART, enable rcvr
TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON = 0x80; // 數據位8、停止位1。效驗位無 (11.0592M)
TH1 = 0xF4; //TH1: reload value for [email protected]
TR1 = 1; //啟動定時器1
ES = 1; //允許串口中斷位
EA = 1; //允許總中斷位
c=0;
s=1;
k=0;
P1 =~table[k];
while(1)
{
if(k0==0 && y0==0)
{
y0=1;
c = "az";
SendString(c); //發送字元串
}
if(k0==1 ) { y0=0; }
if(k1==0 && y1==0)
{
y1=1;
c = "as";
SendString(c); //發送字元串
}
if(k1==1 ) { y1=0; }
// for(i = 0; i < 4000; i++); //延遲一小段時間
}
}
void chuankou(void) interrupt 4
{
if(RI==1)
{
RI = 0;
if(t==1)
{
if(SBUF=='z') { k++;led1=~led1; }
s=1; t=0;
if(k==10) { k=0;}
P1 =~table[k];
}
if(SBUF=='a' && s==1) { t=1;s=0;}
}
}
------------------
#include <reg51.h> // 單片機2
#define uchar unsigned char
unsigned char* c;
sbit led1=P3^2; // 接收 az , P.2 輸出低電平, P3.3 輸出高電平。
sbit led2=P3^3; // 接收 aa , P.2 輸出高電平, P3.3 輸出低電平。
sbit k0=P3^5;
bit y0,t,s;
uchar k;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};
void SendOneChar(char c) //發送位元組到PC
{
TI=0;
SBUF = c;
while(!TI);
TI=0;
}
void SendString(char *st) //發送字元串到PC
{
while(*st)
{
SendOneChar(*st++);
}
}
void main (void)
{
SCON = 0x50; // REN=1允許串列接受狀態,串口工作模式1
TMOD = 0x21; // 定時器工作方式2
PCON = 0x80; // 數據位8、停止位1。效驗位無 (11.0592M)
TH1 = 0xF4; // TH1 = 0xFD; 波特率 2400
TH0=(65536-54253)/256; // 50 mS
TL0=(65536-54253)%256;
TR1 = 1;
ES = 1; // 開串口中斷
EA = 1; // 開總中斷
// ET0=1;
// TR0=1;
s=1;
k=0;
P1 =~table[k];
while(1)
{
if(k0==0 && y0==0)
{
y0=1;
c = "az";
SendString(c); //發送字元串
}
if(k0==1 ) { y0=0; }
}
}
void chuankou(void) interrupt 4
{
if(RI==1)
{
RI = 0;
if(t==1)
{
if(SBUF=='z') {led1=0;led2=1; k++; }
if(SBUF=='s') {led1=1;led2=0; k--; }
s=1; t=0;
if(k==10) { k=0;}
if(k==255) { k=9; }
P1 =~table[k];
}
if(SBUF=='a' && s==1) { t=1;s=0;}
}
}
void T0_time()interrupt 1
{
TH0=(65536-54253)/256; // 50 mS
TL0=(65536-54253)%256;
k++;
if(k==10) // 這里修改時間
{
k=0;
led1=1;
led2=1;
}
}
『肆』 單片機與單片機之間如何進行串列通信
找個單片機教程上面都有 兩機RXD TXD 對連,然後編寫各個的通訊程序!也有的單片機是帶CAN 的 那就按照說明連 ,編寫對應的通訊程序!
『伍』 單片機的問題
兩個單片機串口通訊需要將Rx和Tx連接,一般其中間不需要外接電阻或電容等。但如果兩個單片機各自為一套獨立系統,彼此相距校遠,在兩單片機Rx和Tx之問通常會加入驅動晶元,以增加兩者之間數據傳輸的可靠性。
另外如果兩單片機是各自獨立供電,除了連接Rx和Tx外,還需耍將兩邊的信號地(GND)連接到一起。
『陸』 怎樣實現兩片單片機之間的並行通信
實際應用是不會這么做的,主要是浪費資源,包括硬體軟體的。一般都用串口通訊。
要實現並行通信也是可以的,可以給你一些方法,
硬體連接
px
並口(8個
io口)+
intx
外部中斷+
發送請求(2個io口),
發送端:
把要發送
的數據
寫入
並口,同時寫入
發送請求(如低電平有效
加一些延時後置高電平)
接收端:
產生
接收
外部中斷,把px
接收並口
寫入0xff
,
並讀取
數據,也可以發送
返回數據
與發送端相同。
『柒』 兩個單片機做一個系統,單片機之間用什麼方式通信最好啊!!
1、一般採用單片機串口通訊就可以。
2、串口通訊採用什麼信號,要根據實際情況確定。
3、如果單片機之間通訊距離遠的話,可以採用RS485通訊方式;如果單片機之間通訊距離近的話,兩個單片機串口可以直接通訊。
4、如果對通訊速度要求不高的話,也可以用單片機的普通口做,通過外搭電路,實現兩個單片機的通訊。
5、不論採用什麼方式的通訊,通訊協議都是自己定義。