版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 ATmega16芯片有芯片有PORTA、PORTB、PORTC、PORTD(簡(jiǎn)稱(簡(jiǎn)稱PA、PB、PC、PD)4組組8位,共位,共32路通用路通用I/O接口,分接口,分別對(duì)應(yīng)于芯片上別對(duì)應(yīng)于芯片上32根根I/O引腳。所有這些引腳。所有這些I/O口都是口都是雙(有的為雙(有的為3)功能復(fù)用的功能復(fù)用的。 模擬集成電路的特點(diǎn)模擬集成電路的特點(diǎn) 模擬集成電路的特點(diǎn)模擬集成電路的特點(diǎn) 其中其中第一功能均第一功能均作為數(shù)字通用作為數(shù)字通用I/OI/O接口使用,接口使用,復(fù)用功能復(fù)用功能則分別用于中斷、時(shí)鐘則分別用于中斷、時(shí)鐘/ /計(jì)數(shù)器、計(jì)數(shù)器、USRATUSRAT、I2CI2C和和SPISPI串行通
2、串行通信、模擬比較、捕捉等應(yīng)用。信、模擬比較、捕捉等應(yīng)用。 通用通用I/O接口基本結(jié)構(gòu)與輸出應(yīng)用接口基本結(jié)構(gòu)與輸出應(yīng)用 I/O口的基本結(jié)構(gòu)口的基本結(jié)構(gòu) 每組每組I/OI/O口配備三個(gè)口配備三個(gè)8 8位寄存器,它們分別是方向控制寄存器位寄存器,它們分別是方向控制寄存器DDRxDDRx,數(shù)據(jù)寄存器,數(shù)據(jù)寄存器PORTxPORTx,和輸入引腳寄存器,和輸入引腳寄存器PINxPINx(x=ABCDx=ABCD)。)。I/OI/O口的工作方式和表現(xiàn)特征由這口的工作方式和表現(xiàn)特征由這3 3個(gè)個(gè)I/OI/O口寄口寄存器控制。存器控制。 方向控制寄存器方向控制寄存器DDRx用于控制用于控制I/O口的輸入輸出方
3、向,即控制口的輸入輸出方向,即控制I/O口的工作方式為輸出方式還是輸入方式??诘墓ぷ鞣绞綖檩敵龇绞竭€是輸入方式。當(dāng)當(dāng)DDRx=1時(shí),時(shí),I/O口處于輸出工作方式??谔幱谳敵龉ぷ鞣绞?。 當(dāng)當(dāng)PORTx=1時(shí),時(shí),I/O引腳呈現(xiàn)高電平,同時(shí)可提供輸出引腳呈現(xiàn)高電平,同時(shí)可提供輸出20mA的電流;而當(dāng)?shù)碾娏鳎欢?dāng)PORTx=0時(shí),時(shí),I/O引腳呈現(xiàn)低電平,同時(shí)可引腳呈現(xiàn)低電平,同時(shí)可吸納吸納20mA電流。電流。 當(dāng)當(dāng)DDRx=0時(shí),時(shí),I/O處于輸入工作方式處于輸入工作方式 此時(shí)引腳寄存器此時(shí)引腳寄存器PINx中的數(shù)據(jù)就是外部引腳的實(shí)際電平,中的數(shù)據(jù)就是外部引腳的實(shí)際電平,通過(guò)讀通過(guò)讀I/O指令可將
4、物理引腳的真實(shí)數(shù)據(jù)讀入指令可將物理引腳的真實(shí)數(shù)據(jù)讀入MCU。此外,。此外,當(dāng)當(dāng)I/O口定義為輸入時(shí)(口定義為輸入時(shí)(DDRx=0),通過(guò)),通過(guò)PORTx的控制,的控制,可使用或不使用內(nèi)部的上拉電阻??墒褂没虿皇褂脙?nèi)部的上拉電阻。表表6.1是是AVR通用通用I/O端口的引腳配置情況端口的引腳配置情況 表中的表中的PUD為寄存器為寄存器SFIOR中的一位,它的作用相當(dāng)中的一位,它的作用相當(dāng)AVR全部全部I/O口內(nèi)部上拉電阻的總開關(guān)。當(dāng)口內(nèi)部上拉電阻的總開關(guān)。當(dāng)PUD=1時(shí),時(shí),AVR所有所有I/O內(nèi)部上拉電阻都不起作用(全局內(nèi)部上拉無(wú)效);而內(nèi)部上拉電阻都不起作用(全局內(nèi)部上拉無(wú)效);而PUD=
5、0時(shí),時(shí),各個(gè)各個(gè)I/O口內(nèi)部上拉電阻取決于口內(nèi)部上拉電阻取決于DDRXn的設(shè)置。的設(shè)置。 (1).使用使用AVR的的I/O口,首先要正確設(shè)置其工作方式,確定口,首先要正確設(shè)置其工作方式,確定其工作在輸出方式還是輸入方式。其工作在輸出方式還是輸入方式。 (2)當(dāng)當(dāng)I/O工作在輸入方式,要讀取外部引腳上的電平時(shí),工作在輸入方式,要讀取外部引腳上的電平時(shí),應(yīng)讀取應(yīng)讀取PINxn的值,而不是的值,而不是PORTxn的值。的值。 (3)當(dāng)當(dāng)I/O工作在輸入方式,要根據(jù)實(shí)際情況使用或不使用工作在輸入方式,要根據(jù)實(shí)際情況使用或不使用內(nèi)部的上拉電阻。內(nèi)部的上拉電阻。 (4)一旦將一旦將I/O口的工作方式由輸
6、出設(shè)置成輸入方式后,必口的工作方式由輸出設(shè)置成輸入方式后,必須等待一個(gè)時(shí)鐘周期后才能正確的讀到外部引腳須等待一個(gè)時(shí)鐘周期后才能正確的讀到外部引腳PINxn的值。的值。I/O端口寄存器端口寄存器 PA口寄存器口寄存器PORTA、DDRA、PINA各個(gè)位的具體定義各個(gè)位的具體定義 位 7 6 5 4 3 2 1 0 $1B($003B) PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 PORTA0 PORTA 讀/寫 R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值 0 0 0 0 0 0 0 0 位 7 6 5 4 3 2
7、1 0 $1A($003A) DDA7 DDA6 DDA5 DDA4 DDA3 DDA2 DDA1 DDA0 DDRA 讀/寫 R/W R/W R/W R/W R/W R/W R/W R/W 復(fù)位值 0 0 0 0 0 0 0 0 位 7 6 5 4 3 2 1 0 $19 ($0039) PINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0 PINA 讀/寫 R R R R R R R R 復(fù)位值 N/A N/A N/A N/A N/A N/A N/A N/A 正確使用正確使用AVRAVR的的I/OI/O口要注意:口要注意:(1)(1)先正確設(shè)置先正
8、確設(shè)置DDRxDDRx方向寄存器,再進(jìn)行方向寄存器,再進(jìn)行I/OI/O口的讀寫操作??诘淖x寫操作。(2)AVR(2)AVR的的I/OI/O口口復(fù)位后復(fù)位后的初始狀態(tài)全部為的初始狀態(tài)全部為輸入工作方式輸入工作方式,內(nèi)部上,內(nèi)部上拉電阻無(wú)效。所以,外部引腳呈現(xiàn)三態(tài)高阻輸入狀態(tài)。拉電阻無(wú)效。所以,外部引腳呈現(xiàn)三態(tài)高阻輸入狀態(tài)。(3)(3)用戶程序需要首先對(duì)要使用的用戶程序需要首先對(duì)要使用的I/OI/O口進(jìn)行初始化設(shè)置,根據(jù)口進(jìn)行初始化設(shè)置,根據(jù)實(shí)際需要設(shè)定使用實(shí)際需要設(shè)定使用I/OI/O口的工作方式(輸出還是輸入),當(dāng)設(shè)定口的工作方式(輸出還是輸入),當(dāng)設(shè)定為輸入方式時(shí),為輸入方式時(shí),還要考慮是否使
9、用內(nèi)部的上拉電阻還要考慮是否使用內(nèi)部的上拉電阻。(4)(4)在硬件電路設(shè)計(jì)時(shí),如能利用在硬件電路設(shè)計(jì)時(shí),如能利用AVRAVR內(nèi)部?jī)?nèi)部I/OI/O口的上拉電阻,可口的上拉電阻,可以節(jié)省外部的上拉電阻。以節(jié)省外部的上拉電阻。C語(yǔ)言中的位操作語(yǔ)言中的位操作 AVR通用通用I/O端口的主要特點(diǎn)為:端口的主要特點(diǎn)為:雙向可獨(dú)立位控的雙向可獨(dú)立位控的I/O口口Push-Pull大電流驅(qū)動(dòng)大電流驅(qū)動(dòng) (最大最大40mA) 可控制的引腳內(nèi)部上拉電阻可控制的引腳內(nèi)部上拉電阻每一位引腳內(nèi)部都有獨(dú)立的,可通過(guò)編程設(shè)置的,設(shè)定為上每一位引腳內(nèi)部都有獨(dú)立的,可通過(guò)編程設(shè)置的,設(shè)定為上拉有效或無(wú)效的內(nèi)部上拉電阻。當(dāng)拉有效
10、或無(wú)效的內(nèi)部上拉電阻。當(dāng)I/O口被用于輸入狀態(tài),且口被用于輸入狀態(tài),且內(nèi)部上拉電阻被激活(有效)時(shí),如果外部引腳被拉低,則內(nèi)部上拉電阻被激活(有效)時(shí),如果外部引腳被拉低,則構(gòu)成電流源輸出電流(構(gòu)成電流源輸出電流(uA量級(jí))。量級(jí))。可控的方向寄存器可控的方向寄存器DDRxC語(yǔ)言中的位操作語(yǔ)言中的位操作 a | b - 按位或按位或 這個(gè)表達(dá)式指示中這個(gè)表達(dá)式指示中 a 被表達(dá)式中的被表達(dá)式中的b 按位進(jìn)行或運(yùn)算按位進(jìn)行或運(yùn)算 這慣用于打這慣用于打開某些位開某些位 尤其常用尤其常用|=的形式的形式 例如例如 PORTA |= 0 x80; / 打開位打開位 7 (最高位最高位) a & b -
11、 按位與按位與 這個(gè)運(yùn)算在檢查某些位是否置這個(gè)運(yùn)算在檢查某些位是否置 1 時(shí)有用時(shí)有用 例如例如 If (PORTA & 0 x81) = 0) / 檢查位檢查位 7 和位和位 0 注意圓括號(hào)需要括在注意圓括號(hào)需要括在&運(yùn)算符的周圍運(yùn)算符的周圍 因?yàn)樗鸵驗(yàn)樗? = 相比運(yùn)算優(yōu)先相比運(yùn)算優(yōu)先級(jí)較低級(jí)較低 這是這是 C 程序中很多錯(cuò)誤的原因之一程序中很多錯(cuò)誤的原因之一 a b - 按位異或按位異或 這個(gè)運(yùn)算對(duì)一個(gè)位取反有用這個(gè)運(yùn)算對(duì)一個(gè)位取反有用 例如例如 在下面的例子中在下面的例子中 位位 7 是被翻轉(zhuǎn)的是被翻轉(zhuǎn)的 PORTA = 0 x80; / 翻轉(zhuǎn)位翻轉(zhuǎn)位 7 a - 按位取反按位取反
12、 在表達(dá)式中這個(gè)運(yùn)算執(zhí)行一個(gè)取反在表達(dá)式中這個(gè)運(yùn)算執(zhí)行一個(gè)取反 當(dāng)用按位與運(yùn)算關(guān)閉某些位當(dāng)用按位與運(yùn)算關(guān)閉某些位時(shí)時(shí) 與這個(gè)運(yùn)算組合使用尤其有用與這個(gè)運(yùn)算組合使用尤其有用 如如 PORTA &= 0 x80;/ 關(guān)閉位關(guān)閉位 7 PORTC | = (1BIT0) |( 1BIT3); 1(BIT0)表示邏輯表示邏輯1左移到左移到PORTC 的0位,結(jié)果為位,結(jié)果為0b00000001; 1(BIT3) 表示邏輯表示邏輯1左移左移PORTC 的3位,結(jié)果為位,結(jié)果為0b00001000。0b00000001在同在同0b00001000相或相或,結(jié)果為,結(jié)果為0b00001001。 PORTD=
13、BIT(PD7) PORTD口的第口的第7位取反位取反/,取反,取反PD0引腳,引腳,TCCR0|=(1CS01)|(1CS00);TCCR0功能寄存器的功能寄存器的CS01 、CS00位置位置1。通用數(shù)字通用數(shù)字I/O口的設(shè)置與編程口的設(shè)置與編程 1. 通用通用I/O輸出設(shè)計(jì)要點(diǎn)輸出設(shè)計(jì)要點(diǎn) 應(yīng)用應(yīng)用I/O口輸出時(shí),在系統(tǒng)的軟硬件設(shè)計(jì)上應(yīng)注意的問(wèn)題有:口輸出時(shí),在系統(tǒng)的軟硬件設(shè)計(jì)上應(yīng)注意的問(wèn)題有: 輸出電平的轉(zhuǎn)換和匹配。輸出電平的轉(zhuǎn)換和匹配。 輸出電流的驅(qū)動(dòng)能力。輸出電流的驅(qū)動(dòng)能力。 I/O口輸出為口輸出為“1”時(shí),可以提供時(shí),可以提供20mA左右的驅(qū)動(dòng)電流。輸左右的驅(qū)動(dòng)電流。輸出為出為“0
14、”時(shí),可以吸收時(shí),可以吸收20mA左右的灌電流(最大為左右的灌電流(最大為40mA)。)。 輸出電平轉(zhuǎn)換的延時(shí)輸出電平轉(zhuǎn)換的延時(shí)。 應(yīng)用舉例應(yīng)用舉例: LED發(fā)光二極管的控制發(fā)光二極管的控制 設(shè)計(jì)一個(gè)帶有一排設(shè)計(jì)一個(gè)帶有一排8個(gè)發(fā)光二極管的簡(jiǎn)易彩燈控制系統(tǒng)個(gè)發(fā)光二極管的簡(jiǎn)易彩燈控制系統(tǒng) 硬件電路設(shè)計(jì)硬件電路設(shè)計(jì) 當(dāng)電壓當(dāng)電壓U1大于大于U2約約1V以上時(shí),二極管導(dǎo)通以上時(shí),二極管導(dǎo)通發(fā)光。當(dāng)導(dǎo)通電流大于發(fā)光。當(dāng)導(dǎo)通電流大于5mA時(shí),人的眼睛時(shí),人的眼睛就可以明顯地觀察到二極管的發(fā)光,導(dǎo)通就可以明顯地觀察到二極管的發(fā)光,導(dǎo)通電流越大,亮度越高。電流越大,亮度越高。 RVledUUI21 AVR的
15、的I/O口輸出口輸出“0”時(shí),可以吸收時(shí),可以吸收最大最大40mA的的電流,因此采電流,因此采用控制發(fā)光二用控制發(fā)光二極管負(fù)極的設(shè)極管負(fù)極的設(shè)計(jì)比較好。計(jì)比較好。 #include /包含單片機(jī)型號(hào)頭文件包含單片機(jī)型號(hào)頭文件#include /包含包含位位操作頭文件操作頭文件#include /包含延時(shí)頭文件包含延時(shí)頭文件#define LEDPORTB/LED端口端口 #define Open_LED PORTA|=0 x10 /使能使能LEDvoid En_Led(void) /使能使能LED DDRB=0 xff; /設(shè)置輸出設(shè)置輸出PORTB=0 xff;/輸出高電平輸出高電平Open
16、_LED;/打開打開LED功能功能void main(void) unsigned char i;En_Led();/使能使能LEDwhile(1)for(i=0;i1;i-) LED=0 xff; /LED全部熄滅全部熄滅LED&=BIT(i-2); /點(diǎn)亮相應(yīng)位點(diǎn)亮相應(yīng)位LEDdelay_nms(200);/延時(shí)大約延時(shí)大約100毫秒毫秒應(yīng)用舉例應(yīng)用舉例:繼電器控制繼電器控制 控制恒溫箱的加熱的硬控制恒溫箱的加熱的硬件電路設(shè)計(jì)件電路設(shè)計(jì) 恒溫箱的加熱源采用恒溫箱的加熱源采用500W電爐,電爐的工作電壓電爐,電爐的工作電壓220v,電流電流2.3A。選用。選用HG4200繼電器,開關(guān)負(fù)載能力
17、為繼電器,開關(guān)負(fù)載能力為5A/AC220V,繼電器吸合線圈的工作電壓繼電器吸合線圈的工作電壓5v,功耗,功耗0.36W,計(jì)算得吸合電流,計(jì)算得吸合電流為為0.36/5 = 72mA。因此,要能使繼電器穩(wěn)定的吸合,驅(qū)動(dòng)電流。因此,要能使繼電器穩(wěn)定的吸合,驅(qū)動(dòng)電流應(yīng)該大于應(yīng)該大于80mA。該電流已經(jīng)超出。該電流已經(jīng)超出AVR本身本身 I/O口的驅(qū)動(dòng)能力,口的驅(qū)動(dòng)能力,因此外部需要使用功率驅(qū)動(dòng)元件。因此外部需要使用功率驅(qū)動(dòng)元件。 I/O引腳輸出引腳輸出“1”時(shí),時(shí),三極管導(dǎo)通,繼電器三極管導(dǎo)通,繼電器吸合,電爐開始加熱。吸合,電爐開始加熱。I/O引腳輸出引腳輸出“0”時(shí),時(shí),三極管截止,繼電器三極管
18、截止,繼電器釋放,加熱停止。釋放,加熱停止。 PORTC | =(1 PORTC0) PORTC 位置位置1。繼電器吸合,電爐開始加熱。繼電器吸合,電爐開始加熱。PORTC & = (1 PORTC0)PORTC & = 0 x80 PORTC 位置位置0。繼電器釋放,加熱停止。繼電器釋放,加熱停止。 應(yīng)用舉例應(yīng)用舉例:LED數(shù)碼顯示器的應(yīng)用數(shù)碼顯示器的應(yīng)用 0-D7連接連接PB0-PB7,段選信號(hào),段選信號(hào)SMGLK11連接連接PA3,位選信,位選信號(hào)號(hào)BITLK11連接連接PA2,74AC573SJ為鎖存器。為鎖存器。 #include /包含單片機(jī)型號(hào)頭文件包含單片機(jī)型號(hào)頭文件#include /包含包含位位操作頭文件操作頭文件#include /包含延時(shí)頭文件包含延時(shí)頭文件#include /包含通用函數(shù)及宏定義頭文件包含通用函數(shù)及宏定義頭文件/*/* 函數(shù)名稱函數(shù)名稱: Display_All_SMG() */* 功功 能能: 顯示顯示8位數(shù)據(jù)信息位數(shù)據(jù)信息 */* 參參 數(shù)數(shù): *pdata-顯示緩沖數(shù)組地址指針顯示緩沖數(shù)組地址指針 */void Display_All_SMG(unsig
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海市縣(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)人教版期中考試((上下)學(xué)期)試卷及答案
- 一年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)匯編
- 蘇教版四年級(jí)語(yǔ)文下冊(cè)教案
- 衛(wèi)生潔具技術(shù)規(guī)格書
- 獸醫(yī)用剪牙鉗市場(chǎng)需求與消費(fèi)特點(diǎn)分析
- 可充氣薄橡膠玩具市場(chǎng)發(fā)展預(yù)測(cè)和趨勢(shì)分析
- 剔肉刀產(chǎn)業(yè)規(guī)劃專項(xiàng)研究報(bào)告
- 樂(lè)器盒市場(chǎng)需求與消費(fèi)特點(diǎn)分析
- 外科敷料市場(chǎng)需求與消費(fèi)特點(diǎn)分析
- 外科醫(yī)療和實(shí)驗(yàn)室設(shè)備用自動(dòng)清洗機(jī)市場(chǎng)發(fā)展預(yù)測(cè)和趨勢(shì)分析
- 浙江省杭州市十三中教育集團(tuán)2024-2025學(xué)年七年級(jí)上學(xué)期期中科學(xué)試題(無(wú)答案)
- 2024-2025學(xué)年魯教版(五四制)八年級(jí)數(shù)學(xué)上冊(cè)期中測(cè)試題
- 《珍愛生命遠(yuǎn)離火災(zāi)》消防安全教育課件
- 100MWp戶用光伏發(fā)電EPC總承包 投標(biāo)方案(技術(shù)方案)
- 店鋪門面轉(zhuǎn)讓合同協(xié)議書2024年
- DL∕T 618-2022 氣體絕緣金屬封閉開關(guān)設(shè)備現(xiàn)場(chǎng)交接試驗(yàn)規(guī)程
- 外事實(shí)務(wù)智慧樹知到期末考試答案章節(jié)答案2024年山東外事職業(yè)大學(xué)
- 無(wú)線電遙控帆船講解
- 壓力與情緒管理(完整版)
- 各式鏈輪參數(shù)表
- 福建省標(biāo)準(zhǔn)化考點(diǎn)巡視監(jiān)控系統(tǒng)操作規(guī)范
評(píng)論
0/150
提交評(píng)論