版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实现功能: 通过加速度传感器的返回的数据, 由无线模块传给运动小车, 可以通过运动的手 势控制小车的运动。相关程序:#include #include #include #include/Keil library /Keil library #includesbitsbit#define SlaveAddressSCL=PUO;SDA= Pir;/IIC 时钟引脚定义/IIC 数据引脚定义0xA6/定义器件在IIC总线中的从地址,根据ALT ADDRESS地址引脚不同修改#define JudgeP_M 0x8000 #define Left_cmp 0x006e #define Right_
2、cmp 0x006e #define Go_cmp 0x006e #define Back_cmp 0x006e #define Go 0xaa #define Back 0x55 #define Left 0xa0 #define Right 0x0a #define Stop 0x00 Byte BUF8; Byte Sbuf8; Word Wbuf2; int dis_data; void delay(unsigned int k); void Init_ADXL345(void); void WriteDataLCM(Byte dataW);/ALT ADDRESS引脚接地时地址为 0
3、xA6,接电源时地/ 正负数判断/ 方向数据比较值,数值越小,越灵敏/ 小车实际动作控制字符,以实物为准/ 停止控制字符/ 接收数据缓存区/ 变量/ 初始化 ADXL345void WriteCommandLCM(Byte CMD,Byte Attribc); void DisplayOneChar(Byte X,Byte Y,Byte DData); void conversion(Word temp_data); void Byte 数据Single_Write_ADXL345(Byte REG_Address,Byte REG_data);Single_Read_ADXL345(Byte
4、 REG_Address);/ 单个写入数据/ 单个读取内部寄存器void 存器数据 /Multiple_Read_ADXL345();/ 连续的读取内部寄void Delay5us();void Delay5ms();void Delay20ms();void ADXL345_Start();void ADXL345_Stop();void ADXL345_SendACK(bit ack); bit ADXL345_RecvACK();void ADXL345_SendByte(Byte dat);Byte ADXL345_RecvByte();void ADXL345_ReadPage()
5、;void ADXL345_WritePage();void send();void uart();void Data_Convert();void Data_Process();void direction_judge();/* 主程序 * void main()void Delay20ms(); uart(); Init_ADXL345();while(1)/ 上电延时/ 初始化 ADXL345/ 循环Multiple_Read_ADXL345();Data_Convert();Data_Process(); direction_judge();Delay20ms();/ 连续读出数据,存
6、储在 BUF 中/ 延时/*/void Delay20ms()unsigned char i, j, k;/11.0592MHz_nop_();_nop_();i = 1;j = 216;k = 35;dodowhile (-k); while (-j); while (-i);/*/ /*延时 5 微秒(STC90C52RC12M)不同的工作环境 ,需要调整此函数,注意时钟过快时需要修改当改用1T的MCU时,请调整此延时函数*/ void Delay5us()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_no
7、p_();_nop_();_nop_();_nop_();/* 延时 5 毫秒 (STC90C52RC12M) 不同的工作环境 ,需要调整此函数 当改用1T的MCU时,请调整此延时函数*/ void Delay5ms()Word n = 560;while (n-);/*起始信号*/ void ADXL345_Start()SDA = 1;SCL = 1;Delay5us();SDA = 0;Delay5us();SCL = 0;/ 拉高数据线 / 拉高时钟线 / 延时/ 产生下降沿/ 延时/ 拉低时钟线/*停止信号*/ void ADXL345_Stop()SDA = 0;SCL = 1;D
8、elay5us();SDA = 1;Delay5us();/ 拉低数据线 / 拉高时钟线 / 延时/ 产生上升沿 / 延时/* 发送应答信号入口参数 :ack (0:ACK 1:NAK) */ void ADXL345_SendACK(bit ack) SDA = ack;SCL = 1;Delay5us();SCL = 0;Delay5us();/ 写应答信号 / 拉高时钟线 / 延时/ 拉低时钟线 / 延时/*接收应答信号*/bit ADXL345_RecvACK()SCL = 1;/ 拉高时钟线Delay5us();/ 延时CY = SDA;/ 读应答信号SCL = 0;/ 拉低时钟线D
9、elay5us();/ 延时return CY;/*向 IIC 总线发送一个字节数据*/ void ADXL345_SendByte(Byte dat) Byte i;for (i=0; i8; i+) dat = 1;SDA = CY;SCL = 1;/8位计数器/ 移出数据的最高位/ 送数据口/ 拉高时钟线Delay5us();SCL = 0;Delay5us(); ADXL345_RecvACK();/从lie总线接收一个字节数据Byte ADXL345_RecvByte()/ 延时/ 拉低时钟线/ 延时Byte i;Byte dat = 0;SDA = 1;for (i=0; i8;
10、i+) dat = 1; SeL = 1;Delay5us(); dat |= SDA;SeL = 0;Delay5us(); return dat;/ 使能内部上拉 ,准备读取数据 , /8 位计数器/ 拉高时钟线/ 延时/ 读数据/ 拉低时钟线/ 延时/* 单字节写入 * void Single_Write_ADXL345(Byte REG_Address,Byte REG_data) pdf22 页pdf22 页ADXL345_Start();ADXL345_SendByte(SlaveAddress);ADXL345_SendByte(REG_Address);ADXL345_Send
11、Byte(REG_data);ADXL345_Stop();/ 起始信号/ 发送设备地址 +写信号/ 内部寄存器地址,请参考中文/ 内部寄存器数据,请参考中文/ 发送停止信号/* 单字节读取 * Byte Single_Read_ADXL345(Byte REG_Address) Byte REG_data;ADXL345_Start();ADXL345_SendByte(SlaveAddress);ADXL345_SendByte(REG_Address); ADXL345_Start();ADXL345_SendByte(SlaveAddress+1); REG_data=ADXL345_
12、RecvByte();ADXL345_SendAeK(1); ADXL345_Stop();return REG_data;/ 起始信号/ 发送设备地址 +写信号/ 发送存储单元地址,从 / 起始信号/ 发送设备地址 +读信号/ 读出寄存器数据/ 停止信号0 开始II 连续读出 ADXL345 内部加速度数据,地址范围 void Multiple_read_ADXL345(void) Byte i;ADXL345_Start();ADXL345_SendByte(SlaveAddress);ADXL345_SendByte(0x32);ADXL345_Start(); ADXL345_Send
13、Byte(SlaveAddress+1);for (i=0; i6; i+)BUFi = ADXL345_RecvByte();if (i = 5)ADXL345_SendACK(1);else0x320x37/ 起始信号/ 发送设备地址 +写信号/ 发送存储单元地址,从 0x32 开始 / 起始信号/ 发送设备地址 +读信号/ 连续读取 6 个地址数据,存储中 BUF/BUF0 存储 0x32 地址中的数据/ 最后一个数据需要回 NOACK ADXL345_SendACK(0); ADXL345_Stop();Delay5ms();II初始化ADXL345,根据需要请参考 pdf进行修改*
14、void Init_ADXL345()Single_Write_ADXL345(0x31,0x0B);Single_Write_ADXL345(0x2C,0x08);Single_Write_ADXL345(0x2D,0x08);Single_Write_ADXL345(0x2E,0x80);Single_Write_ADXL345(0x1E,0x00);Single_Write_ADXL345(0x1F,0x00);Single_Write_ADXL345(0x20,0x05);void uart()SCON=0x50;TMOD=0x20;PCON=0x00;TH1=0xfd;TL1=0xf
15、d;IE=0x90;TR1=1;/ 回应 ACK/ 停止信号/ 测量范围 ,正负 16g, 13 位模式 / 速率设定为 12.5 参考 pdf13 页 / 选择电源模式 参考 pdf24 页II使能DATA_READY中断 /XIIY/Z偏移量 偏移量 偏移量根据测试传感器的状态写入 根据测试传感器的状态写入 根据测试传感器的状态写入pdf29 页pdf29 页pdf29 页void send(unsigned char ch)ES=0;SBUF=ch;while (TI=0);TI=0 ;ES=1;void Data_Convert()Wbuf0=BUF18|BUF0;Wbuf1=BUF3
16、8|BUF2;Wbuf2=BUF5Left_cmp) Sbuf0=Left;else/ 将两个八位数据合成为一个 16 位数据/X 轴数据处理 / 当结果为负数时Sbuf0=Stop;elseif(Wbuf0Right_cmp)Sbuf0=Right;elseSbuf0=Stop;/ 当结果为正数时/Y 轴数据处理/ 当结果为负数时/ 当结果为正数时i=Wbuf1&JudgeP_M;if(i=0x8000)Wbuf1=Wbuf1+1;Wbuf1=Wbuf1&0x7fff; if(Wbuf1Back_cmp) Sbuf1=Back;elseSbuf1=Stop;elseif(Wbuf1Go_cm
17、p)Sbuf1=Go;elseSbuf1=Stop;void direction_judge()if(Sbuf0=Left|Sbuf0=Right)send(Sbuf0);elsesend(Sbuf1);#ifndef _basic_H_ #define _basic_Htypedef unsigned char Byte;typedef unsigned int Word;typedef signed int sWord;#define exchange(m,n) m=m+n;n=m-n;m=m-n; / 变量交换#define EA_on#define EA_offEA=1EA=0#define ET2_onET2=1/ 总中断/ 定时器 2#define ET2_off ET2=0#define ES_on#define ES_offES=1ES=0#define ET1_onET1=1#define ET1_off ET1=0#define EX1_on EX1=1#define EX1_off EX1=0#define ET0_on ET0=1#define ET0_off E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025《登岳阳楼》课件
- 注册登记与定期报检制度培训课件
- 2026年新能源并网工程合同
- 护理安全管理与监控措施培训
- 食品安全综合检查制度培训课件
- 2026年广东省梅州市单招职业适应性考试题库及完整答案详解1套
- 2026年广东农工商职业技术学院单招综合素质考试题库附答案详解(达标题)
- 2026年广东舞蹈戏剧职业学院单招职业适应性考试题库及一套完整答案详解
- 2025《念奴娇 过洞庭》艺术特色赏析课件
- 变配电室值班制度培训
- 家政保洁服务标准化手册
- 2026公务员考试题及答案 行测 真题
- 《跟单信用证统一惯例》UCP600中英文对照版
- 材料设备验收移交单
- 输煤栈桥彩钢板更换施工方案
- PCI术后常见并发症及处理
- GB/T 35163-2017载重汽车轮胎湿路面相对抓着性能试验方法
- 【公开课】排列、排列数+课件高二下学期数学人教A版(2019)选择性必修第三册
- 溢油应急处置培训讲义
- 袁晓萍:认识圆柱
- 胜任特征辞典
评论
0/150
提交评论