三種方法讀取鍵值 使用者設計行列鍵盤介面,一般常採用三種方法讀取鍵值。 中斷式 在鍵盤按下時產生一個外部中斷通知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
本文將探討微控制器與 PSoC (可編程系統單晶片)在數位電視應用上的設計挑戰,並比較微控制器和 PSoC 架構在處理這些挑戰時的不同處,以有效地建置執行。
上傳時間: 2013-11-22
上傳用戶:gengxiaochao
PCB LAYOUT 術語解釋(TERMS)1. COMPONENT SIDE(零件面、正面)︰大多數零件放置之面。2. SOLDER SIDE(焊錫面、反面)。3. SOLDER MASK(止焊膜面)︰通常指Solder Mask Open 之意。4. TOP PAD︰在零件面上所設計之零件腳PAD,不管是否鑽孔、電鍍。5. BOTTOM PAD:在銲錫面上所設計之零件腳PAD,不管是否鑽孔、電鍍。6. POSITIVE LAYER:單、雙層板之各層線路;多層板之上、下兩層線路及內層走線皆屬之。7. NEGATIVE LAYER:通常指多層板之電源層。8. INNER PAD:多層板之POSITIVE LAYER 內層PAD。9. ANTI-PAD:多層板之NEGATIVE LAYER 上所使用之絕緣範圍,不與零件腳相接。10. THERMAL PAD:多層板內NEGATIVE LAYER 上必須零件腳時所使用之PAD,一般稱為散熱孔或導通孔。11. PAD (銲墊):除了SMD PAD 外,其他PAD 之TOP PAD、BOTTOM PAD 及INNER PAD 之形狀大小皆應相同。12. Moat : 不同信號的 Power& GND plane 之間的分隔線13. Grid : 佈線時的走線格點2. Test Point : ATE 測試點供工廠ICT 測試治具使用ICT 測試點 LAYOUT 注意事項:PCB 的每條TRACE 都要有一個作為測試用之TEST PAD(測試點),其原則如下:1. 一般測試點大小均為30-35mil,元件分布較密時,測試點最小可至30mil.測試點與元件PAD 的距離最小為40mil。2. 測試點與測試點間的間距最小為50-75mil,一般使用75mil。密度高時可使用50mil,3. 測試點必須均勻分佈於PCB 上,避免測試時造成板面受力不均。4. 多層板必須透過貫穿孔(VIA)將測試點留於錫爐著錫面上(Solder Side)。5. 測試點必需放至於Bottom Layer6. 輸出test point report(.asc 檔案powerpcb v3.5)供廠商分析可測率7. 測試點設置處:Setuppadsstacks
上傳時間: 2013-11-17
上傳用戶:cjf0304
數值分析中的歐拉算法 本文建立在數值分析的理論基礎上,能夠在Matlab環境中運行,給出了理論分析、程序清單以及計算結果。更重要的是,還有詳細的對算法的框圖說明。首先運用Romberg積分方法對給出定積分進行積分,然後對得到的結果用插值方法,分別求出Lagrange插值多項式和Newton插值多項式,再運用最小二乘法的思想求出擬合多項式,最後對這些不同類型多項式進行比較,找出它們各自的優劣。
上傳時間: 2013-12-18
上傳用戶:yoleeson
一個很好用的 lcd 時鐘程序 C語言 #include<reg51.h> #include<stdio.h> //定義計時器0 的重裝值 #define RELOAD_HIGH 0x3C #define RELOAD_LOW 0xD2 //定義按鍵彈跳時間 #define DB_VAL //定義設置模式的最大時間間隔 #define TIMEOUT 200 //定義游標位置常數 #define HOME 0 #define HOUR 1 #define MIN 2 #define SEC 3
標簽: include define RELOAD stdio
上傳時間: 2014-12-19
上傳用戶:zukfu
灰色理論下之灰關聯matlab源碼,可幫助計算一序列中的數據的權重,得以給予不同之相關性
標簽: matlab
上傳時間: 2013-12-22
上傳用戶:源碼3
灰色理論下之最基本操作元,灰生成之matlab源碼,可很快計算出數據各階之生成結果
標簽: 基本操作
上傳時間: 2013-12-01
上傳用戶:aappkkee
灰色理論之GM(!,1)模型,GM(1,1)的matlab源碼,可從生成一直計算到預測值
上傳時間: 2015-10-27
上傳用戶:yzy6007
小弟撰寫的類神經pca對圖片的壓縮與解壓縮,對來源圖片training過後,可使用該張圖像的特性(eigenvalue和eigenvetex)來對別張圖解壓縮,非常有趣的方式,再設定threashold時注意時值不要過大,因為這牽涉inverse matrex的計算.
標簽: eigenvalue eigenvetex threashol training
上傳時間: 2015-12-02
上傳用戶:wpwpwlxwlx
精選一個 uC/OS-II Porting 於一般業界使用之 MSP430F1132 開發板上任務調度的例程,於 app.c 內建構了一個可於此開發板上 Port 1.0 驅動 LED 閃爍任務工程,全例程於 IAR MSP430 V3.42A 下編譯,同時亦將此工程設好斷點可方便於 Simulator 內直接觀測 uC/OS 任務調度狀態.
上傳時間: 2015-12-14
上傳用戶:skfreeman