




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号:审定成绩:重庆邮电大学物联网工程课程设计(报告)设计题目:行走过程中的加速度测试节点设计学院名称:自动化学院学生姓名:××专业:物联网工程班级:××学号:××指导教师:××填表时间: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年中国易分散级氧化铁数据监测报告
- 2025年中国无线滚球鼠标市场调查研究报告
- 2025年中国新型木制防火门市场调查研究报告
- 2025年中国数字测振仪数据监测研究报告
- 2025至2031年中国网盘行业投资前景及策略咨询研究报告
- 2025至2031年中国红外线防水型彩色摄像机行业投资前景及策略咨询研究报告
- 肇庆市实验中学高中历史三:第课孙中山的民主追求高效课堂教学设计
- 2025至2031年中国维氏显微硬度计行业投资前景及策略咨询研究报告
- 新疆生产建设兵团二中学2025年初三下学期月考(一)英语试题试卷含答案
- 新疆维吾尔自治区乌鲁木齐地区2025届高三下学期第一次高考模拟历史试题含解析
- 2025年吉林省民航机场集团长白山机场公司招聘笔试参考题库附带答案详解
- 小学生涯课件
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- 读书分享读书交流会《你当像鸟飞往你的山》课件
- 危险化学品生产经营企业安全知识培训
- 混凝土构件之梁配筋计算表格(自动版)
- DDI辅导员工迈向成功-辅导领导力系列
- 自制饮品操作流程
- TSG Z7002-2022 特种设备检测机构核准规则
- 茶叶中微量元素的鉴定与定量测定
- T∕ACSC 01-2022 辅助生殖医学中心建设标准(高清最新版)
评论
0/150
提交评论