หัวข้อ: เขียนคำสั่ง 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 '-------------------------------------- |