ATmega16單片機端口講解新_第1頁
ATmega16單片機端口講解新_第2頁
ATmega16單片機端口講解新_第3頁
ATmega16單片機端口講解新_第4頁
ATmega16單片機端口講解新_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第2篇端口設(shè)計目錄2.1、端口結(jié)構(gòu)介紹2.2、端口存放器講解2.3、端口實例講解2.1、端口結(jié)構(gòu)介紹AVR系列單片機的IO端口結(jié)構(gòu)比根本51系列單片機的端口要復(fù)雜一些,以ATmega16單片機為例,它有4組8位IO端口,分別是PORTA、PORTB、PORTC和PORTD。結(jié)構(gòu)介紹:圖2-1

圖2-2

以下圖2-3為AVR系列單片機端口結(jié)構(gòu)示意圖,每組IO口配備三個8位特殊功能存放器,它們分別是方向控制存放器DDRx〔x代表A~D〕,數(shù)據(jù)存放器PORTx,和輸入引腳存放器PINx。例如端口A的特殊功能存放器為DDRA、PORTA和PINA。圖2-3AVR系列單片機端口結(jié)構(gòu)通過這組存放器,我們可以使每個端口實現(xiàn)雙向數(shù)字IO通道或雙向模擬量通道功能。ATmega16單片機的大局部端口具有除根本IO功能外的第二功能,關(guān)于第二功能的使用這里不作介紹。下面說明端口的根本IO輸入輸出和模擬量輸入輸出的工作過程。①同步數(shù)字輸出。作為輸出時,總線給方向存放器D觸發(fā)器F9寫1,三態(tài)門F1翻開,總線來的數(shù)據(jù)經(jīng)D觸發(fā)器F10到達輸出端Pxn,此時上拉電阻是關(guān)斷的。②數(shù)字輸入。作為輸入時,總線給方向存放器D觸發(fā)器F9寫0,三態(tài)門F1關(guān)斷,上拉電阻根據(jù)需要由PUD選擇是否導(dǎo)通,在休眠信號SLEEP無效時,模擬開關(guān)M1翻開,MOS管T2截止,從Pxn來的輸入信號經(jīng)整形電路F7和同步鎖存器進入三態(tài)門F4成為同步輸入信號。③模擬量輸入輸出。在模擬量輸入輸出模式下,通過設(shè)置使上拉電阻、三態(tài)門F1和模擬開關(guān)M1都處于關(guān)斷狀態(tài),管腳Pxn直接連通單片機內(nèi)部相關(guān)模擬量輸入輸出單元,為單片機內(nèi)部模擬比較器、A/D轉(zhuǎn)換器及D/A轉(zhuǎn)換器等功能單元提供與外圍連接的通道。2.2、端口存放器講解位[7:0]:PA口的每一位的輸入或輸出定義。

0:表示該位為輸入方式。

1:表示該位為輸出方式。位[7:0]:PA口輸入緩沖器的值。

0:該位輸入為0。

1:該位輸入為1。位[7:0]:PA口輸出緩沖器的值。

0:該位輸出為0。

1:該位輸出為1。2.3、端口實例講解、流水燈設(shè)計、數(shù)碼管設(shè)計、單一按鍵設(shè)計、矩陣鍵盤設(shè)計、流水燈設(shè)計1、發(fā)光二級管的知識講解2、設(shè)計任務(wù)3、硬件設(shè)計4、軟件算法設(shè)計發(fā)光二極管的參數(shù)與普通二極管大致相同,我們要掌握的是它的開啟電壓和工作電流。電流太大容易燒毀,太小亮度不夠。以磷化鉀做成的LED為例:開啟電壓:工作電流:允許最大電流:

1、發(fā)光二級管的知識講解發(fā)光二極管限流電阻的選?。喝缦聢D:可以求出限流電阻的取值范圍。發(fā)光二極管限流電阻的選?。憾丝谠O(shè)置引腳狀態(tài)說明輸入電流輸入上拉無效,為高阻狀態(tài)上拉有效,外部引腳拉低輸出電流灌電流(吸收電流)輸出推挽0輸出,吸收電流輸出電流輸出推挽1輸出,輸出電流ATmega16端口的輸入/輸出電流:設(shè)計任務(wù):序號實例要求例1流水燈端口直接閃亮例2流水燈順時針轉(zhuǎn)例3流水燈逆時針例4按鍵控制轉(zhuǎn)向例5按鍵控制流水燈間隔數(shù)1例6按鍵控制流水燈間隔數(shù)2硬件設(shè)計:圖2-4硬件設(shè)計順時針設(shè)計算法:逆時針設(shè)計算法:、數(shù)碼管設(shè)計1、數(shù)碼管根底知識講解2、設(shè)計任務(wù)3、硬件設(shè)計4、軟件設(shè)計①、數(shù)碼管的分類②、數(shù)碼管的判別③、數(shù)碼管的驅(qū)動④、數(shù)碼管的字型碼1、數(shù)碼管根底知識講解:①、數(shù)碼管的分類:按發(fā)光二極管單元連接方式分為:

共陽極數(shù)碼管

共陰極數(shù)碼管

共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成共陽極(COM)的數(shù)碼管。圖2-5共陽數(shù)碼管共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成共陰極(COM)的數(shù)碼管。圖2-6共陰數(shù)碼管②、數(shù)碼管的判別:

共陽數(shù)碼管在判別時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。

共陰數(shù)碼管在判別時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。③、數(shù)碼管的驅(qū)動:數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)和動態(tài)兩類靜態(tài)顯示驅(qū)動。動態(tài)顯示驅(qū)動靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O端口進行驅(qū)動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示那么需要5×8=40根I/O端口來驅(qū)動,實際應(yīng)用時必須增加譯碼驅(qū)動器進行驅(qū)動,我們常用74LS164/74HC595來驅(qū)動數(shù)碼管。動態(tài)顯示驅(qū)動

動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。

在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。④、數(shù)碼管的字型碼:圖2-7實物圖圖2-8引腳圖數(shù)碼管的字型碼——共陽極:我們這里只講靜態(tài)驅(qū)動〔74HC164驅(qū)動〕的字型碼數(shù)碼管的字型碼——共陰極:74ls164引腳圖和真值表:2-9引腳圖2-10真值表TTLCMOSVOH≥2.4VVCCVOL≤0.4VGNDVIH≥2.0V0.7VCCVIL≤0.8V0.2VCC輸入電平輸出電平74LSTTLTTL74HCCMOSCMOS74HCTTTLCMOSTTL與CMOS區(qū)別74系列芯片電平區(qū)別TTL電平和CMOS電平的區(qū)別:74ls164工作時序:圖2-11工作時序2、設(shè)計任務(wù):序號實例要求例1設(shè)計程序,數(shù)碼管全顯示例2設(shè)計程序,數(shù)碼管一位顯示例3設(shè)計程序,查詢按鍵0到9999例4設(shè)計程序,查詢按鍵數(shù)碼管全部顯示例5設(shè)計程序,查詢按鍵加減例6設(shè)計程序,按鍵中斷查詢法實現(xiàn)3、硬件設(shè)計:圖2-12硬件設(shè)計數(shù)碼管顯示程序:4、軟件設(shè)計、單一按鍵設(shè)計1、單一按鍵原理2、設(shè)計任務(wù)3、軟件算法設(shè)計1、單一按鍵原理通常的按鍵所用開關(guān)為機械彈性開關(guān),當(dāng)機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。按鍵穩(wěn)定閉合時間的長短那么是由操作人員的按鍵動作決定的,一般為零點幾秒至數(shù)秒。鍵抖動會引起一次按鍵被誤讀屢次。為確保CPU對鍵的一次閉合僅作一次處理,必須去除鍵抖動。在鍵閉合穩(wěn)定時讀取鍵的狀態(tài),并且判別到鍵釋放穩(wěn)定后再作處理。硬件消抖

在鍵數(shù)較少時可用硬件方法消除鍵抖動。RS觸發(fā)器為常用的硬件去抖,由于需要增加硬件設(shè)備,增大了系統(tǒng)的復(fù)雜性,所以硬件消抖一般不常用。軟件消抖如果按鍵較多,常用軟件方法去抖,即檢測出鍵閉合后執(zhí)行一個延時程序,5ms~10ms的延時,讓前沿抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,那么確認為真正有鍵按下。2、設(shè)計任務(wù)——按鍵消抖:圖2-13按鍵消抖按鍵消抖程序:

if(!AJ1)

{

__delay_cycles(80000);//延時10ms消抖

if(!AJ1)//確認有鍵按下

{

while(!AJ1);//等待按鍵釋放

}}3、軟件算法設(shè)計——查詢法ATmega16單片機有21個中斷源,在這21個中斷中,包含1個非屏蔽中斷〔RESET〕,3個外部中斷〔INT0、INT1、INT2〕和17個內(nèi)部中斷。這些中斷的優(yōu)先級按照向量號排列,向量號越小優(yōu)先級越高。本例用到的中斷源為外部中斷請求1〔INT1〕。ATmega16的中斷源:ATmega16的中斷存放器:位6:SE:休眠使能控制位。0:CPU工作在正常模式;1:CPU工作在休眠模式,由SM2、SM1、SM0決定休眠方式〔請參閱手冊〕。位3-2:ISC11-0:決定INT1的中斷觸發(fā)方式:位1-0:ISC01-0:決定INT0的中斷觸發(fā)方式,同INT1。位7/6/5:INTx:外部中斷x使能位。0:不允許INTx中斷;1:允許INTx中斷。位4-3:保存。位1:IVSEL:中斷向量選擇位。0:中斷向量位于Flash存儲器的起始址;1:中斷向量轉(zhuǎn)移到Boot區(qū)的起始地址。位0:IVCE:中斷向量修改使能位。 0:不能改變IVSEL的值; 1:能改變IVSEL的值。位7/6/5:INTx:外部中斷x標(biāo)志位。0:INTx中斷沒有發(fā)生;1:INTx中斷發(fā)生。位4-0:保存。 當(dāng)狀態(tài)存放器SREG的位I、通用中斷控制存放器GICR中斷使能位INT1為1,并且INTx位為1時,MCU即跳轉(zhuǎn)到相應(yīng)的中斷向量。進入中斷效勞程序之后該標(biāo)志自動清零。此外,標(biāo)志位也可以通過寫入1來清零。軟件設(shè)計——中斷法://外部中斷INT1效勞程序#pragmavector=INT1_vect__interruptvoidINT1_isr(void){SREG_Bit7=0;//關(guān)閉全局中斷flag=1;//標(biāo)志位置位while(!AJ1);//等待按鍵釋放SREG_Bit7=1;//全局中斷翻開}IAR中斷效勞程序的編寫:IAR中定義中斷函數(shù)的格式是:#pragmavector=中斷向量__interruptvoid中斷效勞程序(void){中斷處理程序}外部中斷1的效勞程序:#pragmavector=INT1_vect__interruptvoidINT1_Server(void){}、矩陣鍵盤設(shè)計1、矩陣鍵盤設(shè)計原理2、設(shè)計任務(wù)3、硬件設(shè)計原理圖4、軟件算法設(shè)計前面我們已經(jīng)講述了單一按鍵電路,對于單一按鍵每個按鍵必須占用一根I/O口線,在按鍵數(shù)量較多時,I/O口線浪費較大。為了解決這個問題,采用矩陣鍵盤。1、矩陣鍵盤設(shè)計原理2、設(shè)計任務(wù):序號實例要求例1設(shè)計程序,數(shù)碼管顯示按鍵的編號例2設(shè)計程序,按鍵的編號賦予功能,按下相應(yīng)按鍵實現(xiàn)相應(yīng)的功能3、硬件設(shè)計原理圖:圖2-14硬件設(shè)計原理4、軟件算法設(shè)計:軟件處理鍵盤的方式,有編程掃描方式、定時掃描方式中斷掃描方式。1、編程掃描工作方式是利用CPU在完成其它工作的空余,調(diào)用鍵盤掃描子程序,來響應(yīng)鍵輸入要求。2、定時掃描工作方式是利用單片機內(nèi)部定時器產(chǎn)生定時中斷〔10ms〕,CPU響應(yīng)中斷后對鍵盤進行掃描、并在有鍵按下時轉(zhuǎn)入鍵功能處理程序。3、中斷掃描工作方式即當(dāng)鍵盤上只要有鍵閉合,就向CPU發(fā)出中斷請求,CPU響應(yīng)中斷,立即中斷當(dāng)前正在運行的程序,轉(zhuǎn)入執(zhí)行中斷效勞程序,判斷鍵盤上閉合鍵的鍵號,并作相應(yīng)的鍵功能處理。判斷按鍵按下常用的方法有兩種,即掃描法和反轉(zhuǎn)、法,根據(jù)掃描方式的不同,掃描法又可細分為逐行掃描和逐列掃描。1、掃描法是在判定有鍵按下后逐列〔或行〕置低電平,同時讀入行〔或列〕狀態(tài),如果行〔或列〕狀態(tài)出現(xiàn)非全1狀態(tài),這時0狀態(tài)的行、列交點的鍵就是所按下的鍵。2、線反轉(zhuǎn)法與掃描法相比,掃描法要逐列〔或行〕掃描查詢,當(dāng)被按下的鍵處于最后一列〔或行〕時,那么要經(jīng)過屢次掃描才能最后獲得此鍵所處的行列值。而線反轉(zhuǎn)法無論被按鍵是處于第一還是最后,均只須經(jīng)過兩步便能獲得此鍵所在的行列值。矩陣鍵盤處理程序具體操作流程如下:1、判斷鍵盤有無按下PA.0、PA.1、PA.2、PA.3輸出全為“0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論