Thông báo

Collapse
No announcement yet.

mạch khóa số với 8951

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • mạch khóa số với 8951

    em làm bài tập lớn về đề tài mạch mã số với bàn phím hex 44.nhưng còn phần người nhập 3 lần sai,thì báo trộm là chưa hoàn thành dc.nhờ các sư huynh sư tỷ chỉ giáo dùm em với
    sau đây là code của em:
    Attached Files
    Last edited by hit rui kiss; 30-04-2009, 21:34.

  • #2
    main code:
    org 0000h
    start:
    ljmp main
    scan:
    mov p1,#0f0h
    mov a,p1
    cjne a,#0f0h,scan
    scanner:
    mov a,#0feh
    1up:
    mov r0,a
    mov p1,a
    mov a,p1
    mov r1,a
    orl a,#0fh
    cjne a,#0ffh,cnvrt
    mov a,r0
    rl a
    cjne a,#0efh,1up
    sjmp scanner
    cnvrt:
    mov a,r1
    mov r3,#0

    clup:
    jnb acc.0,cnvrt2
    rr a
    mov r2,a
    mov a,r3
    add a,#4
    mov r3,a
    mov a,r2
    sjmp clup
    cnvrt2:
    mov a,r1
    swap a
    ret
    main:
    mov r5,#3
    init:
    mov r7,#4
    nhapso:
    acall scan
    mov r0,a
    push 0
    djnz r7,nhapso
    mov r1,#0feh
    mov p2,r1
    acall delay_500ms
    pop 1
    pop 2
    pop 3
    pop 4
    cjne r1,#0d7h,sorry
    cjne r2,#0beh,sorry
    cjne r3,#0beh,sorry


    cjne r4,#0dbh,sorry
    clr p3.5
    sorry:
    acall delay_500ms
    setb p2.0
    djnz r5,init
    clr p2.1

    acall delay_5s
    setb p2.1
    sjmp mai

    delay_5s:
    mov tmod,#10h
    mov th1,#high(-50000)
    mov tl1,#low(-50000)
    mov r4,#100
    again:
    setb tr1
    jnb tf1,$
    clr tr1
    clr tf1
    djnz r4,again
    ret
    delay_500ms:
    mov tmod,#10h
    mov th1,#high(-50000)
    mov tl1,#low(-50000)
    mov r4,#10
    again1:
    setb tr1
    jnb tf1,$
    clr tr1
    clr tf1
    djnz r4,again1
    ret
    end

    Comment


    • #3
      Đề bài:
      Sử dụng ic 8501 tạo mạch khóa số thảo mãn các yêu cầu sau:
      Nhập vào bốn mã nếu đúng thì phát tín hiệu mở khóa
      Nhập sai 3 lần phát tín hiệu báo trộm
      Ý tưởng thực hiện:
      Dùng chương trình quét bàn phím scankey để nhập 4 mã vào
      Cho phép người nhập 4 mã cùng lúc(được cất trong ngăn xếp)
      Có tín hiệu báo khi người nhập đủ 4 mã
      Nhập sai 3 lần có tín hiệu báo
      Nhập đúng mã số,kích xung mở khóa
      Giải thuật:


      Mạch được kết nối:
      Led-d1 sáng: tín hiệu mở khóa được kích hoạt




      Mã nhập vào là 6009

      Mạch được thiết kế sao cho người nhập chỉ nhập mã vào 1 lần là 4 số
      Hết 4 số lần 1,sẽ chuyển sang những lần kế tiếp và chỉ được nhập 3 lần
      Mã đúng là 6009





      Led –d3 báo đã nhập đủ 4 mã số:






      Led d3 được kích hoạt,báo cho người sử dụng biết đã nhập đủ 4 mã số
      Sau khoảng thời gian trễ là 500 ms led d3 sẽ tắt,và được sử dụng cho các lần kế tiếp
      Điều này có tác dụng trong trường hợp người sử dụng không biết là mình đã nhập mấy mã,chu kỳ 4 mã nhập ,led-d3 sáng giúp cho khóa mã tiện ích hơn





      Chức năng chống trộm của mạch:




      Trong trường hợp có người lạ không biết mã số,cố ý mở khóa,sau 3 lần nhập mã không đúng,thì:
      Chân p2.1 được kích cạnh xuống,kích hoạt thiết bị báo trộm(trong mạch để cho đơn giản ta sử dụng led-d2)
      Trong main_code ta sử dụng led-d2 với tính chất mô phỏng cho chức năng này,led-d2 sáng khi nhập sai 3 lần
      Theo nguyên tắc ta phai reset lại mạch thì chuông báo động mới hết kêu,nhưng ở phần mô phỏng này ta cho thời gian trễ là 5s ,led-d2 sẽ tắt,rồi quay về chương trình chính.Cho lần thử sau



      mạch khóa số Duaconcua_thanhnam2006@yahoo.c0m


      Hoạt động của bàn phím có thể hiểu như sau:
      Caùc phím nhaán treân ma traän baøn phím ñöôïc boá trí taïi giao ñieåm giöõa haøng vaø coät, khi nhaán phím thì haøng vaø coät töông öùng seõ ñöôïc noái vôùi nhau.
      Muoán xaùc ñònh phím nhaán ta tieán haønh queùt baøn phím. ÔÛ ñaây ta thöïc hieän queùt töøng haøng. Tröôùc tieân ta cho haøng 1 ôû möùc logic 0, caùc haøng vaø coät khaùc ôû möùc logic 1, sau ñoù ta ñoïc giaù trò haøng vaø coät vaøo thoâng qua port 1.
      Neáu coù 1 coät ôû möùc logic 0 töùc laø phím nhaán töông öùng vôùi coät ñoù vaø haøng ñang queùt ñaõ ñöôïc nhaán. Töø vò trí cuûa haøng vaø coät ta seõ ñoåi ra maõ phím quy öôùc.
      Neáu khoâng coù coät naøo ôû möùc logic 0, ta tieán haønh queùt haøng keá tieáp vaø thöïc hieän töông töï treân. Vieäc queùt haøng ñöôïc thöïc hieän toái ña 4 laàn töông öùng vôùi 4 haøng.
      Chương trình scan key:
      scan:
      mov p1,#0f0h
      mov a,p1
      cjne a,#0f0h,scan
      scanner:
      mov a,#0feh
      1up:
      mov r0,a
      mov p1,a
      mov a,p1
      mov r1,a
      orl a,#0fh
      cjne a,#0ffh,cnvrt
      mov a,r0
      rl a
      cjne a,#0efh,1up
      sjmp scanner
      cnvrt:
      mov a,r1
      mov r3,#0
      clup:
      jnb acc.0,cnvrt2
      rr a
      mov r2,a
      mov a,r3
      add a,#4
      mov r3,a
      mov a,r2
      sjmp clup
      cnvrt2:
      mov a,r1
      swap a
      ret
      số 0:0beh
      1:07dh 4:7bh 7:077h
      2: 0bdh 5:0bbh 8:0b7h
      3:0ddh 6:0dbh 9:0d7h

      main code:
      org 0000h
      start:
      ljmp main
      scan:
      mov p1,#0f0h
      mov a,p1
      cjne a,#0f0h,scan
      scanner:
      mov a,#0feh
      1up:
      mov r0,a
      mov p1,a
      mov a,p1
      mov r1,a
      orl a,#0fh
      cjne a,#0ffh,cnvrt
      mov a,r0
      rl a
      cjne a,#0efh,1up
      sjmp scanner
      cnvrt:
      mov a,r1
      mov r3,#0

      clup:
      jnb acc.0,cnvrt2
      rr a
      mov r2,a
      mov a,r3
      add a,#4
      mov r3,a
      mov a,r2
      sjmp clup
      cnvrt2:
      mov a,r1
      swap a
      ret
      main:
      mov r5,#3
      init:
      mov r7,#4
      nhapso:
      acall scan
      mov r0,a
      push 0
      djnz r7,nhapso
      mov r1,#0feh
      mov p2,r1
      acall delay_500ms
      pop 1
      pop 2
      pop 3
      pop 4
      cjne r1,#0d7h,sorry
      cjne r2,#0beh,sorry
      cjne r3,#0beh,sorry
      cjne r4,#0dbh,sorry
      clr p3.5
      sorry:
      acall delay_500ms
      setb p2.0
      djnz r5,init
      clr p2.1

      acall delay_5s
      setb p2.1
      sjmp mai

      delay_5s:
      mov tmod,#10h
      mov th1,#high(-50000)
      mov tl1,#low(-50000)
      mov r4,#100
      again:
      setb tr1
      jnb tf1,$
      clr tr1
      clr tf1
      djnz r4,again
      ret
      delay_500ms:
      mov tmod,#10h
      mov th1,#high(-50000)
      mov tl1,#low(-50000)
      mov r4,#10
      again1:
      setb tr1
      jnb tf1,$
      clr tr1
      clr tf1
      djnz r4,again1
      ret
      end
      Thành phố Hồ Chí Minh 29/4/2009
      Last edited by hit rui kiss; 30-04-2009, 22:00.

      Comment


      • #4
        ko ai giúp e với ah`.hix

        Comment


        • #5
          Nguyên văn bởi hit rui kiss Xem bài viết
          ko ai giúp e với ah`.hix
          chương trình cho mạch này không khó .. có lẽ bạn đã bít một phần nhưng chương trình chưa ổn.. ! mình chỉ khuyên bạn điều khi viết chương trình thì nên chú thích rõ ràng để mọi người chỉ cần lướt qua là biết liền.. có thế mới góp ý được cho bạn .. ! không mấy ai kiên nhẫn để ngồi đọc code của người khác viết mà không có chú thích đâu

          Comment


          • #6
            Bài tập của bạn thú vị đó. Mình cũng đang có ý định thực hiện một đề tài tương tự, có gì nhờ bạn đi trước chia sẽ kinh nghiệm nha, Thanks.
            |

            Comment


            • #7
              bạn đã làm được chưa vậy. mình cũng đang định đăng kí đồ án với ý tưởng này. nhưng phát triển cao hơn: cho phép thay đổi mã trực tiếp khi nhập đúng mã, cho phép thay đỗi số mật mã(ít hơn hay nhiều hơn 4 mã của bạn), hiển thị ra led hay lcd số được nhậpmạch này mình đã làm bằng ic số rất thành công nhưng mạch lại khá phức tạp và to đùng, độ ổn định của mạch không cao về phần hiển thị(nhập số1 1 lần có khi nhảy ra 3 hay 4 hay toàn bộ hiển thị số 1)(cái này chắc do mình vẽ mạch in quá nhõ nên bị nhiễu)

              Comment


              • #8
                chào các bạn! cái đề tài này toi vừa làm đồ án xong! kết qua tốt! cái tôi pass 5số xo thể thay đổi tuỳ thích ! thấy cũng hay! co thể phát triển lên nhận diện vân tay hay gì đó. nếu ai co y tưởng hay thì poss lên nhé!pp các bạn

                Comment


                • #9
                  Nguyên văn bởi ngockim Xem bài viết
                  chào các bạn! cái đề tài này toi vừa làm đồ án xong! kết qua tốt! cái tôi pass 5số xo thể thay đổi tuỳ thích ! thấy cũng hay! co thể phát triển lên nhận diện vân tay hay gì đó. nếu ai co y tưởng hay thì poss lên nhé!pp các bạn
                  Mọi người đang cần mà sao bạn không post lên, còn đi xin gì nữa. Bó tay

                  Email:
                  Tel: 0983.497.310

                  Comment


                  • #10
                    chào bạn ngockim,tôi cũng đang làm về mạch khóa số này,dùng con chip 89S52,ma trận phím 4x4,LCD và không dùng bộ nhớ ngoài để lưu lại pass.vậy khi reset hay bật nguồn lên thì ban làm thế nào để giữ lại pass như lúc trước bạn nhập lại?tôi dang rất cần sự chỉ bảo của mọi người về vấn đề này.xin mọi người júp đỡ!!!!!!!
                    thanks nhiều!

                    Comment


                    • #11
                      Nguyên văn bởi bbkdtv.hd Xem bài viết
                      chào bạn ngockim,tôi cũng đang làm về mạch khóa số này,dùng con chip 89S52,ma trận phím 4x4,LCD và không dùng bộ nhớ ngoài để lưu lại pass.vậy khi reset hay bật nguồn lên thì ban làm thế nào để giữ lại pass như lúc trước bạn nhập lại?tôi dang rất cần sự chỉ bảo của mọi người về vấn đề này.xin mọi người júp đỡ!!!!!!!
                      thanks nhiều!

                      chính xác ... cần phải dùng EEPROM để lưu pass , nếu k thì sẽ bị mất pass . dòng 89 k có EEPROM nội --> cần thêm con EEPROM bên ngoài . Còn PIC hay AVR thì đc tích hợp sẵn bên trong

                      Comment


                      • #12
                        xin chào pac Zz_Bi_zZ,cho tôi hỏi thêm chút nhé.bây giờ tôi chuyển qua dùng con 89s8253 co sẵn 2K EEPROM rồi.tôi cũng dọc datasheet rồi nhưng không hiểu lắm vì không có nhìu thời gian.pác có thể chỉ jùm tôi cách dọc ghi dữ liệu vào EEPR thế nào không?cảm ơn pác trước nhe!thanks!
                        (có thể chỉ dùm 1số lệnh bằng C k?)

                        Comment


                        • #13
                          mọi người ơi,xin chi jùm tôi với.tôi tim nhiều tài liệu nhưng k dc.đọc datasheet thì k hiểu lắm!không biết làm thế nào cho đúng nữa.
                          júp mình với!

                          Comment


                          • #14
                            Nguyên văn bởi Zz_Bi_zZ Xem bài viết

                            chính xác ... cần phải dùng EEPROM để lưu pass , nếu k thì sẽ bị mất pass . dòng 89 k có EEPROM nội --> cần thêm con EEPROM bên ngoài . Còn PIC hay AVR thì đc tích hợp sẵn bên trong
                            bác này lại nhớ lộn nữa rồi, dòng 89v51 chả có mấy trăm kb eeproom là gì đó !

                            Comment

                            Về tác giả

                            Collapse

                            hit rui kiss Tìm hiểu thêm về hit rui kiss

                            Bài viết mới nhất

                            Collapse

                            Đang tải...
                            X