鍵盤作為經典的輸入設備,使用在很多互動中都有特别的優勢,比如我們可以通過鍵盤直接給flash傳遞按鍵事件。而無需通過串口之類的特殊接口,雖然我們可以拆一個傳統的鍵盤,然後将裡面的按鍵引出來,但是這樣有一個缺點,就是鍵值不能動态改變并且不能一次多鍵。使用模拟鍵盤的話,我們就可以随意在程序設置按鍵的時間和鍵值。比如本文的例子就是按下一個按鍵,模拟鍵盤就在電腦輸入“”。
硬件部分:
材料清單:
x1
68Ω電阻 x2 (沒有68Ω的話,用50~100Ω電阻也行)
2.2kΩ電阻 x1 (沒有2.2kΩ的話,用1.5k~2.2k電阻也行)
USB連接線(一端是USB口,另一端是電線) x1
3.6v 穩壓管(建議選用功耗0.25~0.5w的)x2
電路原理圖:
電路圖解說:
1、兩個68Ω的電阻起到限流和保護作用,防止在意外情況下損壞計算機的USB端口或單片機的端口。
2、2.2kΩ電阻是上拉電阻,用于分辨總線狀态。如果上拉電阻接于D+和+5v端則是高速USB設備,接于D-與+5v端,則是低速設備。此處鍵盤傳輸速率不高,接到D-作為低速設備即可。
3、D+和D-上的3.6V穩壓二極管D1和D2起到限制數據線上的電平的作用。因為在USB規範中規定數據線D+和D-上的電平範圍是3.0V至3.6V,而AVR單片機的輸出電平是Vcc。如果單片機的Vcc是5V,在沒有D1和D2的情況下将造成電平不匹配,會造成在很多計算機中無法正确識别出USB設備。如果用戶系統的Vcc在3.0V至3.6V之間,就可以省略這兩個穩壓二極管。從這裡也可以看出用戶系統的Vcc必須高于3V。
4、由于低速所需要的是1.5MHz時鐘,而單片機每8條指令就能精确完成一個數據位的采集。所以最小單片機時鐘頻率是12MHz。并且可以使用的時鐘頻率有12MHz、12.8MHz、15MHz、16MHz、16.5MHz、20MHz,其他的不支持。所以如果使用最小系統制作此模拟鍵盤的話8MHz的話,不能用。
————————
軟件部分:
支持庫文件:
-模拟電腦鍵盤(基于AVR-USB的USB-HID設備)">.zip(112.45KB, 下載次數: 110)
文件下載後解壓到編譯器的文件夾下面。
注意:
1、庫中,.h裡面可以更改USB接線的引腳定義,下面給出一個大概解釋(下面的PORTD是指AVR單片機的PORTD,要查詢原理圖才能得到是的哪個引腳):
#NAME D
USB輸入輸出引腳使用AVR單片機的PORTD,如果改成B就是使用PORTB
#_BIT 4
USB的D-接PORTD的第四位PD4,對應 D4
#BIT2
USB的D+接PORTD的第二位PD2,對應 D2
# D
USB上拉引腳使用AVR單片機的PORTD,如果改成B就是使用PORTB
#_BIT5
USB的上拉電阻接PORTD的第五位PD5,對應
2、在庫的.h裡面,有關于模拟鍵值的表
# KEY_A 4
# KEY_B 5
# KEY_C 6
# KEY_D 7
# KEY_E 8
等。但不齊全。經過測試,其實這個鍵盤基本可以模拟幾乎所有鍵值(Power,Sleep,Pause似乎不能)。
比如方向鍵右左下上分别對應79,80,81,82數字。即寫成
.(79);
.(81);
等。由于整理比較麻煩,大家可以自己下載個軟件測試不同數字下面的鍵值。
程序示例:
下面的例子演示了用虛拟鍵盤的應用例子。打開記事本,然後将的D12引腳和GND連起來,就會打印字樣。 代碼複制打印
# ".h"int = 1;//按鍵接在D1引腳,也可以改成任何引腳void setup(){ &= !(1
有話要說...