『壹』 可不可以直接將兩個單片機的引腳短接在一起
可以的,但是建議你配置下IO口的方向(輸入或輸出)
『貳』 兩個51單片機之間的通訊程序
這個取決於你要傳輸的數據格式,我給你一個相當於庫函數的東西,要傳輸什麼數據就調這里的函數好了。
###################################################################
/*
文件名:uart.h
作者:北京交通大學 思源0702 楊孜
更改時間:2009 9 21
程序描述: STC12C5A60S2的串口頭文件,適用於所有標准51單片機。
功能: 實現了字元串(位元組數組)的發送,和單位元組接受。
限制: 其中的接受部分還無法將信息傳出去。所以用的時候需要定義全局變數,用於接收中斷中的信息。
晶振:11.0592M更改須重新計算定時器值
*/
#ifndef _uart_h
#define _uart_h
#include "STC51.h"
/*
SCON: SM0 SM1 SM2 REN TB8 RB8 TI RI
TCON: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TMOD: GATE1 C/T M1 M0 GATE0 C/T M1 M0
TL0
TH0
TL1
TH1
IE: EA - ET2 ES ET1 EX1 ET0 EX0
PCON: SMOD SMOD0 - POF GF1 GF0 PD IDL
x=256-f*(SMOD+1)/384/波特率
本次試驗:晶振:11.0592,倍頻,定時器1初值0xff,SMOD=1,則波特率為115200
*/
/////////////////////////////////////////////////////////
/*
函數聲明
*/
void uart_initial();
void uart_testbusy();
void uart_write(uch *s,uch a);
void uart_writesingle(uch a);
/////////////////////////////////////////////////////////
/*
全局變數聲明
*/
uch uart_busy;
uch *uart_s; //字元串指針,接受時只接受命令,所以不涉及RXbuffer
uch uart_p; //字元數量
//////////////////////////////////////////////////////////////////////////////////
/*
功能:用於串口與PC通信,10位非同步奇偶校驗
入口:
返回:無
說明:模式1、2、3有波特率加倍
模式0:f/12
模式2:f/64
模式1、3:f/32/12/(256-x)
*/
void uart_initial()
{
uart_busy=0;
SCON=0x50; //串口模式1,10位非同步無奇偶校驗,與PC通信,准備好接受(RI=0)
// PCON|=0x80; //倍頻
TMOD|=0x20; //定時器模式2,自動裝填
TL1=0xfd;
TH1=0xfd; //19200 晶振:11.0592(與51一樣)
TR1=1; //開始計時
IE&=0xf7; //關定時器1的中斷
IE|=0x90; //打開串口中斷
uart_p=0;
}
void uart_testbusy() //這里以後改成查詢緩沖區是否滿。
{
uint i=65535;
while(i--)
{
if(!uart_busy)
{
return;
}
}
//這里添加超時處理語句
}
void uart_write(uch *s,uch geshu)
{
uart_s=s;
uart_p=geshu-1; //在中斷中檢測此位時,已經發了一個位元組。
uart_writesingle(s[0]);
}
void uart_writeuint(uint a)
{
uch b;
b=(uch)(a>>8);
uart_writesingle(b);
b=(uch)(a & 0x00ff);
uart_writesingle(b);
}
void uart_writesingle(uch a)
{
uart_testbusy();
uart_busy=1;
SBUF=a;
}
void uart() interrupt 4
{
ES=0;
if(TI==1)
{
TI=0;
if(uart_p)
{
uart_p--;
SBUF=*(++uart_s);
}
else
{
uart_busy=0;
}
}
else if(RI==1)
{
RI=0;
uart_busy=0;
switch(SBUF)
{
case 1:uart_write(hello,11); //這里怎麼把信息傳出去?
};
}
ES=1;
}
////////////////////////////////////////////////////////////////////////////////////
#endif
『叄』 兩個單片機之間如何通信
兩個單片機可以通過串口通信。
實現方法可見:
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/b738c5d010b2ce349a5027ee.html
使用了485,可以增加通信距離,據說可達1200米,但是沒有試驗過。
『肆』 兩個單片機按在同一個板子上
大致的構思框架這樣是可以的,做一個遙控飛機要考慮的很多,具體能否成功就得看後面的具體方案、選擇的器件,特別是圖像視頻的無線傳輸這是很有難度的。
『伍』 兩台單片機可以同時使用一個AT24C02晶元嗎
AT24C02是I2C匯流排的EEPROM,I2C匯流排支持一主多從。你要用兩台單片機當主機訪問同一個從機是不行的。
兩台單片機之間的通信如果電平一樣的話是可以直接把IO引腳接起來的
『陸』 兩個單片機之間的無線傳輸
選擇通訊模塊完成傳輸
1:用rf905進行數據傳輸,兩塊單片機都通過串口將數據發送給905,然後通過905發送出去。
2:用PT2262發也可以,如果你不考慮成本的話,你可以用51的一個埠控制一個繼電器當按鍵用
建議nrf24l01這個模塊,spi協議,程序不是很難寫
『柒』 跪求 兩個單片機之間的全雙工通信 這個後天就要交了, preteus電路圖,單片機程序
顯然你描述和實際要求是矛盾的,描述來看,要求全雙工通訊,這是要用串列通訊方式實現。而描述中內容:「要求全雙工通信電路所實現的功能為:將主機 U1的 P0 口依次發送數字 0 ~ 9,由從機 U4 的 P2 口接收數據,接收數據後,從機 U4 將收到的數據加 1,然後通過 P0 口發送到主機 U1 的 P2 口。」這是要用並行通訊方式來實現,顯然兩者要求矛盾,無法實現了。題目需要修改才行的。我想可能是描述有誤。
『捌』 如何一個單片機控制兩另個單片機
一種是利用匯流排方式進行主從機通訊實現,還有就是單方控制,也就是說主機改變引腳狀態後被控制單片機主動查詢此引腳並做出相應的動作即可
『玖』 兩個單片機之間的通訊,只有普通IO口。
1.兩個單片機如果有串口,可使用串口通訊
2、有USB口,可採用USB模擬串口通訊
3、有紅外收發,可採用紅外收發串列通訊
『拾』 如何實現兩個單片機互傳文件
利用兩個單片機的串口就可以了。串口的收發程序也很簡單,任何一本書都有實例。