keypad ตัวนี้มันต่อยังไง??
LSVคลังสมองออนไลน์ "ปีที่14"
พฤศจิกายน 24, 2024, 12:57:25 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
 
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: keypad ตัวนี้มันต่อยังไง??  (อ่าน 4913 ครั้ง)
meawkajj
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 17


« เมื่อ: กันยายน 22, 2011, 07:14:23 pm »

พอดีซื้อมาแล้วไม่ทราบว่าจะต่อยังไงอ่ะคับ ช่วยตอบทีน่ะครับ ต่อเข้ากับ AT89C51 อ่ะครับ


บันทึกการเข้า

PR-TRAFFIC
member
*

คะแนน2
ออฟไลน์ ออฟไลน์

กระทู้: 41


« ตอบ #1 เมื่อ: กันยายน 23, 2011, 12:46:16 am »

สวิตช์เมทริก 4x3
4 แถว  3 หลัก  ก็ต้องเขียนโปรแกรมเพื่อให้ IC  สแกนรับค่า Input  จากสวิตช์
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #2 เมื่อ: กันยายน 23, 2011, 01:32:54 pm »

ลองแล้วครับแจ่มมาก 

http://www.youtube.com/v/GZPf1TkUNpc.swf
บันทึกการเข้า
meawkajj
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 17


« ตอบ #3 เมื่อ: กันยายน 23, 2011, 03:44:11 pm »

ขอบคุณมากครับ!! แต่ว่ามันจะเขียนโปรแกรมยังไงหรอครับ พอดีผมเขียนเป็นภาษา แอสเซมบลี อ่ครับ
บันทึกการเข้า
JUB
Full Member
member
**

คะแนน81
ออฟไลน์ ออฟไลน์

กระทู้: 1157



« ตอบ #4 เมื่อ: กันยายน 23, 2011, 04:45:16 pm »

จัดไป....


โค๊ด:
;//***** 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,"#"
บันทึกการเข้า
meawkajj
member
*

คะแนน0
ออฟไลน์ ออฟไลน์

กระทู้: 17


« ตอบ #5 เมื่อ: กันยายน 24, 2011, 07:00:22 pm »

ขอบคุณมาก ๆ ๆ เลยครับ !!
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

Powered by MySQL Powered by PHP Powered by SMF 1.1 RC2 | SMF © 2001-2006, Lewis Media

lsv2555Please follow the new website at https://www.pohchae.com

Valid CSS!