พิมพ์หน้านี้ - keypad ตัวนี้มันต่อยังไง??

LSVคลังสมองออนไลน์ "ปีที่14"

► อิเล็กทรอนิกส์ ► => ►ถาม-ตอบอีเล็กทรอนิกส์ทั่วไป => ข้อความที่เริ่มโดย: meawkajj ที่ กันยายน 22, 2011, 07:14:23 pm



หัวข้อ: keypad ตัวนี้มันต่อยังไง??
เริ่มหัวข้อโดย: meawkajj ที่ กันยายน 22, 2011, 07:14:23 pm
พอดีซื้อมาแล้วไม่ทราบว่าจะต่อยังไงอ่ะคับ ช่วยตอบทีน่ะครับ ต่อเข้ากับ AT89C51 อ่ะครับ


หัวข้อ: Re: keypad ตัวนี้มันต่อยังไง??
เริ่มหัวข้อโดย: PR-TRAFFIC ที่ กันยายน 23, 2011, 12:46:16 am
สวิตช์เมทริก 4x3
4 แถว  3 หลัก  ก็ต้องเขียนโปรแกรมเพื่อให้ IC  สแกนรับค่า Input  จากสวิตช์


หัวข้อ: Re: keypad ตัวนี้มันต่อยังไง??
เริ่มหัวข้อโดย: JUB ที่ กันยายน 23, 2011, 01:32:54 pm
ลองแล้วครับแจ่มมาก  smiley4

http://www.youtube.com/v/GZPf1TkUNpc.swf


หัวข้อ: Re: keypad ตัวนี้มันต่อยังไง??
เริ่มหัวข้อโดย: meawkajj ที่ กันยายน 23, 2011, 03:44:11 pm
ขอบคุณมากครับ!! แต่ว่ามันจะเขียนโปรแกรมยังไงหรอครับ พอดีผมเขียนเป็นภาษา แอสเซมบลี อ่ครับ


หัวข้อ: Re: keypad ตัวนี้มันต่อยังไง??
เริ่มหัวข้อโดย: JUB ที่ กันยายน 23, 2011, 04:45:16 pm
จัดไป.... smiley4


โค๊ด:
;//***** READ KEY PAD *****//;
;//* INPUT : -
;//* OUTPUT : ACC,KEY_FLAG
;//* REG. USE : A,B,COUNTER,DLY0,DLY1
READ_KEY: MOV B,#11110111B ;--->>> SCAN ROW 1
MOV COUNTER,#0 ;--->>> RESET COUNTER

READ_COL: MOV KEYPORT,B
READ_COL1: JB COL1,READ_COL2 ;--->>> READ COLUMN 1
ACALL DEBOUNCE
JB COL1,READ_COL2
AJMP FIND_SW0

READ_COL2: JB COL2,READ_COL3 ;--->>> READ COLUMN 2
ACALL DEBOUNCE
JB COL2,READ_COL3
AJMP FIND_SW1

READ_COL3: JB COL3,READ_COLE ;--->>> READ COLUMN 3
ACALL DEBOUNCE
JB COL3,READ_COLE
AJMP FIND_SW2

READ_COLE: MOV A,B ;--->>> SCAN NEXT ROW
RL A ;--->>>
MOV B,A ;--->>>

MOV A,COUNTER ;--->>> COUNTER = COUNTER + 3
ADD A,#3 ;--->>>
MOV COUNTER,A ;--->>>

CJNE A,#12,READ_COL ;--->>> A = 12 ?
CLR KEY_FLAG
RET

FIND_SW2: INC COUNTER ;--->>> COUNTER = COUNTER + 1
FIND_SW1: INC COUNTER ;--->>> COUNTER = COUNTER + 1
FIND_SW0: MOV A,COUNTER
MOV DPTR,#KEY_TABLE
MOVC A,@A+DPTR
SETB KEY_FLAG
RET

RELEASE_SW?: MOV A,KEYPORT ;--->>> CHECK KEY RELEASE
ORL A,#11111000B ;--->>> DATA = 11111000 + P1
CPL A ;--->>> COMPLEMENT
JNZ RELEASE_SW? ;--->>> JUMP IF ACC NOT ZERO
RET

DEBOUNCE: MOV DLY0,#50
DEBOUNCE1: MOV DLY1,#230
DEBOUNCE2: NOP
NOP
DJNZ DLY1,DEBOUNCE2
DJNZ DLY0,DEBOUNCE1
RET

;//***** TABLE OF CONT. *****//;
KEY_TABLE: DB 1,2,3,4,5,6,7,8,9,"*",0,"#"


หัวข้อ: Re: keypad ตัวนี้มันต่อยังไง??
เริ่มหัวข้อโดย: meawkajj ที่ กันยายน 24, 2011, 07:00:22 pm
ขอบคุณมาก ๆ ๆ เลยครับ !!