① 您好請問一下,兩個單片機互相傳數據的程序怎麼寫
兩個單片機互相傳數據,其實很簡單的 就是兩個單片機的串口通信,當然需要一個串口通信的協議,如指令碼、數據長度、數據等等,就是什麼指令需要怎麼操作、操作數據是什麼。如這是兩個單片機簡單通信操作的模擬實例可以作為參考。
#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;
}
}
② 51單片機怎麼雙機通信
你好!!
單片機雙機通訊,就是直接單片機的串口RX和TX直接連接,然後通過串口命令完成通訊!
給你一個實例,可以完全滿足你的要求!
希望幫到你,滿意請採納!
③ 如何使用Proteus做單片機模擬
1,找到需要的元件,晶元。
2,根據原理圖,畫出模擬圖。
3,寫程序,並編譯出HEX代碼文件。
4,把HEX代碼文件載入到單片機中。
5,運行模擬,就看到結果了。
如下圖,就是一個模擬的實例。
更詳細的操作步驟,可上網下載有關的教程看一下。
④ protues如何模擬 兩塊一樣的單片機板子通訊
要復制,確定存在網路標號也會復制的。再修改就麻煩的。
畫模擬圖時,那就盡量少用網路標號,或者先不加網路標號,等復制完了再加。
你模擬的最終目的是什麼?是要做實物?要做實物,就直接焊接板子,不必模擬,模擬的程序,到了實物上,還會有很多的需要修改,更麻煩。
⑤ 雙機通信(8051單片機)
模擬圖用了DB9介面,那個DB9是對應電腦硬體的串口的,即模擬時,數據從DB9收/發,對應的電腦實際串口數據收發。所以,兩個DB9是不能用導線連接起通信片,你那三條線畫了也沒用。
DB9是直接與單片機的RXD,TXD連接的,不能加MAX232,加了反倒不對了。
要模擬雙機通信,很簡單,兩個單片機的TXD,RXD直接交叉連接就行,而你這么畫,又加MAX232,又用DB9反倒不行了。要用MAX232也可以,但不能用DB9了,兩個單片機的MAX232對接。
⑥ 51單片機串列通信雙機通信模擬
從圖可知,兩個單片機各接一個八路撥碼開關,八個led。
可以這樣測試,上機讀取撥碼狀態,通過串口發送至下機,從而控制led。下機一樣。注意避免兩機通訊沖突。
只提供思路,具體程序自行解決。
⑦ 單片機模擬圖大藍線怎麼接
1、首先與USB-RS232端連接。
2、其次再將USB與電腦連接。
3、最後將光通訊與電源連接,藍色線接負極,棕色線接正極。
⑧ 單片機模擬圖和原理圖不一樣
你好!
模擬圖和原理圖,會出現不一樣的情況,在最終出PCB版的時候,也會做適當的修改
因為都是網上的教材,要求不是很嚴格
但是如果是一個定型的產品,肯定會有一個標準的原理圖的
⑨ 單片機怎麼模擬
單片機體積小,重量輕,具有很強的靈活性而且價格便宜,具有邏輯判斷,定時計數等多種功能,廣泛應用於儀器儀表,家用電器,醫用設備的智能化管理和過程式控制制等領域。以單片機為核心的嵌入式系統已經成為目前電子設計最活躍的領域之一。
在嵌入式系統的中,開發板成本高,特別是對於大量的初學者而言,還可能由於設計的錯誤導致開發板損壞。利用Proteus我們可以很好地解決這個問題,由此我們可以快速地建立一個模擬系統。
2.Proteus介紹
Proteus是英國Labcenter Electro-nics公司開發的一款電路模擬軟體,軟體由兩部分組成:一部分是智能原理圖輸入系統ISIS(Intelligent Schematic Input System)和虛擬系統模型VSM(Virtual Model System);另一部分是高級布線及編輯軟體ARES(Adv-Ancd Routing and Editing Software)也就是PCB.
2.1 Proteus VSM的模擬
Proteus可以模擬模擬電路及數字電路,也可以模擬模擬數字混合電路。
Proteus可提供30多種元件庫,超過8000種模擬、數字元器件。可以按照設計的要求選擇不同生產廠家的元器件。此外,對於元器件庫中沒有的元件,設計者也可以通過軟體自己創建。
除擁有豐富的元器件外,Proteus還提供了各種虛擬儀器,如常用的電流表,電壓表,示波器,計數/定時/頻率計,SPI調試器等虛擬終端。支持圖形化的分析功能等。
Proteus特別適合對嵌入式系統進行軟硬體協同設計與模擬,其最大的特點是可以模擬8051,PIA,AVR,ARM等多種系列的處理器。Protues包含強大的調試工具,具有對寄存器和存儲器、斷點和單步模式IAR C-SPY,Keil、MPLAB等開發工具的源程序進行調試的功能;能夠觀察代碼在模擬硬體上的實時運行效果;對顯示,按鈕,鍵盤等外設的交互可視化進行模擬。
2.2 Proteus PCB
Proteus 的PCB設計除了有自動布線模擬功能外,還集成了PCB設計,支持多達16個布線層,可以任意角度放置元件和焊接連線;集成了高智能的布線演算法,可以方便地進行PCB設計。
3. 基於Protesus的簡單數據採集系統。
3.1 軟體的編寫
本例題採用可調電阻調節電壓值作為模擬信號的輸入