<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種基于微加速度計的無(wú)線(xiàn)教鞭系統設計

一種基于微加速度計的無(wú)線(xiàn)教鞭系統設計

作者: 時(shí)間:2014-07-22 來(lái)源:網(wǎng)絡(luò ) 收藏

  3 系統軟件設計

本文引用地址:http://dyxdggzs.com/article/255889.htm

  3.1 遠端子系統軟件設計

  3.1.1 發(fā)送和接收模塊

  無(wú)線(xiàn)RF射頻收發(fā)模塊nRF24L01通過(guò)SPI總線(xiàn)連接用戶(hù)端和主機端,在使用時(shí)要分別對其配置,用戶(hù)端配置為發(fā)射模式,主機端配置為接收模式,并且要嚴格按照其數據格式及流程發(fā)送和接收數據。

  3.1.2 模塊

  1)寄存器中數據的重建

  與微處理器之間通過(guò)I2C總線(xiàn)連接,它們之間的數據傳輸需要遵循I2C總線(xiàn)協(xié)議,寄存器0x32至寄存器0x37分別保存x、y、z軸輸出數據,輸出數據為二進(jìn)制補碼,DATAx0為最低有效字節,DATAx1為最高有效字節,其中x代表X、Y或Z。因為為16位數據格式,從數據寄存器中獲取加速度數據后,用戶(hù)必須對數據進(jìn)行重建。我們利用接口函數Multiple_read_()多字節連續讀取寄存器的數據,然后將高字節左移8位和低字節8位相或的方法對數據重建,且對我們來(lái)說(shuō),只需X和Z方向的加速度數據即可,程序如下:

  ADXL345_DataReconstrution()

  { unsigned int Acceleration[2];

  Multiple_Read_ADXL345();

  Acceleration[0]=BUF[1];

  ACCeleration[0]=(ACceleration[0]<<8)|BUF[0];

  Acceleration[1]=BUF[5];

  Acceleration[1]=(Acceleration[1]<<8)|BUF[4];

  }

  2)ADXL345與普通鼠標精度的比較

  現在市面上普通光學(xué)鼠標主流分辨率為400DPI,即每移動(dòng)1英寸可反饋400個(gè)不同點(diǎn)的坐標,也即該鼠標的分辨率為25.4 mm/400=0.06 35mm。而ADXL345采用13位或10位的分辨率模式,此模式可以通過(guò)DATA_FORMAT寄存器(地址0x31)進(jìn)行設置,除此之外,該寄存器還可以沒(méi)置g的范圍,有±2 g,±4 g,±8 g,±16 g,該教鞭選擇10位模式,±2 g已經(jīng)能滿(mǎn)足對分辨率的要求,此時(shí)分辨率為4g/1024LSB=3.9mg/ LSB,我們是將采集到的加速度數據采用16進(jìn)制數字方式存儲在寄存器中,然后取出數據重建劃分步長(cháng)后,通過(guò)無(wú)線(xiàn)傳送至接收端控制鼠標的移動(dòng),而USB鼠標報告描述中規定,若接收到的數據為1則移動(dòng)一個(gè)像素,假設尺寸為300mm*190 mm的14寸顯示器,分辨率設置為1 024*768,那么橫向最小點(diǎn)間距為300 mm/1 024=0.293 0 mm,雖然這個(gè)數據沒(méi)有普通光學(xué)鼠標高,但是對于一般教鞭已經(jīng)足夠,最重要的是我們可以通過(guò)軟件設置步長(cháng),可以在教鞭微動(dòng)的時(shí)候做出準確移動(dòng),在需要情況下大幅晃動(dòng)教鞭能夠快速將光標移動(dòng)到屏幕邊緣,符合人體工程學(xué)的要求,并且我們可以改變g值,分辨率模式及步長(cháng)來(lái)自由調整教鞭的移動(dòng)。設置的步長(cháng)程序如下:

  

 

  3.2 主機端子系統軟件設計

  圖3為接收端主程序流程圖,該接收端軟件部分主要包括:PDIUSBD12固件驅動(dòng),USB設備的枚舉過(guò)程。為了使軟件可移植性強、易維護,采用分層的方法編寫(xiě)PDIUSBD12的驅動(dòng)程序。USB驅動(dòng)程序分成接口和設備控制驅動(dòng)層、協(xié)議層和應用層。應用分層的方法編寫(xiě)的程序條理清晰,可移植性好。而USB HID類(lèi)是比較大的一個(gè)類(lèi),HID類(lèi)設備屬于人機交互操作的設備。使用HID設備的一個(gè)好處就是,操作系統自帶了HID類(lèi)的驅動(dòng)程序,而用戶(hù)無(wú)需去開(kāi)發(fā)很麻煩的驅動(dòng)程序,只要直接使用API調用即可完成通信。所以我們將USB設備枚舉成HID設備,這樣就可以不用安裝驅動(dòng)而直接使用。USB設備的枚舉過(guò)程實(shí)際上就是告知PC設備描述類(lèi)型。當插入USB設備后,主機會(huì )向設備請求各種描述符來(lái)識別設備,包括5個(gè)標準描述符:設備描述符、配置描述符、接口描述符、端點(diǎn)描述符、字符串描述符和3個(gè)HID設備類(lèi)特定描述符:HID描述符、報告描述符、實(shí)體描述符。當主機從它的描述符中知道了能夠知道的所有信息后,便開(kāi)始為這個(gè)設備安裝驅動(dòng)程序。此時(shí)USB枚舉過(guò)程結束,設備可以正常使用了。

  

 

  4 結束語(yǔ)

  本文應用微加速度計和無(wú)線(xiàn)RF模塊,實(shí)現無(wú)線(xiàn)遙控的鼠標操作。遙控有效距離可達30~60 m,功耗小,成本低,而且遙控無(wú)指向性,能大大增強多媒體的人機交互性能。而且該成品外觀(guān)設計合理,手感舒適,符合人體工程學(xué)設計,能防止鼠標手的出現。

加速度計相關(guān)文章:加速度計原理

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>