klaviatūros matricos ir kaip iššifruoti toliau?

G

Guest

Guest
Čia yra klaviatūros matricos, kad aš rasiu, gali man pasakyti, kad idėja koduoti išėjimo signalus (PIO) ir koduotų signalų gali per mikrokontrolerów pasirodys 4 skaitmenų-7segment LCD ekranas.
Thanks!
Atsiprašome, bet jums reikia prisijungti, kad galėtumėte peržiūrėti šį priedą

 
Sveiki, šypsokis
Čia yra mano ASM kodas parašė Batronix Pro studio iššifruoti keyboar matricos sąsaja su 89C51 UC.tikiuosi, ji padėjo į U
Kodas:

INCLUDE 89c51.mcORG 0000H

PAGRINDINIS:

MOV A, # 00h

MOV TMOD # 01H

MOV P2 # 00h

LOOP: MOV R6, A

ACALL READ_KEY

JNC Praleisti

MOV A, R6

Praleisti: ACALL OUTLED

JMP LOOP

;************************************************* ***************

; Klaviatūros matricos 4x4: pradinės vertės P1 = 11111110

1 1 1 1

; P1.4 P1.5 P1.6 P1.7

; -----------------------------

1; P1.3 | f1 f2 f3 f4

1; P1.2 | f5 f6 F7 f8

1; P1.1 | F9 F10 F11 F12

; 0 P1.0 | F13 F14 f15 f16GETKEY:

PUSH 02H; R2 BANK1

PUSH 06H; R6 BANK1

PUSH 07H; R7 BANK1

MOV A, # 0FEH

MOV R6, # 4, kontrolės 4 eilutė

BANDYMAS:

MOV P1, A; pradinė vertė PO 111111110

MOV R7, A

MOV A, P1; gauti vertė po buttuon stumiama iš P1

ANL A, # 0F0H; aišku 4 žemas BIT (eilės PO-> P3)

CJNE A # 0F0H, HINT_KEY; paprastai jei mygtukas ne stumti, aišku 4 maža bitų => A = 0F0H

MOV A, R7

RL A

DJNZ R6, testas

CLR C, C = 0 signalizacijos nė vienas mygtukas stumiamosios

LJMP IŠPLAUKIMAS

HINT_KEY:

MOV R7, A

MOV A, # 4

CLR C

DEC R6

MOV A, R6

ADD A, R6

ADD A, R6

ADD A, R6

; R6x4

MOV R6, A

MOV A, R7

CLR C

VSAP A; apsikeitimo išbandyti 4 aukštas bitų (aptikti skiltyje)

MOV R2, # 4, alternatyvių bandymų 4 skiltyse (4 bandymas aukšto bit)

DAR:

RRK A; apsikeitimo rasti vietą bitų, kurių vertė = 0

JNC Priimta; Jei C = 0 surasti vietą bitų, kurių vertė yra 0

INC R6

, jei ir nerandate KALTAI 0, patikrinkite, ar kitą stulpelį ir padidinti localtion (R6) 1

; į vieną skiltį, vietos 2 mygtuką paeiliui skiriasi 4

DJNZ R2 AGAIN

Priimta:

MOV A, R6; vertė R6 yra vietos mygtuką stumdosi (pvz., mygtukas f16 yra stumiamos tada R6 = 15)

SETB C, C = 1 yra mygtukas stumiamosios

, C = 0, nė vienas mygtukas stumiamosiosIŠPLAUKIMAS: NOP

POP 07H; Tra lai Gia tri Cua R7 truoc kumpis Getkey

POP 06H; R6

POP 02H; R2

; CAC Gia tri tra lai cho R7, R6, R2 mums trong Ngan xep da luu giu PKI POP

RET;************************************************* ***************

READ_KEY:

PUSH 03H; LUU Nội Dung Bendrąjį vartotojo R3 TRONG Ngan XEP DE SAU DARYTI Dung LAI

NHOK: MOV R3, # 50

GRĮŽTI:; apsaugoti mygtuką plakdami

ACALL GETKEY

JNC NHOK

DJNZ R3, ATGAL

PUSH ACC

BACK2:

MOV R3, # 50

BACK3:

ACALL GETKEY

JC BACK2

DJNZ R3, BACK3

POP ACC

POP-03H

RET

;********************************************OUTLED:

MOV DPTR, # Bangled

MOVC A @ A DPTR

MOV P3 A

RET

Bangled:

; Oderio mygtukų 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

; A = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15BP 09H, 0BDH, 13H, 91H, 0A5H, 0C1H, 41h, 9DH, 01H, 81H, 09H, 0BDH, 13H, 91H, 0A5H, 0C1HPABAIGA

 
vieną PIC į CCS ...
PORTB [7 .. 4] stulpelius
PORTA [3 .. 0] linijų

Kodas:# naudoti fast_io (A)

# naudoti fast_io (B)const char dakeys [4] [4] = ((7, 8, 9 ,'/'},

(4, 5, 6 ,'*'},

(1, 2, 3 ,'-'},

( "c", 0 ,'=',' '}};

char Read_Keyb ()

(Int h = 0xE0;

int i, j, k;for (i = 0; i <4; i )

(

output_b (h);

delay_ms (1);

k = input_a ();

if ((k & 0xf)! = 0xf)

(

for (j = 0; j <4; j )

(if (bit_test (k, 0) == 0) return dakeys [j] ;

k = k> 1;)

)

h = (h <<1) | 0x10;

)

grįžti 0xFF;

)

 
šypsena

Yra geriau, jei būtų žinoti principo už dekodavimo Adatiniai jungikliai, šiuo būdu galima įtaisą savo programą.

Jos, pavyzdžiui, "mokymo jus gaudyti žuvį, o ne suteikiant vienas."

šiuo būdu, net ir bet kuris prašymas jūs žinote, kaip tai padaryti savo.

blastronics

pm me and i will glady pasakyti, kaip tai padaryti.<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Labai laimingas" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top