第五章單片機(jī)的輸入輸出設(shè)備接口_第1頁
第五章單片機(jī)的輸入輸出設(shè)備接口_第2頁
第五章單片機(jī)的輸入輸出設(shè)備接口_第3頁
第五章單片機(jī)的輸入輸出設(shè)備接口_第4頁
第五章單片機(jī)的輸入輸出設(shè)備接口_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第五章 單片機(jī)的輸入/輸出設(shè)備接口第一節(jié) 鍵盤接口編碼鍵盤:編碼鍵盤: 硬件方式產(chǎn)生編碼非編碼鍵盤:非編碼鍵盤:軟件方式產(chǎn)生編碼非編碼鍵盤:結(jié)構(gòu)簡(jiǎn)單、成本低廉 鍵按行列構(gòu)成矩陣,每一個(gè)交叉點(diǎn)對(duì)應(yīng)一個(gè)鍵,實(shí)際是一個(gè)機(jī)械開關(guān)。非編碼鍵盤的接口技術(shù)的主要內(nèi)容是如何確定被按鍵的行列位置。一、鍵盤接口概述一、鍵盤接口概述1單片機(jī)實(shí)現(xiàn)鍵盤接口的常用方法獨(dú)立式鍵盤獨(dú)立式鍵盤:由一組相互獨(dú)立的按鍵組成,每個(gè)按鍵與一位I/O口相連,接口簡(jiǎn)單,但是占用I/O口較多。矩陣式按鍵矩陣式按鍵:鍵按行列組成矩陣,行和列相交處安放一個(gè)按鍵,每條行線或列線與一位I/O相連,節(jié)省I/O資源。 2鍵盤輸入接口解決的任務(wù)鍵盤掃描和

2、去抖動(dòng)按鍵開關(guān)在電路中的連接圖按鍵未按下時(shí),A點(diǎn)的電平位 +5V;按下時(shí),A點(diǎn)的電平位低電平;由于按鍵是機(jī)械的彈性開關(guān),在按下和斷開時(shí),觸點(diǎn)在閉合和斷開時(shí),會(huì)引起A點(diǎn)電位的不穩(wěn)定,一般有510ms的抖動(dòng),導(dǎo)致誤信號(hào),使CPU產(chǎn)生錯(cuò)誤的處理。硬件去抖動(dòng)方法:R-S觸發(fā)器消抖電路觸發(fā)器消抖電路+5V 閉合 斷開 濾波消抖電路濾波消抖電路軟件去抖方法:采用延遲躲過抖動(dòng),待信號(hào)穩(wěn)定后,再進(jìn)行鍵掃描。延遲時(shí)間1020ms。鍵值或鍵號(hào)的計(jì)算 當(dāng)確定有鍵按下時(shí),需進(jìn)一步根據(jù)行線和列線的狀態(tài)確定按下鍵的值或鍵號(hào),以實(shí)現(xiàn)鍵功能的程序。等待鍵釋放 獲得鍵值后在以延時(shí)或查詢的方法等待鍵釋放,以保證鍵的一次閉合只進(jìn)行

3、一次鍵功能的實(shí)現(xiàn)。確定鍵盤的監(jiān)控方法 中斷方式執(zhí)行。當(dāng)有鍵被按下時(shí),向單片機(jī)發(fā)出中斷請(qǐng)求,中斷響應(yīng)后執(zhí)行鍵盤掃描工作。 定時(shí)方式執(zhí)行。利用內(nèi)部定時(shí)計(jì)數(shù)器完成一段時(shí)間的重復(fù)定時(shí),每次定時(shí)完成執(zhí)行一次鍵盤掃描工作。 二、獨(dú)立式按鍵二、獨(dú)立式按鍵獨(dú)立式按鍵:每個(gè)按鍵單獨(dú)占有一根I/O資源,當(dāng)按鍵較多時(shí),I/O資源占用較多。其優(yōu)點(diǎn)是程序設(shè)計(jì)簡(jiǎn)單。eg、三個(gè)按鍵與8031的連接電路,試編制按鍵掃描子程序。 KEY:MOV P1,#07HMOV A,P1CPL AANL A,#07HJZ GRETJB ACC.0,KEY1JB ACC.1,KEY2JB ACC.2,KEY3GRET:RETKEY1:LCA

4、LL WORK1KEY2:LCALL WORK2KEY3:LCALL WORK3 RET三、矩陣式按鍵三、矩陣式按鍵1矩陣式鍵盤的工作原理 X0X3為鍵盤的行線,通過電阻接+5V;Y0Y3為鍵盤的列線,由單片機(jī)控制其輸入信號(hào)。每條行線和列線處有一個(gè)按鍵結(jié)構(gòu),當(dāng)所有鍵未被按下時(shí),行線與列線斷開,每條行線都呈現(xiàn)高電平。當(dāng)有鍵被按下時(shí),按鍵所在行線與列線短路,此時(shí)行線的電平由列線的電位所決定。2矩陣式鍵盤接口 48鍵盤、6位顯示器和803l的接口邏輯。圖中8031外接一片8155,8155的RAM地址為7E007EFFH,IO口地址為7F007F05H,8155的PA口為輸出口,控制鍵盤的列線Y0Y

5、7的電位作為鍵掃描口,同時(shí)又是6位顯示器的掃描口,PB口作為顯示器的段數(shù)據(jù)口,8155的C口作為輸入口,PC0PC3接行線Y0Y3,稱為鍵輸入口。 3鍵盤掃描程序鍵輸入程序的功能: (1)判別鍵盤上有無鍵閉合:其方法為掃描口PA0PA7輸出全“0”,讀PC口的狀態(tài),若PC0PC3,為全“1”(鍵盤上行線全為高電平),則鍵盤上沒有閉合鍵;若PC0PC3不為全“1”,則有鍵處于閉合狀態(tài)。 (2)去除鍵的機(jī)械抖動(dòng):其方法為判別到鍵盤上有鍵閉合后,延遲一段時(shí)間再判別鍵盤的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤上有一個(gè)鍵處于穩(wěn)定的閉合期,否則,認(rèn)為是鍵的抖動(dòng)。 (3)判別閉合鍵的鍵號(hào):方法為對(duì)鍵盤的列線進(jìn)行掃描

6、,掃描口PA0PA7依次輸出: PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 : 0 1 1 1 1 1 1 1 相應(yīng)地順次讀出PC口的狀態(tài),若PC0PC3為全“1”,則列線輸出為“0”的這一列上沒有鍵閉合;否則,這一列上有鍵閉合。閉合鍵的鍵號(hào)等于為低電平的列號(hào)加上為低電平的行的首鍵號(hào)。eg、PA口的輸出為11111101時(shí),讀出PC0PC3為1101,則1行1列相交的鍵處于閉合狀態(tài),第一行的首鍵號(hào)為8,列號(hào)為1,閉合鍵的鍵號(hào)為: N:行首鍵號(hào)+列號(hào)8+19(4)使CPU對(duì)鍵的一次閉合僅作一次處理:采用的方法為等

7、待閉合鍵釋放以后再作處理。 程序中把顯示子程序作為去抖動(dòng)延時(shí)子程序,這可使得進(jìn)入鍵輸入子程序后,顯示器始終是亮的。 該程序返回后輸入鍵的鍵號(hào)在A。鍵輸入子程序的框圖:鍵盤掃描程序如下:KEY1:ACALL KS1 ;調(diào)用判別有無鍵閉合子程序 JNZ LK1 ACALL DIR ;調(diào)用顯示子程序,延遲6ms AJMP KEY1 LK1:ACALL DIR ACALL DIR ACALL KS1 ;調(diào)用判別有無閉合鍵子程序 JNZ LK2 ACALL DIR AJMP KEY1 LK2:MOV R2,#0FEH ;掃描初值送R2 MOV R4,#00H ;掃描列號(hào)送R4 LK4:MOV DPTR,

8、#7F01H ;指向A口 MOV A,R2 MOVX DPTR,A ;掃描初值送A口 INC DPTR INC DPTR MOVX A , DPTR ;讀8155C口 JB ACC.0,LONE ;ACC.01,第0行無鍵按 下,轉(zhuǎn)LONE MOV A,#00H ;裝第0行行值 AJMP LKP ;轉(zhuǎn)去計(jì)算鍵值LONE:JB ACC.1,LTWO ;ACC.11,第1行無鍵按下,轉(zhuǎn)TWO MOV A,#08H ;裝第1行行值 AJMP LKP ;轉(zhuǎn)去計(jì)算鍵值LTWO:JB ACC.2,LTHR ;ACC.21,第2行無鍵按下,轉(zhuǎn)THR MOV A,#10H ;裝第2行行值 AJMP LKP ;

9、轉(zhuǎn)去計(jì)算鍵值LTHR:JB ACC.3,NEXT ;ACC.31,第3行無鍵按下,轉(zhuǎn)NEXT MOV A,#18H ;裝第3行值 LKP:ADD A,R4 ;計(jì)算鍵值 PUSH ACC ;保護(hù)鍵值 LK3:ACALL DIR ;延時(shí)6ms ACALL KS1 ;查鍵是否繼續(xù)閉合,若閉合再延時(shí) JNZ LK3 POP ACC ;若鍵起,則鍵碼送A RET NEXT:INC R4 MOV A,R2 JNB ACC.7,KND RL A MOV R2,A AJMP LK4KND:AJMP KEY1KS1:MOV DPTR,#7F01H ;指向A口 MOV A,#00H MOVX DPTR,A ;全“

10、0”掃描 INC DPTR INC DPTR ;指向C口 MOVX A,DPTR ;讀鍵入狀態(tài) CPL A ANL A,#0FH ;屏蔽高位 RET DIR: ;顯示子程序,延遲6ms第二節(jié) LED顯示器接口一、顯示器的結(jié)構(gòu)一、顯示器的結(jié)構(gòu)管腳配置及外形圖管腳配置及外形圖 共陰極共陰極 共陽極共陽極七段LED顯示器的顯示碼(段選碼)876543210字字型型H80H8FH82H92H99H0BH4AH9FH0C共共陽陽極極代代碼碼FH7H07DH7DH6H66FH4BH5H06FH3共共陰陰極極代代碼碼滅滅字字型型FEDCBA9FFHH84H86H1AH6CH83H88H90共共陽陽極極代代碼

11、碼H00H71H79EH5H39CH7H77FH6共共陽陽極極代代碼碼二、顯示方式二、顯示方式1LED靜態(tài)顯示方式靜態(tài)顯示方式:當(dāng)顯示器顯示某一個(gè)字符時(shí),相應(yīng)的發(fā)光二極管恒定地導(dǎo)通或截止。優(yōu)點(diǎn):顯示穩(wěn)定,節(jié)省CPU時(shí)間。缺點(diǎn):I/O口線多。 利用串行口擴(kuò)展兩片靜態(tài)顯示電路利用串行口擴(kuò)展兩片靜態(tài)顯示電路 設(shè)顯示緩沖區(qū)為30H、31H,由R1作顯示緩沖區(qū)的地址指針,74LS164的清零端CLR由P1.0控制,低電平有效。程序設(shè)計(jì)如下: DISP:MOV R6, #02H ;顯示位數(shù) MOV R1, #30H ;設(shè)顯示區(qū)指針 MOV SCON, #00H ;設(shè)串行口控制寄存器,方式0LOOP:MOV

12、 A, R1 MOV DPTR, #TAB MOVC A, A+DPTR ;查表,獲得顯示碼 MOV SBUF ,A ;送去顯示 JNB TI,$ ;等待發(fā)送完畢 CLR TI INC R1 ;取下一個(gè)數(shù) DJNZ R6, LOOP RET TAB:DB C0H,F(xiàn)9H,A4H,B0H,99H, 92H,82H,F(xiàn)8H,80H,90H2LED動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示方式:一位一位地輪流點(diǎn)亮各位顯示器(掃描)。LED動(dòng)態(tài)接口電路顯示緩沖區(qū)顯示緩沖區(qū) 在RAM中設(shè)置,用于存放要顯示的數(shù)字或字符。5LED4LED3LED2LED1LED0LEDH79AH7BH7CH7DH7EH7位控口地址0FF20H(

13、PA口),段控口地址0FF21H(PB口),控制口地址0FF23H。數(shù)碼管為共陰極,驅(qū)動(dòng)74LS240為反相器,段碼取用“共陽極段選碼”;位驅(qū)動(dòng)75451為同相。字位表字位表 20H 10H 08H 04H 02H 01H ORG 2000HDISUP:MOV P2,#0FFH MOV A,#081H ;定義8155工作方式 MOV DPTR,#0FF23H MOVX DPTR,A MOV R0,#79H ;顯示緩沖區(qū)首地址 MOV R3,#01H ;位選碼 MOV A,R3DISUP1:CPL A MOV R1,#20H ;指向A口 MOVX R1,A INC R1 ;指向B口 MOV A,

14、R0 ;取顯示數(shù)據(jù) MOV DPTR,#2100H MOVC A,A+DPTR ;查表取段數(shù)據(jù) MOVX R1,A LCALL DL1 ;延時(shí)1ms INC R0 MOV A,R3 JB ACC.5,DISUP RL A MOV R3,A SJMP DISUP1 ORG 2100H DB 0C0H,0F9H,0A4H,0B0H,99H 92H, 82H, 0F8H,80H, 90H ORG 2200HDL1:MOV R7,#02HDL: MOV R6,#0FFHDL6:DJNZ R6,DL6 DJNZ R7,DL RET電腦時(shí)鐘(定時(shí)、中斷、顯示綜合實(shí)驗(yàn))電腦時(shí)鐘(定時(shí)、中斷、顯示綜合實(shí)驗(yàn))以

15、秒、分、時(shí)為單位實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)。1實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)的基本方法(1)計(jì)數(shù)初值計(jì)算 定時(shí)器的定時(shí)時(shí)間定為125ms,計(jì)數(shù)溢出8次即得到時(shí)鐘計(jì)時(shí)的最小單位秒,而8次計(jì)數(shù)用軟件方法實(shí)現(xiàn)。 T0,方式1,fosc=6MHz,計(jì)數(shù)初值為X,則: (216-X)2125000 X6070,二進(jìn)制表示為1011110110110,十六進(jìn)制表示為17B6H。 (2)采用中斷方式進(jìn)行溢出次數(shù)的累計(jì)。計(jì)滿8次即得到秒計(jì)時(shí)。(3)從秒到分和從分到時(shí)的計(jì)時(shí)是通過累加和數(shù)值比較實(shí)現(xiàn)。(4)時(shí)鐘顯示及顯示緩沖區(qū) 2程序流程及程序清單(1)主程序(MAIN) 主程序的主要功能是進(jìn)行定時(shí)器計(jì)數(shù)器的初始化編程,然后通過反復(fù)調(diào)用顯示子程

16、序的方法,等待125ms定時(shí)中斷的到來。 (2)顯示子程序(DISUP) ORG 0000HSTART:LJMP MAIN ORG 000BH LJMP PITO ORG 1000H ;主程序 MAIN:MOV SP,#60H ;定義堆棧 MOV R0,#79H ;顯示單元清0 MOV R7,#06H ML1:MOV R0,#00H INC R0 DJNZ R7,ML1 MOV TMOD,#01H MOV TL0,#B6H MOV TH0,#17H SETB TR0 SETB EA SETB ET0 MOV 30H,#08H ;設(shè)置循環(huán)次數(shù) ML0:LCALL DISUP ;調(diào)用顯示子程序 S

17、JMP ML0(3)中斷服務(wù)程序(PITO) 中斷服務(wù)程序的主要功能是進(jìn)行計(jì)時(shí)操作。程序開始先判斷計(jì)數(shù)溢出是否滿了8次,不滿8次表明還沒達(dá)到最小計(jì)時(shí)單位秒,中斷返回;如滿8次則表明已達(dá)到最小計(jì)時(shí)單位秒,程序繼續(xù)向下執(zhí)行,進(jìn)行計(jì)時(shí)操作。 ORG 1200H ;中斷服務(wù)程序PITO:PUSH PSW ;現(xiàn)場(chǎng)保護(hù) PUSH ACC SETB PSW.3 MOV TL0,#0B6H ;置定時(shí)器初值 MOV TH0,#17H MOV A,30H DEC A MOV 30H,A JNZ RET0 MOV 30H,#08H MOV R0,#7AH ACALL DAADl ;秒+1 MOV A,R2 XRL A,#60H JNZ RET0 ACALL CLR0 ;秒單元清0 MOV R0,#7CH ACALL DAAD1 ;分+1 MOV A,R2 XRL A,#60H JNZ RET0 ACALL CLR0 ;分單元清0 MOV R0,#7EH ACALL DAAD1 ;時(shí)+1 MOV A,R2 XRL A,#24H JNZ RT0 ACALL CLR0 ;時(shí)單元清0RET0:POP ACC POP PSW RET

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論