Thông báo

Collapse
No announcement yet.

Giao tiếp bàn phím máy tính =>> 8051 =>> PC

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

  • Giao tiếp bàn phím máy tính =>> 8051 =>> PC

    Các bạn giúp đỡ mình nhé.
    Mình cần một bài giao tiếp bàn phím máy tính tới 8051 qua ngắt nối tiếp. Tức là chân Clock của bàn phím nối với ngắt ngoài của 8051, chân Data của Bàn phím nối với RxD của 8051. Khi nhận được dữ liệu từ bàn phím 8051 chuyển dữ liệu lên PC và dùng VB hiển thị trên màn hình.
    Mình đã đọc nhiều bài tương tự, nhưng mình vẫn chưa hiểu cơ chế truyền dữ liệu của bàn phím, vì giao tiếp UART chỉ cần một đường truyền dữ liệu đi hoặc nhận dữ liệu về, trong khi đó bàn phím củng là giao tiếp UART sao lại có đường Clock, và chúng ta xử lý Clock này như thế nào trong 8051. Và theo nhiều bài viết, chân Data của bàn phím không nối với RxD mà toàn nối với chân TxD là chân truyền dữ liệu đi của 8051. Mình mới học giao tiếp máy tính nên có nhiều điều còn chưa biết, mong các bạn giúp đỡ.
    Các bạn hướng dẫn mình bằng code C nhé. Cám ơn các bạn nhiều lắm.

  • #2
    giao tiếp bàn phím máy tính là giao tiếp USART chứ ko phải UART bạn ah, giao tiếp đó là giao tiếp đồng bộ chứ ko phải bất đồng bộ như UART, do bạn chỉ cần nhận dữ liệu từ keyboard nên chân clock bạn nối vào chân ngắt ngoài còn chân dữ liệu của keyboard bạn đưa vào 1 chân bất kì nào đó.
    Như vậy khi có ngắt thì bạn có được 1 bit dữ liệu, bạn dịch dần các bit đó vào 1 biến thì bạn sẽ có được 1 byte dữ liệu mà bàn phím truyền, bạn tìm hiểu lại dạng sóng keyboard truyền là bạn hỉu thôi. Sau đó bạn dùng bộ UART có sẵn của 8051 để truyền lên máy tính

    Comment


    • #3
      em chưa hiểu lắm về giao tiếp = bàn phím trên 8051 các bác có thể chỉ rõ cho em hiểu rõ hơn dc ko thank các bác
      Tổng thống + điện = Ăn mày + điện = die => Tổng thống = ăn mày

      Comment


      • #4
        mình ko nhớ nó ở đâu nhưng trong 4r có đó bạn,bạn cố gắng tìm xem

        Comment


        • #5
          Mình chỉ được học giao tiếp bất đồng bộ, còn giao tiếp đồng bộ thì chưa được học. Vậy thì chân Data của Keyboard nối với chân nào cũng được phải không. Và khi có ngắt ngoài ta đọc dữ liệu từ chân Data này, khi đủ byte thì kiểm tra đúng không. Mình cứ tưởng giao tiếp Keyboard là giao tiếp bất đồng bộ, vì khi học thầy có nói giao tiếp ps/2 của là giao tiếp nối tiếp, nên mình bị nhầm. Bạn có thể hướng dẫn chi tiết hơn được không. Cám ơn bạn nhiều.

          Comment


          • #6
            Khi keyboard truyền nó truyền 1 lần 3 byte, do đó bạn chỉ cần xét byte đầu tiên là dc, khi có ngắt thì bạn chỉ cần kiểm tra chân DATA là mức 0 hay 1 rồi dịch bit đó vào. Ví dụ trong hàm ngắt bạn viết như sau :
            dulieu>>=1;
            if(dem>=1)
            if(P0.0)
            dulieu|=0x80;
            dem++;
            if(dem==9)
            {
            // chỗ này bạn so sánh dữ liệu nhận được với mã bàn phím để biết phím dc nhấn là phím nào.
            dulieu=0x00;
            dem=0;
            }
            Do dữ liệu bàn phím gửi gồm 1 bit start sau đó là byte dữ liệu nên bit đầu tiên bạn sẽ bỏ qua, bạn dịch dần dữ liệu nhận dc vào với bit đầu tiên là bit thấp nhất, đúng 9 lần dịch bạn nhận được dữ liệu của phím nhấn.

            Comment


            • #7
              Nguyên văn bởi trimen Xem bài viết
              Khi keyboard truyền nó truyền 1 lần 3 byte, do đó bạn chỉ cần xét byte đầu tiên là dc, khi có ngắt thì bạn chỉ cần kiểm tra chân DATA là mức 0 hay 1 rồi dịch bit đó vào. Ví dụ trong hàm ngắt bạn viết như sau :
              dulieu>>=1;
              if(dem>=1)
              if(P0.0)
              dulieu|=0x80;
              dem++;
              if(dem==9)
              {
              // chỗ này bạn so sánh dữ liệu nhận được với mã bàn phím để biết phím dc nhấn là phím nào.
              dulieu=0x00;
              dem=0;
              }
              Do dữ liệu bàn phím gửi gồm 1 bit start sau đó là byte dữ liệu nên bit đầu tiên bạn sẽ bỏ qua, bạn dịch dần dữ liệu nhận dc vào với bit đầu tiên là bit thấp nhất, đúng 9 lần dịch bạn nhận được dữ liệu của phím nhấn.
              Anh hướng dẫn cụ thể hơn được không, em vẫn chưa hiểu lắm.

              Comment


              • #8
                Đọc trang này tham khảo nha bạn:
                The PS/2 Mouse/Keyboard Protocol
                Computer Science major - Vietnamese-German University
                Sponsored by

                Comment


                • #9
                  Do trình độ tiếng Anh có hạn nên mình không hiểu cho lắm. Tại sao bàn phím gửi 3 byte mà ta chỉ xét byte đầu tiên

                  Comment


                  • #10
                    Nguyên văn bởi hocvatly Xem bài viết
                    Do trình độ tiếng Anh có hạn nên mình không hiểu cho lắm. Tại sao bàn phím gửi 3 byte mà ta chỉ xét byte đầu tiên
                    1 lần truyền, nó có thể truyền 1 đến 3 byte, đây là code của từng phím:
                    Scan Codes -- Set 2
                    Nếu đọc byte đầu khác E0, F0 thì có thể ngừng đọc ở đây, mã phím là phím vừa nhấn xuống. Nếu byte đầu là E0 thì đó là phím mở rộng, nếu byte đầu là F0 hay byte tiếp theo E0 là F0 thì mã phím đó vừa bị nhấc lên.

                    Tham khảo tiếp: http://www.computer-engineering.org/ps2keyboard/
                    Computer Science major - Vietnamese-German University
                    Sponsored by

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X