① 單片機的I/O口是什麼意思
單片機的I/O口指的是輸入/輸出埠,簡稱為I/O。這些埠為單片機與外部設備之間的數據交換提供了通道。每個I/O口都有其獨特的地址,以便CPU能夠識別並控制相應的輸入或輸出操作。
I/O口在單片機系統中扮演著重要角色,它們不僅連接著單片機和各種外部設備,還負責處理數據傳輸。在不同的應用場景中,I/O口可以被配置成不同的輸出模式,以適應不同的需求。
1. 准雙向口輸出:這種模式的I/O口既可以作為輸入也可以作為輸出。它們通常具備三個上拉晶體管,分別提供強上拉、極弱上拉和弱上拉功能,允許根據具體需求調整I/O口的狀態,無需重新設置輸出狀態。
2. 推挽輸出:這類輸出模式利用兩個互補的三極體,一個導通時另一個截止,從而能夠驅動電流較大的負載。推挽輸出能夠提供高電平或低電平信號,當鎖存器設置為「1」時,可以持續提供強上拉。
3. 開漏輸出:開漏輸出的I/O口需要外部上拉電阻來實現其功能,通常連接到VCC電源。這種輸出模式在作為邏輯輸出時,可以用來讀取外部設備的狀態,同時也可以作為外部輸入I/O口使用。
② 單片機的I/O口是什麼意思
單片機的I/O口的意思是:I/O是 input/output的縮寫,即輸入輸出埠。
每個設備都會有一個專用的I/O地址,用來處理自己的輸入輸出信息。CPU與外部設備、存儲器的連接和數據交換都需要通過介面設備來實現,前者被稱為I/O介面,而後者則被稱為存儲器介面。
(2)單片機的輸入口和移位鎖存器擴展閱讀:
單片機I/O口的輸出模式:
1、准雙向口輸出
准雙向口輸出就是可作為輸出也可作為輸入口,因此這個口是不定的,是准雙向類型,不用重新I/O口的輸出狀態 。准雙向口有3個上拉晶體管以便根據不同的需要設置表不同的參數。這三個晶體管分別是起到強上拉、極弱上拉、弱上拉功能。
2、推挽輸出
推挽輸出是因為它的輸出結構類似於推挽結構,它是一種由兩個三極體(或者其他MOS管等)分別受到一個信號的控制,這信號的互補的,就是說只有一個三極體導通,一個三極體導通的時候另一個就要截止。
推挽輸出可以輸出高電平,也可以輸出低電平。當鎖存器為「1」時候可以持續提供強上拉,這種輸出結構可以驅動需要很大電流的器件。
3、開漏輸出
這種結構作為邏輯輸出時候,必須要有外部上拉,上拉電阻要為10K左右比較好,一般是通過電阻加到VCC電源,這樣才可以讀取外部狀態,也就是說此時的開漏輸出的可以作為外部的輸入I/O口。
③ pic單片機中tris和port是什麼意思,怎麼理解,怎麼用,是走能做輸出又能做輸入,屏蔽高四位是
PORT是埠I/O寄存器(如PORTA、PORTB…)
寫 PORTx寄存器就是將數據值寫入該埠鎖存器。
讀 PORTx寄存器就是讀取I/O 引腳上的數據值。
TRIS是埠I/O控制寄存器(又稱為埠I/O數據方向寄存器,如TRIAS、TRISB…)。當某位的值為0時,置對應I/O口為輸出;為1時,置I/O口為輸入。
④ 單片機串並轉換晶元
74hc595.用得最多的串並轉換晶元
引腳說明:
SDA:數據輸入口。
CLK:時鍾輸入端。
Q0~Q7:數據並行輸出端。
74HC595 內含8 位串入、串/ 並出移位寄存器和8位三態輸出鎖存器。寄存器和鎖存器分別有各自的時鍾輸入(SH_CP和ST_CP) , 都是上升沿有效。當SH_CP從低到高電平跳變時, 串列輸入數據(SDA) 移入寄存器; 當ST_CP從低到高電平跳變時, 寄存器的數據置入鎖存器。清除端(CLR) 的低電平只對寄存器復位(QS 為低電平) , 而對鎖存器無影響。當輸出允許控制(EN) 為高電平時, 並行輸出(Q0~Q7) 為高阻態, 而串列輸出(QS) 不受影響。74HC595 最多需要5 根控制線, 即SDA、SH_CP、ST_CP、CLR 和EN。其中CLR 可以直接接到高電平, 用軟體來實現寄存器清零; 如果不需要軟體改變亮度, EN 可以直接接到低電平, 而用硬體來改變亮度。把其餘三根線和單片機的I/ O 口相接, 即可實現對LED 的控制。數據從SDA 口送入74HC595 , 在每個SH_CP的上升沿, SDA 口上的數據移入寄存器, 在SH_CP的第9個上升沿, 數據開始從QS 移出。如果把第一個74HC595 的QS 和第二個74HC595 的SDA 相接, 數據即移入第二個74HC595 中, 照此一個一個接下去, 可接任意多個。數據全部送完後, 給ST_CP 一個上升沿, 寄存器中的數據即置入鎖存器。此時如果EN 為低電平, 數據即從並口Q0~Q7 輸出, 把Q0~Q7 與LED 的8 段相接, LED 就可以實現顯示了。要想軟體改變LED 的亮度, 只需改變EN 的占空比就行了。
程序如下所示:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SDA = P1^1;
sbit SHIFT = P1^2;
sbit ST = P1^0;
#define NOP _nop_()
uchar led[] = {0x5b,0x3f,0x3f,0x6f};
uchar select[] = {0x0fe,0xfd,0xfb,0xf7};
uchar i=0;
void Init( )
{
SDA = 0;
SHIFT = 0;
ST = 0;
}
void delay()
{
uchar jj;
for(jj=0;jj<200;jj++);
while(jj--);
}
void display(uchar dat)
{
uchar ii;
uchar sdata=dat;
for(ii=0;ii<8;ii++)
{
if(sdata&0x80)SDA=1;
else SDA = 0;
sdata<<=1;
SHIFT =0;
NOP;
NOP;
SHIFT = 1;
NOP;
NOP;
}
ST = 1;
NOP;
NOP;
ST = 0;
}
void main()
{
Init();
while(1){
delay();
delay();
P2 = select[i];
display(led[i]);
i=(i+1)%4;
}
}