導航:首頁 > 器材知識 > 單片機怎麼控制外圍其他設備

單片機怎麼控制外圍其他設備

發布時間:2022-07-08 22:38:31

⑴ 單片機如何實現控制電路

建議你仔細看看它的一些IO埠結構圖,然後配合看這些埠的控制和數據寄存器,以及埠相關的匯編指令.注意哦,一定要看匯編的指令才有用,C的看不出來.
實際上,最終埠的輸入和輸出,都是由埠對應的數據寄存器來控制的.
輸入的時候,埠上所呈現的外部電路的狀態,就呈現在輸入寄存器里,用單片機的程序讀出來,就是表示該狀態的數據.比如說讀到了0xF0,就表示該埠的高4條IO處於高電平,低4條IO處於低電平.
同樣的,輸出的時候,就是單片機的程序將數據寫入到埠的輸出寄存器里,這樣就可以在對應的埠上呈現出對應的狀態,用於控制外部的電路.同樣的,比如說你輸出一個0x0F,就表示將該埠的高4條IO置為低電平,而低4條IO置為高電平.
當然,單片機的結構有很多種,有些單片機不分輸入和輸出寄存器,有些單片機也沒有控制寄存器,但也有很多單片機具有這些寄存器.
控制寄存器的作用,是配置埠的各種功能和模式.
比如說要將某埠的某幾條IO引腳設為帶弱上拉的輸入,那麼就應該打開弱上拉寄存器的對應幾bit,並且打開輸入輸出控制寄存器的對應幾bit,部分片子還需要關閉輸入狀態,這樣就將該埠的指定幾條IO引腳配置為了輸入狀態.而輸出的配置也類似,無非就是幾個寄存器的值不同.
配置好了之後,這些埠和這些IO就可以完成實際的輸入和輸出控制了.
如果是標準的MCS51單片機,例如AT89C51/52之類的,則埠要簡單得許多,沒有這么多的控制寄存器,也部分輸入和輸出寄存器.建議你找它們的用戶手冊仔細看看埠結構那一部分.
一般來說,這些資料要在"用戶手冊"中才有,普通的"數據手冊"裡面不一定有.
希望以上回答能讓你大致了解單片機是如何實現具體控制的了.

⑵ 如何我用單片機控制外圍電路的通斷除了繼電器還有什麼小巧的器件嗎

光電耦合器。雙向或單向可控硅。固態繼電器。

⑶ 單片機如何驅動外圍設備

先去學學模電數電吧,有這方面一定的基礎了再學單片機。

⑷ 怎樣控制單片機訪問內外部程序

對於51系列單片機,將ea引腳接地,則運行片外程序存儲器;ea接vcc,則運行片內程序存儲器。當然,即使ea接vcc,如果程序運行時指令地址超過了片內程序存儲器地址范圍,也還會自動轉到片外程序存儲器空間的。另外要說明的是,用指令是無法控制單片機訪問的是片內還是片外程序存儲器。單片機是通過psen引腳控制訪問片外程序存儲器的。

⑸ 如果利用單片機控制外圍設備

控制外部設備,一般要加驅動元件,例如:光耦,可控硅,繼電器,三極體等等
單片機就是能實現弱控強,但是電路要好好設計,特別注意弱電和強電的隔離。不過一般控制這種強電的設備選擇PLC控制會更好一些。

⑹ 如何控制單片機外圍電路電源的開與關

mos管的選型與你的外圍電路的負載功率有關,如果是小功率的,可以考慮用
PMOS管SI2301,工作電流可達3安。與NMOS相比,單片機情況下PMOS管可以有效保證負載條件下的飽和。

⑺ 怎麼寫單片機控制外圍晶元程序

兄弟,參加電子設計大賽吧??b題?
這個最重要的是看晶元資料,晶元資料內對通信方式,協議,時序,都有的,可以利用單片機自帶的通信介面,即埠第二功能。也可以自己制定時序。
這是24c02的程序。用的ATmega16;
最後祝你有個好成績
#include <iom16v.h>
#include <macros.h>
#include "delay.h"
#include "lcd.h"

#define uchar unsigned char
#define uint unsigned int

/**************************************************************************
* 函數名稱: ERROR();
* 功 能: 蜂鳴器報錯
* 參 數:無
* 描 述:PA0口置低可以鳴響蜂鳴器
**************************************************************************/
void ERROR()
{
uint i;
DDRA |= (1 << PA0);
PORTA &= ~(1 << PA0);
for( i = 0 ; i < 10000 ; i ++);
PORTA |= (1 << PA0);
}
//********************************************************************8
//*函數 向24c02發送一個位元組
//*名稱 wtwib();
//*參數 地址,數據
//*********************************************************************/
void wtwib(uchar ad,uchar da)
{ TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//發送start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA0; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWDR =ad; //adress of the data
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
TWDR =da; //send the data to the bus
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send the stop signal
}
//=================================================================
//=======read a byte from 24c02
//========rtwib()
//==========need address
//================================================================
uchar rtwib(uchar ad)
{ uchar da;
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//send the signal of start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA1; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWDR =ad; //adress of the data
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//send the signal of start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA1; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x58)
ERROR();
da=TWDR;
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send the stop signal
return da;
}
//========================================================
//====== send a page to the 24c02
//====== wtwis();
//=======need address and data and number;
//=========================================================
void wtwip(uchar ad,uchar n,uchar *da)
{ uchar i;
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//發送start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA0; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWDR =ad; //adress of the data
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
for(i=0;i<n;i++)
{ TWDR =da[i]; //send the data to the bus
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
}
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send the stop signal

}
//====================================================
//========read a string from the 24C02
//========rtwis();
//========need address,number
//=====================================================
void rtwis(uchar ad,uchar *p,uchar n)
{ uchar i;
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//send the signal of start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA1; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
TWDR =ad; //adress of the data
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x28)
ERROR();
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);//send the signal of start
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x08)
ERROR();
TWDR =0xA1; //adress of e2prom
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x18)
ERROR();
for(i=0;i<n;i++)
{ TWCR = (1<<TWINT) | (1<<TWEN)|(1<<TWEA);
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != 0x50)
ERROR();
p[i]=TWDR;
}
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);//send the stop signal
}
void main()
{ uchar a[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},i=0;
init_lcd();
TWBR = 0x1F;
TWSR = 0x02;
for(i=0;i<16;i++)
wtwib( 0x00+i,i);

for(i=0;i<16;i++)
rtwib( 0x00+i);
for(i=0;i<16;i++)
a[i]=0;
for(i=0;i<16;i++)
send_d(a[i]+48);
}

⑻ 單片機是如何控制外部電路的

單片機當然可以控制外部電路,單片機最小系統只是基本應用,要發揮單片機的潛能,需要擴展外部電路。

1、利用光電隔離,可以控制外圍電路,並且也將外部電路的干擾屏蔽在外。

等等,還有諸如利用595等串轉並擴展,還可以利用CPLD,FPGA等擴展,總之只要深入理解單片機,那麼單片機就可以發揮很大的潛力,幫助我們解決實際問題。

⑼ 8266單片機怎麼連接外部設備,剛學只會控制led燈開關,想控制點別的又不會連接外部設備

ESP8266的I/O引腳可以輸出開關量控制晶體管、繼電器等外部開關,也可以通過串列、I2C、SPI等匯流排輸出控制指令。

閱讀全文

與單片機怎麼控制外圍其他設備相關的資料

熱點內容
steam令牌換設備了怎麼辦 瀏覽:246
新生測聽力儀器怎麼看結果 瀏覽:224
化學試驗排水集氣法的實驗裝置 瀏覽:156
家用水泵軸承位置漏水怎麼回事 瀏覽:131
羊水鏡設備多少錢一台 瀏覽:125
機械制圖里型鋼如何表示 瀏覽:19
測定空氣中氧氣含量實驗裝置如圖所示 瀏覽:718
超聲波換能器等級怎麼分 瀏覽:800
3萬軸承是什麼意思 瀏覽:110
鑫旺五金製品廠 瀏覽:861
蘇州四通閥製冷配件一般加多少 瀏覽:153
江北全套健身器材哪裡有 瀏覽:106
水表閥門不開怎麼辦 瀏覽:109
花冠儀表盤怎麼顯示時速 瀏覽:106
洗砂機多少錢一台18沃力機械 瀏覽:489
超聲波碎石用什麼材料 瀏覽:607
組裝實驗室製取二氧化碳的簡易裝置的方法 瀏覽:165
怎麼知道天然氣充不了閥門關閉 瀏覽:902
公司賣舊設備掛什麼科目 瀏覽:544
尚葉五金機電 瀏覽:59