三種方法讀取鍵值 使用者設計行列鍵盤介面,一般常採用三種方法讀取鍵值。 中斷式 在鍵盤按下時產生一個外部中斷通知CPU,並由中斷處理程式通過不同位址讀資料線上的狀態判斷哪個按鍵被按下。 本實驗採用中斷式實現使用者鍵盤介面。 掃描法 對鍵盤上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對應列的鍵被按下。否則掃描下一行。 反轉法 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。 根據讀到的值組合就可以查表得到鍵碼。4x4鍵盤按4行4列組成如圖電路結構。按鍵按下將會使行列連成通路,這也是見的使用者鍵盤設計電路。 //-----------4X4鍵盤程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key; if((PINC&0x0f)!=0x0f) //是否有按鍵按下 {delayms(1); //延時去抖動 if((PINC&0x0f)!=0x0f) //有按下則判斷 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //復位 PORTC=0x0f; while((PINC&0x0f)!=0x0f) //按鍵是否放開 { display(data); } i=4; //計算返回碼 while(xxa!=0) { xxa=xxa>>1; i--; } if(yyb==0x80) key=i; else if(yyb==0x40) key=4+i; else if(yyb==0x20) key=8+i; else if(yyb==0x10) key=12+i; return key; //返回按下的鍵盤碼 } } else return 17; //沒有按鍵按下 }
上傳時間: 2013-11-12
上傳用戶:a673761058
半導體的產品很多,應用的場合非常廣泛,圖一是常見的幾種半導體元件外型。半導體元件一般是以接腳形式或外型來劃分類別,圖一中不同類別的英文縮寫名稱原文為 PDID:Plastic Dual Inline Package SOP:Small Outline Package SOJ:Small Outline J-Lead Package PLCC:Plastic Leaded Chip Carrier QFP:Quad Flat Package PGA:Pin Grid Array BGA:Ball Grid Array 雖然半導體元件的外型種類很多,在電路板上常用的組裝方式有二種,一種是插入電路板的銲孔或腳座,如PDIP、PGA,另一種是貼附在電路板表面的銲墊上,如SOP、SOJ、PLCC、QFP、BGA。 從半導體元件的外觀,只看到從包覆的膠體或陶瓷中伸出的接腳,而半導體元件真正的的核心,是包覆在膠體或陶瓷內一片非常小的晶片,透過伸出的接腳與外部做資訊傳輸。圖二是一片EPROM元件,從上方的玻璃窗可看到內部的晶片,圖三是以顯微鏡將內部的晶片放大,可以看到晶片以多條銲線連接四周的接腳,這些接腳向外延伸並穿出膠體,成為晶片與外界通訊的道路。請注意圖三中有一條銲線從中斷裂,那是使用不當引發過電流而燒毀,致使晶片失去功能,這也是一般晶片遭到損毀而失效的原因之一。 圖四是常見的LED,也就是發光二極體,其內部也是一顆晶片,圖五是以顯微鏡正視LED的頂端,可從透明的膠體中隱約的看到一片方型的晶片及一條金色的銲線,若以LED二支接腳的極性來做分別,晶片是貼附在負極的腳上,經由銲線連接正極的腳。當LED通過正向電流時,晶片會發光而使LED發亮,如圖六所示。 半導體元件的製作分成兩段的製造程序,前一段是先製造元件的核心─晶片,稱為晶圓製造;後一段是將晶中片加以封裝成最後產品,稱為IC封裝製程,又可細分成晶圓切割、黏晶、銲線、封膠、印字、剪切成型等加工步驟,在本章節中將簡介這兩段的製造程序。
上傳時間: 2013-11-04
上傳用戶:372825274
一個功放擴大器的程序,MCU是AT89C2051 帶有遙控器接收功能及音量控制PT2259 編碼器的檢測
標簽: 程序
上傳時間: 2013-12-13
上傳用戶:himbly
利用DSK6711外部,有四個外部中斷埠,可以使用此四個埠,控制內部LED顯示,並於CCS顯示目前中斷是何埠。
上傳時間: 2014-01-04
上傳用戶:Avoid98
設計一個應用程序,從鍵盤輸入一個整數n, * 然后在文件"data.dat"中寫入所有比n小的素數, * 最后在屏幕上顯示在每個素數中各數字(0--9)出現的次數 */
標簽: 應用程序
上傳時間: 2015-05-22
上傳用戶:685
C-C方法及改進的C-C方法重構相空間的matlab程序 -------------------------------- 性能: 3000數據耗時3分鐘 -------------------------------- 參考文獻: 1、Nonlinear dynamics, delay times, and embedding windows.pdf 2、基于改進的C-C方法的相空間重構參數選擇4.pdf -------------------------------- 文件夾說明: 1、C_C_Method_luzhenbo2.m - 程序主文件,直接運行此文件即可! 2、LorenzData.dll - 產生Lorenz離散數據 3、DuffingData.dll - 產生Duffing離散數據 4、RosslerData.dll - 產生Rossler離散數據 5、ccFunction.dll - 計算S(m,N,r,t) - 原C-C方法中計算S(m,N,r,t),改進的C-C方法中計算S2(m,N,r,t) 6、ccFunction_luzhenbo.dll - 計算S(m,N,r,t) - 改進的C-C方法中計算S1(m,N,r,t) -------------------------------- 致謝: 此稿本次修改的部分靈感來源于與研學論壇網友“張文鴿”和“yangfanboy”的討論,在此表示感謝!
上傳時間: 2015-06-08
上傳用戶:lo25643
E:\VISUAL C++MFC擴展編程實例 實例35 添加幫助菜單項,在本例中將向應用程序中的H e l p菜單中添加C o n t e n t s和S e a r c h 菜單項。
上傳時間: 2014-01-09
上傳用戶:541657925
簡單的并行計算示例,使用MPI實現,在改程序中有一個manager,n個worker,運行后可以使多個worker同時計算
標簽: 并行計算
上傳時間: 2013-12-31
上傳用戶:xinzhch
若不希望用與估計輸入信號矢量有關的相關矩陣來加快LMS算法的收斂速度,那么可用變步長方法來縮短其自適應收斂過程,其中一個主要的方法是歸一化LMS算法(NLMS算法),變步長 的更新公式可寫成 W(n+1)=w(n)+ e(n)x(n) =w(n)+ (3.1) 式中, = e(n)x(n)表示濾波權矢量迭代更新的調整量。為了達到快速收斂的目的,必須合適的選擇變步長 的值,一個可能策略是盡可能多地減少瞬時平方誤差,即用瞬時平方誤差作為均方誤差的MSE簡單估計,這也是LMS算法的基本思想。
上傳時間: 2016-07-07
上傳用戶:changeboy
多人聊天,多路連綫,多綫程,實現 在一個多人連線伺服器中,我們要有一個伺服端執行緒負責傾聽是否有客戶端連線,如果有客戶端連線,就指派一個客戶端執行緒專門應付這個客戶端連線,並在客戶端佇列中記錄它,然後進入下一個傾聽。 一個客戶端執行緒的工作,就是讀取客戶連線端的使用者輸入訊息,它不負責回應訊息,而是將讀到的訊息加入訊息佇列中,此外在我們的範例中,客戶端執行緒也負責自己的連線狀態,如果使用者中斷連線,客戶端執行緒會負責將自己從客戶端佇列中清除。 廣播執行緒負責取出訊息佇列中的訊息,然後將之一一傳送訊息給客戶端佇列中尚存在的客戶端執行緒。
標簽:
上傳時間: 2014-08-26
上傳用戶:linlin