




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号:审定成绩:重庆邮电大学物联网工程课程设计(报告)设计题目:行走过程中的加速度测试节点设计学院名称:自动化学院学生姓名:××专业:物联网工程班级:××学号:××指导教师:××填表时间:2015年11月重庆邮电大学教务处制一、题目:行走过程中的加速度测试节点设计二、设计任务:运用所学传感器技术、计算机网络和物联网工程等方面的知识,设计基于三轴加速度传感器的测试节点,获取行走过程中的手臂或小腿加速度,完成数字量输入或模拟量输入的硬件设计和低功耗无线通信协议软件设计等工作。具体任务如下:三、设计要求:1.画出加速度测试节点的结构图。2.选择低功耗无线通信芯片和三轴加速度传感器,设计硬件电路。3.开发完成ZigBee协议,完成与上位机的通信。4.画出程序流程图并编写调试代码。四、参考资料:1.李朝青.《单片机原理及接口技术》(简明修订版).北京航空航天大学出版社,1998年.2.胡向东.《传感技术》.重庆大学出版社,2006年第1版.3.谭浩强.《C语言程序设计》.北京:清华大学出版社,2002年.4.谢希仁.《计算机网络》.北京:电子工业出版社,2003年.附录代码#include<REG51.H> #include<math.h>//Keillibrary#include<stdio.h>//Keillibrary #include<INTRINS.H>#defineucharunsignedchar#defineuintunsignedint #defineDataPortP2//LCD1602数据端口sbit SCL=P0^4;//IIC时钟引脚定义sbitSDA=P0^3;//IIC数据引脚定义#define SlaveAddress0xA6 //定义器件在IIC总线中的从地址,根据ALTADDRESS地址引脚不同修改//ALTADDRESS引脚接地时地址为0xA6,接电源时地址为0x3AtypedefunsignedcharBYTE;typedefunsignedshortWORD;BYTEBUF[8];//接收数据缓存区 ucharge,shi,bai,qian,wan;//显示变量intdis_data;//变量voiddelay(unsignedintk);voidInit_ADXL345(void);//初始化ADXL345voidWriteDataLCM(uchardataW);voidWriteCommandLCM(ucharCMD,ucharAttribc);voidDisplayOneChar(ucharX,ucharY,ucharDData);voidconversion(uinttemp_data);voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data);//单个写入数据ucharSingle_Read_ADXL345(ucharREG_Address);//单个读取内部寄存器数据voidMultiple_Read_ADXL345();//连续的读取内部寄存器数据//voidDelay5us();voidDelay5ms();voidADXL345_Start();voidADXL345_Stop();voidADXL345_SendACK(bitack);bitADXL345_RecvACK();voidADXL345_SendByte(BYTEdat);BYTEADXL345_RecvByte();voidADXL345_ReadPage();voidADXL345_WritePage();//*********************************************************unsignedcharch;bitread_flag=0;voidUart_Init(void){SCON=0x50;//UART为模式1,8位数据,允许接收TMOD|=0x20;//定时器1为模式2,8位自动重装PCON|=0x80;//SMOD=1;TH1=0xFD;//Baud:19200fosc="11".0592MHzIE|=0x90;//EnableSerialInterruptTR1=1;//timer1runTI=1;}//向串口发送一个字符voidsend_char_com(ucharByte){SBUF= Byte; while(TI==0);TI=0;}//串口接收中断函数voidUart_Int(void)interrupt4{ if(RI){RI=0;ch=SBUF;read_flag=1;//就置位取数标志}}voidconversion(uinttemp_data){wan=temp_data/10000+0x30;temp_data=temp_data%10000;//取余运算 qian=temp_data/1000+0x30;temp_data=temp_data%1000;//取余运算bai=temp_data/100+0x30;temp_data=temp_data%100;//取余运算shi=temp_data/10+0x30;temp_data=temp_data%10;//取余运算ge=temp_data+0x30; }/*******************************/voiddelay(unsignedintk) { unsignedinti,j; for(i=0;i<k;i++){ for(j=0;j<121;j++) {;}} }/**************************************延时5微秒(STC90C52RC@12M)不同的工作环境,需要调整此函数,注意时钟过快时需要修改当改用1T的MCU时,请调整此延时函数**************************************/voidDelay5us(){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();}/**************************************延时5毫秒(STC90C52RC@12M)不同的工作环境,需要调整此函数当改用1T的MCU时,请调整此延时函数**************************************/voidDelay5ms(){WORDn=560;while(n--);}/*********************起始信号**********************/voidADXL345_Start(){SDA=1;//拉高数据线SCL=1;//拉高时钟线Delay5us();//延时SDA=0;//产生下降沿Delay5us();//延时SCL=0;//拉低时钟线}/*********************停止信号**************************/voidADXL345_Stop(){SDA=0;//拉低数据线SCL=1;//拉高时钟线Delay5us();//延时SDA=1;//产生上升沿Delay5us();//延时}/******************发送应答信号入口,参数:ack(0:ACK1:NAK)************/voidADXL345_SendACK(bitack){SDA=ack;//写应答信号SCL=1;//拉高时钟线Delay5us();//延时SCL=0;//拉低时钟线Delay5us();//延时}/********************接收应答信号*****************/bitADXL345_RecvACK(){SCL=1;//拉高时钟线Delay5us();//延时CY=SDA;//读应答信号SCL=0;//拉低时钟线Delay5us();//延时returnCY;}/*********向IIC总线发送一个字节数据**************/voidADXL345_SendByte(BYTEdat){BYTEi;for(i=0;i<8;i++)//8位计数器{dat<<=1;//移出数据的最高位SDA=CY;//送数据口SCL=1;//拉高时钟线Delay5us();//延时SCL=0;//拉低时钟线Delay5us();//延时}ADXL345_RecvACK();}/**************从IIC总线接收一个字节数据*********************/BYTEADXL345_RecvByte(){BYTEi;BYTEdat=0;SDA=1;//使能内部上拉,准备读取数据,for(i=0;i<8;i++)//8位计数器{dat<<=1;SCL=1;//拉高时钟线Delay5us();//延时dat|=SDA;//读数据SCL=0;//拉低时钟线Delay5us();//延时}returndat;}//******单字节写入*******************************************voidSingle_Write_ADXL345(ucharREG_Address,ucharREG_data){ADXL345_Start();//起始信号ADXL345_SendByte(SlaveAddress);//发送设备地址+写信号ADXL345_SendByte(REG_Address);//内部寄存器地址,请参考中文pdf22页ADXL345_SendByte(REG_data);//内部寄存器数据,请参考中文pdf22页ADXL345_Stop();//发送停止信号}//********单字节读取*****************************************ucharSingle_Read_ADXL345(ucharREG_Address){ucharREG_data;ADXL345_Start();//起始信号ADXL345_SendByte(SlaveAddress);//发送设备地址+写信号ADXL345_SendByte(REG_Address);//发送存储单元地址,从0开始 ADXL345_Start();//起始信号ADXL345_SendByte(SlaveAddress+1);//发送设备地址+读信号REG_data=ADXL345_RecvByte();//读出寄存器数据 ADXL345_SendACK(1); ADXL345_Stop();//停止信号returnREG_data;}//连续读出ADXL345内部加速度数据,地址范围0x32~0x37//*********************************************************voidMultiple_read_ADXL345(void){uchari;ADXL345_Start();//起始信号ADXL345_SendByte(SlaveAddress);//发送设备地址+写信号ADXL345_SendByte(0x32);//发送存储单元地址,从0x32开始ADXL345_Start();//起始信号ADXL345_SendByte(SlaveAddress+1);//发送设备地址+读信号for(i=0;i<6;i++)//连续读取6个地址数据,存储中BUF{BUF[i]=ADXL345_RecvByte();//BUF[0]存储0x32地址中的数据if(i==5){ADXL345_SendACK(1);//最后一个数据需要回NOACK}else{ADXL345_SendACK(0);//回应ACK}}ADXL345_Stop();//停止信号Delay5ms();}//*****************************************************************//初始化ADXL345voidInit_ADXL345(){Single_Write_ADXL345(0x31,0x0B);//测量范围,正负16g,13位模式Single_Write_ADXL345(0x2C,0x08);//速率设定为12.5Single_Write_ADXL345(0x2D,0x08);//选择电源模式Single_Write_ADXL345(0x2E,0x80);//使能DATA_READY中断Single_Write_ADXL345(0x1E,0x00);//X偏移量根据测试传感器的状态写入Single_Write_ADXL345(0x1F,0x00);//Y偏移量根据测试传感器的状态写入Single_Write_ADXL345(0x20,0x05);//Z偏移量根据测试传感器的状态写入}//***********************************************************************//显示x轴voiddisplay_x(){floattemp;Uart_Init();send_char_com('X');send_char_com(':');dis_data=(BUF[1]<<8)+BUF[0];//合成数据 if(dis_data<0){ dis_data=-dis_data; send_char_com('-');//显示正负符号位 } elsesend_char_com('');//显示空格temp=(float)dis_data*3.9;//计算数据和显示,conversion(temp);//转换出显示需要的数据send_char_com(qian); send_char_com('.');send_char_com(bai);send_char_com(shi); send_char_com('g'); send_char_com('');}//***********************************************************************//显示y轴voiddisplay_y(){floattemp;Uart_Init(); send_char_com('Y');send_char_com(':');dis_data=(BUF[3]<<8)+BUF[2];//合成数据 if(dis_data<0){ dis_data=-dis_data; send_char_com('-');//显示正负符号位 } elsesend_char_com('');//显示空格temp=(float)dis_data*3.9;//计算数据和显示,conversion(temp);//转换出显示需要的数据send_char_com(qian); send_char_com('.');send_char_com(bai);send_char_com(shi); send_char_com('g'); send_char_com('');}//*******************************************
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国环保电子行业发展分析及投资风险预警与发展策略研究报告
- 2025-2030中国灌封胶行业深度调研及投资前景预测研究报告
- 2025年中国调味鲐鱼块数据监测报告
- 2025-2030中国改装车行业深度发展研究与“”企业投资战略规划报告
- 2025-2030中国手写板行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国平跟靴行业市场全景调研及投资价值评估咨询报告
- 2025-2030中国弹簧带钢行业发展趋势及发展前景研究报告
- 2025-2030中国同伴动物保健行业市场发展趋势与前景展望战略研究报告
- 绥芬河期中考试卷及答案
- 支农面试真题及答案
- 2025年吉林省民航机场集团长白山机场公司招聘笔试参考题库附带答案详解
- 小学生涯课件
- 目光礼仪培训
- 西藏拉萨中学2024-2025学年高三第二学期英语试题4月月考试卷含解析
- 设备验收方案
- 高中家长会 高三高考冲刺家长会课件
- 2025-2030中国触觉马达行业市场发展趋势与前景展望战略研究报告
- 修订版中小学生行为守则(2024版)
- (一模)临沂市2025届高三高考第一次模拟考试地理试卷
- 青岛 地块西海岸新区项目投标设计方案
- 【高考真题】河北省2024年普通高中物理学业水平选择性考试试卷(含答案)
评论
0/150
提交评论