版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章人機(jī)接口技術(shù)-1微機(jī)原理與接口技術(shù)1內(nèi)容提要
本章分為11教學(xué)單元,主要包括鍵盤(pán)基礎(chǔ)知識(shí),獨(dú)立式、矩陣式按鍵的硬件接口和軟件設(shè)計(jì)方法;段碼式、點(diǎn)陣式LED的顯示原理、硬件接口和軟件設(shè)計(jì)方法;液晶顯示原理、控制器ST7920、LCD模塊與硬件連接、LCD程序設(shè)計(jì)。第8章人機(jī)接口技術(shù)
人機(jī)接口是微控制器系統(tǒng)的重要組成部分,是實(shí)現(xiàn)人與微機(jī)系統(tǒng)信息交互的接口技術(shù)。人機(jī)交互的輸入設(shè)備如鍵盤(pán)、撥碼開(kāi)關(guān)等,用于向微機(jī)系統(tǒng)輸入命令和參數(shù)等;輸出設(shè)備如段碼式LED、點(diǎn)陣式LED、LCD顯示器等,用于顯示微機(jī)系統(tǒng)的測(cè)量與處理結(jié)果以及狀態(tài)信息。2教學(xué)單元第8章人機(jī)接口技術(shù)1.鍵盤(pán)基礎(chǔ)知識(shí)2.獨(dú)立式鍵盤(pán)接口技術(shù)3.矩陣式鍵盤(pán)接口技術(shù)4.段碼式LED接口技術(shù)5.點(diǎn)陣式LED接口技術(shù)3教學(xué)單元第8章人機(jī)接口技術(shù)1.鍵盤(pán)基礎(chǔ)知識(shí)2.獨(dú)立式鍵盤(pán)接口技術(shù)3.矩陣式鍵盤(pán)接口技術(shù)4.段碼式LED接口技術(shù)5.點(diǎn)陣式LED接口技術(shù)主要內(nèi)容4第8章人機(jī)接口技術(shù)
主要介紹鍵盤(pán)的的三種工作方式,按鍵去抖動(dòng)方法,按鍵連擊的消除與利用,重鍵的處理等鍵盤(pán)基礎(chǔ)知識(shí)。58.1鍵盤(pán)接口技術(shù)8.1鍵盤(pán)接口技術(shù)鍵盤(pán):微機(jī)系統(tǒng)中最常用的輸入設(shè)備,用戶(hù)通過(guò)鍵盤(pán)輸入命令、數(shù)據(jù),實(shí)現(xiàn)人機(jī)交互。鍵盤(pán)與微控制器的接口包括硬件與軟件兩部分。硬件是指鍵盤(pán)的組織,即鍵盤(pán)結(jié)構(gòu)及其與MCU的連接方式。軟件是指對(duì)按鍵操作的識(shí)別與分析,稱(chēng)為鍵盤(pán)管理程序。鍵盤(pán)管理程序:識(shí)鍵:判斷是否有鍵按下。若有,則進(jìn)行譯碼;若無(wú),則等待或轉(zhuǎn)做別的工作。譯鍵:識(shí)別出哪一個(gè)鍵被按下,并產(chǎn)生相應(yīng)的鍵值。去抖動(dòng):消除按鍵按下或釋放時(shí)產(chǎn)生的抖動(dòng)。鍵值分析:根據(jù)鍵值,執(zhí)行對(duì)應(yīng)按鍵的處理程序。第8章人機(jī)接口技術(shù)68.1鍵盤(pán)接口技術(shù)8.1.1鍵盤(pán)基礎(chǔ)知識(shí)第8章人機(jī)接口技術(shù)1.鍵盤(pán)的組織鍵盤(pán)可分為編碼式鍵盤(pán)或非編碼式鍵盤(pán)。編碼式鍵盤(pán):由鍵盤(pán)和專(zhuān)用鍵盤(pán)編碼器(鍵盤(pán)管理芯片)兩部分構(gòu)成。鍵盤(pán)管理芯片自動(dòng)完成鍵盤(pán)的掃描和譯碼。編碼式鍵盤(pán)使用很方便,成本相對(duì)較高。常用的大規(guī)模集成電路鍵盤(pán)管理芯片如HD7279等。非編碼式鍵盤(pán):只簡(jiǎn)單地提供按鍵的通斷信號(hào),但某鍵按下時(shí),鍵盤(pán)送出一個(gè)閉合(低電平)信號(hào)。該按鍵鍵值的確定必須借助于軟件來(lái)實(shí)現(xiàn)。所以非編碼式鍵盤(pán)的軟件比較復(fù)雜,占用CPU時(shí)間多。但成本低、使用靈活,在微機(jī)系統(tǒng)中,得到廣泛應(yīng)用。
非編碼式鍵盤(pán)可分為獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán)。78.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)2.按鍵抖動(dòng)與消除
觸點(diǎn)式按鍵在閉合和斷開(kāi)瞬間存在抖動(dòng)過(guò)程,即存在抖動(dòng)現(xiàn)象,前后沿抖動(dòng)時(shí)間一般在5ms~10ms。按鍵的穩(wěn)定時(shí)間與按鍵動(dòng)作有關(guān),通常大于50ms。按鍵抖動(dòng)可能導(dǎo)致微機(jī)對(duì)一次按鍵操作作出多次響應(yīng),所以要去抖動(dòng)。(1)硬件電路去抖動(dòng):需要利用RS觸發(fā)器等構(gòu)成去抖動(dòng)電路(很少使用)。(2)軟件延時(shí)法:當(dāng)檢測(cè)到有鍵按下時(shí),用軟件延時(shí)10ms~20ms,等待鍵穩(wěn)定后重新再判一次,以躲過(guò)觸點(diǎn)的抖動(dòng)期。8.1.1鍵盤(pán)基礎(chǔ)知識(shí)88.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)3.鍵盤(pán)的工作方式
微機(jī)系統(tǒng)中CPU對(duì)鍵盤(pán)進(jìn)行掃描時(shí),要兼顧兩方面的問(wèn)題:要及時(shí)響應(yīng),保證系統(tǒng)對(duì)按鍵的每一次操作都能作出響應(yīng);不能占用CPU過(guò)多的時(shí)間。鍵盤(pán)的三種工作方式:編程掃描方式(查詢(xún)方式):是利用CPU在完成其他工作的空閑,調(diào)用鍵盤(pán)掃描程序。當(dāng)CPU在運(yùn)行其他程序時(shí),不會(huì)響應(yīng)按鍵操作。定時(shí)掃描方式:用定時(shí)器產(chǎn)生定時(shí)中斷,在定時(shí)中斷中對(duì)鍵盤(pán)進(jìn)行掃描。定時(shí)中斷周期一般應(yīng)≤50ms。該方式常會(huì)出現(xiàn)CPU??諕呙锠顟B(tài)。中斷工作方式:當(dāng)有鍵按下時(shí),利用硬件產(chǎn)生外部中斷請(qǐng)求,CPU響應(yīng)中斷后對(duì)鍵盤(pán)進(jìn)行掃描。該方式優(yōu)于定時(shí)掃描方式,既能及時(shí)響應(yīng)按鍵操作,又節(jié)省CPU時(shí)間。8.1.1鍵盤(pán)基礎(chǔ)知識(shí)98.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)4.按鍵連擊的消除與利用
連擊:一次按鍵操作被多次執(zhí)行的現(xiàn)象稱(chēng)為連擊,有利有弊。按鍵連擊的消除:在程序中加入等待按鍵釋放的處理,保證一次操作只被響應(yīng)一次。8.1.1鍵盤(pán)基礎(chǔ)知識(shí)108.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)4.按鍵連擊的消除與利用按鍵連擊的利用:如設(shè)置“增1”、“減1”兩個(gè)按鍵,利用按鍵的連擊,長(zhǎng)按住“增1”、“減1”鍵,則參數(shù)會(huì)不斷增加或減少??梢蕴娲?~9的數(shù)字鍵,有效減少按鍵數(shù)量。8.1.1鍵盤(pán)基礎(chǔ)知識(shí)118.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)5.重鍵保護(hù)與實(shí)現(xiàn)重鍵:由于操作不慎,可能會(huì)造成同時(shí)有幾個(gè)鍵被按下,這種現(xiàn)象稱(chēng)為重鍵。出現(xiàn)重鍵時(shí),就產(chǎn)生了如何識(shí)別和作出響應(yīng)的問(wèn)題。處理重鍵的技術(shù):(1)“N鍵鎖定”:當(dāng)掃描到有多個(gè)鍵被按下時(shí),只把最后一個(gè)釋放的按鍵作為有效鍵進(jìn)行響應(yīng)。(2)“N鍵輪回”:當(dāng)掃描到有多個(gè)鍵被按下時(shí),對(duì)所有按下的按鍵依次產(chǎn)生鍵值并作出響應(yīng)。8.1.1鍵盤(pán)基礎(chǔ)知識(shí)128.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)5.重鍵保護(hù)與實(shí)現(xiàn)在微機(jī)系統(tǒng)中,通常采取單鍵按下有效、多鍵按下無(wú)效的策略,即采用N鍵鎖定方法。8.1.1鍵盤(pán)基礎(chǔ)知識(shí)13教學(xué)單元第8章人機(jī)接口技術(shù)1.鍵盤(pán)基礎(chǔ)知識(shí)2.獨(dú)立式鍵盤(pán)接口技術(shù)3.矩陣式鍵盤(pán)接口技術(shù)4.段碼式LED接口技術(shù)5.點(diǎn)陣式LED接口技術(shù)主要內(nèi)容14第8章人機(jī)接口技術(shù)
主要介紹獨(dú)立式鍵盤(pán)接口技術(shù),包括按鍵的硬件連接和程序設(shè)計(jì)。158.1鍵盤(pán)接口技術(shù)8.1.2獨(dú)立式鍵盤(pán)接口第8章人機(jī)接口技術(shù)獨(dú)立式鍵盤(pán):每個(gè)按鍵占用一根I/O口線(xiàn)。無(wú)按鍵按下時(shí),各I/O口線(xiàn)輸入狀態(tài)為高電平;當(dāng)有按鍵按下時(shí),I/O口線(xiàn)變?yōu)榈碗娖?。只要CPU檢測(cè)到某一I/O口線(xiàn)為“0”,便可判別對(duì)應(yīng)按鍵被按下。優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)單,按鍵識(shí)別容易。缺點(diǎn):當(dāng)按鍵較多時(shí),占用I/O口線(xiàn)多,只適用于按鍵較少的系統(tǒng)。獨(dú)立式按鍵接口電路168.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)程序流程(查詢(xún)式):
首先判斷有無(wú)鍵按下,若檢測(cè)到有鍵按下,延時(shí)10ms去抖動(dòng);再逐位查詢(xún)是哪個(gè)按鍵按下并執(zhí)行相應(yīng)按鍵的處理程序;最后等待按鍵釋放并延時(shí)10ms去除后沿抖動(dòng)。8.1.2獨(dú)立式鍵盤(pán)接口178.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)中斷掃描思路:無(wú)鍵按下時(shí),4與門(mén)輸入全為高電平,不會(huì)產(chǎn)生中斷。當(dāng)任一鍵按下時(shí),INT0變?yōu)榈碗娖剑騇CU請(qǐng)求中斷。MCU響應(yīng)中斷,掃描按鍵,得到鍵值。匯編主程序:ORG 0000HSJMP MAINORG 0003HLJMP INT0SUB;外部中斷0中斷程序ORG 0100HMAIN: SETB IT0;設(shè)置INT0為下降沿觸發(fā)方式SETB EX0;允許INT0中斷SETB EA;允許CPU中斷CLR KEYFLAG;清“有鍵按下”標(biāo)志LOOP: JNB KEYFLAG,LOOP;等待中斷 CLR KEYFLAG LCALL KEYPROCESS ;執(zhí)行按鍵處理程序
SJMP LOOP8.1.2獨(dú)立式鍵盤(pán)接口188.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)匯編中斷程序:
ORG 0200HINT0SUB: LCALL DELAY10ms;去前沿抖動(dòng) MOV R3,#00H;設(shè)置鍵值初值 MOV A,P1 ANL A,#0FH CJNE A,#0FH,SCAN;判斷是否有按鍵按下 MOV A,#0FFH SJMP NOKEY ;不是正常的按鍵操作SCAN: MOV R2,#4 ;設(shè)置查詢(xún)按鍵數(shù)SCAN1: RRC A JNC FINDKEY;找到閉合的鍵 INC R3 DJNZ R2,SCAN1 MOV A,#0FFH ;沒(méi)有掃描到有效按鍵SJMP NOKEY FINDKEY:MOV A,R3 SETB KEYFLAG;建立“有鍵按下”標(biāo)志
WAIT: MOV A,P1 ANL A,#0FH CJNE A,#0FH,WAIT;等待按鍵釋放 LCALL DELAY10ms;去后沿抖動(dòng)NOKEY: RETI掃描按鍵,鍵值存放在R3中。K0的鍵值=0;K1的鍵值=1;K2的鍵值=2;K3的鍵值=3;8.1.2獨(dú)立式鍵盤(pán)接口
K3K2K1K0
C0000P1.3P1.2P1.1P1.0
A198.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)C51程序:#include<reg51.h>intkeyValue=-1;intmain(void)//主函數(shù){IT0=1;//設(shè)置INT0的觸發(fā)方式EX0=1;//INT0中斷允許EA=1;//CPU中斷允許while(1);{if(keyValue>=0);{ KeyProcess(keyValue);//調(diào)用按鍵處理函數(shù)keyValue=-1;}}return0;}8.1.2獨(dú)立式鍵盤(pán)接口208.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)C51程序:voidgetkey(void)interrupt0using1//中斷函數(shù){ucharn=4;count=0;temp=0; //設(shè)循環(huán)次數(shù),計(jì)數(shù)器清0ucharstatedelay_ms(10); //去前沿抖動(dòng)state=P1; //讀入按鍵狀態(tài)state&=0x0F;if(state==0x0F)return;//P1低4位全為1,無(wú)鍵按下,返回
while(n>0) //P1第4位非全1,判斷是哪個(gè)按鍵
{temp=state%2; //獲取state的最低位狀態(tài)賦給tempif(!temp); //temp=0,找到按下的按鍵{ keyValues=count;
//count的內(nèi)容為鍵值,賦給keyValues return;//返回} state=state/2;//按鍵狀態(tài)右移一位,繼續(xù)判斷下一個(gè)按鍵count++;
//鍵值+1n--;
}}8.1.2獨(dú)立式鍵盤(pán)接口21教學(xué)單元第8章人機(jī)接口技術(shù)1.鍵盤(pán)基礎(chǔ)知識(shí)2.獨(dú)立式鍵盤(pán)接口技術(shù)3.矩陣式鍵盤(pán)接口技術(shù)4.段碼式LED接口技術(shù)5.點(diǎn)陣式LED接口技術(shù)主要內(nèi)容22第8章人機(jī)接口技術(shù)主要介紹矩陣式鍵盤(pán)的硬件連接,兩種按鍵掃描方法(行掃描法、線(xiàn)路反轉(zhuǎn)法)和程序設(shè)計(jì),以及多功能鍵的實(shí)現(xiàn)方法。238.1鍵盤(pán)接口技術(shù)8.1.3矩陣式鍵盤(pán)接口第8章人機(jī)接口技術(shù)矩陣式鍵盤(pán):需要行線(xiàn)和列線(xiàn),按鍵位于行線(xiàn)和列線(xiàn)的交叉點(diǎn)上;m×n矩陣鍵盤(pán)只需要m+n條口線(xiàn)。按鍵數(shù)目較多的系統(tǒng)中,矩陣式鍵盤(pán)比獨(dú)立式按鍵要節(jié)省很多I/O口線(xiàn)。矩陣式鍵盤(pán)判別按鍵的方法有行掃描法和線(xiàn)反轉(zhuǎn)法。P1.4-P1.7為行掃描輸出線(xiàn);P1.0-P1.3是列輸入線(xiàn)。若將4個(gè)列信號(hào)連接到一個(gè)4輸入的與門(mén),與門(mén)輸出連接到外部中斷引腳,則有鍵按下時(shí),就會(huì)向CPU請(qǐng)求中斷。248.1鍵盤(pán)接口技術(shù)8.1.3矩陣式鍵盤(pán)接口第8章人機(jī)接口技術(shù)1.行掃描法1)粗掃描:判別是否有鍵按下。所有行線(xiàn)輸出均為0(相當(dāng)于各行接地),然后讀入列值P1.3-P1.0。如果讀入的P1.3-P1.0的值均為1,說(shuō)明沒(méi)有鍵按下;如果讀入的P1.3-P1.0的值不全為1,說(shuō)明有鍵按下。
若有鍵按下,延時(shí)10ms去抖動(dòng)后,進(jìn)行細(xì)掃描。2)細(xì)掃描:識(shí)別哪個(gè)鍵按下。逐行掃描:依次給各行線(xiàn)輸出低電平,然后讀列值。先令行P1.4輸出0,其余輸出1,然后讀入列值。若讀入的P1.0-P1.3為全1,說(shuō)明該行無(wú)鍵按下;再對(duì)下一行進(jìn)行掃描;若讀入的P1.0-P1.3不為全1,則說(shuō)明該行有鍵按下,要求出其鍵值。直至全部行掃描完畢。258.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)1.行掃描法鍵值確定。按鍵位置與鍵值定義如下。
列號(hào)鍵值行首鍵號(hào)01230001230445670889AB0CCDEF
閉合鍵的鍵值=行首鍵號(hào)+列號(hào)
8.1.3矩陣式鍵盤(pán)接口268.1鍵盤(pán)接口技術(shù)8.1.3矩陣式鍵盤(pán)接口第8章人機(jī)接口技術(shù)1.行掃描法278.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)行掃描法程序流程8.1.3矩陣式鍵盤(pán)接口為保證一次按鍵操作,CPU只響應(yīng)一次,程序需等按下的按鍵釋放后再結(jié)束。288.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)ORG0100HKeySCAN:MOV P1,#0FH;行輸出“0”;P1.3~P1.0設(shè)置為輸入方式 MOV A,P1 ANL A,#0FH CJNE A,#0FH,HAVEKEY;判斷是否有鍵按下 SJMP NokeyHAVEKEY:LCALL delay10ms MOV R3,#0 ;設(shè)置鍵值為0行首鍵號(hào) MOV R2,#4 ;掃描行數(shù) MOV R1,11101111B AGAIN: MOV P1,R1;首行掃描輸出 MOV A,P1;讀取列狀態(tài) ANL A,#0FH CJNE A,#0FH,FINDKEY;判斷該行是否有鍵按下 MOV A,R1 ;若沒(méi)有鍵按下,則修改掃描行輸出 RL A MOV R1,A MOV A,R3 ;修改行首鍵號(hào) ADD A,#4 MOV R,A DJNZ R,AGAIN8.1.3矩陣式鍵盤(pán)接口行掃描法程序(匯編):298.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)行掃描法程序(匯編):FINDKEY:JB P1.3,NEXTP12;依次判斷對(duì)應(yīng)行上哪一個(gè)鍵按下 SJMP FINDWTNEXTP12:JB P1.2,NEXTP11 INC R3 SJMP FINDWTNEXTP11:JB P1.1,NEXTP10 INC R3 INC R3 SJMP FINDWTNEXTP10:JB P1.0,Nokey INC R3 INC R3 INC R3FINDWT:MOV P1,#0FH ;等待釋放 MOV A,P1 ANL A,#0FH CJNE A,#0FH,F(xiàn)INDWT ;鍵值保存到A MOV A,R3Nokey: RET8.1.3矩陣式鍵盤(pán)接口308.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)2.線(xiàn)路反轉(zhuǎn)法8.1.3矩陣式鍵盤(pán)接口318.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)2.線(xiàn)路反轉(zhuǎn)法1)行輸出、列輸入。令行線(xiàn)P1.7-P1.4輸出全“0”,讀入列線(xiàn)P1.3-P1.0的狀態(tài)。設(shè)圖中某E鍵被按下,此時(shí)讀入的P1.3-P1.0為1101,根據(jù)“0”的位置可判斷出該鍵在第2列上。2)線(xiàn)路反轉(zhuǎn),即列輸出、行輸入。令列線(xiàn)P1.3-P1.0輸出全“0”,讀入列線(xiàn)P1.7-P1.4的狀態(tài)。對(duì)于E鍵,讀入的P1.7-P1.4為0111,其中“0”的位置對(duì)應(yīng)該鍵行的位置,為第3行。將兩個(gè)步驟讀入的狀態(tài)合成一個(gè)代碼,稱(chēng)為按鍵的特征碼。如:E的特征碼為01111101(7DH)。
8.1.3矩陣式鍵盤(pán)接口經(jīng)過(guò)兩步便能獲得鍵值,速度較快;要求行、列接口均為雙向I/O接口。328.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)2.線(xiàn)路反轉(zhuǎn)法鍵盤(pán)的硬件連接確定后,每個(gè)按鍵就有一個(gè)確定的特征碼;可建立定義的鍵值與特征碼的轉(zhuǎn)換關(guān)系。通常FFH定義為無(wú)鍵按下的特征碼。鍵名特征碼鍵值鍵名特征碼鍵值S0E7H00HS8B7H08HS1EBH01HS9BBH09HS2EDH02HSABDH0AHS3EEH03HSBBEH0BHS4D7H04HSC77H0CHS5DBH05HSD7BH0DHS6DDH06HSE7DH0EHS7DEH07HSF7EH0FH空鍵FFH無(wú)按鍵8.1.3矩陣式鍵盤(pán)接口338.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)線(xiàn)路反轉(zhuǎn)法流程8.1.3矩陣式鍵盤(pán)接口348.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)KEYI:MOV P1,#0FH ;行輸出全“0”(P1高4位)
MOV A,P1;
ANL A,#0FH ;讀入列值(P1的低4位)MOV B,A ;列值送入BMOV P1,#0F0H ;線(xiàn)路反轉(zhuǎn);列輸出全“0”(P1低4位)
MOV A,P1;
ANL A,#0F0H ;讀入行值(P1的高4位)ORL A,B ;合成特征碼
CJNE A,#0FFH,KEYI1RET ;特征碼=FFH,未按鍵返回KEYI1:MOV B,A ;特征碼保存到B
MOV DPTR,#KEYCDMOV R3,#0FFH ;鍵值初始化為0FFH8.1.3矩陣式鍵盤(pán)接口線(xiàn)路反轉(zhuǎn)法程序(匯編):掃描得到的鍵值在A中358.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)KEYI2:INCR3 MOVA,R3 MOVCA,@A+DPTR CJNEA,B,KEYI3;不等,繼續(xù)KEYI4:MOVA,P1;找到鍵值在R3中,等待按鍵釋放 ANLA,#0F0H CJNEA,#0F0H,KEYI4;按鍵沒(méi)有釋放,繼續(xù)等待
MOVA,R3;已釋放,存到A RETKEYI3:CJNEA,#0FFH,KEYI2;未查完,繼續(xù)
MOVA,#0FFH;無(wú)鍵按下處理
RETKEYCD:DB0E7H,0EBH,0EDH,0EEH DB0D7H,0DBH,0DDH,0DEH DB0B7H,0BBH,0BDH,0BEH DB77H,7BH,7DH,7EH DB0FFH8.1.3矩陣式鍵盤(pán)接口368.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)線(xiàn)路反轉(zhuǎn)法程序(C51):#include<reg51.h>keycd[]={0xe7,0xeb,0xed,0xee,0xd7,0xdb,0xdd,0xde,0xb7,0xbb,0xbd,0xbe,0x77,0x7b,0x7d,0x7e,0xff};ucharFindKey(ucharkeyCode)//判斷鍵值函數(shù){ uchari=0; while(keycd[i]!=0xff){ if(keyCode==keycd[i]) break; i++;}returni;}8.1.3矩陣式鍵盤(pán)接口378.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)voidmain(void)//主函數(shù){uchartemp1,temp2,code,keyValue;while(1){P1=0x0f; //行輸出全“0”(P1高4位)temp1=P1&0x0f; //讀入列值(P1的低4位),送入temp1if(temp1!=0x0f){delay_ms(10); //有鍵按下,去抖動(dòng)P1=0x0f;
temp1=P1&0x0f; if(temp1!=0x0f) //確認(rèn)有鍵按下{P1=0xf0; //線(xiàn)路反轉(zhuǎn) temp2=P1&0xf0; code=temp1|temp2; //得到特征碼if(code!=0xff){while(P1&0xf0!=0xf0); //等待按鍵釋放 keyValue=FindKeyNum(code);//確定鍵值 }}} }}8.1.3矩陣式鍵盤(pán)接口388.1鍵盤(pán)接口技術(shù)8.1.3矩陣式鍵盤(pán)接口第8章人機(jī)接口技術(shù)3.多功能鍵的設(shè)計(jì)(1)雙功能鍵在微機(jī)應(yīng)用系統(tǒng)中,為簡(jiǎn)化硬件電路,希望用較少的按鍵,獲得較多的控制功能。
如增加一個(gè)上/下檔鍵K,就可使每個(gè)按鍵具有兩個(gè)功能,實(shí)現(xiàn)了雙功能鍵的設(shè)計(jì)。設(shè)K斷開(kāi)時(shí)(LED滅)選擇上檔功能;K閉合時(shí)(LED亮)選擇下檔功能。398.1鍵盤(pán)接口技術(shù)第8章人機(jī)接口技術(shù)3.多功能鍵的設(shè)計(jì)(2)復(fù)合鍵復(fù)合鍵:兩個(gè)或兩個(gè)以上按鍵同時(shí)作用。復(fù)合鍵是用軟件實(shí)現(xiàn)一鍵多功能的另一途徑。當(dāng)掃描到復(fù)合鍵被按下時(shí),轉(zhuǎn)去執(zhí)行該復(fù)合鍵相應(yīng)的功能程序。
實(shí)際上,幾個(gè)按鍵不可能做到真正的“同時(shí)按下”,它們的時(shí)間差別可能長(zhǎng)達(dá)數(shù)十到數(shù)百ms。解決“同時(shí)按下”的辦法是定義一個(gè)“引導(dǎo)鍵”,單獨(dú)按下引導(dǎo)鍵時(shí)沒(méi)有意義,不做任何操作;只有和其他鍵配合使用才形成一個(gè)復(fù)合鍵,執(zhí)行相應(yīng)復(fù)合鍵的功能。操作方法:先按住“引導(dǎo)鍵”不放,再按下其他功能鍵。掃描到第2個(gè)按鍵時(shí),執(zhí)行相應(yīng)復(fù)合鍵的程序,實(shí)現(xiàn)功能。
用一個(gè)引導(dǎo)鍵,按鍵的數(shù)量就可增加一倍。計(jì)算機(jī)鍵盤(pán)上的“CTRL”、“SHIFT”、“ALT”均是引導(dǎo)鍵的例子。8.1.3矩陣式鍵盤(pán)接口40教學(xué)單元第8章人機(jī)接口技術(shù)1.鍵盤(pán)基礎(chǔ)知識(shí)2.獨(dú)立式鍵盤(pán)接口技術(shù)3.矩陣式鍵盤(pán)接口技術(shù)4.段碼式LED接口技術(shù)5.點(diǎn)陣式LED接口技術(shù)主要內(nèi)容41第8章人機(jī)接口技術(shù)主要介紹段碼式LED顯示原理、數(shù)碼管靜態(tài)顯示和動(dòng)態(tài)顯示的接口技術(shù)和程序設(shè)計(jì)。428.2LED顯示接口技術(shù)8.2.1LED顯示原理第8章人機(jī)接口技術(shù)LED即發(fā)光二極管,是微機(jī)系統(tǒng)中最常用的顯示器。LED顯示器有單個(gè)LED、8個(gè)LED組成的數(shù)碼管和點(diǎn)陣式(5×7、8×8)LED顯示器等幾種類(lèi)型。1.段碼式LED顯示器(數(shù)碼管)共陰數(shù)碼管:COM端接地或具有較大灌電流的輸入口線(xiàn),陽(yáng)極高電平時(shí)點(diǎn)亮。共陽(yáng)數(shù)碼管:共陽(yáng)極接電源或具有強(qiáng)高電平驅(qū)動(dòng)輸出口線(xiàn),陰極低電平時(shí)點(diǎn)亮。438.2LED顯示接口技術(shù)8.2.1LED顯示原理第8章人機(jī)接口技術(shù)448.2LED顯示接口技術(shù)8.2.1LED顯示原理第8章人機(jī)接口技術(shù)1.數(shù)碼式LED數(shù)碼管段碼表字符共陰極段碼共陽(yáng)極段碼字符共陰極段碼共陽(yáng)極段碼03FHC0HA77H88H106HF9HB7CH83H25BHA4HC39HC6H34FHB0HD5EHA1H466H99HE79H86H56DH92HF71H8EH67DH82HH76H09H707HF8HP73H8CH87FH80HU3EHC1H96FH90H滅00HFFH458.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)1.LED靜態(tài)顯示技術(shù)對(duì)于靜態(tài)顯示方式,一個(gè)數(shù)碼管需要一個(gè)輸出口連接其8個(gè)LED的段控制端。特點(diǎn)是程序簡(jiǎn)單、顯示穩(wěn)定可靠,但當(dāng)顯示的位數(shù)較多時(shí),需要的輸出口較多。(1)采用并行接口4位數(shù)碼管靜態(tài)顯示電路468.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)1.LED靜態(tài)顯示技術(shù)
可采用串行口的方式0或用普通I/O口線(xiàn)如P1.0、P1.1模擬串行接口,通過(guò)外接“串入并出”移位寄存器如HC164或HC595等芯片來(lái)擴(kuò)展輸出接口。(2)采用串行擴(kuò)展在數(shù)碼管位數(shù)較多時(shí),要擴(kuò)展的接口較多。串行擴(kuò)展的數(shù)碼管靜態(tài)顯示電路共陽(yáng)數(shù)碼管478.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)1.LED靜態(tài)顯示技術(shù)#include<reg51.h>ucharTable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};voiddisplay(void){charLen=8;char*pData=DIS7;//指向顯示緩沖區(qū)末地址inti=0;TI=0;for(i=0;i<Len;i++){ SBUF=Table[*pData--]; while(TI==0); TI=0;}}Table數(shù)組依次存放0、1、2、......E、F等字符7段碼;DIS7-DIS0為顯示緩沖區(qū),用于存放要顯示在LED8-LED1上的8個(gè)字符。C51程序要顯示某字符,首先要得到該字符的7段碼,再通過(guò)串行口輸出,控制數(shù)碼管的顯示。建立一個(gè)0、1、2…...E、F等字符的7段碼表,用查表法獲得要顯示字符的7段碼。488.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)2.LED動(dòng)態(tài)顯示技術(shù)動(dòng)態(tài)顯示方式是多個(gè)數(shù)碼管的段碼用一個(gè)輸出口輸出,每個(gè)數(shù)碼管的共同端(COM段)由另一個(gè)輸出口的1位控制,1個(gè)輸出口可連接8個(gè)數(shù)碼管的8個(gè)COM端,這樣2個(gè)輸出接口可以控制8個(gè)數(shù)碼管的顯示。動(dòng)態(tài)顯示時(shí),多個(gè)數(shù)碼管實(shí)際上是輪流分時(shí)顯示的,即同一時(shí)刻只有1個(gè)數(shù)碼管顯示,為達(dá)到全部數(shù)碼管“同時(shí)穩(wěn)定顯示”的效果,需要不斷重復(fù)輸出8位數(shù)碼管的顯示內(nèi)容(即要進(jìn)行顯示掃描),通常顯示掃描周期不大于20ms。優(yōu)點(diǎn):占用輸出接口少。缺點(diǎn):需要定時(shí)對(duì)各個(gè)數(shù)碼管進(jìn)行顯示掃描,占用CPU時(shí)間資源。498.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)2.LED動(dòng)態(tài)顯示技術(shù)(1)硬件連接:P0口作為段碼輸出口,P1口作為位碼輸出口。第1個(gè)數(shù)碼管到第8個(gè)數(shù)碼管對(duì)應(yīng)的位碼是:7FH、BFH、DFH、EFH、F7H、FBH、FDH、FEH段碼:通過(guò)查表得到共陰數(shù)碼管,段碼口輸出電流,位碼口灌入電流;一個(gè)數(shù)碼管各段LED的電流,均流入COM端(位碼輸出口,要考慮驅(qū)動(dòng)(灌電流)能力共陰數(shù)碼管508.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)2.LED動(dòng)態(tài)顯示技術(shù)518.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)2.LED動(dòng)態(tài)顯示技術(shù)(2)程序流程528.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)動(dòng)態(tài)掃描程序(匯編)
ORG0000HSJMP MAINORG0040HMAIN:MOV R0,#30H ;R0指向顯示數(shù)據(jù)存放首址 MOV R1,#7FH ;R1位控信號(hào)寄存器,指向第1個(gè)數(shù)碼管 MOV R2,#08HNEXT:MOV A,@R0 ;取出一個(gè)數(shù) MOV DPTR,#TABLE;DPTR指向段碼表首地址 MOVC A,@A+DPTR;取出該數(shù)的段碼 MOV P0,A ;將段碼輸出到段碼輸出口 MOV A,R1 MOV P1,A ;位控信號(hào)輸出到位碼輸出口 LCALL DELAY1MS ;延時(shí)1ms INC R0 ;指針指向下一個(gè)數(shù)地址 MOV A,R1 RR A MOV R1,A ;修改位控信號(hào),指向下一個(gè)數(shù)碼管 DJNZ R2,NEXT;沒(méi)有顯示完畢,繼續(xù) RETTABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0-9的段碼538.2LED顯示接口技術(shù)8.2.2段碼式LED顯示技術(shù)第8章人機(jī)接口技術(shù)動(dòng)態(tài)掃描程序(C51)#include<reg51.h>#include<intrins.h>ucharTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};voiddisplay(){ uchar*pData=0x30; ucharweima=0x7F; uchari=0; for(i=0;i<8;i++){ P0=Table[*pData++]; P1=weima; delay1ms(); weima=_cror_(weima,1);//變量循環(huán)右移1位,D0移到D7 }}54教學(xué)單元第8章人機(jī)接口技術(shù)1.鍵盤(pán)基礎(chǔ)知識(shí)2.獨(dú)立式鍵盤(pán)接口技術(shù)3.矩陣式鍵盤(pán)接口技術(shù)4.段碼式LED接口技術(shù)5.點(diǎn)陣式LED接口技術(shù)主要內(nèi)容55第8章人機(jī)接口技術(shù)主要介紹點(diǎn)陣式LED,雙色LED與陣列的顯示原理,以及接口電路設(shè)計(jì)。568.2LED顯示接口技術(shù)第8章人機(jī)接口技術(shù)1.點(diǎn)陣式LED點(diǎn)陣式LED顯示器由多個(gè)圓形LED組成,有5×7、8×8等多種結(jié)構(gòu),能夠顯示字母和較多的字符。5×7點(diǎn)陣LED8.2.3點(diǎn)陣式LED顯示技術(shù)578.2LED顯示接口技術(shù)第8章人機(jī)接口技術(shù)1.點(diǎn)陣式LED5×7點(diǎn)陣LED原理圖每行上的5個(gè)LED按共陽(yáng)方式連接,每列上的7個(gè)LED按共陰方式連接,可以把每列看成是一個(gè)共陰極數(shù)碼管。列線(xiàn)看作為COM端,行線(xiàn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家庭作業(yè)與課外閱讀指導(dǎo)計(jì)劃
- 社團(tuán)推廣營(yíng)銷(xiāo)策略計(jì)劃
- 股骨骨折護(hù)理查房
- 《迪思公關(guān)傳播方案》課件
- 《改變領(lǐng)導(dǎo)方式》課件
- 《放大電路基本知識(shí)》課件
- 銷(xiāo)售產(chǎn)品咨詢(xún)報(bào)告范文
- 《電工電子技術(shù)》課件-第6章
- 初一分班數(shù)學(xué)試卷(北師大版 解析版)
- 【課件】EE基礎(chǔ)知識(shí)培訓(xùn)
- 新工人進(jìn)場(chǎng)三級(jí)安全教育考試試卷(電工)
- 計(jì)算機(jī)基礎(chǔ)知識(shí)題庫(kù)1000道及完整答案【歷年真題】
- IPD流程概念知識(shí)講座
- 中國(guó)石油2024招聘高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 高爾斯華綏《品質(zhì)》原文閱讀-中學(xué)語(yǔ)文在線(xiàn)
- 病原微生物實(shí)驗(yàn)室生物安全相關(guān)法律法規(guī)簡(jiǎn)介課件
- IATF16949質(zhì)量管理體系過(guò)程風(fēng)險(xiǎn)和機(jī)遇評(píng)估分析表
- 跨文化認(rèn)知與文明互鑒:伊朗智慧樹(shù)知到期末考試答案2024年
- 24春國(guó)家開(kāi)放大學(xué)《離散數(shù)學(xué)》大作業(yè)參考答案
- 2024年全國(guó)版圖知識(shí)競(jìng)賽(小學(xué)組)考試題庫(kù)大全(含答案)
- 《小巴掌童話(huà)》試題及答案共6套
評(píng)論
0/150
提交評(píng)論