<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于SLH89F5162單片機的游戲手柄設(shè)計

          基于SLH89F5162單片機的游戲手柄設(shè)計

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

          一、項目背景概述

          本文引用地址:http://www.ex-cimer.com/article/201710/367176.htm

            在智能手機隨處可見的今天,各式各樣的APP層出不窮。由于手機有重力感應(yīng)功能,手機游戲自然也不會錯過這個,相比八、九十年代的小游戲,如今的游戲不再只是用眼去看,用手指操作,更多的是讓玩家用身體去體驗游戲。賽車類、飛機類、游艇類等游戲,通過控制手機的姿態(tài)就能控制游戲?qū)ο螅@種體驗使的很多人著迷。

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

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

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

            二、項目設(shè)計原理

            1、 原理概述

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

            2、 硬件設(shè)計原理

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

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

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

            115200波特率的分頻系數(shù) = 16.6M / 16 / 115200 = 9.00608

            38400波特率的分頻系數(shù) = 16.6M / 16 / 38400= 27.0182

            19200波特率的分頻系數(shù) = 16.6M / 16 / 19200 = 54.0365

            9600波特率的分頻系數(shù) = 16.6M / 16 / 9600 = 108.073

            3、 軟件設(shè)計原理

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

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

            angleX = arcsin(accelX / g)

            angleY = arcsin(accelY / g)

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

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

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

            三、項目設(shè)計框圖

            1、硬件設(shè)計框圖

            2、軟件設(shè)計框圖

            四、測試結(jié)果

            一、作品展示

            圖一

            圖二

            圖三

            二、作品演示

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

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



          關(guān)鍵詞: SLH89F5162 MPU6050

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();