พิมพ์หน้านี้ - เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ

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

► อิเล็กทรอนิกส์ ► => หุ่นยนต์-pcb-เทคโนโลยี่ใหม่ => ข้อความที่เริ่มโดย: EMOSECTION ที่ ธันวาคม 15, 2009, 11:40:13 am



หัวข้อ: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: EMOSECTION ที่ ธันวาคม 15, 2009, 11:40:13 am
ผมใช้ แค่ 0-9 ต้องการแค่ 4 หลักพอ ใช้หลักการยังไงดีครับ

สมมุติว่าตั้งระหัสใว้ใน data 0,[$00,$10,$20,$30] ให้เป็นค่าตายตัว

ถ้าใช้ eeprom เป็นตัวเก็บ สมมุติว่ากด 1234 ข้อมูลจะไปเรียงใน eeprom 0,[$10,$20,$30,$40] แล้วเอาไปเทียบกับ data ว่าตรงกันมั้ย ถ้าไม่ตรงก็แสดงว่าผิด
คือ ถ้ากด  ถูก [$00,$10,$20,$30] แล้วเอาค่าที่เรียงไปเปรียบกันข้อมูลใน data

ถ้าข้อมูลตรงกันก็ให้ผ่าน

อยากถามว่า 1 วิธีนี้มีข้อเสียมั้ย


หัวข้อ: Re: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: EMOSECTION ที่ ธันวาคม 15, 2009, 11:47:47 am
2 ใช้คำสั่งใหนเวลากดเลขแล้วให้มันเรียงกัน ไม่ทับกัน ไม่ข้ามกัน
3 ใช้คำสั่งใหนเปรียบเทียบ eeprom กับ data ครับ
4 หรือมีวิธีอื่นที่ดีกว่า


หัวข้อ: Re: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: JUB ที่ ธันวาคม 15, 2009, 03:08:24 pm
1.ถ้าเป็น eeprom ใน mcu ก็ไม่มีข้อเสีย
2.ไปหาอ่านดูใน หนังสือของ inex pic16f877 มีบอกไว้ค่อนข้างละเอียด
3.ไปหาอ่านดูใน หนังสือของ inex pic16f877 มีบอกไว้ค่อนข้างละเอียด
โดยทั่วไปการตรวจสอบ key จะเกิดหลังจากกด ระหัส ครบแล้ว หรือ กด enter หรือ อื่นๆ
แล้วแต่ผู้เขียนโปรแกรมกำหนด โดยเก็บค่าการกด key ในแต่ละครั้งไว้ใน buffer
เรียงต่อๆกันไป โดยการกด 1 ครั้งเก็บค่าลง buffer แล้ว address buffer+1
แล้วนำค่า buffer ที่ได้ไปเทียบกับ ค่าใน eeprom
4.วิธีนี้แหละดีสุดง่ายสุดแล้ว

แต่เอา 16f877 มาใช้งานแค่นี้มันไม่คุ้ม อาจใช้ แต่ 16f628 ก็พอ
ผมมี code เป็นของ mcs-51 ต่อกับ serial lcd 9600bps และ key 4x3 เอาป่าว แต่ไมมี eeprom นะ ไปพัฒนาเอาเอง


หัวข้อ: Re: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: EMOSECTION ที่ ธันวาคม 19, 2009, 07:06:17 pm
สนใจอยุ่เหมือนกัน เดี๋ยวผมลองไปพยายามอีกหน่อยก่อนครับ ขอบคุณที่ชี้และแนวทาง ติดปัญหายังไงจะมาถามใหม่ครับ
พอดีผมมีแต่ 16f877 ครับ เลยเอามาใช้ ดักว่าปล่อยให้มันหายไป


หัวข้อ: Re: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: JUB ที่ ธันวาคม 22, 2009, 03:32:27 pm
http://jap.hu/electronic/combination_lock.html

อันนี้ผมว่าน่าจะใช้ได้แต่ต้องแก้ code นิดหน่อย ของเดิมใช้กับ 16f84 ลองเอาไปแก้ไขดูครับ  8)


หัวข้อ: Re: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: EMOSECTION ที่ ธันวาคม 23, 2009, 05:15:21 pm
ขอบคุณครับ


หัวข้อ: Re: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: laser ที่ มกราคม 04, 2010, 01:19:49 pm
ผมว่า เอา ง่าย ๆ ก้อ แบบว่า เก็บ ค่า ตัวเลขใส่ตัวแปรดีกว่ามั้ย ครับ

ยาวหน่อยแต่ ชัวร์ ไร้ข้อเสีย ตั้งได้มากด้วยครับ


หัวข้อ: Re: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: laser ที่ กุมภาพันธ์ 08, 2010, 07:17:34 pm
ผมใช้ pbp นะครับ

ก้อ ตั้งตัวแปร 1 ตัว เช่น num1

และพอกด key 1ครั้งให้ ืum +1 ไปเรื่อย ๆ เท่านี้ก้อกดซ้ำกันได้แล้ว

pong_yuy@hotmail.com เมลมาถามได้ครับ



หัวข้อ: Re: เขียนคำสั่ง password โดยใช้ 16f877 กับ keymatrix เขียนยังไงครับ
เริ่มหัวข้อโดย: laser ที่ กุมภาพันธ์ 11, 2010, 05:37:38 pm
ในกรณีรหัส 4 ตัว PBP กด key แล้วกด * เปน ตัวยืนยันคำสั่ง กด # เคลียรหัส

row1    var     portb.0
row2    var     portb.1
row3    var     portb.2
row4    var     portb.3
col1    var     portb.5
col2    var     portb.6
col3    var     portb.7

a1 var byte
a2 var byte
a3 var byte
a4 var byte

num var byte '''สำหรับเก็บตัวแปรเผื่อตัวแปรซ้ำกัน"'

a1 = 0
a2 = 0
a3 = 0
a4 = 0
num = 0

start: gosub scankey
pause 50
goto start
end

scankey:
low   row1
         if col1 = 0 then gosub num1
         if col2 = 0 then gosub num2
         if col3 = 0 then gosub num3
         high  row1
         low   row2
         if col1 = 0 then gosub num4
         if col2 = 0 then gosub num5
         if col3 = 0 then gosub num6
         high   row2
         low    row3
         if col1 = 0 then gosub num7
         if col2 = 0 then gosub num8
         if col3 = 0 then gosub num9
         high   row3
         LOW row4
         if col1 = 0 then gosub num10
         if col2 = 0 then gosub num0
         if col3 = 0 then gosub num11
         high row4
         return
'-------------------------------------
num1:
num = num
IF(num = 1)THEN A1 = 1
IF(num = 2)THEN A2 = 1
IF(num = 3)THEN A3 = 1
IF(num = 4)THEN A4 = 1
num = num+1
PAUSEUS 50
return
'--------------------------------------
num2:
num = num
IF(num = 1)THEN A1 = 2
IF(num = 2)THEN A2 = 2
IF(num = 3)THEN A3 = 2
IF(num = 4)THEN A4 = 2
num = num+1
PAUSEUS 50
        return
'--------------------------------------
num3:
num = num 
IF(num = 1)THEN A1 = 3
IF(num = 2)THEN A2 = 3
IF(num = 3)THEN A3 = 3
IF(num = 4)THEN A4 = 3
num = num+1
PAUSEUS 50
        return
'--------------------------------------
num4: num = num
IF(num = 1)THEN A1 = 4
IF(num = 2)THEN A2 = 4
IF(num = 3)THEN A3 = 4
IF(num = 4)THEN A4 = 4
num = num+1
PAUSEUS 50
return
'--------------------------------------
num5:
num = num 
IF(num = 1)THEN A1 = 5
IF(num = 2)THEN A2 = 5
IF(num = 3)THEN A3 = 5
IF(num = 4)THEN A4 = 5
num = num+1
PAUSEUS 50
return
'--------------------------------------
num6:  num = num
IF(num = 1)THEN A1 = 6
IF(num = 2)THEN A2 = 6
IF(num = 3)THEN A3 = 6
IF(num = 4)THEN A4 = 6
 num = num+1
PAUSEUS 50
return
'--------------------------------------
num7: num = num 
IF(num = 1)THEN A1 = 7
IF(num = 2)THEN A2 = 7
IF(num = 3)THEN A3 = 7
IF(num = 4)THEN A4 = 7
num = num+1
PAUSEUS 50
return
'--------------------------------------
num8: num = num 
IF(num = 1)THEN A1 = 8
IF(num = 2)THEN A2 = 8
IF(num = 3)THEN A3 = 8
IF(num = 4)THEN A4 = 8
num = num+1
PAUSEUS 50
return
'--------------------------------------
num9: num = num 
IF(num = 1)THEN A1 = 9
IF(num = 2)THEN A2 = 9
IF(num = 3)THEN A3 = 9
IF(num = 4)THEN A4 = 9
num = num+1
PAUSEUS 50
return
'--------------------------------------
num0: num = num 
IF(num = 1)THEN A1 = 10
IF(num = 2)THEN A2 = 10
IF(num = 3)THEN A3 = 10
IF(num = 4)THEN A4 = 10
num = num+1
PAUSEUS 50
return
'--------------------------------------
num10:  ใช้เปนคำสั่งเชคตัวแปร + พาส
if (a1 = 1)and(a2 = 2)and(a3 = 3)and(a4 = 4) then .......จำทำอะไรก้อคิดเอา
PAUSEUS 50
gosub num11
pause 50
return
'--------------------------------------
num11:
a1 = 0
a2 = 0
a3 = 0
a4 = 0
num = 0

pause 50
return
'--------------------------------------