mma7361角速度传感器实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#define lcd P0

sbit sl=P1^0;

sbit og=P1^1;

sbit st=P1^2;

sbit gs=P1^3;

sbit adcs=P2^0;

sbit adclk=P2^1;

sbit addo=P2^2;

sbit addi=P2^2;

sbit lcdrs=P1^5;

sbit lcdrw=P1^6;

sbit lcden=P1^7;

void delay(int n)

{

int i,j;

for(i=0;i

for(j=0;j<1000;j++);

}

void lcdwr_com(unsigned char com) //дָÁÊý

{

lcdrs=0;

delay(1);

lcd=com;

lcden=1;

lcden=0;

}

void lcdwr_data(unsigned char date) //дÊý¾Ý

{

lcdrs=1;

delay(1);

lcd=date;

lcden=1;

lcden=0;

}

void lcdinit()

//³õʼ»¯º¯Êý

{

lcdrw=0;

lcden=0;

lcdwr_com(0x38);

lcdwr_com(0x0c);

lcdwr_com(0x06);

lcdwr_com(0x01);

lcdwr_com(0x80);

}

int rd_ad(unsigned char *date,int SGL,int ODD) //¶ÁÈ¡adÊý¾Ý {

unsigned char data0=0,data1=0;

int i,j;

adcs=1;

adcs=0;

addi=1;

adclk=0;

adclk=1;

adclk=0; //µÚÒ»¸öÂö³å

addi=SGL; //ģʽѡÔñ

adclk=1;

adclk=0; //µÚ¶þ¸öÂö³å

addi=ODD;

adclk=1;

adclk=0; //µÚÈý¸öÂö³å

addo=1; //ÊÍ·ÅÊý¾Ý¶Ë¿Ú

for(i=0;i<8;i++){

data0<<=1;

adclk=1;

adclk=0;

j++;j++;j++;j++;j++;

j++;j++;j++;j++;j++; //ÑÓʱ5us

if(addo) data0|=0x01;

}

if(addo==1) data1|=0x80;

for(i=0;i<7;i++){

data1>>=1;

adclk=1;

adclk=0;

j++;j++;j++;j++;j++;

j++;j++;j++;j++;j++;

if(addo==1)data1|=0x80;

}

adcs=1;

addo=1;

adclk=1; //ÊÍ·Å×ÜÏß

if(data0==data1){

*date=data1; //ת»»³É¹¦±£´æÊý¾Ý

return 1;

}

else return 0;

}

void main()

{

unsigned char date;

double disp;

unsigned char BUF[6];

int pm; //·ûºÅλ

int i;

unsigned int angle; //½Ç¶È

sl=1;

og=1;

gs=1;

st=1;

lcdinit();

while(1){

if(rd_ad(&date,1,0)){

disp=date;

disp*=195;

if(disp>=16500){

pm=1; //Ϊ¸º

angle=5730*asin((disp-16500)/8000);//»¡¶Èת»»Îª½Ç¶È

if(angle%10>=5) angle=angle/10+1;

else angle/=10; //ËÄÉáÎåÈëËãһλСÊý

}

else {

pm=0; //ΪÕý

angle=5730*asin((16500-disp)/8000);//»¡¶Èת»»Îª½Ç¶È

if(angle%10>=5) angle=angle/10+1;

else angle/=10; //ËÄÉáÎåÈëËãһλСÊý

}

BUF[0]=angle/100%10+'0';

BUF[1]=angle/10%10+'0';

BUF[2]='.';

BUF[3]=angle%10+'0';

i=0;

while(BUF[i]=='0'&&BUF[i+1]!='.'){

BUF[i]='#';

i++;

}

lcdwr_com(0x80);

if(pm==1){

lcdwr_data('-');

delay(1);

}

for(i=0;i<4;i++)

if(BUF[i]!='#'){

lcdwr_data(BUF[i]);

delay(1);

}

lcdwr_data(0xdf);//ÏÔʾ¶È·ûºÅ

delay(1);

lcdwr_data(' ');//²¹Æ볤¶È²î

delay(1);

lcdwr_data(' ');

}

delay(300);

}

}

相关文档
最新文档