資源簡介
基于adxl345加速度傳感器的計步器,并實現gps定位,已經實測通過

代碼片段和文件信息
#include?“adxl345.h“
#include?“oled.h“
sbit ??SCL=P1^0;??????//IIC時鐘引腳定義?????????????????????????????????????????
sbit? ??SDA=P1^1;??????//IIC數據引腳定義
?/*?***********清零按鍵設置?********/
sbit?key1?=?P1^6;?
sbit?key2?=?P1^7;
sbit?key3?=?P1^3;
#define SlaveAddress???0xA6 ??/*定義器件在IIC總線中的從地址根據ALT??ADDRESS地址引腳不同修改ALT??ADDRESS引腳接地時地址為0xA6,接電源時地址為0x3A*/
long?bushuzong;??//步數
uchar?BUF[8];?????????????????????????//接收數據緩存區??????
uchar?geshibaiqianwan;???????????//顯示變量
int??dis_data;???????????????????????//變量
int?c;
int?s;
int?h=30.5;
void??Multiple_Read_ADXL345();????????//連續的讀取內部寄存器數據
#define?RdCommand?0x01??????????//定義ISP的操作命令
#define?PrgCommand?0x02
#define?EraseCommand?0x03?
#define?Error?1
#define?Ok?0
#define?WaitTime?0x01??????//定義CPU的等待時間
sfr?ISP_DATA=0xe2;?????????//寄存器申明
sfr?ISP_ADDRH=0xe3;
sfr?ISP_ADDRL=0xe4;
sfr?ISP_CMD=0xe5;
sfr?ISP_TRIG=0xe6;
sfr?ISP_CONTR=0xe7;
uchar?a_a;
/**************打開?ISPIAP?功能?*********?*/
void?ISP_IAP_enable(void)
{
?EA?=?0;??????????????????//關中斷
?ISP_CONTR?=?ISP_CONTR?&?0x18;????????//?00011000?
?ISP_CONTR?=?ISP_CONTR?|?WaitTime;????//?寫入硬件延時?
?ISP_CONTR?=?ISP_CONTR?|?0x80;?????????//?ISPEN=1?
}
/**************?關閉?ISPIAP?功能?***************?*/
void?ISP_IAP_disable(void)
{
?ISP_CONTR?=?ISP_CONTR?&?0x7f;???????????//?ISPEN?=?0
?ISP_TRIG?=?0x00;
?EA???=???1;???????????//?開中斷
}
/*****************公用的觸發代碼*********?*/
void?ISPgoon(void)
{
?ISP_IAP_enable();????????//打開?ISPIAP?功能?
?ISP_TRIG?=?0x46;?????//觸發ISP_IAP命令字節1
?ISP_TRIG?=?0xb9;????????????//觸發ISP_IAP命令字節2?
?_nop_();
}
/**********字節讀?***********?*/
unsigned?char?byte_read(unsigned?int?byte_addr)
{
EA?=?0;
?ISP_ADDRH?=?(unsigned?char)(byte_addr?>>?8);????//?地址賦值?
?ISP_ADDRL?=?(unsigned?char)(byte_addr?&?0x00ff);
?ISP_CMD???=?ISP_CMD?&?0xf8;??????//清除低3位??
?ISP_CMD???=?ISP_CMD?|?RdCommand;????//?寫入讀命令?
?ISPgoon();???????????//觸發執行??
?ISP_IAP_disable();???????//?關閉ISPIAP功能?
?EA??=?1;
?return?(ISP_DATA);???????//?返回讀到的數據?
}
/************?扇區擦除***********?*/
void?SectorErase(unsigned?int?sector_addr)
{
?unsigned?int?iSectorAddr;
?iSectorAddr?=?(sector_addr?&?0xfe00);????//?取扇區地址?
?ISP_ADDRH?=?(unsigned?char)(iSectorAddr?>>?8);
?ISP_ADDRL?=?0x00;
?ISP_CMD?=?ISP_CMD?&?0xf8;??????//清空低3位??
?ISP_CMD?=?ISP_CMD?|?EraseCommand;????//擦除命令3?
?ISPgoon();????????//觸發執行??
?ISP_IAP_disable();?????//關閉ISPIAP功能
}
/**********?字節寫?*******?*/
void?byte_write(unsigned?int?byte_addr?unsigned?char?original_data)
{
?EA??=?0;
// ?SectorErase(byte_addr);
?ISP_ADDRH?=?(unsigned?char)(byte_addr?>>?8);??//?取地址?
?ISP_ADDRL?=?(unsigned?char)(byte_addr?&?0x00ff);
?ISP_CMD??=?ISP_CMD?&?0xf8;????//?清低3位?
?ISP_CMD??=?ISP_CMD?|?PrgCommand;??//寫命令2?
?ISP_DATA?=?original_data;???//寫入數據準備
?ISPgoon();???????//觸發執行?
?ISP_IAP_disable();?????//關閉IAP功能?
?EA?=1;
}
/**********把數據保存到單片機內部eeprom中**************/
void?write_eeprom() //保存數據
{
SectorErase(0x2000);
byte_write(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\
?????文件???????12387??2018-03-25?21:49??adxl345計步器oled顯示?-?gps\adxl345.c
?????文件?????????233??2018-03-25?21:47??adxl345計步器oled顯示?-?gps\adxl345.h
?????文件???????20334??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\adxl345.LST
?????文件???????27760??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\adxl345.OBJ
?????文件????????1479??2018-03-25?22:05??adxl345計步器oled顯示?-?gps\gps.c
?????文件?????????299??2018-03-25?21:22??adxl345計步器oled顯示?-?gps\gps.h
?????文件????????3503??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\gps.LST
?????文件????????5324??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\gps.OBJ
?????文件?????????240??2018-03-25?22:35??adxl345計步器oled顯示?-?gps\main.c
?????文件????????1297??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\main.LST
?????文件????????3203??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\main.OBJ
?????文件????????7590??2018-03-25?14:03??adxl345計步器oled顯示?-?gps\oled.c
?????文件?????????578??2018-03-24?15:09??adxl345計步器oled顯示?-?gps\oled.h
?????文件???????12049??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\oled.LST
?????文件???????11721??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\oled.OBJ
?????文件???????42299??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\template
?????文件????????1098??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\template.build_log.htm
?????文件???????13313??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\template.hex
?????文件??????????85??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\template.lnp
?????文件???????48557??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\template.M51
?????文件?????????192??2017-06-08?22:20??adxl345計步器oled顯示?-?gps\template.plg
?????文件???????87968??2018-04-12?14:05??adxl345計步器oled顯示?-?gps\template.uvgui.Administrator
?????文件???????70964??2016-10-11?08:55??adxl345計步器oled顯示?-?gps\template.uvgui_Administrator.bak
?????文件????????6181??2018-03-25?18:06??adxl345計步器oled顯示?-?gps\template.uvopt
?????文件???????14334??2018-03-25?18:06??adxl345計步器oled顯示?-?gps\template.uvproj
?????文件???????56837??2017-06-08?22:02??adxl345計步器oled顯示?-?gps\template_uvopt.bak
?????文件???????13769??2016-10-11?08:55??adxl345計步器oled顯示?-?gps\template_uvproj.bak
評論
共有 條評論