三軸角度檢測(傾角傳感器MMA7455(加速度傳感器))_第1頁
三軸角度檢測(傾角傳感器MMA7455(加速度傳感器))_第2頁
三軸角度檢測(傾角傳感器MMA7455(加速度傳感器))_第3頁
三軸角度檢測(傾角傳感器MMA7455(加速度傳感器))_第4頁
三軸角度檢測(傾角傳感器MMA7455(加速度傳感器))_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、#include <reg52.h>#include <intrins.h> /要用到_nop_();函數(shù)#define uchar unsigned char#define uint  unsigned int/*/*               單片機引腳定義            

2、0;          */*/sbit sda=P10;              /I2C 數(shù)據(jù)傳送位sbit scl=P11;              /I2C 時鐘傳送位char x,y,z,num9=0,0,0;/*/* 

3、60;                   數(shù)據(jù)部分                            */*/#define IIC_READ&

4、#160; 0x1D      /定義讀指令#define IIC_WRITE 0x1D      /定義寫指令#define LCD_data  P0             /數(shù)據(jù)口sbit inter_0=P32;sbit LCD_RS  =  P27;       

5、60;    /寄存器選擇輸入 sbit LCD_RW  =  P26;            /液晶讀/寫控制sbit LCD_EN  =  P25;            /液晶使能控制sbit LCD_PSB =  P24;     

6、       /串/并方式控制void delay_1ms(uint x)  uint i,j; for(j=0;j<x;j+)   for(i=0;i<110;i+);   /*/*                     &

7、#160;                                           */*寫指令數(shù)據(jù)到LCD     

8、                                             */*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 

9、                            */*                      &#

10、160;                                          */*/void write_cmd(uchar cmd)   &#

11、160;                          LCD_RS = 0;    LCD_RW = 0;    LCD_EN = 0;    P0 = cmd; delay_1ms(5);    LCD_EN =

12、 1; delay_1ms(5);    LCD_EN = 0;  /*/*                                      

13、0;                          */*寫顯示數(shù)據(jù)到LCD                      

14、60;                           */*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。                  

15、0;            */*                                      

16、                           */*/void write_dat(uchar dat)                   

17、           LCD_RS = 1;    LCD_RW = 0;    LCD_EN = 0;    P0 = dat; delay_1ms(5);    LCD_EN = 1; delay_1ms(5);    LCD_EN = 0;  /*/*    &#

18、160;                                                  *

19、/* 設(shè)定顯示位置                                          */*       

20、;                                                */*/void lcd_pos

21、(uchar X,uchar Y)                             uchar  pos;   if (X=0)     X=0x80;   else if (X=1)   &

22、#160; X=0x90;   else if (X=2)     X=0x88;   else if (X=3)     X=0x98;   pos = X+Y ;     write_cmd(pos);     /顯示地址/*/*            &

23、#160;                                                 &

24、#160;  */*  LCD初始化設(shè)定                                             

25、     */*                                             &#

26、160;                   */*/void lcd_init()     LCD_PSB = 1;         /并口方式      write_cmd(0x30);     

27、 /基本指令操作    delay_1ms(5);    write_cmd(0x0C);      /顯示開,關(guān)光標    delay_1ms(5);    write_cmd(0x01);      /清除LCD的顯示內(nèi)容    delay_1ms(5);    uchar set_key_sign;&#

28、160;  /是否在設(shè)置狀態(tài)標志uchar delaysign;   /視覺停留標志uchar xposivalue;   /x正方向滿格顯示g值uchar xnegavalue;   /x反方向滿格顯示g值uchar yposivalue;   /y正方向滿格顯示g值uchar ynegavalue;   /y反方向滿格顯示g值/11111111 11111110 11111100 - 10000000 00000000&#

29、160;led_mai:i為亮燈數(shù)量uchar led_ma9=0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00; uchar xposiupstate;   /x正方向上8個LED顯示狀態(tài)uchar xposidownstate;  /x正方向下8個LED顯示狀態(tài)uchar xnegaupstate;   /x反方向上8個LED顯示狀態(tài)uchar xnegadownstate;  /x反方向下8個LED顯示狀態(tài)uchar yupstate;&#

30、160;   /y方向上8個LED顯示狀態(tài)uchar ydownstate;   /y方向下8個LED顯示狀態(tài)uchar xposilightnum;  /x正方向亮燈數(shù)量(116)uchar xnegalightnum;  /x反方向亮燈數(shù)量(116)uchar yposilightnum;  /y正方向亮燈數(shù)量(18)uchar ynegalightnum;  /x正方向亮燈數(shù)量(18)uchar  ack_sign;  

31、 /I2C 應(yīng)答標志/*/*                  各延時程序                    */*/void iic_delay()      &#

32、160; /5us延時 _nop_(); _nop_(); _nop_(); _nop_();void delay_50us(uint t)    uchar j; for(;t>0;t-) for(j=19;j>0;j-);void delay_50ms(uchar t)    uint j; for(;t>0;t-) for(j=6245;j>0;j-);/*/*     

33、60;         I2C通信部分              */*/void iic_start()               /函數(shù)功能:I2C通信開始 sda=1;    iic_delay();&

34、#160;scl=1;    iic_delay(); sda=0; iic_delay(); void iic_stop()                /函數(shù)功能:I2C通信停止 sda=0; iic_delay(); scl=1; iic_delay(); sda=1; iic_delay(); void ii

35、c_ack()                 /函數(shù)功能:I2C通信查應(yīng)答位     sda=1; scl=1; iic_delay(); ack_sign=sda; scl=0;    void iic_write_byte(uchar wdata)/函數(shù)功能:向I2C從機寫入一個字節(jié)  

36、60;  uchar i,temp,temp1;  temp1=wdata;     for(i=0;i<8;i+)              scl = 0;    iic_delay();    temp=temp1;    temp=temp&0x80; &#

37、160;  if(temp=0x80)     sda=1;        else     sda=0;     iic_delay();     scl=1;     iic_delay();    

38、60;scl=0;     iic_delay();     temp1=temp1<<1;    char iic_read_byte(void)    /函數(shù)功能:從I2C從機中讀出一個字節(jié)     uchar x;  char data_data;     for (x=0;x<8;x+)  &

39、#160;    data_data=data_data<<1;  sda=1;  iic_delay();  scl=0;  iic_delay();  scl=1;  iic_delay();  if(sda=1)     data_data|=0x01;   /else    /  

40、; data_data&=0xfe;  return data_data;void iic_write(uchar byte_add,uchar wdata)/函數(shù)功能:按地址寫入一字節(jié)數(shù)據(jù)     uchar t;  t=(IIC_WRITE<<1);  iic_start();  iic_write_byte(t);  iic_ack();  iic_write_byte(byte_add);  iic_ack();  iic_write_byte(wdata);  iic_ack();  iic_stop();char iic_read(uchar byte_add)            /函數(shù)功能:按地址讀出一字節(jié)數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論