久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

3D計步器的設計論文下載

[復制鏈接]
跳轉到指定樓層
樓主
完整論文下載:
3D計步器的設計.docx (72.79 KB, 下載次數: 16)


預覽:


1人體跳躍模型
人體跳躍時的行為可以通過很多參數來描述,但不同的參數反映著不同的方面,本文主要是測量人跳躍次數,以達到及時了解自己每日跳躍次數及運動量并進行及時調節和鍛煉的目的,人跳躍的行為可以通過距離、速度、加速度等參數來描述,不同的參數有著不同的精確度,通過檢測人跳躍時的加速度信號可以有效的獲得步數信息。而人跳躍時在水平前向、側向和垂直方向上都有加速度,如下圖所示:

圖1 人體跳躍模擬圖
2 MMA7260結構與原理
本設計采用MMA7260來測量人體跳躍時的三維加速度信號。MMA7260是美國Freescale公司的一款低成本單芯片三軸高靈敏度加速度傳感器,是一種電容式的加速度傳感器,融合了信號調理、單極低通濾波器和溫度補償技術,并且具有4種不同的高靈敏度選擇模式,MMA7260的功能如下圖所示,X、Y、Z三個相互垂直方

向上的加速度有G-Cell傳感器單元感知,經過容壓變換器、增益放大、濾波器和溫度補償后以電壓信號輸出。
圖 2 MMA7260功能框圖
3 LCD(JHD12864F)功能結構
JHD12864F是一種具有4位/8位并行、2線或3線串行多種接口方式,內部含有簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64,內置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構成全中文人機交互圖形界面。可以顯示8×4行16×16點陣的漢字,也可完成圖形顯示。
4 硬件設計
電子計步器的硬件結構框圖如下:它由傳感器檢測模塊和單片機控制模塊組成。
   
圖 3 MMA7260的輸出管腳圖
傳感器模塊是由MMA7260來對人體跳躍時的加速度信號進行檢測,其XYZ軸分別對人體跳躍時在水平前向、側向和垂直方向上產生的加速度信號進行檢測,能夠提高對人體行走時加速度信號的測量精度,另外可以在此模擬輸出腳上接上電容和電阻形成低通濾波器對高頻噪音和干擾信號進行濾波,從而減小測量誤差。

控制模塊主要對加速度信號進行讀取和顯示步數信息。ATmega單片機的PA0~PA2分別于MMA7260的三軸XYZ輸出端口相連接(如上圖所示),對傳感器檢測到的加速度信號進行采樣和A/D轉換,經過微控制器相關算法得出人體跳躍時的步數,并將該步數信號通過LCD液晶顯示屏進行顯示,同時可通過按鍵對LCD進行顯示、關閉和清零等操作。相關圖如下:
圖 4 單片機與LCD接線圖
5 軟件設計
在獲取加速度信號時,采樣頻率的選擇很重要。采樣頻率過低,不能準確反映數據變化的情況。采樣頻率過高,則會引入很多無關的信息,增加了系統的運算量,影響反應速度。需要根據實際情況選擇合適的采樣頻率。而人體跳躍時的頻率一般為110步/每分鐘(即1.8Hz),跑步時也不超過5Hz,本設計設定采樣頻率為10Hz。相關流程圖:

3D計步器部分程序
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. #include <math.h>               
  4. #include <stdio.h>            
  5. #define FOSC 18432000L
  6. #define FOSC 11059200L          //晶振 11.0592M
  7. #define BAUD 9600 typedef unsigned char BYTE; typedef unsigned int WORD;
  8. #define uchar unsigned char uint unsigned int

  9. /*Declare SFR associated with the ADC */
  10. sfr AUXR1 = 0XA2; sfr ADC_CONTR = 0xBC; //ADC control register sfr ADC_RES = 0xBD; //ADC high 8-bit result register sfr ADC_RESL = 0xBE;
  11. sfr ADC_LOW2 = 0xBE; //ADC low 2-bit result register
  12. sfr P1ASF = 0x9D; //P1 secondary function control register /*Define ADC operation const for ADC_CONTR*/
  13. #define ADC_POWER 0x80 //ADC power control bit
  14. #define ADC_FLAG 0x10 //ADC complete flag
  15. #define ADC_START 0x08 //ADC start control bit
  16. #define ADC_SPEEDLL 0x00 //420 clocks
  17. #define ADC_SPEEDL 0x20 //280 clocks
  18. #define ADC_SPEEDH 0x40 //140 clocks #define ADC_SPEEDHH 0x60 //70 clocks void InitUart();
  19. void InitADC();
  20. void SendData(BYTE dat);
  21. int GetADCResult(BYTE ch);
  22. void Delay(WORD n);
  23. uchar ge,shi,bai,qian,wan;
  24. Voidconversion(uint temp_data) { wan=temp_data/10000+0x30 ; temp_data=temp_data%10000; qian=temp_data/1000+0x30 ; temp_data=temp_data%1000; bai=temp_data/100+0x30 ; temp_data=temp_data%100; shi=temp_data/10+0x30 ; temp_data=temp_data%10; ge=temp_data+0x30; }

  25. //顯示變量

  26. //取余運算 //取余運算 //取余運算 //取余運算

  27. /*---------------------------Get ADC result ----------------------------*/
  28. int GetADCResult(BYTE ch) { int AD10bitResult; ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START; _nop_(); //Must wait before inquiry _nop_(); _nop_(); _nop_();
  29. while (!(ADC_CONTR & ADC_FLAG));//Wait complete
  30. flag ADC_CONTR &= ~ADC_FLAG; //Close ADC AD10bitResult=ADC_RES;
  31. AD10bitResult<<=8; AD10bitResult|=ADC_RESL; return AD10bitResult;

  32. //Return 10BIT ADC result

  33. } /*---------------------------Initial UART ----------------------------*/ void InitUart() { SCON = 0x5a; //8 bit data ,no parity bit TMOD = 0x20; //T1 as 8-bit auto reload TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate TR1 = 1; //T1 start running }


  34. /*---------------------------Initial ADC sfr ----------------------------*/ void InitADC() { P1ASF = 0xff;

  35. //Open 8 channels ADC function

  36. AUXR1=AUXR1|0X04; //ad 值左對齊
  37. ADC_RES = 0; //Clear previous result
  38. ADC_CONTR = ADC_POWER | ADC_SPEEDLL; Delay(2); //ADC power-on and delay } /*---------------------------Send one byte data to PC Input: dat (UART data) Output:----------------------------*/
  39. void SendData(BYTE dat) { while (!TI); TI = 0; SBUF = dat; } /*---------------------------Software delay function ----------------------------*/
  40. void Delay(WORD n) { WORD x; while (n--) { x = 5000; while (x--); } } //***************************************************************************** * void main()

  41. //Wait for the previous data is sent //Clear TI flag //Send current data

  42. {

  43. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线观看中文字幕 | 9久久精品 | 成人性生交大片免费看r链接 | 91精品国产综合久久久久久首页 | 日韩在线观看中文字幕 | 在线中文字幕国产 | 中日av| 狠狠干夜夜草 | 久久午夜视频 | 久久香蕉网 | 一区二区三区四区国产 | 精品国产免费人成在线观看 | 成人久久久| 四虎影院免费在线播放 | 久草视频在| 久久国产成人 | 一区二区三区在线看 | pacopacomama在线 | 日韩一区二区三区在线看 | 亚洲一区二区三区四区五区中文 | 一呦二呦三呦国产精品 | 日本黄色影片在线观看 | 国产成人免费 | 亚洲成a | 国产成人av免费看 | 亚洲国产二区 | 国产精品美女久久久久久不卡 | av天天爽| 欧美一区二区成人 | 久久成人综合 | 欧美一区二区三区视频 | 在线亚州 | 亚洲精品永久免费 | 91国内外精品自在线播放 | 国产欧美日韩精品在线观看 | 国产99久久久国产精品 | 国产网站在线免费观看 | 亚洲免费在线 | 亚洲一区二区三区在线播放 | 91免费观看国产 | 激情五月婷婷在线 |