資源簡介
用ADXL345傳感器,在12864上實時顯示所測的角度,和加速度,程序里顯示的是y軸的傾角,如有需要,可以根據程序作修改顯示任意軸的角度。

代碼片段和文件信息
#include??
#include????????????????????//Keil?library??
#include?“lcd.h“
#define ??uchar?unsigned?char?
#define ??uint??unsigned?int
#define??CPU_F?((double)8000000)
#define??delay_us(x)?__delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define??delay_ms(x)?__delay_cycles((long)(CPU_F*(double)x/1000.0))
#define ??SlaveAddress???0xA6 ????//定義器件在IIC總線中的從地址根據ALT??ADDRESS地址引腳不同修改
??????????????????????????????//ALT??ADDRESS引腳接地時地址為0xA6,接電源時地址為0x3A
#define??????SDA_L P2OUT&=~BIT1//EEPROM?數據線低
#define??????SDA_H P2OUT|=BIT1//數據線高
#define??????SDA_OUT????P2DIR|=BIT1//設置數據線為輸出狀態
#define??????SDA_IN??????P2DIR&=~BIT1//設置數據線為輸入狀態
#define??????SDA_DATE?P2IN?&?BIT1//讀入?SDA?線的狀態
#define??????SCL_L P2OUT&=~BIT0//串行時鐘線低
#define??????SCL_H P2OUT|=BIT0//時鐘高
#define??????SCL_OUT????P2DIR|=BIT0//設置時鐘線為輸出狀態
#define?TRUE 1
#define?FALSE 0
uchar?devid;?
uchar?err;?
typedef?unsigned?char??BYTE;
typedef?unsigned?short?WORD;
BYTE?BUF[8];?????????????????????????//接收數據緩存區??????
char?as_Xjiasu[6]as_Yjiasu[6]as_Zjiasu[6]; //定義3軸靜態重力加速度值的ASCII碼值
char?as_Xangel[4]as_Yangel[4]as_Zangel[4]; //定義3軸角度值的ASCII碼值
char?data_xyz[3];
char?jiasu_xyz[3]angel_xyz[3]; ?//存放XYZ?軸的靜態重力加速度,角度值
/*** *
函數名稱:start?
功????????能:完成?IIC?的起始條件操作?
參????????數:無?
返回值????:無?
**/?
void?start()?
{?
SCL_OUT;?
SDA_OUT;?
SDA_H;?
SCL_H;?
delay_us(2);?
SDA_L;?
delay_us(2);
SCL_L;?
}?
/*** *
函數名稱:stop?
功????????能:完成?IIC?的終止條件操作?
參????????數:無?
返回值????:無?
**/?
void?stop(void)?
{?
SCL_OUT;?
SDA_OUT;?
SDA_L;?
SCL_H;?
delay_us(2);
SDA_H;?
delay_us(2);
SCL_L;?
}?
/*** *
函數名稱:mack?
功????????能:完成?IIC?的主機應答操作?
參????????數:無?
返回值????:無?
**/?
void?mack(void)?
{?
SDA_OUT;?
?SCL_OUT;?
SDA_L;?
SCL_H;?
delay_us(2);
SCL_L;?
SDA_H;
}
/*** *
函數名稱:mnack?
功????????能:完成?IIC?的主機無應答操作?
參????????數:無?
返回值????:無?
**/?
void?mnack(void)?
{?
SDA_OUT;?
SCL_OUT;?
SDA_H;?
delay_us(2);
SCL_H;?
delay_us(2);
SCL_L;?
SDA_L;
}
/*判斷應答或非應答子程序??*/?
void?cack()?
{?
SDA_IN;?
SCL_OUT;?
SCL_L;?
delay_us(2);
SCL_H;?
err=0;?
if(SDA_DATE)err=1;?
SCL_L;?
SDA_OUT;
}
/*** *
函數名稱:write1byte?
功????????能:向?IIC?總線發送一個字節的數據?
參????????數:wdata--發送的數據?
返回值????:無?
**/?
void?write1byte(uchar?byte1)?
{?
unsigned?char?i=8;?
SDA_OUT;?
SCL_OUT;?
while(i--)?
{?
delay_us(4);?
if(byte1?&?0x80)?
{SDA_H;}?
else?
{SDA_L;}?
delay_us(2);?
SCL_H;?
delay_us(2);
SCL_L;?
byte1<<=1;
}
}?
/*** *
函數名稱:read1byte?
功????????能:從?IIC?總線讀取一個字節?
參????????數:無?
返回值????:讀取的數據?
**/?
uchar?read1byte(void)?
{?
unsigned?char?i;?
unsigned?char?ddata=0;?
signed????char?temp;?
SCL_OUT;?
SDA_IN;?
for(i=0;i<8;i++)?
{?
ddata<<=1;?
delay_us(4);
SCL_H;?
temp=SDA_DATE;?
if(temp)?ddata++;?
delay_us(4);
SCL_L;?
}?
return?ddata;
}
//******單字節寫入*** *
void?Single_Write_ADXL345(uchar?REG_Addressuchar?REG_data)
{
start(); //起始信號
write1byte(SlaveAddress); //發送設備地址+寫信號
cack();
write1byte(REG_Address); //內部寄存器地址,請參考中文?pdf22
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-08-28?13:07??qingjiaochuangganqi\
?????目錄???????????0??2013-08-24?21:02??qingjiaochuangganqi\Debug\
?????目錄???????????0??2013-08-24?21:29??qingjiaochuangganqi\Debug\Exe\
?????文件???????33497??2013-08-28?13:07??qingjiaochuangganqi\Debug\Exe\qingjiaochuanganqi.d43
?????目錄???????????0??2013-08-28?14:35??qingjiaochuangganqi\Debug\List\
?????目錄???????????0??2013-08-28?13:07??qingjiaochuangganqi\Debug\Obj\
?????文件???????54649??2013-08-28?13:07??qingjiaochuangganqi\Debug\Obj\angel.r43
?????文件???????12840??2013-08-28?13:07??qingjiaochuangganqi\Debug\Obj\lcd.r43
?????文件???????11094??2013-08-28?13:07??qingjiaochuangganqi\Debug\Obj\main.r43
?????文件?????????273??2013-08-28?13:07??qingjiaochuangganqi\Debug\Obj\qingjiaochuanganqi.pbd
?????文件????????8480??2013-08-25?09:33??qingjiaochuangganqi\angel.c
?????文件?????????936??2013-08-28?13:07??qingjiaochuangganqi\angle.h
?????文件????????3363??2013-08-27?10:13??qingjiaochuangganqi\lcd.c
?????文件?????????292??2013-08-27?10:13??qingjiaochuangganqi\lcd.h
?????文件????????1144??2013-08-28?13:07??qingjiaochuangganqi\main.c
?????文件???????????0??2013-08-25?09:31??qingjiaochuangganqi\path.txt
?????文件????????4200??2013-08-28?13:07??qingjiaochuangganqi\qingjiaochuanganqi.dep
?????文件???????20123??2013-08-24?21:17??qingjiaochuangganqi\qingjiaochuanganqi.ewd
?????文件???????50458??2013-08-24?21:17??qingjiaochuangganqi\qingjiaochuanganqi.ewp
?????文件?????????172??2013-08-24?21:17??qingjiaochuangganqi\qingjiaochuangganqi.eww
?????目錄???????????0??2013-08-24?22:07??qingjiaochuangganqi\settings\
?????文件????????1299??2013-08-28?13:03??qingjiaochuangganqi\settings\qingjiaochuanganqi.cspy.bat
?????文件????????4995??2013-08-28?13:07??qingjiaochuangganqi\settings\qingjiaochuanganqi.dbgdt
?????文件????????1238??2013-08-28?13:07??qingjiaochuangganqi\settings\qingjiaochuanganqi.dni
?????文件????????3309??2013-08-28?13:07??qingjiaochuangganqi\settings\qingjiaochuangganqi.wsdt
評論
共有 條評論