Klaviatūros

R

Rizwanishaq

Guest
Can anyone help me jungiantis į klaviatūrą su 8.051 ir suteikti programa

 
pasirinkite vieną eilutę ir tada nuskaito visus stulpelius.
Pasirinkite kitą eilutę ir vėl.
Visas scan pasakyti kas 100ms.
Jei presuoti patikrinkite, ar du kartus po 10ms.

 
Jei norite išvengti klaviatūra kažką ir perskaityti, tiesiog uostas, tada naudokite 74HC922/74923.Aš naudoju šią AVR.Matyti
http://booksbybibin.14.forumer.com/viewtopic.php?t=11

Bibin John
www.bibinjohn.tk

 
Šis kodas skaito 4x4 klaviatūra ..
Jei jums nereikia Serial / Parallel produkcija - pašalinti atitinkamų skyrių ..

Linkėjimai,
IanP
Kodas

$ NOPAGING

$ MOD252;------------------------------------------------- -------------------------------------------------- ------------------

; Kodas: 4x4 matricos klaviatūra

; Inputs: Hex klaviatūra per port1

; Outputs: ASCII reikšmė iš štampuoto mygtukas yra siunčiami per nuosekliojo prievado ir šešioliktainis ekvivalentas ouput per p3.5 į p3.2

;------------------------------------------------- -------------------------------------------------- -----------------ROW0 kongresas P1.0

ROW1 kongresas P1.1

ROW2 kongresas P1.2

ROW3 kongresas P1.3CLMN0 kongresas P1.7

CLMN1 kongresas P1.6

CLMN2 kongresas P 1,5

CLMN3 kongresas P1.4DIGIT DUOMENŲ 30h; laikino saugojimo presuotų raktas ..

PAVOJAUS kongresas P3.7; eina mažas, bet rakto štampuoto ..
ORG 0000hLJMP Ks_MainORG 0030h;_________________________________________________________________

;---------- Serial Port inicijavimas prasideda čia -----------------

;_________________________________________________________________S9k_Main: mov TMOD, # 20h; timer_0 į Mode2 (8bit Auto Reload) ..

MOV TH1, # 0fdh; nustatyti Baud 9600 ..

MOV SCON, # 50h; serijos Mode1 (8bit duomenų varialble Baud) ..

SETB TR1; pradėti timer_0 ..

RET;-------------- Serijos perduoti Podprogram -------------------------Tx_Main: mov SBUF,

Tx_Loop: JNB TI, Tx_Loop

CLR TI

RET;-------------- Serijos VARTOJANT Podprogram --------------------------
Rx_Main: CLR

Rx_Loop: JNB RI Rx_Loop

MOV, SBUF

CLR R.

RET;---------------------- 20ms vėlavimą ------------------------- --------Delay_20ms:; PUSH R0

; PUSH R1

MOV R0, # 36

Delay_20ms_Loop1: mov R1, # 255

Delay_20ms_Loop2: DJNZ R1 Delay_20ms_Loop2

DJNZ R0, Delay_20ms_Loop1

; POP-R1

; POP R0

RET;------------------------ kalbomis subroutine ----------------------- ---------Disp_Message: Push ACCDisp_M_Loop1: mov, # 00h; Reset akumuliatorius ..

MOVC, @ DPTR

CJNE, # 00h, Disp_M_Loop2POP ACC

RETDisp_M_Loop2: mov SBUF,

LCALL Tx_Main

INC DPTR

LJMP Disp_M_Loop1Disp_Pressed: DB "klavišą yra:" 00h;---------------- supakuoti į ASCII šešioliktainis konvertavimo ------------------Ascii2hex: Push ACCMOV, DIGIT

SUBB, # 30h

MOV B,

ANL A, # 10h

CJNE, # 00h, Ascii2hex_Loop2

MOV B,Ascii2hex_Loop1: mov DIGIT,

POP ACC

RETAscii2hex_Loop2: mov, DIGIT

SUBB, # 37h

SJMP Ascii2hex_Loop1;------------------ siųsti nuspaustą mygtuką, per P3 ----------------------Send4x4_Parallel: Push ACC

MOV, DIGITKrc

MOV P3.5, C; LSB ..

Krc

MOV P3.4, C

Krc

MOV P3.3, C

Krc

MOV P3.2, C; MSB ..POP ACC

RET;_________________________________________________________________

;------------------------- pagrindiniai kodas ---------------------- --------

;_________________________________________________________________Ks_Main: MOV P1, # 0FFh; Padaryti įvesties prievadų ..

; mov P3, # 00h; padaryti produkcija uostuose; niekada Padaryti šį klaidos => 3,0 N 3,1 yra serijos Pins

SETB ALERT

LCALL S9k_Main

Ks_Main1: MOV P1, # 0F0h; visi stulpeliai aukštos N eilučių mažas ..

MOV A, P1

ANL A, # 11110000b; svarstyti tik kolonėlės ..

CJNE, # 11110000b, Ks_Main1; pradžių patikrinkite, ar visi raktai išleistas ..;------------------------------------------------- ------------------Ks_Loop1: LCALL Delay_20ms

MOV A, P1

ANL A, # 11110000b; nuskaitymo stulpelių ..

CJNE, # 11110000b, Debounce; jei klavišą, pažymėkite debounce ..

SJMP Ks_Loop1, jei ne nuolat tikrinti klavišą ..;------------------------------------------------- ------------------Debounce: LCALL Delay_20ms

MOV A, P1

ANL A, # 11110000b

CJNE, # 11110000b, Check_Row

SJMP Ks_Loop1;------------------------------------------------- -------------------Check_Row: mov DPTR, # Disp_Pressed

LCALL Disp_MessageCLR ROW0

SETB ROW1

SETB ROW2

SETB ROW3MOV A, P1

ANL A, # 11111110b; testas eilutėje nulis ..

CJNE, # 11111110b, Row_0;------------------------------------------------- -------------------SETB ROW0

CLR ROW1

SETB ROW2

SETB ROW3MOV A, P1

ANL A, # 11111101b; testas eilutę vienu ..

CJNE, # 11111101b, Row_1;------------------------------------------------- --------------------

SETB ROW0

SETB ROW1

CLR ROW2

SETB ROW3MOV A, P1

ANL A, # 11111011b; testas eilutėje du ..

CJNE, # 11111011b, Row_2;------------------------------------------------- --------------------

SETB ROW0

SETB ROW1

SETB ROW2

CLR ROW3MOV A, P1

ANL A, # 11110111b; testas eilės tris ..

CJNE, # 11110111b, Row_3;------------------------------------------------- ---------------------SJMP Ks_Loop1;------------------------------------------------- ---------------------Row_0: mov DPTR, # Disp_Kcode0

SJMP Find_NumRow_1: mov DPTR, # Disp_Kcode1

SJMP Find_NumRow_2: mov DPTR, # Disp_Kcode2

SJMP Find_NumRow_3: mov DPTR, # Disp_Kcode3

SJMP Find_Num;------------------------------------------------- ---------------------Find_Num: RLC

JNC Found_Num, kuris stulpelis yra spaudžiamas / pakilti ..

INC DPTR

SJMP Find_Num;------------------------------------------------- ---------------------Found_Num: CLR perspėjimą; pranešti pagrindiniai MC, kad svarbiausi buvo spaudžiamas ..CLR

MOVC, @ DPTR

MOV DIGIT,

LCALL Tx_Main; siųsti nuspaustą mygtuką, serial port ..

LCALL Ascii2hex

LCALL Send4x4_ParallelSETB perspėjimą; pareikšti klaviatūrą modulis laukimo būklę ..;------------------------------------------------- ----------------------LJMP Ks_Main1;------------------------------------------------- ----------------------

Disp_Kcode0: DB '0 ', '1', '2 ', '3'

Disp_Kcode1: DB '4 ', '5', '6 ', '7'

Disp_Kcode2: DB '8 ', '9', '', 'B'

Disp_Kcode3: BP "C", "D", "E", "F"

;------------------------------------------------- ----------------------PABAIGA

 
hi all
kas nors man padėti

prijungti, PC klaviatūros AT89C51

 
Ačiū, IanPAš jį išbandyti ir veikia tinkamai.

Nice workNuoširdžiausi linkėjimai

 

Welcome to EDABoard.com

Sponsor

Back
Top