版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單元5 按鍵模塊設(shè)計(jì)回顧 1,數(shù)碼管顯示原理?,數(shù)碼管顯示原理?2,靜態(tài)數(shù)碼管工作原理?,靜態(tài)數(shù)碼管工作原理?3,動態(tài)數(shù)碼管工作原理?,動態(tài)數(shù)碼管工作原理?4,AT89C51有幾個定時(shí)器?有幾個定時(shí)器?各是多少位的?各是多少位的?請請簡述定時(shí)器實(shí)現(xiàn)定時(shí)原理?簡述定時(shí)器實(shí)現(xiàn)定時(shí)原理?5,8051單片機(jī)定時(shí)單片機(jī)定時(shí)/計(jì)數(shù)器工作方式有多少種?計(jì)數(shù)器工作方式有多少種?6,如何設(shè)置,如何設(shè)置8051單片機(jī)工作在定時(shí)單片機(jī)工作在定時(shí)/計(jì)數(shù)模式下?計(jì)數(shù)模式下?7,如何啟動定時(shí)器工作?,如何啟動定時(shí)器工作?8,請簡述,請簡述DS1302讀取時(shí)間的編程過程?讀取時(shí)間的編程過程?本單元任務(wù)p任務(wù)1 獨(dú)立式鍵盤設(shè)
2、計(jì) p任務(wù)2 鍵盤中斷設(shè)計(jì)p任務(wù)3 矩陣式鍵盤設(shè)計(jì)p任務(wù)4 多個外部中斷設(shè)計(jì)任務(wù)1 獨(dú)立式鍵盤設(shè)計(jì) 任務(wù)描述:任務(wù)描述:任務(wù)分析:任務(wù)分析:眾多嵌入式單片機(jī)系統(tǒng)、嵌入式單片機(jī)產(chǎn)品設(shè)備中,鍵盤模塊都是眾多嵌入式單片機(jī)系統(tǒng)、嵌入式單片機(jī)產(chǎn)品設(shè)備中,鍵盤模塊都是必不可少的,比如手機(jī)及各種智能家電等。本任務(wù)通過按鍵控制點(diǎn)亮流水必不可少的,比如手機(jī)及各種智能家電等。本任務(wù)通過按鍵控制點(diǎn)亮流水燈(燈(8個按鍵分別對應(yīng)控制個按鍵分別對應(yīng)控制8個個LED),學(xué)習(xí)最簡單的鍵盤),學(xué)習(xí)最簡單的鍵盤獨(dú)立式按鍵設(shè)獨(dú)立式按鍵設(shè)計(jì)方法。計(jì)方法。 鍵盤實(shí)際上是一組開關(guān)的集合:當(dāng)鍵按下時(shí),兩根導(dǎo)線接通;釋放鍵盤實(shí)際上是一組開
3、關(guān)的集合:當(dāng)鍵按下時(shí),兩根導(dǎo)線接通;釋放時(shí),兩根導(dǎo)線不通。時(shí),兩根導(dǎo)線不通。8個按鍵的鍵盤電路可考慮在個按鍵的鍵盤電路可考慮在P2口上設(shè)計(jì),口上設(shè)計(jì),8個個LED電電路仍然安裝在單片機(jī)路仍然安裝在單片機(jī)P1口。口。8個按鍵分別對應(yīng)控制個按鍵分別對應(yīng)控制8個個LED,按下按鍵則點(diǎn),按下按鍵則點(diǎn)亮對應(yīng)的燈。亮對應(yīng)的燈。 獨(dú)立式鍵盤工作原理及應(yīng)用 n獨(dú)立式鍵盤的組成是由若干個按鍵與單片機(jī)的I/O口一一的對應(yīng)連接,然后通過讀取單片機(jī)I/O的電平狀態(tài)來確認(rèn)哪個對應(yīng)的按鍵被按下,一般一個獨(dú)立式按鍵對應(yīng)一個功能,可以通過按鍵的組合來實(shí)現(xiàn)多個功能。P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.
4、7key1key2key3key0key4key5key6key7q抖動:抖動:當(dāng)用手按下一個鍵時(shí),往往出現(xiàn)按鍵在閉合和斷開位置之當(dāng)用手按下一個鍵時(shí),往往出現(xiàn)按鍵在閉合和斷開位置之間來回跳動多次才能到閉合穩(wěn)定狀態(tài)的現(xiàn)象;在間來回跳動多次才能到閉合穩(wěn)定狀態(tài)的現(xiàn)象;在 釋放一個鍵時(shí),釋放一個鍵時(shí),也會出現(xiàn)類似的情況,這種情況就是抖動。按下一個鍵時(shí)產(chǎn)生前也會出現(xiàn)類似的情況,這種情況就是抖動。按下一個鍵時(shí)產(chǎn)生前沿抖動,釋放一個鍵時(shí)產(chǎn)生后沿抖動。抖動的持續(xù)時(shí)間隨鍵盤簧沿抖動,釋放一個鍵時(shí)產(chǎn)生后沿抖動。抖動的持續(xù)時(shí)間隨鍵盤簧片的材料和操作員而異,通常在片的材料和操作員而異,通常在510ms。而。而510m
5、s已經(jīng)對程序已經(jīng)對程序進(jìn)行多次循環(huán)掃描執(zhí)行,顯而易見,抖動問題不解決,就會引起進(jìn)行多次循環(huán)掃描執(zhí)行,顯而易見,抖動問題不解決,就會引起對閉合鍵的多次識別。對閉合鍵的多次識別。 。鍵按下前沿抖動后沿抖動閉合穩(wěn)定應(yīng)用舉例:例5-1 #includeAT89X51.Hvoid main() while(1)if(P2_0=0) /判斷判斷key0被按下被按下key_delay();/去抖延時(shí)去抖延時(shí)10msif(P2_0=0)/再次判斷再次判斷key0按下按下while(!P2_0); /等待閉合釋放等待閉合釋放P1_0=0; /點(diǎn)亮點(diǎn)亮LEDif(P2_1=0) /判斷判斷key1被按下被按下ke
6、y_delay();/去抖延時(shí)去抖延時(shí)10msif(P2_1=0) /再次判斷再次判斷key1按下按下while(!P2_1); /等待閉合釋放等待閉合釋放P1_0=1; /熄滅熄滅LED 開始P2.0=0?軟件延時(shí)10msP2.0=0?閉合釋放?P1.0=0點(diǎn)亮LEDYYYNP2.1=0?軟件延時(shí)10msP2.1=0?閉合釋放?P1.0=1熄滅LEDYYYNNNNNn1. Proteus電路設(shè)計(jì) n2. Keil C51程序設(shè)計(jì) n3. Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)實(shí)施硬件電路圖n(1)程序流程由獨(dú)立式鍵盤工作原理得知,按鍵是否按下是通過讀取按鍵對應(yīng)的IO的電平變化而判斷的,在
7、程序設(shè)計(jì)上,即通過讀取按鍵對應(yīng)IO口的電平是否為低(軟件去抖)來決定哪個按鍵被按下,當(dāng)判斷key0被按下,則點(diǎn)亮LED0;當(dāng)判斷key1被按下,則點(diǎn)亮LED1。 key0按下?key1按下?key2按下?key3按下?key4按下?key5按下?key6按下?key7按下?NNNNNNNN點(diǎn)亮LED0點(diǎn)亮LED1點(diǎn)亮LED2點(diǎn)亮LED3點(diǎn)亮LED4點(diǎn)亮LED5點(diǎn)亮LED6點(diǎn)亮LED7YYYYYYYY開始n主程序設(shè)計(jì):主程序設(shè)計(jì):#includeAT89X51.Hunsigned char code led_light=0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7
8、F;/點(diǎn)亮點(diǎn)亮LED對應(yīng)的編碼對應(yīng)的編碼void main() while(1)if(P2_0=0) /判斷判斷key0被按下被按下key_delay();/去抖延時(shí)去抖延時(shí)10msif(P2_0=0)/再次判斷再次判斷key0按下按下while(!P2_0); /等待閉合釋放等待閉合釋放P1=led_light0; /點(diǎn)亮點(diǎn)亮LED0if(P2_1=0) /判斷判斷key1被按下被按下key_delay();/去抖延時(shí)去抖延時(shí)10msif(P2_1=0) /再次判斷再次判斷key1按下按下while(!P2_1); /等待閉合釋放等待閉合釋放P1=led_light1; /點(diǎn)亮點(diǎn)亮LED1;
9、 n運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)2 鍵盤中斷設(shè)計(jì) 任務(wù)描述:任務(wù)描述:任務(wù)分析:任務(wù)分析:項(xiàng)目組掌握獨(dú)立式鍵盤設(shè)計(jì)后,現(xiàn)要求用項(xiàng)目組掌握獨(dú)立式鍵盤設(shè)計(jì)后,現(xiàn)要求用1個按鍵控制流水燈運(yùn)行樣個按鍵控制流水燈運(yùn)行樣式,初始時(shí)式,初始時(shí)8個個LED按從頭到尾方式循環(huán)運(yùn)行,當(dāng)按下按鍵,首尾兩燈點(diǎn)亮按從頭到尾方式循環(huán)運(yùn)行,當(dāng)按下按鍵,首尾兩燈點(diǎn)亮向中間,到中間后返回首尾的循環(huán)運(yùn)行,再次按下按鍵又轉(zhuǎn)為從頭到尾循向中間,到中間后返回首尾的循環(huán)運(yùn)行,再次按下按鍵又轉(zhuǎn)為從頭到尾循環(huán)運(yùn)行環(huán)運(yùn)行,即,即1個按鍵交替切換流水燈的兩種運(yùn)行樣式。個按鍵交替切換流水燈的兩種運(yùn)行樣式。 此任務(wù)設(shè)計(jì)有兩個主要功
10、能模塊,一是按鍵的判斷,二是此任務(wù)設(shè)計(jì)有兩個主要功能模塊,一是按鍵的判斷,二是LED流水流水燈的運(yùn)行。通過前面單元的學(xué)習(xí)得知,這兩個功能在主程序中無限循環(huán)判燈的運(yùn)行。通過前面單元的學(xué)習(xí)得知,這兩個功能在主程序中無限循環(huán)判斷執(zhí)行,正常人完成一次按鍵的時(shí)間需要斷執(zhí)行,正常人完成一次按鍵的時(shí)間需要20ms,而,而LED流水燈運(yùn)行頻率流水燈運(yùn)行頻率應(yīng)小于應(yīng)小于50Hz(即應(yīng)大于(即應(yīng)大于20ms走一個燈,否則運(yùn)行太快人眼無法識別),走一個燈,否則運(yùn)行太快人眼無法識別),那么如果單片機(jī)那么如果單片機(jī)CPU在執(zhí)行流水燈顯示延時(shí)程序期間,正好發(fā)生按鍵,在執(zhí)行流水燈顯示延時(shí)程序期間,正好發(fā)生按鍵,CPU無法運(yùn)
11、行按鍵掃描程序而導(dǎo)致按鍵判斷的丟失,如果無法運(yùn)行按鍵掃描程序而導(dǎo)致按鍵判斷的丟失,如果1s或更長時(shí)間走或更長時(shí)間走一個燈,那么丟失按鍵的現(xiàn)象將更加嚴(yán)重。由此可見普通的程序查詢獨(dú)立一個燈,那么丟失按鍵的現(xiàn)象將更加嚴(yán)重。由此可見普通的程序查詢獨(dú)立式按鍵設(shè)計(jì)方法在此任務(wù)設(shè)計(jì)是無法勝任的。本任務(wù)將介紹單片機(jī)重要的式按鍵設(shè)計(jì)方法在此任務(wù)設(shè)計(jì)是無法勝任的。本任務(wù)將介紹單片機(jī)重要的內(nèi)部資源內(nèi)部資源中斷系統(tǒng),它將有效解決上述問題。中斷系統(tǒng),它將有效解決上述問題。 1,中斷的概念n【例5-2】電路如5-10示,8個LED流水燈安裝在P1口,按鍵K0安裝在P2.0上,采用獨(dú)立式按鍵識別,實(shí)現(xiàn)任務(wù)描述中要求的功能。
12、 程序分析:主程序有兩個功能模塊,一方面按鍵判斷程序,另一方面LED流水燈程序。由于按鍵是兩種流水燈運(yùn)行方式的交替按鍵,因此可考慮設(shè)置按鍵控制標(biāo)志位狀態(tài),LED流水燈則判斷標(biāo)志位狀態(tài)決定運(yùn)行方式,即按鍵通過標(biāo)志位間接控制LED流水燈的運(yùn)行方式。每次按下按鍵則把標(biāo)志位取反,以達(dá)到控制LED流水燈的運(yùn)行。 LED運(yùn)行標(biāo)志位=1?按鍵按下?流水燈運(yùn)行模式1LED點(diǎn)亮延時(shí)i自加1i=8?開始Yi清0YLED運(yùn)行標(biāo)志位取反N流水燈運(yùn)行模式2LED點(diǎn)亮延時(shí)i自加1i=7?i清0YYNNNvoid main() while(1)if(P2_0=0) /判斷判斷key0被按下被按下key_delay();/去
13、抖延時(shí)去抖延時(shí)10msif(P2_0=0)/再次判斷再次判斷key0按下按下while(!P2_0); /等待閉合釋放等待閉合釋放i=0;/編碼下標(biāo)編碼下標(biāo)i清清0run_flag= run_flag; /標(biāo)志位取反標(biāo)志位取反if(run_flag=0)/判斷判斷LED運(yùn)行標(biāo)志位運(yùn)行標(biāo)志位 P1=led_light1i+; /點(diǎn)亮點(diǎn)亮LED流水燈流水燈led_delay();/點(diǎn)亮延時(shí)點(diǎn)亮延時(shí)if(i=8)i=0; elseP1=led_light2i+; /點(diǎn)亮點(diǎn)亮LED流水燈流水燈led_delay();/點(diǎn)亮延時(shí)點(diǎn)亮延時(shí)if(i=7)i=0; 2, 8051單片機(jī)中斷系統(tǒng)結(jié)構(gòu) n(1)哪
14、些事件可以引發(fā)中斷哪些事件可以引發(fā)中斷 8051單片機(jī)有5個中斷源。q外部中斷0():由連接在P3.2引腳的外部信號觸發(fā)q定時(shí)/計(jì)數(shù)器0(T0)溢出中斷q外部中斷1():由連接在P3.3引腳的外部信號觸發(fā)q定時(shí)/計(jì)數(shù)器1(T1)溢出中斷q串行口中斷:由發(fā)送中斷TXD和接收中斷RXD組成當(dāng)它們有中斷請求發(fā)出時(shí),將相應(yīng)的中斷標(biāo)志IE0、TF0、IE1、TF1、TI、RI自動置位,單片機(jī)CPU根據(jù)中斷標(biāo)志位情況判別是哪個中斷源發(fā)出的中斷請求。中斷標(biāo)志位存放在特殊功能寄存器TCON、SCON中。 n(2)中斷標(biāo)志中斷標(biāo)志 TCON SCON n(3)中斷允許與禁止中斷允許與禁止 IEq(1)EA:總中
15、斷允許控制。當(dāng)EA=1時(shí),開放所有中斷,此時(shí)各中斷源的允許和禁止通過相應(yīng)的中斷允許位單獨(dú)加以控制;當(dāng)EA=0時(shí),禁止所有中斷。q(2)ES:允許或禁止串行口中斷控制位。ES=1,允許中斷;ES=0,禁止中斷。q(3)ET1:允許或禁止定時(shí)器T1溢出中斷控制位。ET1=1,允許中斷;ET1=0,禁止中斷。q(4)EX1:允許或禁止中斷控制位。EX1=1,允許中斷;EX1=0,禁止中斷。q(5)ET0:允許或禁止定時(shí)器T0溢出中斷控制位。ET0=1,允許中斷;ET0=0,禁止中斷。q(6)EX0:允許或禁止中斷控制位。EX0=1,允許中斷;EX0=0,禁止中斷。 n(4)中斷的響應(yīng)條件中斷的響應(yīng)條
16、件首先中斷源有請求。其次編程設(shè)置單片機(jī)CPU允許所有中斷源請求(EA=1),并且中斷允許寄存器IE相應(yīng)位置為1。這樣,在每個機(jī)器周期內(nèi),單片機(jī)對所有中斷源進(jìn)行順序檢測,并找到所有有效的中斷請求,對其優(yōu)先級排隊(duì)。單片機(jī)在緊接著下一個機(jī)器周期響應(yīng)中斷條件是:1無同級或更高級中斷占用CPU控制權(quán);2當(dāng)前指令執(zhí)行完畢;3如果當(dāng)前指令為RETI或需訪問IE、IP的指令,執(zhí)行完該指令且緊隨其后的一條指令也已執(zhí)行完畢。否則,單片機(jī)將放棄對中斷請求的響應(yīng)。 n(5)中斷響應(yīng)過程中斷響應(yīng)過程 中斷的響應(yīng)過程由單片機(jī)CPU控制,自動完成,具體有如下幾個步驟:q執(zhí)行一個硬件子程序調(diào)用,處理優(yōu)先級最高的中斷請求,清除
17、中斷請求標(biāo)志位(TI和RI除外);硬件子程序?qū)纹瑱C(jī)當(dāng)前執(zhí)行的內(nèi)容的地址壓入堆棧,轉(zhuǎn)入執(zhí)行相應(yīng)中斷服務(wù)程序的第一條指令。q中斷處理程序從入口地址開始一直執(zhí)行到最后為止;q系統(tǒng)返回原來被打斷的程序處開始繼續(xù)執(zhí)行。 3,中斷編程結(jié)構(gòu) n(1) 編寫中斷初始化程序 為使單片機(jī)CPU在執(zhí)行主程序過程中能夠響應(yīng)中斷,就必須先對使用中斷的相關(guān)寄存器(TMOD、SCON、IE等)進(jìn)行初始化?!纠?-3】假設(shè)單片機(jī)系統(tǒng)允許外部中斷0、定時(shí)/計(jì)數(shù)器T0中斷,并設(shè)定采用邊沿觸發(fā),則主程序中的中斷初始化程序如下:IT0=1;/設(shè)置為下降沿觸發(fā)EX0=1;/允許中斷ET0=1;/允許T0中斷EA=1;/開放所有中斷
18、n(2)編寫中斷服務(wù)程序 q中斷程序入口。C51規(guī)定了8051單片機(jī)每種中斷類型對應(yīng)中斷服務(wù)程序的入口編號中斷類型中斷類型C51中斷處理程序的中斷號中斷處理程序的中斷號外部中斷00定時(shí)/計(jì)數(shù)器0溢出中斷1外部中斷12定時(shí)/計(jì)數(shù)器1溢出中斷3串行口中斷4q現(xiàn)場保護(hù)。如果中斷服務(wù)程序中要使用與主程序有關(guān)的寄存器,那么CPU在執(zhí)行中斷服務(wù)程序之前要保護(hù)這些寄存器的內(nèi)容,即“保護(hù)現(xiàn)場”,中斷返回時(shí)再恢復(fù)它們的值。在使用Keil uVison4集成開發(fā)環(huán)境時(shí),其C51編譯器為中斷服務(wù)程序提供自動現(xiàn)場保護(hù)以及返回時(shí)內(nèi)容恢復(fù)的功能,為用戶編程提供了方便。 常用的中斷服務(wù)程序的結(jié)構(gòu)如下。 void 中斷程序名
19、( ) interrupt 中斷號 using n ;其中“中斷程序名”最好依據(jù)中斷服務(wù)程序的功能,取一個比較直觀淺顯的名稱;“interrupt”是中斷服務(wù)程序的關(guān)鍵字; “中斷號”則根據(jù)表5-1所示,如果使用外部事件0中斷,則“中斷號”為0;using定義工作寄存器組;n為寄存器組編號(03),默認(rèn)為0;“ ”內(nèi)部為中斷服務(wù)要執(zhí)行的程序。 4,按鍵與外部事件中斷 (1)IT0:設(shè)置為1,選擇外部中斷0由下降沿觸發(fā),即當(dāng)出現(xiàn)一個下降沿表示有一個外部中斷0的請求信號。為什么將IT0設(shè)置為1呢?任務(wù)1學(xué)習(xí)得知(圖6-3),按鍵按下將會產(chǎn)生一個從高電平到低電平的邊沿跳變(稱為“下降沿”),按鍵松開
20、產(chǎn)生從低電平到高電平的邊沿跳變(稱為“上升沿”)。因此1次按鍵信號(產(chǎn)生一次下降沿)正好轉(zhuǎn)化成外部中斷0信號。(2)IE0:無需初始,它由硬件自動設(shè)置。(3)EX0:設(shè)置為1,即允許CPU響應(yīng)外部中斷0請求。 (4)EA:設(shè)置為1,允許CPU響應(yīng)所有中斷請求。 n1. Proteus電路設(shè)計(jì) n2. Keil C51程序設(shè)計(jì) n3. Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)實(shí)施硬件電路圖n(1)程序流程主程序根據(jù)標(biāo)志位狀態(tài),無限循環(huán)執(zhí)行LED流水燈程序;按鍵的判斷轉(zhuǎn)化成中斷處理,按下按鍵則意味著一次中斷事件發(fā)生,單片機(jī)處理按鍵任務(wù),即跳轉(zhuǎn)到INT0中斷處理程序中,交替將LED流水燈標(biāo)志位置1
21、/清0。 運(yùn)行流水燈led_light1i+LED運(yùn)行標(biāo)志=1?LED點(diǎn)亮延時(shí)i=0i=8?開始NY初始中斷寄存器及變量運(yùn)行流水燈led_light2i+LED點(diǎn)亮延時(shí)i=0i=7?NYYN主程序設(shè)計(jì):主程序設(shè)計(jì):void main() IT0 = 1;/設(shè)置外部中斷設(shè)置外部中斷0觸發(fā)方式位,觸發(fā)方式位,1為邊沿觸發(fā)為邊沿觸發(fā)EX0 = 1; /外部中斷外部中斷0中斷允許位中斷允許位EA = 1;/允許總中斷標(biāo)志位允許總中斷標(biāo)志位while(1)if(run_flag=0)/判斷運(yùn)行標(biāo)志位狀態(tài)判斷運(yùn)行標(biāo)志位狀態(tài)P1 = led_light1i+;delay();if(i=8)i=0;elseP
22、1=led_light2i+; /點(diǎn)亮點(diǎn)亮LED流水燈流水燈delay();/點(diǎn)亮延時(shí)點(diǎn)亮延時(shí)if(i=7)i=0;中斷程序:void int0() interrupt 0/中斷服務(wù)函數(shù)入口EX0 = 0;i=0;run_flag =run_flag;/每按一下按鍵,行標(biāo)志位取反EX0 = 1; 開始LED運(yùn)行標(biāo)志位取反返回禁止INT0中斷允許INT0中斷n運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)3 矩陣式鍵盤設(shè)計(jì) 任務(wù)描述:任務(wù)描述:任務(wù)分析:任務(wù)分析:當(dāng)嵌入式產(chǎn)品、設(shè)備中的按鍵數(shù)目較多時(shí),將采用更普遍的按鍵設(shè)當(dāng)嵌入式產(chǎn)品、設(shè)備中的按鍵數(shù)目較多時(shí),將采用更普遍的按鍵設(shè)計(jì)方法計(jì)方法矩陣式
23、鍵盤。本任務(wù)要求運(yùn)用矩陣式鍵盤的設(shè)計(jì)方法設(shè)計(jì)矩陣式鍵盤。本任務(wù)要求運(yùn)用矩陣式鍵盤的設(shè)計(jì)方法設(shè)計(jì)9個按鍵個按鍵控制點(diǎn)亮控制點(diǎn)亮1個數(shù)碼管分別顯示個數(shù)碼管分別顯示19。 獨(dú)立式鍵盤的每個按鍵都要獨(dú)占一位獨(dú)立式鍵盤的每個按鍵都要獨(dú)占一位I/O,當(dāng)按鍵較多就會嚴(yán)重耗費(fèi),當(dāng)按鍵較多就會嚴(yán)重耗費(fèi)單片機(jī)的單片機(jī)的I/O資源。比如計(jì)算機(jī)的鍵盤功能有資源。比如計(jì)算機(jī)的鍵盤功能有100多個,如果采用獨(dú)立式方多個,如果采用獨(dú)立式方法設(shè)計(jì),就需要法設(shè)計(jì),就需要100多個多個I/O,因此獨(dú)立式鍵盤設(shè)計(jì)在按鍵較多的情況下不,因此獨(dú)立式鍵盤設(shè)計(jì)在按鍵較多的情況下不再適合。本任務(wù)將探討新的方法再適合。本任務(wù)將探討新的方法矩陣
24、式鍵盤設(shè)計(jì),盡可能少占用矩陣式鍵盤設(shè)計(jì),盡可能少占用I/O資源資源又保證設(shè)計(jì)的效果。又保證設(shè)計(jì)的效果。矩陣式鍵盤工作原理及應(yīng)用 n矩陣式鍵盤是利用幾根I/O口線作為列,幾根作為行,行跟列相交叉,在交叉點(diǎn)用按鍵連接列和行的I/O口線。 2341掃描循環(huán)掃描循環(huán)矩陣式鍵盤的工作原理工作原理是單片機(jī)通過定時(shí)掃描的方式來查詢按鍵的狀態(tài),如先從行掃描,在掃描第一行的時(shí)候查詢在這一行上與列相交叉的按鍵有沒有被按下,如果沒有按鍵按下就以掃描第一行的方式掃描第二行,這樣循環(huán)掃描所有的行,如果有就作出相應(yīng)的處理,處理實(shí)現(xiàn)后再繼續(xù)重新掃描。由于在掃描第1行的時(shí)候P2.3=0,但行P2.3與列P2.7交叉處的按鍵被
25、按下時(shí),P2.7就會從本來的高電平變?yōu)榈碗娖?從而確定是哪個按鍵被按下. 應(yīng)用舉例:例5-5 #define Portkey P2/鍵盤控制端鍵盤控制端 列線列線P2.0 P2.1#define KeyColm1 P2_2/行線行線 P2.2 P2.3 Portkey=0 xff; /矩陣按鍵全輸出矩陣按鍵全輸出1KeyColm1=0; /選擇掃描第一行選擇掃描第一行key_temp=Portkey; /讀按鍵控制端讀按鍵控制端key_temp=key_temp&0 x03;/0000,0011 讀取列線鍵值讀取列線鍵值if(key_temp!=0 x03)/如果鍵值不等于如果鍵值不等
26、于0 x03key_delay();/去抖延時(shí)去抖延時(shí)key_temp=Portkey; /讀按鍵控制端讀按鍵控制端key_temp=key_temp&0 x03;/0000,0111 讀取列線鍵值讀取列線鍵值if(key_temp!=0 x03)/如果鍵值仍不等于如果鍵值仍不等于0 x03switch(key_temp)/對讀取的鍵盤分配相應(yīng)鍵碼對讀取的鍵盤分配相應(yīng)鍵碼case 0 x02: /0000 0010,key0被按下被按下break;case 0 x01: /0000 0001,key1被按被按 break; 開始列線IO不全為1軟件延時(shí)10ms列線IO不全為1分析哪根列
27、線IO為0執(zhí)行按鍵對應(yīng)程序返回NNYY被掃描行線IO=0讀列線IO電平n1. Proteus電路設(shè)計(jì) n2. Keil C51程序設(shè)計(jì) n3. Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)實(shí)施硬件電路圖n(1)程序流程程序設(shè)計(jì)最重要的部分就是矩陣鍵盤的掃描,此電路為33鍵盤,編程從行開始逐行掃描,掃描至第三行,重新開始循環(huán)第一行掃描。 有按鍵按下?掃描第一行執(zhí)行按鍵按下對應(yīng)程序Y有按鍵按下?掃描第一行執(zhí)行按鍵按下對應(yīng)程序YNN有按鍵按下?掃描第一行執(zhí)行按鍵按下對應(yīng)程序Y有按鍵按下?掃描第一行執(zhí)行按鍵按下對應(yīng)程序YNN開始主程序設(shè)計(jì):主程序設(shè)計(jì):main()key=9;/初始顯示關(guān)閉初始顯示關(guān)閉w
28、hile(1)Portkey=0 xff; /矩陣按鍵全輸出矩陣按鍵全輸出1KeyColm1=0; /選擇掃描第一行選擇掃描第一行key_temp=Portkey; /讀按鍵控制端讀按鍵控制端key_temp=key_temp&0 x07;/0000,0111 讀取鍵值讀取鍵值if(key_temp!=0 x07)/如果鍵值不等于如果鍵值不等于0 x07key_delay();/去抖延時(shí)去抖延時(shí)key_temp=Portkey; /讀按鍵控制端讀按鍵控制端key_temp=key_temp&0 x07;/0000,0111 讀取鍵值讀取鍵值if(key_temp!=0 x07)
29、/如果鍵值仍不等于如果鍵值仍不等于0 x07switch(key_temp)/對讀取的鍵盤分配相應(yīng)鍵碼對讀取的鍵盤分配相應(yīng)鍵碼case 0 x06: /0000 0110,k0被按下被按下key=0;/顯示內(nèi)容變量顯示內(nèi)容變量break;case 0 x05:/0000 0101,k1被按下被按下key=1;break;case 0 x03:/0000 0011,k2被按下被按下key=2;break; ;n運(yùn)行Proteus-Keil聯(lián)合調(diào)試仿真 【課堂練習(xí)【課堂練習(xí)】構(gòu)建22矩陣式鍵盤(K0、K1、K2、K3),控制2個共陽極數(shù)碼管對應(yīng)顯示23、68、77、19。 任務(wù)4 多個外部中斷設(shè)計(jì)
30、 任務(wù)描述:任務(wù)描述:任務(wù)分析:任務(wù)分析:在實(shí)際項(xiàng)目設(shè)計(jì)中,有些時(shí)候可能需要將不止一個事件設(shè)計(jì)成中斷在實(shí)際項(xiàng)目設(shè)計(jì)中,有些時(shí)候可能需要將不止一個事件設(shè)計(jì)成中斷處理任務(wù),這就涉及到多個中斷并存的情況。本任務(wù)要求設(shè)計(jì)兩個按鍵分處理任務(wù),這就涉及到多個中斷并存的情況。本任務(wù)要求設(shè)計(jì)兩個按鍵分別控制別控制LED流水燈工作流程,當(dāng)流水燈工作流程,當(dāng)k0按下,流水燈從兩頭向中間運(yùn)行,達(dá)到按下,流水燈從兩頭向中間運(yùn)行,達(dá)到中間返回兩頭,來回往返;當(dāng)中間返回兩頭,來回往返;當(dāng)k1按下,流水燈先點(diǎn)亮紅燈,再點(diǎn)亮藍(lán)燈,按下,流水燈先點(diǎn)亮紅燈,再點(diǎn)亮藍(lán)燈,即重復(fù)點(diǎn)亮紅燈、藍(lán)燈。即重復(fù)點(diǎn)亮紅燈、藍(lán)燈。 按鍵控制流水燈
31、工作狀態(tài),不能采用獨(dú)立式按鍵設(shè)計(jì)。因此兩個按按鍵控制流水燈工作狀態(tài),不能采用獨(dú)立式按鍵設(shè)計(jì)。因此兩個按鍵都應(yīng)運(yùn)用鍵都應(yīng)運(yùn)用“中斷中斷”的設(shè)計(jì)方法,的設(shè)計(jì)方法,89C51有有INT0、INT1兩個外部中斷,可兩個外部中斷,可以滿足兩個按鍵的設(shè)計(jì)要求。以滿足兩個按鍵的設(shè)計(jì)要求。 中斷優(yōu)先級 n當(dāng)幾個中斷源同時(shí)向單片機(jī)CPU發(fā)出中斷請求時(shí),CPU應(yīng)優(yōu)先響應(yīng)最需緊急處理的中斷請求。為此,需要規(guī)定各個中斷源的優(yōu)先級,使CPU在多個中斷源同時(shí)發(fā)出中斷請求時(shí)能找到優(yōu)先級最高的中斷源,響應(yīng)它的中斷請求。高優(yōu)先級的中斷請求處理完畢以后,再響應(yīng)優(yōu)先級低的中斷請求。n中斷源的響應(yīng)優(yōu)先級由寄存器IP確定,中斷系統(tǒng)可以
32、在IP定義兩個優(yōu)先級水平,即高優(yōu)先級水平和低優(yōu)先級水平;同時(shí)規(guī)定了同一水平下不同中斷源的優(yōu)先級。 n特殊功能寄存器IP n1. Proteus電路設(shè)計(jì) n2. Keil C51程序設(shè)計(jì) n3. Proteus-Keil聯(lián)合調(diào)試仿真 任務(wù)實(shí)施硬件電路圖n兩個按鍵對應(yīng)為外部中斷0、外部中斷1,因此鍵盤電路必須設(shè)計(jì)在外部中斷口上,如圖5-30示將按鍵k0、k1分別設(shè)計(jì)在P3.2/INT0、P3.3/INT1管腳上,LED電路依然設(shè)計(jì)在P1口上。 n(1)程序流程由于兩個按鍵分別控制流水燈不同運(yùn)行狀態(tài),因此程序設(shè)計(jì)中采用兩個運(yùn)行標(biāo)志位進(jìn)行相應(yīng)的判斷;而兩個按鍵的都轉(zhuǎn)化成中斷處理,按下按鍵k0,代表INT0中斷事件發(fā)生,按下按鍵k1,代表INT1中斷事件發(fā)生,單片機(jī)響應(yīng)按鍵,即跳轉(zhuǎn)到響應(yīng)中斷的處理程序中,將對應(yīng)的運(yùn)行標(biāo)志位置1。在使用“中斷”時(shí),都應(yīng)初始兩個中斷相關(guān)的寄存器。 led_light1i+運(yùn)行判斷運(yùn)行標(biāo)志位LED點(diǎn)亮延時(shí)i=0i=8?開始NY初始INT0、INT1寄存器led_light2i+運(yùn)行LED點(diǎn)亮延時(shí)i=0i=2?Yl
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙聯(lián)戶聯(lián)戶長先進(jìn)主要事跡(6篇)
- 網(wǎng)絡(luò)安全漏洞挖掘算法-洞察分析
- 網(wǎng)絡(luò)安全應(yīng)急響應(yīng)機(jī)制研究洞察報(bào)告-洞察分析
- 《RFID基本原理》課件
- 心理健康與老年癡呆預(yù)防-洞察分析
- 土壤養(yǎng)分精準(zhǔn)管理效果評估-洞察分析
- 虛擬卡在虛擬現(xiàn)實(shí)(VR)和增強(qiáng)現(xiàn)實(shí)(AR)技術(shù)中的研究-洞察分析
- 醫(yī)院防火應(yīng)急預(yù)案范文(7篇)
- 人教版教學(xué)課件基因和染色體的關(guān)系:減數(shù)分裂和受精作用
- 農(nóng)業(yè)科技創(chuàng)新的跨學(xué)科合作模式
- 2024年-江蘇省安全員-A證考試題庫及答案
- 2024年青干班培訓(xùn)個人總結(jié)
- 2021~2022學(xué)年廣東廣州越秀區(qū)八年級上學(xué)期期末語文試卷(含答案)
- 固態(tài)電池生產(chǎn)(1GWH)項(xiàng)目可行性研究報(bào)告模板-立項(xiàng)拿地
- 中建一期工程履帶吊安拆方案
- 廣東省深圳市坪山區(qū)2024學(xué)年七年級上學(xué)期期末數(shù)學(xué)試題【含答案】
- 2024游樂新“室”界室內(nèi)樂園洞察與趨勢研究報(bào)告
- 校園餐整治存在的問題及建議
- 2024秋期國家開放大學(xué)??啤陡叩葦?shù)學(xué)基礎(chǔ)》一平臺在線形考(形考任務(wù)一至四)試題及答案
- 國開(內(nèi)蒙古)2024年《創(chuàng)新創(chuàng)業(yè)教育基礎(chǔ)》形考任務(wù)1-3終考任務(wù)答案
- 2023建筑施工技術(shù)規(guī)范
評論
0/150
提交評論