A. 51單片機串口工作原理,硬體原理
一般
單片機
串口
通訊
設置為串口中斷,當有數據
移入
SBUF寄存器
就
產生中斷,中斷程序
數據取走,等待接收
下一個數據,由於單片機數據處理速度
遠比
串口通訊速度快,所有不會產生
數據丟失的可能。
B. 8051單片機中串口電路的主要功能是什麼
用串口實現,由於只有兩個從機。完全可以用第九位數據位啊,讓串口工作在方式3或方式4,在控制寄存器
scon
中設置好第九位數據就行了
再看看8051串口的工作方式吧
C. 單片機串口多機通信電路如何接!
網路文庫 里 有
單片機C語言程序設計實訓100例 的pdf 文檔
有 模擬圖、源碼
D. 51單片機串口下載電路能不能供電
一般的開發板的串口電路都是可以供電的,當然也可以燒錄,供電的話,接電腦的USB或者移動電源都可以,51單片機一般都是+5V供電的。
E. 單片機的串列口怎麼接
這個接法沒問題,是TXD和Tin相連,單片機的TXD是發送數據(從單片機發往計算機),MAX232的Tin是發送數據輸入。
Rout和Rxd相連,是MAX232的Rout接收數據輸出(從計算機發往單片機),Rxd是單片機的接受數據輸入。如果是兩個單片機之間通訊的話就是TXD->RXD;RXD->TXD.
F. 兩個9s12單片機串口通信電路簡圖該如何繪制
兩個單面機之間通過串口通信,可以直接連接通信線和地線就可以實現通信。一個單片機的發送端,接另一個單片機的接收端。接收端接發送端。地線連在一起就可以了。
G. 求單片機與電腦介面(TTL與RS232電平模擬轉換)電路及工作原理
1.先介紹電腦上與單片機進行通訊的介面的名稱
(1)一般是用電腦串口來進行通訊的,平常大家說的電腦的串口是指台式電腦主機後面的九針介面,如下圖
這個介面有個專業的名稱,叫RS23介面,而RS232介面是串口通訊的一種,其實所謂的介面,我的理解就是一種通信協議,規定了傳輸電平,傳輸方式,及怎麼傳輸數據等等。
協議標准規定採用一個25個腳的DB25連接器,還規定了連接器的每個引腳的信號內容,同時還對各種信號的電平加以規定。但隨著設備的不斷改進,出現了代替DB25的DB9介面,現在都把RS232介面叫做DB9。
(2)電腦上的RS232介面採用的是負邏輯電平:
-15~-3表示邏輯1;
+15~+3表示邏輯0;
電壓值通常在7V左右
(3)我們可以使用串口電纜直接連接兩台PC機的串口,實現兩台PC機的串口通訊。但是PC機和單片機的通訊卻不能夠用電纜直接進行連接,原因是PC機RS232串口的電平標准和單片機的TTL電平不一致,因此單片機和PC機之間的串口通訊必須要有一個RS232/TTL電平轉換電路。通常這個電路都選擇專用的RS232介面電平轉換集成電路進行設計,如MAX232、HIN232等。
2.單片機串口輸出的邏輯電平
單片機的串口輸出電路採用的邏輯電平是TTL電平。這種電平信號由TTL器件產生的,一般的晶元,如運放,數字器件等...
TTL:Transistor-Transistor
Logic
三極體結構。
Vcc:5V;VOH>=2.4V;VOL<=0.5V;
VIH>=2V;VIL<=0.8V
3.單片機與電腦串口的連接
首先解決的就是邏輯介面電平的問題,其次就是通信方法及方式的問題
(1)在這里我們可以使用集成晶元MAX232,這是一款專門用來進行信號電平的轉換的晶元,使用起來簡單方便,這里把電路貼出。
(2)當然,我們也可以使用分立元件來搭建RS232電平轉換電路以供我們實驗使用,下圖給出了一個常見電路,只要器件完好,電路焊接完畢後即可正常工作,經實際使用,效果良好。不用MAX232實現DSP或MCU與PC通訊的電路,元件經濟,結構簡單設計巧妙
用三極體實現RS-232轉TTL電路
電路如下圖
1.DB9的2腳TXD:為RS-232電平信號接收端,RXD;3腳為RS-232電平信號發送端,
2.圖中的Vcc應該是+5V,TXD接單片機TXD,RXD接單片機RXD。
工作原理是:從TTL轉為RS2323電平,由於二極體與電容的作用使得在二極體D1與電容C7交接處的電壓保持在-3V~-15V.
當TXD為"1"(TTL)時,Q3截止,PCRXD上的電壓與PCTXD電壓相等,也是-3~-15V,為"1"(RS232)
當TXD為"0"(TTL)時,
Q3導通,則PCRXD電壓約為+5V,這個電壓在+3~+15V之間,根據RS232電平,它是"0"....也就是說TTL的"1"經過這個電平轉換電路後,RS2323可以識別出它是"1",是"0"也能識別為0.這就實現了從TTL到RS232的電平轉換.
從RS232轉換為TTL電平那就簡單了,當PCTXD為"1",即-3~-15V時,Q4截止,RXD電壓約為5V,為"1",,當PCTXD為"0"時,Q4導通,電壓為0,電平為"0".那麼從RS232到TTL的電平轉換也實現了.
備註:D2是為了防止Q4的BE反向擊穿,TXD的最低電壓時15V,Q4的BE耐壓是6V左右。
簡略大概的說:
當TXD=1時,Q3截止,導致PCRXD=1;
當TXD=0時,Q3導通,導致PCRXD=0;
當PCTXD=1時,Q4導通,導致RXD=1;
當PCTXD=0時,Q4截止,導致RXD=0;
RS232
1,0
TTL
1
,0
自己總結的,希望對有需要的人有幫助
/********希望我能幸福,也希望能給別人帶來幸福***/
H. STM32F103單片機的串列口通信電路和GPRS通信電路怎麼實現
實現單片機模塊與設備模塊之間的串口通訊,首先需要將雙方正確地連接起來。非同步串列通訊是很常用的一種模塊間互連方式,一般會使同三條連接線,分別標記為Tx(或TxD)、Rx(或RxD),以及GND。其中Tx用於數據發送,是輸出信號; Rx用於數據接收,是輸入信亐,GND為公共地線。
題目圖1中的USART1_Rx表示單片機的數據接收端,應該與圖2中的GSM_TxD相連接,而圖1中的∪SART1_Tx表示單片機的數據犮送端,應與圖2中的GSM_RxD相連,單片機的GND與GSM模塊的GND共在一起。然後就是軟體工作,雙方要約定一致的通訊參數(如波特率,數據位,校驗位,停止位等),在單片機一端編寫串口設置程序,並根據GSM模塊的命令集和命令格式編寫控製程序。
需要注意一點,常用的非同步串列通訊介面的電平標准有RS232和TTL,RS232用於遠距離長線連接,而TTL用於短距離連接。這兩者是不可以直接互聯的。如果需要連接,必須先轉換成相同的電平標准。單片機引腳:信號是TTL標準的,而外購模塊串口電平與模塊製造廠家,模塊型號等有關,需要查看模塊的技術說明文件。
I. 51單片機和計算機之間實現串口通信的電路圖
串口通訊參考程序如下:
來源:深入淺出AVR單片機
#include<reg51.h>
unsignedcharUART_RX;//定義串口接收數據變數
unsignedcharRX_flag;//定義穿行接收標記
/*********************************************************************************************
函數名:UART串口初始化函數
調用:UART_init();
參數:無
返回值:無
結果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產生波特率(佔用)
備註:振盪晶體為12MHz,PC串口端設置[4800,8,無,1,無]
/**********************************************************************************************/
voidUART_init(void){
EA=1;//允許總中斷(如不使用中斷,可用//屏蔽)
ES=1;//允許UART串口的中斷
TMOD=0x20;//定時器T/C1工作方式2
SCON=0x50;//串口工作方式1,允許串口接收(SCON=0x40時禁止串口接收)
TH1=0xF3;//定時器初值高8位設置
TL1=0xF3;//定時器初值低8位設置
PCON=0x80;//波特率倍頻(屏蔽本句波特率為2400)
TR1=1;//定時器啟動
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口接收中斷處理函數
調用:[SBUF收到數據後中斷處理]
參數:無
返回值:無
結果:UART串口接收到數據時產生中斷,用戶對數據進行處理(並發送回去)
備註:過長的處理程序會影響後面數據的接收
/**********************************************************************************************/
voidUART_R(void)interrupt4using1{//切換寄存器組到1
RI=0;//令接收中斷標志位為0(軟體清零)
UART_RX=SBUF;//將接收到的數據送入變數UART_data
RX_flag=1;//標記接收
//用戶函數內容(用戶可使用UART_data做數據處理)
//SBUF=UART_data;//將接收的數據發送回去(刪除//即生效)
//while(TI==0);//檢查發送中斷標志位
//TI=0;//令發送中斷標志位為0(軟體清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口發送函數
調用:UART_T(?);
參數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備註:
/**********************************************************************************************/
voidUART_T(unsignedcharUART_data){//定義串口發送數據變數
ES=0;//禁止穿行中斷
SBUF=UART_data;//將接收的數據發送回去
while(TI==0);//檢查發送中斷標志位
TI=0;//令發送中斷標志位為0(軟體清零)
ES=1;//打開穿行中斷
}
/*********************************************************************************************
函數名:UART串口發送字元串函數
調用:UART_S(?);
參數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備註:
/**********************************************************************************************/
voidUART_S(unsignedchar*str)
{
while(1)
{
if(*str=='