三轴角度检测(倾角传感器MMA7455(加速度传感器))_第1页
三轴角度检测(倾角传感器MMA7455(加速度传感器))_第2页
三轴角度检测(倾角传感器MMA7455(加速度传感器))_第3页
三轴角度检测(倾角传感器MMA7455(加速度传感器))_第4页
三轴角度检测(倾角传感器MMA7455(加速度传感器))_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include <reg52.h>#include <intrins.h> /要用到_nop_();函数#define uchar unsigned char#define uint  unsigned int/*/*               单片机引脚定义            

2、0;          */*/sbit sda=P10;              /I2C 数据传送位sbit scl=P11;              /I2C 时钟传送位char x,y,z,num9=0,0,0;/*/* 

3、60;                   数据部分                            */*/#define IIC_READ&

4、#160; 0x1D      /定义读指令#define IIC_WRITE 0x1D      /定义写指令#define LCD_data  P0             /数据口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;                                           */*写指令数据到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;                          */*写显示数据到LCD                      

14、60;                           */*RS=H,RW=L,E=高脉冲,D0-D7=数据。                  

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、/* 设定显示位置                                          */*       

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初始化设定                                             

25、     */*                                             &#

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

27、 /基本指令操作    delay_1ms(5);    write_cmd(0x0C);      /显示开,关光标    delay_1ms(5);    write_cmd(0x01);      /清除LCD的显示内容    delay_1ms(5);    uchar set_key_sign;&#

28、160;  /是否在设置状态标志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为亮灯数量uchar led_ma9=0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00; uchar xposiupstate;   /x正方向上8个LED显示状态uchar xposidownstate;  /x正方向下8个LED显示状态uchar xnegaupstate;   /x反方向上8个LED显示状态uchar xnegadownstate;  /x反方向下8个LED显示状态uchar yupstate;&#

30、160;   /y方向上8个LED显示状态uchar ydownstate;   /y方向下8个LED显示状态uchar xposilightnum;  /x正方向亮灯数量(116)uchar xnegalightnum;  /x反方向亮灯数量(116)uchar yposilightnum;  /y正方向亮灯数量(18)uchar ynegalightnum;  /x正方向亮灯数量(18)uchar  ack_sign;  

31、 /I2C 应答标志/*/*                  各延时程序                    */*/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()               /函数功能:I2C通信开始 sda=1;    iic_delay();&

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

35、c_ack()                 /函数功能:I2C通信查应答位     sda=1; scl=1; iic_delay(); ack_sign=sda; scl=0;    void iic_write_byte(uchar wdata)/函数功能:向I2C从机写入一个字节  

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)    /函数功能:从I2C从机中读出一个字节     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)/函数功能:按地址写入一字节数据     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)            /函数功能:按地址读出一字节数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论