單片機與嵌入式系統(tǒng)(111X)-06典型單片機系統(tǒng)AVRIO系統(tǒng)及其應用_第1頁
單片機與嵌入式系統(tǒng)(111X)-06典型單片機系統(tǒng)AVRIO系統(tǒng)及其應用_第2頁
單片機與嵌入式系統(tǒng)(111X)-06典型單片機系統(tǒng)AVRIO系統(tǒng)及其應用_第3頁
單片機與嵌入式系統(tǒng)(111X)-06典型單片機系統(tǒng)AVRIO系統(tǒng)及其應用_第4頁
單片機與嵌入式系統(tǒng)(111X)-06典型單片機系統(tǒng)AVRIO系統(tǒng)及其應用_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第六講AVR單片機

IO系統(tǒng)及其應用主講教師:董秀則dongxz@(主樓610;5097單片機與嵌入式系統(tǒng)本講主要內(nèi)容及重點通用IO接口的基本結(jié)構(gòu)與特性通用IO接口的輸出應用8段數(shù)碼管應用通用IO輸入接口設(shè)計本講重點IO接口的基本結(jié)構(gòu)IO接口的輸入輸出設(shè)計M16具有PA、PB、PC、PD4組8位共32路IO接口,分別對應32個引腳所用的IO接口都可以作為數(shù)字通用IO接口使用IO接口也可以設(shè)置為中斷、定時器、USRAT、I2C、SPI、模擬比較等功能使用IO接口配合外部電路可以構(gòu)成各式各樣的單片機系統(tǒng)6.1通用IO接口的基本結(jié)構(gòu)和特性通用IO結(jié)構(gòu)示意圖輸入和輸出時工作邏輯AVR通用IO端口的特點雙向可獨立進行按位控制PP大電流驅(qū)動可控引腳內(nèi)部上拉電阻DDR可控方向寄存器引腳的配置每個端口引腳的配置都是通過寄存器完成的每個端口都具有三個寄存器DDRx、PORTx、PINx。:DDRxn:確定x端口、n引腳的方向。0—輸入;1—輸出。PORTxn引腳配置為輸入時,若PORTxn為“1“,上拉電阻將使能。PORTxn清零,引腳上拉電阻無效,引腳處于三態(tài)。

復位時各引腳為高阻態(tài),即使此時并沒有時鐘在運行。當引腳配置為輸出時,若PORTxn為"1“,引腳輸出高電平("1“),否則輸出低電平(“0“)。PINxn:x端口、n引腳的物理狀態(tài)特殊控制寄存器SFIOR($30):PUD位設(shè)置上拉電阻是否有效引腳配置方案如表所示讀取引腳物理狀態(tài)數(shù)據(jù)不論如何配置DDxn,都可以通過讀取PINxn寄存器來獲得引腳電平讀取引腳數(shù)據(jù)時續(xù)及同步讀取寫出的數(shù)據(jù)的時續(xù)及同步例程:匯編語言實現(xiàn);定義上拉電阻和設(shè)置高電平輸出;為端口引腳定義方向ldir16,(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0)ldir17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)outDDRB,r17outPORTB,r16;為了同步插入nop指令nop;讀取端口引腳inr16,PINB結(jié)果:PB0、PB1:輸出端口,初始狀態(tài)為1PB3、PB2:輸出端口,初始狀態(tài)為0PB7、PB6:輸入端口,上拉電阻有效,外部引腳拉低時會有小電流輸出用C語言實現(xiàn)unsignedchari;.../*定義上拉電阻和設(shè)置高電平輸出*//*為端口引腳定義方向*/DDRB=(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);PORTB=(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);/*為了同步插入nop指令*/_NOP();/*讀取端口引腳*/i=PINB;注意PINx寄存器實際意義上不是寄存器,而是可控的三態(tài)門,因此只能讀不能寫初始狀態(tài)IO口復位后均設(shè)置為輸入、內(nèi)部上拉電阻無效,各個端口處于高祖狀態(tài)用戶使用前必須先進性各個端口的初始化,再進行使用引腳未被使用,建議給這些引腳賦予一個確定電平常用編程指令及方法匯編指令I(lǐng)N/OUT指令:實現(xiàn)通用寄存器與IO寄存器之間的數(shù)據(jù)交換SBI/CBI指令:實現(xiàn)IO寄存器某位置位或清零SBIC/SBIS指令:測試IO寄存器某位為零或1時跳行LD、SER等C語言指令PORTB=(1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);i=PORTBPORTB&=~0x80PORTB|=~0x80。。。。。。。。。。。。通用IO端口的第二功能除了通用數(shù)字I/O功能之外,大多數(shù)端口引腳都具有第二功能6.2IO端口的輸出應用通用IO接口的輸出設(shè)計要點輸出電平的匹配和轉(zhuǎn)換M16的IO引腳輸出與外部的電路和設(shè)備間存在一定的差別。如UART通信接口和通用的RS232通信總線電平之間的差別,需要同過RS232芯片進行電平轉(zhuǎn)換MX2325伏I/O芯片與3.3伏I/O芯片IO連接的設(shè)備會插拔,如IC卡6.2IO端口的輸出應用兩個IO中間串一個電阻200-300歐使用專用的芯片-TI的TXB01086.2IO端口的輸出應用通用IO接口的輸出設(shè)計要點輸出電流驅(qū)動能力的設(shè)計AVR提供20mA驅(qū)動電流,當外部電路需要電流大于20mA時需要行功率驅(qū)動電路設(shè)計,如電機控制、音響上拉電阻提供三級管6.2IO端口的輸出應用6.3IO端口的輸出應用輸出電平轉(zhuǎn)換的延時單片機在執(zhí)行引腳的電平轉(zhuǎn)換時僅需2個周期,這樣輸出就會是一個頻率較高的脈沖信號,應用中往往需要一個低/高電平延時較長的信號,就需要加入延時設(shè)計進行獲得可以通過計數(shù)器/定時器獲得精度較高的延時,也可以使用軟件延時獲得一個精度要求較低的延時LED發(fā)光二極管的控制軟件設(shè)計實現(xiàn)跑馬燈。8個LED逐一循環(huán)點亮#include<iom16v.h>voidmain(void){unsignedcharpin_num=0; //引腳控制的位置變量DDRB=0xFF; //設(shè)置B口為輸出口PORTB=0xFF; //設(shè)置初值為1,LED滅While(1){ PORTB=~(1<<pin_num); //依次點亮相應的LED if(++pin_num>=8)pin_num=0 //當計數(shù)等于或大于8時清零

delay_ms(500); //延時0.5s}}voiddelay_ms(unsignedintK){ unsignedinti,j;for(i=0;i<k;i++){for(j=0;i<570;j++);}}利用按鍵控制LED點亮按S1...S8鍵點亮LED1...LED8燈#include<iom16v.h>voidmain(void){ unsignedcharpin_num=0; //引腳控制狀態(tài)變量DDRB=0xFF; //設(shè)置B口為輸出口PORTB=0xFF; //設(shè)置初值為1,LED滅DDRA=0xFF; //設(shè)置A口為輸入PORTA=0xFF; //初始化A口為1,設(shè)置上拉電阻While(1){ PORTB=PINA; //依次點亮相應的LED}}6.4LED數(shù)碼顯示管的應用LED數(shù)碼管的原理8個發(fā)光二極管構(gòu)成分為共陰極和共陽極兩大類8段數(shù)碼管的字段編碼表字形hgfedcba共陰極共陽極0001111113FHC0H10000011006HF9H2010110115BHA4H3010011114FHB0H40110011066H99H5011011016DH92H6011100107DH82H70000011107HF8H8011111117FH80H9011011116FH90HA0111011177H868B011111007CH83HC0110100139HC6HD010111105EHA1HE0111100179H86HF0111000171H8EHLED數(shù)碼管的顯示電路設(shè)計可以分為:靜態(tài)顯示接口動態(tài)顯示接口靜態(tài)顯示接口即將共陽極的數(shù)碼管的共陽極端連接在電源上(共陰極的電源端連接在地上),數(shù)碼管的顯示由控制電路控制a~g的8個端口來獲得特點:不夠靈活、功耗較大、控制簡便、使用硬件資源較少動態(tài)顯示接口共陽極、共陰極的端子作為器件的選通端,由控制電路給出信號進行控制的方式特點:靈活設(shè)置、可以進行功耗設(shè)計、控制較為復雜、使用硬件資源較多常用的靜態(tài)多位LED數(shù)碼管的設(shè)計串行數(shù)據(jù)傳輸?shù)撵o態(tài)顯示接口74HC164邏輯移位寄存器74HC164串行輸入、并行輸出真值表輸入輸出CLRCLKABQAQB...QHLxxxLL...LH↓xx不變化H↑LxLQAn...QGnH↑xLLQAn...QGnH↑HHHQAn...QGn對應的控制程序,對以上的圖紙,假如PB0表示數(shù)據(jù),PB1生成時鐘#include<iom16v.h>#include<macros.h>unsignedcharcharlib[18]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF,0x00};unsignedchardisp_buff[8];voiddisp_scr(void){unsignedchartmp;unsignedinti;for(i=0;i<8;i++){tmp=charlib[disp_buff[i]];hc164_send_byte(tmp);delay_ms(2);}}voidhc164_send_byte(unsignedchardisp_Num){unsignedchara;unsignedinti;for(i=0;i<8;i++){a=PORTB&(1<<0);If(a==0)PORTB=PORTB|(disp_num&0x01)elsePORTB=PORTB&(disp_num|0xFE);PORTB=PORTB|(1<<1);PORTB=PORTB&(~(1<<1));disp_num>>=disp_num;}}常用的動態(tài)多位LED數(shù)碼管的設(shè)計6.5通用IO輸入接口設(shè)計輸入信號的分類模擬信號和數(shù)字信號模擬信號的輸入必須進行數(shù)字化處理,即進行AD轉(zhuǎn)換,然后才能進入單片機系統(tǒng)進行處理數(shù)字信號的輸入可以直接進入單片機系統(tǒng),然后進行處理電壓信號和電流信號單片機的IO接口采用電平邏輯,即只能區(qū)分高低電平、電平轉(zhuǎn)換等信號,電流信號必須經(jīng)過電壓轉(zhuǎn)換才能進入系統(tǒng)但在長距離傳輸過程中往往需要使用電平信號來進行數(shù)據(jù)傳遞單次信號和連續(xù)信號軟件設(shè)計注意注意初始狀態(tài)正確設(shè)置控制口的方向再進行讀寫操作讀取數(shù)據(jù)時應當取PINx的值而不是PORTx一個時鐘周期后才能夠讀取新設(shè)置的值簡單按鍵設(shè)計為什么不能使用K3的

連接方式?簡單的按鍵輸入設(shè)計—消除抖動抖動的產(chǎn)生力度方向按鍵的接觸方式抖動特性壓緊和放開兩個過

程分別為10~20ms按鍵閉合時間通常:300~500ms硬件消除抖動利用R-S觸發(fā)器:將信號鎖存積分電路:將抖動信號消除300~500ms10~20ms10~20ms消除抖動的方法軟件消除抖動延時兩次讀取無按鍵狀態(tài)消抖狀態(tài)按鍵確認狀態(tài)等待按鍵按下第一次測試到按鍵按下第二次測試到按鍵未按下確認按鍵按下等待按鍵釋放測試到按鍵釋放過程中只出現(xiàn)一次確認按鍵按下不能實現(xiàn)按鍵“連發(fā)”功能在單片機系統(tǒng)設(shè)計中一般不適用“連發(fā)”功能有限狀態(tài)機思想的設(shè)計!6.6基于有限狀態(tài)機的鍵盤設(shè)計鍵盤是嵌入式系統(tǒng)、單片機控制設(shè)備的最基本、最可靠的人機接口手機:手機鍵盤冰箱:溫度調(diào)節(jié)鍵。。。。。。。。。。。。。。鍵盤的種類簡單按鍵:復位建、功能選擇鍵4x4標準鍵盤4x3標準鍵盤計算機標準鍵盤。。。。。。。。。。。。。。。有限狀態(tài)機

什么是有限狀態(tài)機?應用場合?有限狀態(tài)機:一種數(shù)學模型系統(tǒng)狀態(tài)集合:系統(tǒng)輸入信號:系統(tǒng)狀態(tài)轉(zhuǎn)移函數(shù):系統(tǒng)的輸出信號集合:時間序列:有限狀態(tài)機中除了時間序列外,其他參數(shù)均為有限、可確認的集合有限狀態(tài)機中,下一步的狀態(tài)只與當前狀態(tài)和當前輸入有關(guān)有限狀態(tài)機中,系統(tǒng)的輸出只與當前狀態(tài)有關(guān)有限狀態(tài)機中,時間序列相當于脈沖時序,其長度選擇必須不大于輸入信號變化的最快周期太大容易造成信號丟失太小提高了系統(tǒng)要求以上圖所示的單鍵操作按鍵的抖動時間:5~20ms,正常時間:300~500ms則需要保證兩次讀鍵值的時間大于抖動時間,小于最小正常時間的1/2取讀鍵值時間為100ms保證了在一次按鍵過程中至少可以檢測到2次按鍵閉合,任意兩次按鍵檢測不會落在1個抖動區(qū)內(nèi)讀鍵值的軟件編寫復雜鍵盤接口設(shè)計對于復雜的鍵盤設(shè)計不可能使用IO口一一對應鍵盤多,IO資源有限,造成浪費涉及到IO口復用檢測鍵盤的值對鍵盤進行編號取值矩陣鍵盤矩陣鍵盤硬件電路設(shè)計設(shè)置PA0~PA2為輸入,接上拉電阻設(shè)置PA3~PA6為輸出即:DDRA=x1111000

PORTA=x1111111鍵盤掃描讀寫方式依次將PA3~PA64條線置0,讀取PA2~PA0的值即可判斷是哪個鍵按下PA3=0時:【PA2~PA0】=111,無鍵按下;

【PA2~PA0】=110,表示K1-1按下;

溫馨提示

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

評論

0/150

提交評論