版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、/includes.h #include <msp430x14x.h>#include "LCD1602.h"#include "mpu6050.h"/main.c#include "includes.h"void main()WDTCTL = WDTPW + WDTHOLD;BCSCTL1 &=XT2OFF;doIFG1 &=OFIFG;for(uint i=0xff;i>0;i -);while(IFG1&OFIFG);/ 等待時(shí)鐘穩(wěn)定BCSCTL2 |=SELM_2+SELS;/主、從系
2、統(tǒng)時(shí)鐘均為高頻DATA_DIR=0XFF;DATA_OUT=0X00;P6DIR=0XFF;P6OUT=0X00;init();InitMPU6050();while(1)Display10BitData(GetData(ACCEL_XOUT_H),2,0); / 顯示 X 軸加速度Display10BitData(GetData(ACCEL_YOUT_H),7,0); / 顯示 Y 軸加速度Display10BitData(GetData(ACCEL_ZOUT_H),12,0); 顯示 Z 軸加速度Display10BitData(GetData(GYRO_XOUT_H),2,1);/ 顯示
3、 X 軸角速度Display10BitData(GetData(GYRO_YOUT_H),7,1);/ 顯示 Y 軸角速度Display10BitData(GetData(GYRO_ZOUT_H),12,1);delayms(300);/ 以下是傳感器相關(guān)文件/mpu6050.h#define CPU_F (double)8000000)#define delayus(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0)/ 宏定義延時(shí)函數(shù)#define delayms(x) _delay_cycles(long)(CPU_F*(double)x/1
4、000.0)#define SCL1 P5OUT |=BIT0 #define SCL0 P5OUT &=BIT0 #define SCLOUT P5DIR |= BIT0;/IIC 數(shù)據(jù)引腳#define SDA1 P5OUT |=BIT1 #define SDA0 P5OUT &=BIT1 #define SDAIN P5DIR &=BIT1 #define SDAOUT P5DIR |=BIT1 #define SDADATA (P5IN & BIT1)/* / 定義 MPU6050 內(nèi)部地址/*#defineSMPLRTDIV0x19 / 陀螺儀采樣率,
5、典型值:0x07(125Hz)#defineCONFIG0x1A / 低通濾波頻率,典型值:0x06(5Hz)#defineGYROCONFIG0x1B / 陀螺儀自檢及測(cè)量范圍,典型值:典型值:0x18(不自檢,2000deg/s)#define#defineACCELXOUTH0x3B#defineACCELXOUTL0x3C#defineACCELYOUTH0x3D#defineACCELYOUTL0x3E#defineACCELZOUTH0x3F#defineACCELZOUTL0x40#defineTEMPOUTH0x41#defineTEMPOUTL0x42#defineGYROX
6、OUTH0x43#defineGYROXOUTL0x44#defineGYROYOUTH0x45#defineGYROYOUTL0x46#defineGYROZOUTH0x47#defineGYROZOUTL0x48#definePWRMGMT10x6B / 電源管理,典型值:0x00(正常啟用)#defineWHOAMI0x75 /IIC 地址寄存器(默認(rèn)數(shù)值0x68,只讀)#defineSlaveAddress0xD0 /IIC 寫入時(shí)的地址字節(jié)數(shù)據(jù),+1 為讀取ACCEL_CONFIG0x1C 加速計(jì)自檢、測(cè)量范圍及高通濾波頻率, 典型彳1: 0x01(不自檢,2G, 5Hz)/ 顯示數(shù)
7、字(-511 至 512)的字符數(shù)組void I2C_Start();void I2C_Stop();void I2C_SendACK(uchar ack);uchar I2C_RecvACK();void I2C_SendByte(uchar dat);uchar I2C_RecvByte();void Single_WriteI2C(uchar REG_Address,uchar REG_data);uchar Single_ReadI2C(uchar REG_Address);void InitMPU6050();void lcd_printf(uchar *s,int temp_dat
8、a);void DisplayListChar(uchar X,uchar Y,uchar *DData,uchar L);int GetData(uchar REG_Address);void Display10BitData(int value,uchar x,uchar y);/mpu6050.c#include "includes.h"uchar dis4;int dis_data;/*/I2C 起始信號(hào)/*void I2C_Start()SDAOUT;SDA1;/ 拉高數(shù)據(jù)線SCLOUT;SCL1;/ 拉高時(shí)鐘線delayus(5);/ 延時(shí)SDA0;/ 產(chǎn)生下降
9、沿delayus(5);/延時(shí)SCL0;/*/I2C 停止信號(hào)/*void I2C_Stop()/ 拉低時(shí)鐘線SDAOUT;SDA0;/ 拉低數(shù)據(jù)線SCLOUT;SCL1;/ 拉高時(shí)鐘線delayus(5);/ 延時(shí)SDA1;/ 產(chǎn)生上升沿delayus(5);/ 延時(shí)/* /I2C 發(fā)送應(yīng)答信號(hào)/入口參數(shù):ack (0:ACK 1:NAK)/* void I2C_SendACK(uchar ack)SDAOUT;SCLOUT;if(ack) SDA1;else SDA0;/ SDA = ack;SCL1;delayus(5);SCL0;delayus(5);/ 寫應(yīng)答信號(hào)/ 拉高時(shí)鐘線/ 延
10、時(shí)/ 拉低時(shí)鐘線/延時(shí)/*/I2C 接收應(yīng)答信號(hào)/*uchar I2C_RecvACK() uchar cy;SCLOUT;SCL1;/ 拉高時(shí)鐘線SDAIN;delayus(5);/ 延時(shí)if(SDADATA)cy=1; else cy=0;/ cy = SDA;/ 讀應(yīng)答信號(hào)SCL0;/ 拉低時(shí)鐘線delayus(5);/延時(shí)SDAOUT;return cy;/* /向I2C總線發(fā)送一個(gè)字節(jié)數(shù)據(jù) /* void I2C_SendByte(uchar dat) uchar i;SDAOUT;for (i=0; i<8; i+)/8 位計(jì)數(shù)器if(dat<<i)&0x
11、80) SDA1;elseSDA0;/ SDA = cy;/送數(shù)據(jù)口SCLOUT;SCL1;/ 拉高時(shí)鐘線delayus(5);/ 延時(shí)SCL0;/ 拉低時(shí)鐘線delayus(5);/ 延時(shí)I2C_RecvACK();/* /從I2C總線接收一個(gè)字節(jié)數(shù)據(jù)/*uchar I2C_RecvByte() uchar i;uchar dat = 0,cy;SDAOUT;SCLOUT;/ 使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù)/8 位計(jì)數(shù)器SDA1;SDAIN;for (i=0; i<8; i+)dat <<= 1;SCL1;/ 拉高時(shí)鐘線delayus(5);/ 延時(shí)if(SDADATA)cy=
12、1;elsecy=0;dat |= cy;/讀數(shù)據(jù)SCL0;delayus(5);SDAOUT;return dat;/*/向I2C設(shè)備寫入一個(gè)字節(jié)數(shù)據(jù)/*/ 拉低時(shí)鐘線/ 延時(shí)void Single_WriteI2C(uchar REG_Address,uchar REG_data)I2C_Start();/ 起始信號(hào)I2C_SendByte(SlaveAddress);/ 發(fā)送設(shè)備地址+寫信號(hào)I2C_SendByte(REG_Address);I2C_SendByte(REG_data);I2C_Stop();/ 內(nèi)部寄存器地址,/ 內(nèi)部寄存器數(shù)據(jù),/ 發(fā)送停止信號(hào)/*/從I2C設(shè)備讀取一
13、個(gè)字節(jié)數(shù)據(jù)/*uchar Single_ReadI2C(uchar REG_Address)uchar REG_data;I2C_Start();/ 起始信號(hào)I2C_SendByte(SlaveAddress);/ 發(fā)送設(shè)備地址+寫信號(hào)I2C_SendByte(REG_Address);I2C_Start();/ 發(fā)送存儲(chǔ)單元地址,從/ 起始信號(hào)0 開始I2C_SendByte(SlaveAddress+1);/ 發(fā)送設(shè)備地址+讀信號(hào)REG_data=I2C_RecvByte();/ 讀出寄存器數(shù)據(jù)/ 接收應(yīng)答信號(hào)/ 停止信號(hào)I2C_SendACK(1);I2C_Stop();return R
14、EG_data;/* / 初始化 MPU6050 /* void InitMPU6050()Single_WriteI2C(PWR_MGMT_1, 0x00); /解除休眠狀態(tài)Single_WriteI2C(SMPLRT_DIV, 0x07);Single_WriteI2C(CONFIG, 0x06);Single_WriteI2C(GYRO_CONFIG, 0x18);Single_WriteI2C(ACCEL_CONFIG, 0x01);void lcd_printf(uchar *s,int temp_data) if(temp_data<0)temp_data= -temp_da
15、ta;*s='-'else *s=' '* +s =temp_data/100+0x30;/ 取余運(yùn)算/ 取余運(yùn)算temp_data=temp_data%100;* +s =temp_data/10+0x30;temp_data=temp_data%10;* +s =temp_data+0x30;/*/LCD1602 顯示字符串/*void DisplayListChar(uchar X,uchar Y,uchar *DData,uchar L)uchar ListLength=0;Y&=0x1;X&=0xF;while(L-)Disp1Char
16、(X,Y,DDataListLength);ListLength+;X+;/* / 合成數(shù)據(jù)/* int GetData(uchar REG_Address)char H,L;H=Single_ReadI2C(REG_Address);L=Single_ReadI2C(REG_Address+1);return (H<<8)+L;/合成數(shù)據(jù)/* / 在 1602 上顯示 10 位數(shù)據(jù)/* void Display10BitData(int value,uchar x,uchar y) value/=64;/ 轉(zhuǎn)換為 10 位數(shù)據(jù)lcd_printf(dis, value);/ 轉(zhuǎn)換
17、數(shù)據(jù)顯示DisplayListChar(x,y,dis,4); /啟始列,行,顯示數(shù)組,顯示長(zhǎng)度以下是LCD1602相關(guān)文件#define uchar unsigned char#define uint unsigned int#define DATA_DIR P2DIR#define DATA_OUT P2OUT# define CLR_RS P6OUT&=BIT3; /RS=0;# define SET_RS P6OUT|=BIT3; /RS=1;# define CLR_RW P6OUT&=BIT4; /RW=0;# define SET_RW P6OUT|=BIT4;
18、/RW=1;# define CLR_EN P6OUT&=BIT5; /EN=0;# define SET_EN P6OUT|=BIT5; /EN=1;void delay1(uint z);void write_com(uchar com);void write_data(uchar dat);void init();void display(void);void LocateXY(uchar x,uchar y);void Disp1Char(uchar x,uchar y,uchar DataByte);void DispStr(uchar x,uchar y,uchar *pt
19、r);void DispNChar(uchar x,uchar y, uchar n,uchar *ptr);#include "includes.h"void delay1(uint z)uint t,y;for(t=z;t>0;t -)for(y=110;y>0;y -);/ 寫命令 /void write_com(uchar com)CLR_RS;CLR_RW;CLR_EN;DATA_OUT=com;delay1(20);SET_EN;delay1(20);CLR_EN;delay1(20);/ 寫數(shù)據(jù) /void write_data(uchar dat
20、)SET_RS;CLR_RW;CLR_EN;DATA_OUT=dat;delay1(20);SET_EN;delay1(20);CLR_EN;delay1(20);/ 液晶初始化/void init()delay1(30);write_com(0x38);delay1(10);write_com(0x38);delay1(10);write_com(0x38);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x06);write_com(0x0c);void display(void)write_com(0x80+0x40)
21、;write_data(0x31);/*131 函數(shù)名稱:LocateXY132 功能:向液晶輸入顯示字符位置的坐標(biāo)信息133 參數(shù):x-位置的列坐標(biāo)0-15134y-位置的行坐標(biāo)0-1135 返回值:無(wú)136 */ void LocateXY(uchar x,uchar y) uchar temp;temp = x&0x0f;y &= 0x01;if(y) temp |= 0x40;/如果在第2 行temp |= 0x80;/ 第一行為0x80, 第二行為0x80+0x40write_com(temp);/*149函數(shù)名稱:Disp1Char150 功能:在某個(gè)位置顯示一個(gè)字符15
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年投資款轉(zhuǎn)為項(xiàng)目融資借款合同范本及合規(guī)審查3篇
- 2025年潮州貨運(yùn)資格證題庫(kù)在線練習(xí)
- 2025年淮安道路貨運(yùn)從業(yè)資格證模擬考試官方題下載
- 2025年大同考貨運(yùn)從業(yè)資格證
- 2025年貨運(yùn)從業(yè)資格證考試技巧與方法
- 洛陽(yáng)理工學(xué)院《大數(shù)據(jù)平臺(tái)核心技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 火車站采暖系統(tǒng)施工協(xié)議
- 2024年物業(yè)抵押借款合同
- 商業(yè)地帶凈水機(jī)租賃合同協(xié)議書
- 文化場(chǎng)館改造增補(bǔ)合同
- 2024至2030年中國(guó)甲醚化氨基樹脂行業(yè)投資前景及策略咨詢研究報(bào)告
- 貴州省建筑工程施工資料管理導(dǎo)則
- 2024年度鋼模板生產(chǎn)與銷售承包合同3篇
- 《QHSE體系培訓(xùn)》課件
- 計(jì)量經(jīng)濟(jì)學(xué)論文-城鎮(zhèn)單位就業(yè)人員工資總額的影響因素
- 《農(nóng)業(yè)企業(yè)經(jīng)營(yíng)管理》試題及答案(U)
- 山東省聊城市2024-2025學(xué)年高一上學(xué)期11月期中物理試題
- 孫悟空課件教學(xué)課件
- 華南理工大學(xué)《自然語(yǔ)言處理》2023-2024學(xué)年期末試卷
- 新能源行業(yè)光伏發(fā)電與儲(chǔ)能技術(shù)方案
- 中國(guó)高血壓防治指南(2024年修訂版)要點(diǎn)解讀
評(píng)論
0/150
提交評(píng)論