欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3531|回復: 16
打印 上一主題 下一主題
收起左側

【Arduino】108種傳感器模塊系列實驗(124)---PS2接口模塊

[復制鏈接]
跳轉到指定樓層
樓主
37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里準備逐一動手試試做實驗,不管成功與否,都會記錄下來---小小的進步或是搞不定的問題,希望能夠拋磚引玉。

【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗一百二十四: PS2鼠標 鍵盤插座接口 PS2模塊





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:513258 發表于 2019-9-24 20:05 | 只看該作者


PS/2接口
上古接口之一,PS/2接口曾經是最常見的鼠標接口,最初是IBM公司的專利,俗稱“小口”。這是一種鼠標和鍵盤的專用接口,一種6針的圓型接口。但鼠標只使用其中的4針傳輸數據和供電,其余2個為空腳。PS/2接口的傳輸速率比COM接口稍快一些,而且是ATX主板的標準接口,當時應用最為廣泛的鼠標接口之一,但仍然不能使高檔鼠標完全發揮其性能,而且不支持熱插拔。在BTX主板規范中,這也是即將被淘汰掉的接口。需要注意的是,在連接PS/2接口鼠標時不能錯誤地插入鍵盤PS/2接口(當然,也不能把PS/2鍵盤插入鼠標PS/2接口)。一般情況下,符合PC99規范的主板,其鼠標的接口為綠色、鍵盤的接口為紫色,另外也可以從PS/2接口的相對位置來判斷:靠近主板PCB的是鍵盤接口,其上方的是鼠標接口。




回復

使用道具 舉報

板凳
ID:513258 發表于 2019-9-24 21:13 | 只看該作者
PS/2通訊協議
PS/2鼠標接口采用一種雙向同步串行協議。即每在時鐘線上發一個脈沖,就在數據線上發送一位數據。在相互傳輸中,主機擁有總線控制權,即它可以在任何時候抑制鼠標的發送。方法是把時鐘線一直拉低,鼠標就不能產生時鐘信號和發送數據。在兩個方向的傳輸中,時鐘信號都是由鼠標產生,即主機不產生通信時鐘信號。 如果主機要發送數據,它必須控制鼠標產生時鐘信號。方法如下:主機首先下拉時鐘線至少100μs抑制通信,然后再下拉數據線,最后釋放時鐘線。通過這一時序控制鼠標產生時鐘信號。當鼠標檢測到這個時序狀態,會在10ms內產生時鐘信號。如圖3中 A 時序段。主機和鼠標之間,傳輸數據幀的時序如圖2、圖3所示。2.2 數據包結構在主機程序中,利用每個數據位的時鐘脈沖觸發中斷,在中斷例程中實現數據位的判斷和接收。在實驗過程中,通過合適的編程,能夠正確控制并接收鼠標數據。但該方案有一點不足,由于每個CLOCK都要產生一次中斷,中斷頻繁,需要耗用大量的主機資源。




回復

使用道具 舉報

地板
ID:513258 發表于 2019-9-24 21:26 | 只看該作者

PS/2接口的引腳定義
是第1針傳數據,第2針閑置,第3針接地(負極),第4針接+5V電源,第5針是時鐘,第6針也是閑置的。拆開PS/2接口的鍵盤,你會發現除了一張‘電路圖’外,還有一塊比豆腐大不了多少的PCB板。這塊電路板上標有V、G、C、D四個焊點——V是Vcc電源,就是接電源正極,多數是接紅線;G是地線,就是電源負極,多數是接黑線;C是時鐘,有的接黃線,有的是綠線;D是數據,多數是綠線或者藍線,也有黃線。顏色不靠譜,建議你先把負極和正極接好,然后把剩下的C、D兩根線隨便接上試試,不行再對調就好了。




回復

使用道具 舉報

5#
ID:513258 發表于 2019-9-25 07:14 | 只看該作者



回復

使用道具 舉報

6#
ID:513258 發表于 2019-9-25 07:24 | 只看該作者


PS/2接口和USB接口的區別

PS2接口的特性:
1.物理連接:一般,具有五腳連接器的鍵盤稱之為AT鍵盤,而具有六腳mini-DIN連接器的鍵盤則稱之為PS/2鍵盤。其實這兩種連接器都只有四個腳有意義。它們分別是Clock、Data、+5V和Ground。在PS/2鍵盤與PC機的物理連接上只要保證這四根線一一對應就可以了。PS/2鍵盤靠PC的PS/2端口提供+5V電源,另外兩個腳Clock和Data都是集電極開路的,所以必須接大阻值的上拉電阻。它們平時保持高電平,有輸出時才被拉到低電平,之后自動上浮到高電平。
2.電氣特性:PS/2通訊協議是一種雙向同步串行通訊協議。
通訊的兩端通過Clock同步,并通過Data交換數據。任何一方如果想抑制另外一方通訊時,只需要把Clock拉到低電平。如果是PC機和PS/2鍵盤間的通訊,則PC機必須做主機,也就是說,PC機可以抑制PS/2鍵盤發送數據,而PS/2鍵盤則不會抑制PC機發送數據。一般兩設備間傳輸數據的最大時鐘頻率是33kHz,大多數PS/2設備工作在10~20kHz。推薦值在15kHz左右,也就是說,Clock高、低電平的持續時間都為40μs。

USB接口的優勢:
1.可以熱插拔。就是用戶在使用外接設備時,不需要關機再開機等動作,而是在電腦工作時,直接將USB插上使用。
2.攜帶方便。USB設備大多以“小、輕、薄”見長,對用戶來說,隨身攜帶大量數據時,很方便。當然USB硬盤是首要之選了。
3.標準統一。大家常見的是IDE接口的硬盤,串口的鼠標鍵盤,并口的打印機掃描儀,可是有了USB之后,這些應用外設統統可以用同樣的標準與個人電腦連接,這時就有了USB硬盤、USB鼠標、USB打印機等等。
4.可以連接多個設備。USB在個人電腦上往往具有多個接口,可以同時連接幾個設備,如果接上一個有四個端口的USB HUB時,就可以再連上;四個USB設備,以此類推,盡可以連下去,將你家的設備都同時連在一臺個人電腦上而不會有任何問題。

USB支持熱插撥,而PS2接口不可以,所以論便捷性USB完勝PS2,其次就是鼠標USB接口的傳輸率比PS2要高一些,主要體現在游戲里的鼠標移動上,不過一般來說感覺不出來,至于鍵盤接口是USB或者是PS2那就沒什么區別了,不過最主要還是USB支持熱插撥,這點很重要,而且USB接口也是主流標準了,PS2已經完全失去意義了。包括價格上USB也比PS2貴不了多少錢,所以USB接口完勝。

但在鍵位組合上,PS/2可以實現全無沖突,USB下只能是最多6個可以同時按下。 USB鍵盤的一個數據包只有8個字節(為什么只有8個,這是因為協議規定,為什么協議這么規定,是因為早期的時候USB速度慢,使用中斷傳輸一個包最大就8個字節),其中2個字節標記狀態,其余6個字節用來記錄當前按下或者彈起的按鍵的掃描碼,所以,USB鍵盤最多同時描述6個按鍵的狀態。

在穩定上,PS/2還是要好過USB的,當然USB的話雖沒有PS/2的穩定,可有不錯的擴展,如可以在USB的鍵盤中加入USB HUB。

回復

使用道具 舉報

7#
ID:513258 發表于 2019-9-25 07:37 | 只看該作者

關于USB接口和PS/2接口轉換
電腦中四根線USB接口,兩邊的兩根是電源線,中間的兩根是數據線。usb接口的4根線一般是下面這樣分配的,需要注意的是千萬不要把正負極弄反了,否則會燒掉usb設備或者電腦的南橋芯片:
黑線:gnd       電源負極
紅線:vcc       電源正極
綠線:data+     信號正極
白線:data-     信號負極

回復

使用道具 舉報

8#
ID:513258 發表于 2019-9-25 07:54 | 只看該作者



此模塊是由PS2接口轉普通2.54MM接口,方便電腦鍵盤或鼠標與arduino連接。
回復

使用道具 舉報

9#
ID:513258 發表于 2019-9-25 08:01 | 只看該作者

模塊參數
工作電壓:5V(DC)
接口:4PIN接口5V、GND、DAT、CLK
輸出信號:數字信號
尺寸:21*17*17mm
重量:5.5g

回復

使用道具 舉報

10#
ID:513258 發表于 2019-9-25 08:06 | 只看該作者

回復

使用道具 舉報

11#
ID:513258 發表于 2019-9-25 08:08 | 只看該作者

回復

使用道具 舉報

12#
ID:513258 發表于 2019-9-25 10:33 | 只看該作者

根據圖上的引腳把 PS/2 接口與 Arduino 連接起來,對應關系如下表。

5V :      - Arduino 5V out
Ground : - Arduino GND
Clock :    - Arduino Pin 3
Data :     - Arduino Pin 8

回復

使用道具 舉報

13#
ID:513258 發表于 2019-9-25 10:36 | 只看該作者
  1. /*
  2. 【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3. 實驗一百二十四: PS2鼠標 鍵盤插座接口 PS2模塊
  4. 1、安裝< PS2Keyboard.h>庫
  5. (https://www.pjrc.com/teensy/arduino_libraries/PS2Keyboard.zip)
  6. 2、項目:在 Arduino 上使用 PS/2 鍵盤進行輸入測試
  7. 3、PS/2 接口與 Arduino 接腳
  8. 5V :      - Arduino 5V out
  9. Ground : - Arduino GND
  10. Clock :    - Arduino Pin 3
  11. Data :     - Arduino Pin 8
  12. */
  13.    
  14. #include <PS2Keyboard.h>

  15. const int DataPin = 8;
  16. const int IRQpin =  3;

  17. PS2Keyboard keyboard;

  18. void setup() {
  19.   //keyboard.begin(DataPin, IRQpin, PS2Keymap_US);
  20.   keyboard.begin(DataPin, IRQpin, PS2Keymap_German);
  21.   //keyboard.begin(DataPin, IRQpin, PS2Keymap_French);
  22.   Serial.begin(9600);
  23.   Serial.println("International Keyboard Test:");
  24. }

  25. void loop() {
  26.   if (keyboard.available()) {
  27.     char c = keyboard.read();
  28.     Serial.println(c);
  29.   }
  30. }
復制代碼


回復

使用道具 舉報

14#
ID:513258 發表于 2019-9-25 10:38 | 只看該作者

回復

使用道具 舉報

15#
ID:513258 發表于 2019-9-25 10:46 | 只看該作者
  1. /*
  2. 【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3. 實驗一百二十四: PS2鼠標 鍵盤插座接口 PS2模塊
  4. 1、安裝< PS2Keyboard.h>庫
  5. (https://www.pjrc.com/teensy/arduino_libraries/PS2Keyboard.zip)
  6. 2、項目:在 Arduino 上使用 PS/2 鍵盤進行輸入測試(識別一些特殊按鍵)
  7. 3、PS/2 接口與 Arduino 接腳
  8. 5V :      - Arduino 5V out
  9. Ground : - Arduino GND
  10. Clock :    - Arduino Pin 3
  11. Data :     - Arduino Pin 8
  12. */
  13.    
  14. #include <PS2Keyboard.h>

  15. const int DataPin = 8;
  16. const int IRQpin =  3;

  17. PS2Keyboard keyboard;

  18. void setup() {
  19.   delay(1000);
  20.   keyboard.begin(DataPin, IRQpin);
  21.   Serial.begin(9600);
  22.   Serial.println("Keyboard Test:");
  23. }

  24. void loop() {
  25.   if (keyboard.available()) {
  26.    
  27.     // read the next key
  28.     char c = keyboard.read();
  29.    
  30.     // check for some of the special keys
  31.     if (c == PS2_ENTER) {
  32.       Serial.println();
  33.     } else if (c == PS2_TAB) {
  34.       Serial.print("[Tab]");
  35.     } else if (c == PS2_ESC) {
  36.       Serial.print("[ESC]");
  37.     } else if (c == PS2_PAGEDOWN) {
  38.       Serial.print("[PgDn]");
  39.     } else if (c == PS2_PAGEUP) {
  40.       Serial.print("[PgUp]");
  41.     } else if (c == PS2_LEFTARROW) {
  42.       Serial.print("[Left]");
  43.     } else if (c == PS2_RIGHTARROW) {
  44.       Serial.print("[Right]");
  45.     } else if (c == PS2_UPARROW) {
  46.       Serial.print("[Up]");
  47.     } else if (c == PS2_DOWNARROW) {
  48.       Serial.print("[Down]");
  49.     } else if (c == PS2_DELETE) {
  50.       Serial.print("[Del]");
  51.     } else {
  52.       
  53.       // otherwise, just print all normal characters
  54.       Serial.print(c);
  55.     }
  56.   }
  57. }
復制代碼


回復

使用道具 舉報

16#
ID:513258 發表于 2019-9-25 10:48 | 只看該作者

回復

使用道具 舉報

17#
ID:513258 發表于 2019-9-25 11:02 | 只看該作者


說明: PS2鼠標尚未找到,相關實驗待后續........

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表