三轴角度检测(倾角传感器MMA7455(加速度传感器))
时间:11-29
来源:互联网
点击:
#include
#include//要用到_nop_();函数#define uchar unsigned char#define uint unsigned int/***************************************************************************//*********** 单片机引脚定义 ************//***************************************************************************/sbit sda=P1^0; //I2C 数据传送位sbit scl=P1^1; //I2C 时钟传送位char x,y,z,num[9]={0,0,0};/******************************************************************************//********** 数据部分 ***********//******************************************************************************/#define IIC_READ 0x1D //定义读指令#define IIC_WRITE 0x1D //定义写指令#define LCD_data P0 //数据口sbit inter_0=P3^2;sbit LCD_RS = P2^7; //寄存器选择输入 sbit LCD_RW = P2^6; //液晶读/写控制sbit LCD_EN = P2^5; //液晶使能控制sbit LCD_PSB = P2^4; //串/并方式控制void delay_1ms(uint x) { uint i,j; for(j=0;j 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--);}/*********************************************************************//************** I2C通信部分 ***************//*********************************************************************/void iic_start() //函数功能:I2C通信开始{sda=1;iic_delay();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 iic_ack() //函数功能:I2C通信查应答位{ sda=1;scl=1;iic_delay();ack_sign=sda;scl=0; }void iic_write_byte(uchar wdata)//函数功能:向I2C从机写入一个字节{uchar i,temp,temp1;temp1=wdata;for(i=0;i<8;i++){scl = 0;iic_delay();temp=temp1;temp=temp&0x80;if(temp==0x80)sda=1; elsesda=0;iic_delay();scl=1;iic_delay();scl=0;iic_delay();temp1=temp1<1;}}char iic_read_byte(void) //函数功能:从I2C从机中读出一个字节{uchar x;char data_data;for (x=0;x<8;x++){ data_data=data_data<1;sda=1;iic_delay();scl=0;iic_delay();scl=1;iic_delay();if(sda==1)data_data|=0x01; //else // 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) //函数功能:按地址读出一字节数据{uchar t;char x;t=(IIC_WRITE<1);iic_start();iic_write_byte(t);iic_ack();iic_write_byte(byte_add);iic_ack();t=((IIC_READ<1)|0x01);iic_start();iic_write_byte(t);iic_ack();x=iic_read_byte();iic_ack();iic_stop();return x;}void main(){delay_1ms(10); //延时lcd_init();delay_1ms(5);iic_write(0x16,0x5);iic_write(0x10,0x32);//校正X值iic_write(0x12,0x62);//校正Y值delay_50ms(20);while(1){x=iic_read(0x06);y=iic_read(0x07);z=iic_read(0x08);num[0]=x/100;num[1]=x/10%10;num[2]=x%10;num[3]=y/100;num[4]=y/10%10;num[5]=y%10;num[6]=z/100;num[7]=z/10%10;num[8]=z%10;lcd_pos(0,0);write_dat(num[0]+48);delay_1ms(5); write_dat(num[1]+48);delay_1ms(5);write_dat(num[2]+48);delay_1ms(5);lcd_pos(1,0);write_dat(num[3]+48);delay_1ms(5); write_dat(num[4]+48);delay_1ms(5);write_dat(num[5]+48);delay_1ms(5);lcd_pos(2,0);write_dat(num[6]+48);delay_1ms(5); write_dat(num[7]+48);delay_1ms(5);write_dat(num[8]+48);delay_1ms(5);}}
三轴角度检测倾角传感器MMA7455加速度传感 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
