Thông báo

Collapse
No announcement yet.

VDK giao tiếp bàn phím máy vi tính

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

  • VDK giao tiếp bàn phím máy vi tính

    Chào bà con xa gần, tôi chưa thấy có mục nào nói về giao tiếp bàn phím máy vi tính với vi điều khiển nhỉ? Cái này hay đấy chứ, cả trăm phím cho ta sử dụng. Tôi có làm giao tiếp bàn phím với 89S52 dùng ngắt ngoài 0 (p3.2) làm ngõ nhận xung SCK, còn 1 pin nào đó (chẳng hạn p3.1) làm ngõ nhận dư liều SDA. Chương trình đã chạy, mã hex của bàn phím VDK đã nhận được, tuy nhiên chương trình không thoát khỏi ngắt ngoài để trở về chương trình chính. Bà con xem thế nào? Có gì chỉ dẫn thêm cho tôi và mọi người biết với!
    Dưới đây là chương trình viết bằng hợp ngữ:

    ;p3.2 dung lam duong nhan xung SCK
    ;P3.1 dung lam duong nhan du lieu SDA

    org 0
    ljmp main

    org 0003h
    ljmp ex0isr ;Chuong trinh ngat ngoai 0

    main:
    mov ie, #81h;Cho phep ngat ngoai
    setb it0 ;ngat canh

    lap:
    inc p0
    lcall delay
    mov r0, p0 ;Binh thuong port 0 dem nhi phan
    cjne r0, #255, lap
    mov p0, #0
    sjmp lap

    ;Chuong trinh ngat ngoai de doc phim nhan
    ex0isr:
    clr ex0
    mov r1, #8


    jb p3.2, $ ;cho bit start => bo qua
    jnb p3.2, $

    nhan2: jb p3.2, nhan2 ;cho canh xuong cua xung ck
    jnb p3.2, $
    mov c, p3.1
    rrc a ;doc bit lsb vao a7 truoc
    djnz r1, nhan2 ;doc bit tiep theo cua byte du lieu
    mov p2, a ;dua ma cua phim nhan ra port 2

    jb p3.2, $
    jnb p3.2, $ ;cho bit parity => bo qua

    jb p3.2, $
    jnb p3.2, $ ;cho bit stop => bo qua

    setb p3.0
    setb p3.2
    ; lcall delay
    setb ex0 ;cho phep ngat tro lai
    reti

    ;Chuong trinh con tri hoan ms
    delay:
    mov r7, #255
    nhan8: mov r6, #255
    nhan9: djnz r6, nhan9
    djnz r7, nhan8
    ret

    end
    !e

  • #2
    Cám ơn Bạn Nha

    Comment


    • #3
      uh, cái này hay đấy.
      nếu làm việc với PIC và trình dịch của Mikro thì có hẳn thư viện về nó luôn.
      tuy nhiên cũng chỉ phát hiện 1 số phím thôi.

      Theo tôi thì nếu dùng chuẩn truyền thông UART thì cùng hay đấy.
      1. Bắt phím bàn phím PS2
      2. Đẩy mã xuống VĐK bằng giao tiếp UART
      3. Nhận mã ở VĐK
      4. Hiển thị

      Okie ....

      Comment


      • #4
        Zemen viết đơn giản thế thôi ah, Ngày trước mình viết cho 8051 để giải mã bàn phím PS2 cũng khá phức tạp!

        Comment


        • #5
          Nguyên văn bởi anhaicpt Xem bài viết
          Zemen viết đơn giản thế thôi ah, Ngày trước mình viết cho 8051 để giải mã bàn phím PS2 cũng khá phức tạp!
          Ờ thì tuỳ theo ứng dụng chứ. Mình chỉ làm cái bài tập nho nhỏ thôi, nên chủ yếu lấy dc mã của phím. Có người sử dụng phức tạp hơn, có thể dùng ngắt hay không, xử lí phím đơn lẻ hay tổ hợp, viết cho 8051, avr hay pic đều dc cả.
          Lâu rồi mình o coi nó, đoạn mã dưới là viết bằng C, dùng ngắt ngoài để bắt xung đầu tiên.

          void Ngat_ngoai (void) interrupt 0
          {
          //xung ck thu 1, bo qua bit start
          unsigned char i;
          EA = 0; //khong chphep ngat xay ra

          while(!FSCK){} //cho canh len (xung clock)

          A = 0;
          for (i = 0; i < 8; i++)
          { //chor canh xuong cua xung ck thu 2 thi bat dau nhan
          //va nhan du 8 bit du lieu
          while(FSCK){}
          A = A >> 1;
          A7 = FSDA; //nhan bit du lieu
          while(!FSCK){} //cho xung ck len tro lai
          }
          bdkhien = A; //luu ma dieu khien

          while(FSCK){}
          while(!FSCK){} //bo qua bit parity
          while(FSCK){}
          while(!FSCK){} //bo qua bit stop
          delay_ms(100);
          }
          !e

          Comment


          • #6
            bác làm về bàn phím PS2 rồi, bác có thể up lên cho bọn em tài liệu nói về cơ chế hoạt động của bàn phímn àydc không bác??
            Phone: 0978536011

            Comment


            • #7
              trang http://www.beyondlogic.org nói cũng dc lắm! Nhưng nó viết bằng tiếng Anh, bạn coi qua chắc sẽ làm dc thôi.
              !e

              Comment


              • #8
                Bạn zemen có thể post lên Frame của tín hiệu bàn phím được không? Cảm ơn nhiều nhiều!!!!
                n
                ĐT: 0986 492 489

                Tham khảo:

                Comment


                • #9
                  Hình dưới là khung truyền dữ liệu của tín hiệu bàn phím máy tính. Nói chung nó tương tự UART, o khác mấy.


                  Còn hình này là mã bàn phím:
                  !e

                  Comment


                  • #10
                    anh trai ơi, em cũng muốn làm với thằng này. Nhưng mà bàn phím bây giờ nhiều quá em chẳng biết cái nào là cái thằgn PS2 cả, để nhận dạng nó thì mình làm như thế nào anh trai. Ngoài trợ trời bàn phím cũ có nhiều lắm mà em chẳng biết mua thằng nào. Có phải tất cả các bàn phím hiện giờ đều có cơ chế truyền dữ liệu như trên khôgn anh. Dùng cái bàn phím này hay nhỉ, chẳng bao giờ phải lo chống rung bàn phím , số phím thì cứ coi như thoải mái. Hì hì
                    à suýt quên, đại ca cho em hỏi luôn cái bàn phím này nó sài điện áp bao nhiêu vậy. Đối với chân GND và VCC. còn cả các mức 0 và 1 nữa, không biết nó có giống với chuẩn của cái thằng 232 không đại ca
                    Last edited by byte; 01-12-2007, 13:35.
                    Phone: 0978536011

                    Comment


                    • #11
                      Nguyên văn bởi byte Xem bài viết
                      anh trai ơi, em cũng muốn làm với thằng này. Nhưng mà bàn phím bây giờ nhiều quá em chẳng biết cái nào là cái thằgn PS2 cả, để nhận dạng nó thì mình làm như thế nào anh trai. Ngoài trợ trời bàn phím cũ có nhiều lắm mà em chẳng biết mua thằng nào. Có phải tất cả các bàn phím hiện giờ đều có cơ chế truyền dữ liệu như trên khôgn anh. Dùng cái bàn phím này hay nhỉ, chẳng bao giờ phải lo chống rung bàn phím , số phím thì cứ coi như thoải mái. Hì hì
                      à suýt quên, đại ca cho em hỏi luôn cái bàn phím này nó sài điện áp bao nhiêu vậy. Đối với chân GND và VCC. còn cả các mức 0 và 1 nữa, không biết nó có giống với chuẩn của cái thằng 232 không đại ca
                      Bàn phím cũ hay PS2 cũng giống nhau cả thôi, chỉ việc xác định đúng chân (nó có dây chuyển để quy về 1 mối).
                      Nó dùng điện áp 5V, mọi thứ đều 5V.
                      Nếu cứ như cái hình Zemen đưa lên thì thấy nó rất dễ nhưng cũng còn tuỳ vì: nếu phát hiện đủ các phím bấm như các phần mềm trên PC phát hiện thì nó cũng phức tạp. Còn nếu lấy 1 ít phím để dùng thì mới dễ. vì có phím nó phát về 3 byte, lại có phím nó phát về 4 byte... rồi bấm kết hợp 2 phím cùng lúc...

                      email:mahaco@fpt.vn

                      Comment


                      • #12
                        bác có chỗ nào chỉ cho mình biết xem cái mã phát ra khi mình nhấn một phím nào đó không bác. Có cái đó thì tốt, vấn đề ở đây chắc chỉ ở chỗ mình nhận được dữ liệu từ nó phát ra phải không ?
                        Phone: 0978536011

                        Comment


                        • #13
                          Nguyên văn bởi byte Xem bài viết
                          bác có chỗ nào chỉ cho mình biết xem cái mã phát ra khi mình nhấn một phím nào đó không bác. Có cái đó thì tốt, vấn đề ở đây chắc chỉ ở chỗ mình nhận được dữ liệu từ nó phát ra phải không ?
                          Tôi có cái hình và 1 file , làm theo sẽ lấy được tất cả các phím bấm. Khi làm xong sẽ thấy nó không đơn giản như Zemen đã làm. Vì khi bấm 1 phím thì phải phân tích được các byte do phím đó trả về...
                          Cách bố trí các bit trong 1 byte thì như bạn Zemen đã đưa ra.
                          Trên mạng có rất nhiều code nhưng để tìm 1 cái chuẩn thì khó, lấy về phải sửa đi. Bạn Cứ yên tâm làm theo cái tôi đưa lên đây vì tôi đã làm thành công với cả ASM và C.
                          Muốn dùng được đầu tiên phải khởi tạo nó... cũng chẳng dễ
                          Attached Files
                          Last edited by hoctro89xxx; 02-12-2007, 01:40. Lý do: Quên không đính file nên edit lại

                          email:mahaco@fpt.vn

                          Comment


                          • #14
                            em sẽ về làm, có vấn đề gì đại ca chỉ giúp em phát nhé. Thanks
                            Phone: 0978536011

                            Comment


                            • #15
                              Cung cấp thêm tài liệu để mấy bạn có hứng thú làm nhé, nói chung thì chỉ cần đọc 1 cái là đủ thôi !
                              http://www.beyondlogic.org/keyboard/keybrd.htm
                              http://www.jkmicro.com/documentation...eyboard_EN.pdf
                              http://www.computer-engineering.org/...board_Protocol

                              cứ từng bước sẽ ok thôi, cố lên !

                              Comment

                              Về tác giả

                              Collapse

                              zemen Tìm hiểu thêm về zemen

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

                              Collapse

                              Đang tải...
                              X