第十三章8051人機(jī)交互的C編程_第1頁(yè)
第十三章8051人機(jī)交互的C編程_第2頁(yè)
第十三章8051人機(jī)交互的C編程_第3頁(yè)
第十三章8051人機(jī)交互的C編程_第4頁(yè)
第十三章8051人機(jī)交互的C編程_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第十三章8051人機(jī)交互的C編程13.1鍵盤(pán)鍵盤(pán)的結(jié)構(gòu)形式有兩種:獨(dú)立式鍵盤(pán)A行列式鍵盤(pán)獨(dú)立式按鍵是各按鍵互相 獨(dú)立地接通一條輸入數(shù)據(jù) 線(xiàn),各按鍵的狀態(tài)互不影 響,如圖所不,這是最嗇 單的鍵盤(pán)結(jié)構(gòu),該電路采 用了中斷方式讀取鍵值。優(yōu)點(diǎn):電路簡(jiǎn)單;缺點(diǎn):當(dāng)鍵數(shù)較多時(shí),要 占用較多的I/O線(xiàn)。八中斷總控制位EA、外中斷0開(kāi)中斷引 八外中斷0為高中斷優(yōu)先級(jí)引八設(shè)置中斷標(biāo)志為0*/#include <reg51.h>#define uchar unsigned char extern void delay_10ms(void); bit key_flag;uchar key _ value

2、; void main(void) IE=0x81;IP=0x01;key_flag=0;doif (key_flag) switch (key_value) case 1: break;case 2: break;case 4: break;default: break; key_flag =0; while(l);/*延時(shí)10ms函數(shù)*/八如果按鍵有效引八根據(jù)接鍵分麥?/八處理P1.0 口按鍵引八處理P1.1 口按鍵引八處理P1.2 口按鍵引八無(wú)效按鍵,如多個(gè)鍵同時(shí)按下引八清按鍵標(biāo)志引/*夕卜中斷02*/void into () interrupt 0uchar reread_key;IE

3、=0x80;key_flag=0;Pl=Oxff; key_value=Pl &0x07; delay_10ms(); reread_key=Pl &0x07;if (key_value=reread_key) key_flag=l;IE=0x81;/*屏蔽into中斷*/八設(shè)置中斷標(biāo)志為0引八Pl鎖存器各口置八讀取外中斷輸入,并屏蔽高5位引/* 延時(shí) 10ms*/*再讀輸入,并屏蔽高5位引/*設(shè)置中斷標(biāo)志為1引八打開(kāi)into中斷引*行列式鍵盤(pán)翩薜翳非嬲繆通常釆用兩步掃描判別-在鍵數(shù)較多時(shí),通常都將鍵 盤(pán)排列成行列矩陣式,如圖 所示。每一水平線(xiàn)(行線(xiàn)) 與垂直線(xiàn)(列線(xiàn))的交叉處

4、 不相通,是通過(guò)一個(gè)按鍵連 通的。利用這種行列矩陣結(jié) 構(gòu)只需N個(gè)行線(xiàn)和M個(gè)列線(xiàn) 即可組成M X N個(gè)按鍵的 鍵盤(pán)。首先判別按鍵所在的行:向P1 口輸出列掃描字OFH, 列線(xiàn)全為0,行線(xiàn)全為1。然后讀入(輸入)行線(xiàn)狀態(tài) 來(lái)判斷。如果有按鍵按下,總會(huì)有一根行線(xiàn)被拉至低 電平,從而使行輸入不全為1。然后判別按鍵所在的列:向P1 口輸出行掃描字F0H, 即行線(xiàn)全0,列線(xiàn)全1,然后讀入(輸入)列線(xiàn)狀態(tài)來(lái) 判斷。如果有按鍵按下,總會(huì)有一根列線(xiàn)被拉至低電 平,從而使列輸入不全為1。-將行和列的狀態(tài)相或,再把該值取反得到該位置鍵值。比13.2顯示器-LED顯示器是由發(fā)光二極管顯示字段的顯 示器件。鬻片聽(tīng)嚮麟豐

5、瓠UJ-LED顯示器有兩種方式:(1) LED靜態(tài)顯示方式(2) LED動(dòng)態(tài)顯示方式D 0D3 D 0D3r*xr*xIlliIlli4056B4056B/ / / /GND/ +5V/ /.(W+5VGND/+5V四位靜態(tài)LED顯示器電路通過(guò)8155擴(kuò)展I/O 口控制的8位LED動(dòng)態(tài)顯示接口13.3 8279鍵盤(pán)/顯示器接口RL2 1廠(chǎng)40VCCRL3 239RL1CLK 338RLOIRQ 437CNTL/STBRL4 536SHIFTRL5 635SL3RL6 734SL2RL7 833SL1RESET932SLORD 108279 31OUTBOWR 1130OUTB1DO 1229O

6、UTB2D1 1328OUTB3D21427OUTAOD3 1526OUTA1D4 1625OUTA2D5 1724OUTA3D6 1823BDD7 1922CSGND 2021A0CPU 接口(b)卜鍵盤(pán)數(shù)據(jù)數(shù)據(jù)顯示(a)csOUTBO 3 D7DO (數(shù)據(jù)總線(xiàn)):雙向、三態(tài)總線(xiàn)。用于和系統(tǒng)的 數(shù)據(jù)總線(xiàn)相連,在CPU和8279之間傳遞命令或數(shù)據(jù)。 CLK (系統(tǒng)時(shí)鐘):輸入線(xiàn),用于8279內(nèi)部定時(shí),以產(chǎn)生 工作所需要的時(shí)序。;一觀(guān)鞭禁 RESET (復(fù)位):輸入,高電平有效。 /CS (片選):輸入,低電平有 8279才被選中,CPU才能對(duì)其i 止。M辭兩個(gè) A0 (緩沖器地址):輸入,AO

7、=1W,若CPU進(jìn)行寫(xiě)操作, 則寫(xiě)入字節(jié)是命令字;若CPU進(jìn)行讀操作,貝g從8279讀出 的字節(jié)是狀態(tài)字;A0=0時(shí),寫(xiě)入字節(jié)和讀出字節(jié)均為數(shù) 據(jù)。 /RD、/WR (讀、寫(xiě)信號(hào)): 信號(hào)是來(lái)自CPU的控制信號(hào),扌f電平。J 若 RAM 器工作方 IRQ (中斷請(qǐng)求):輸出,高電平有效。在鍵盤(pán)工作方式中,當(dāng)FIFO/傳感器RAM存有數(shù)據(jù)時(shí)"-CPU每次從RAM讀出數(shù)據(jù)時(shí),:RQ就 中仍有數(shù)亀 貝UIRQSO復(fù)為高電平。式中,每邊檢出傳咸器狀態(tài)變化時(shí),IRQ就出現(xiàn)高電平。 SLOSL3 (掃描線(xiàn)):輸出線(xiàn),這4條輸出線(xiàn)用來(lái)掃描 鍵魚(yú)和顯示器,它們可以編程設(shè)置為編碼輸出(16取1) 或譯

8、碼輸曲(4中敢1) o RLORL7 (回復(fù)線(xiàn)):輸入,它們是鍵盤(pán)矩陣或傳感 器矩陣的列信號(hào)輸入線(xiàn)。 SHIFT (換擋信號(hào)):輸入,高電平有效。該信號(hào)線(xiàn)用 窒擴(kuò)充鍵開(kāi)關(guān)的功龍,可里用作鍵盤(pán)的上、下?lián)豕δ苕I。 祖會(huì)感器方式和選壷方式中,SHIFT無(wú)效。該信 CNTL/STB (控制/選通):輸入,高電平有效。在鍵 莖工傳方芬呼,作為揑創(chuàng)型能鍵使用。起運(yùn)方式時(shí), 該信粵齢上昇沿可攻將來(lái)自RLORL7的藪據(jù)存入FIFO 存儲(chǔ)器。在傳感器方式下,無(wú)效。 OUTAO-OUTA3 (A組顯示信號(hào)):輸出。-OUTBOOUTB3 (B組顯示信號(hào)):輸出。這兩組引線(xiàn)均是顯示信息輸出線(xiàn),它們與多路數(shù)字顯示 的

9、掃描線(xiàn)SLOSL3同步。兩組可以獨(dú)立使用,也可以 合并便甬。 /BD (消南顯示):輸出,低電平有效。該輸出信號(hào)在 數(shù)字切換顯示或使用顯示消隱命冬時(shí),將顯示消隱。INTIPOWRRDB.6B.7ALE8031I 8279的命令字和狀態(tài)字對(duì)CPU而言,“79只有兩個(gè)口地址,_個(gè)用于讀寫(xiě)命令和狀態(tài)(/CS=O, AO=1),另一個(gè)用于讀寫(xiě)數(shù)據(jù)(/CS=O, A0=0)。 8279的編程命令共有8條,命令字的高3位D7、D6和D5 用于區(qū)別不同命令,低5位是命令的真正內(nèi)容。-8279的狀態(tài)字:S/E0FNNNDu:顯示無(wú)效特征位S/E:傳感器信號(hào)結(jié)束/錯(cuò)誤特征碼O:溢出錯(cuò)誤標(biāo)志U:不足錯(cuò)誤標(biāo)志F:

10、F = 1表示FIFO RAM已滿(mǎn) NNN:為FIFORAM中的字符數(shù)表82 8279命令功能鍵一覽表傷令特征個(gè)功能時(shí)征個(gè)d7DeDsDaDad2DiDo00000000雙鍵鍵定左師送八.8x8顯不01編碼掃描鍵盤(pán)J顯示器N鍵輪回11101傳感器矩陣右端送入16xg顯示11譯碼掃描選!1輸入顯示掃描001XXXXX程序時(shí)鐘XX 2-31分頻XXX0101XXXX讀FIFO假感器 RAM傳感器RAM自動(dòng)加1傳感器RAM的8個(gè)字節(jié)地址位命令特征伍功能特征也Dp De Dsd2DiDo0 1 11XXXX讀顯示RxMvI自動(dòng)加1顯示RAIvI的16個(gè)字節(jié)地址1 0 01XXXX寫(xiě)顯不RAM自動(dòng)加1顯

11、不RAM迢個(gè)字節(jié)地址1 0 1X1111顯示器垢禁止/ 消隱禁止寫(xiě)£ 口禁止寫(xiě)B(tài) 口消隱A 口消隱B 口1 1 010X11渚除(渚除顯示 寄存器盒-bis 輸出)允許活除A. B全部清零FIFO成空狀 態(tài);中斷復(fù)位; 伎感器讀出地 111胃零總清除10As B清成2UH11牡、B皆置11 1 1XXXXX結(jié)束中斷錯(cuò)誤 方式設(shè)置特殊工作方式#include <reg51.h>#include <absacc.h> #define COM XBYTEOxbfff #define DAT XBYTE0x3fff #define uchar unsigned cha

12、r sbit clflag=ACCA7; uchar codekey table =0xcb0xc0,0xc&0xd6,Oxc 1,0xc9,0xd 1,0xc2, 0xca,0xd2,0xd8,0xd9, 0xda,0xdb,0xc3,0xd3;/0123456789ABCD*# uchar code table =0x3f,0x06,0x5b0x4f, 0x66x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;RLORL1RL2RL3YOY1Y2Y3123A456B79C*0#DCNTLSHIFTSCAN(3)RETURN(3)uchar deky(void)判斷是否有鍵按下uchar k;k=COM;return(k&0 xOF);uchar keyin(void) 讀取按鍵值uchar kcodej;while(deky()=O);COM=0x40;kcode=DAT; for(i=0;i<16;i+)if(kcode=keytablei) break;return(i);void disp(uchar idata *d)uchar i;COM=0X90;for(i=0;i<8;i+)COM=0x80+i; DAT二table*d; d+;

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論