<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è) > 嵌入式系統 > 設計應用 > 基于SLH89F5162單片機的游戲手柄設計

基于SLH89F5162單片機的游戲手柄設計

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

一、項目背景概述

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

  在智能手機隨處可見(jiàn)的今天,各式各樣的APP層出不窮。由于手機有重力感應功能,手機游戲自然也不會(huì )錯過(guò)這個(gè),相比八、九十年代的小游戲,如今的游戲不再只是用眼去看,用手指操作,更多的是讓玩家用身體去體驗游戲。賽車(chē)類(lèi)、飛機類(lèi)、游艇類(lèi)等游戲,通過(guò)控制手機的姿態(tài)就能控制游戲對象,這種體驗使的很多人著(zhù)迷。

  但是,在游戲體驗得到大幅度提升的同時(shí),也存在一些問(wèn)題。重力傳感器與手機是一體的,手機屏幕也是手機的一部分,當敵機快速朝我方?jīng)_來(lái)時(shí),我們會(huì )最大限度的傾斜手機來(lái)躲避敵機。但是此時(shí)由于手機傾斜,我們要么看不見(jiàn)屏幕內容,要么頭也隨手機傾斜。

  為了解決這個(gè)問(wèn)題,我想把傳感器與屏幕分離出來(lái),即使控制與顯示獨立。正值“深聯(lián)華杯單片機應用設計大賽”如火如荼的進(jìn)行,我就借此機會(huì )將我的計劃實(shí)現。制作一款具有重力感應的游戲手柄。

  雖然帶重力感應的游戲手柄在市場(chǎng)上也有,但是上百元的價(jià)格并不是人人都會(huì )購買(mǎi)的。深聯(lián)華單片機是增強型51單片機,兼容傳統的51單片機,又添加了許多實(shí)用的周邊模塊,使得單片機真正成為“單片微機”。同時(shí)因其低廉的價(jià)格,使得制作出來(lái)的重力游戲手柄的成本也極低,屬于平民級的消費電子,市場(chǎng)競爭力不言而喻。

  二、項目設計原理

  1、 原理概述

  單片機從傳感器獲取游戲手柄的實(shí)時(shí)2軸加速度值,經(jīng)過(guò)運算可得到游戲手柄的傾斜角度,將這個(gè)角度信息通過(guò)串口發(fā)送到電腦上的接收程序,由接收程序經(jīng)過(guò)簡(jiǎn)單的數據打包,就能把游戲手柄的姿態(tài)傳遞給游戲對象,從而達到與智能手機重力感應游戲一樣的游戲效果。

  2、 硬件設計原理

  單片機有內部16.6MHz振蕩器,所以不接外部晶振也可正常工作。用其產(chǎn)生115200波特率,通訊速度快,誤差極小,可忽略不計,測試了數萬(wàn)個(gè)數據,沒(méi)發(fā)現出錯的數據。同時(shí),產(chǎn)生的波特率越小,誤差越大。單片機內部有復位電路,可省去外部復位電路,因此一片單片機芯片就是一個(gè)最小系統。

  控制器SLH89F5162單片機為主控制器,負責傳感器的控制,傳感器信息的讀取、矩陣鍵盤(pán)掃描、獨立按鍵輸入、與電腦的串口通訊。

  傳感器內部集成了3軸陀螺儀、3軸加速度計、溫度傳感器和數字運動(dòng)處理器,并支持外接其他輔助傳感器。I2C通訊接口,數字量輸出,體積小。

  115200波特率的分頻系數 = 16.6M / 16 / 115200 = 9.00608

  38400波特率的分頻系數 = 16.6M / 16 / 38400= 27.0182

  19200波特率的分頻系數 = 16.6M / 16 / 19200 = 54.0365

  9600波特率的分頻系數 = 16.6M / 16 / 9600 = 108.073

  3、 軟件設計原理

  軟件開(kāi)發(fā)環(huán)境采用Keil3,編程語(yǔ)言采用匯編。采用模塊化方法,將I2C讀寫(xiě)函數、操作函數、鍵盤(pán)掃描函數、數學(xué)運算、表格分開(kāi)在不同的文件,編譯時(shí)再鏈接在一起。

  MPU6050只支持I2C通訊,最大I2C時(shí)鐘為400KHz,采用匯編語(yǔ)言編寫(xiě),可最大限度的滿(mǎn)足其時(shí)鐘要求,這是高級語(yǔ)言無(wú)法做到的。重力傳感器輸出的是某一軸的加速度大小,該值與重力加速度g的比值,就是傳感器繞該軸與豎直方向夾角的正弦值,只要求其反正弦就可得到相應的角度大小。

  angleX = arcsin(accelX / g)

  angleY = arcsin(accelY / g)

  采集的數據具有噪聲,采用數字低通濾波器可有效減小噪聲干擾。某一軸上不僅存在重力加速度的分量,同時(shí)也存在運動(dòng)加速度的分量,這會(huì )對傾角的計算帶來(lái)誤差。運動(dòng)加速度的分量比重力加速度小很多,持續時(shí)間也很短,采用低通濾波算法也能較小運動(dòng)帶來(lái)的誤差。

  低通濾波算法:y = a * y + (1 - a) * x; x:輸入, y:輸出, a:系數

  由于8位的51單片機先天不足,對浮點(diǎn)數據運算的支持很差,尤其是涉及三角函數、反三角函數。所以我采用空間換時(shí)間的方法,即通過(guò)查表得到arcsin(accel)的值,這樣運算非???,而且精度沒(méi)有打任何折扣。SLH89F5162具有片內62K Flash ROM,而accel = -8192 ~ 8192,存儲8192個(gè)浮點(diǎn)數據需要8192 * 4 = 32K字節,采用SLH89F5162單片機沒(méi)有任何壓力。

  三、項目設計框圖

  1、硬件設計框圖

  2、軟件設計框圖

  四、測試結果

  一、作品展示

  圖一

  圖二

  圖三

  二、作品演示

  演示視頻鏈接:http://pan.baidu.com/s/1i35JhVR

 ?。ㄗⅲ阂曨l分辨率為1024×768,為了保證畫(huà)面清晰,建議全屏或者下載觀(guān)看。)



關(guān)鍵詞: SLH89F5162 MPU6050

評論


相關(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>