版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学课程设计说明书2013/2014学年第 2 学期学院:专业:学生姓名:学号:课程设计题目:三轴加速度传感器设计起迄日期:课程设计地点:指导教师:专业负责人:下达任务书日期:2014年6月13日1 课 程 设 计 目的12 课 程 设 计 内 容 和 要求12、1设计要求12.2、设计要求13 、 设 计 方 案 及 实 现 情况3.1 、设计思路13.2 工 作 原 理 及 框图13.3 . 主 要 电 路 模 块 的 使用23.4 、实 物 结 果图64 课 程 设 计 总结75 参考文献6、附录8附录1原理图8附录2 PCB版图9附录3 C语言代码103/405/401、课程设计目
2、的综合应用模电、数电、微机原理、单片机原理、传感器原理 及应用和专业知识,通过理论与实践相结合,掌握所学知识的综 合应用方法,培养和提高解决本专业实际工程问题的能力。2、课程设计内容和要求2、1设计要求:1 .文献检索和综述;2 .掌握三轴加速度传感器的工作原理;3 .画出传感器装配结构图;用protel绘制原理图;4 .所写说明书格式规范,内容完整;5 .参加答辩。2.2、设计内容:1 .设计传感器整体结构;4 .以ADXL345三轴加速度计为模型,设计测量电路,给出电 路元件参数;5 .基于单片机的采集与显示电路方案设计;6,用ADXL345搭建测试系统,仿真实验处理结果。3、设计方案及实
3、现情况3.1、 设计思路根据题目要求,首先要对传感器整体结构进行设计,以满足 ADXL345三轴加速度计运行的环境;其次,选择合适的通信方式 使单片机与传感器能正常通信传输数据;最后,对单片机外围结构进行设计,使单片机能正常工作,编写合适的C语言程序,使 传感器传输的数据能够在外围器件上显示出来。3.2、 工作原理及框图(1)工作原理ADXL345三轴加速度计能够将三个方向的加速度g储存在 其内部寄存其中,所以,通过适当控制指令以及与单片机Ke通 信,就可将其传输到单片机中,然后对其进行编译。显示模块这 里使用的是LCD1602,编译后的数据传送到与LCD1602相连的I/O 口,通过读写指令
4、就可显示出数据。每当ADXL345三轴加速度计 记录数据发生变化时,就更新LCD1602中显示的数据,这样就达 到了基于单片机的采集与显示电路的设计。(2)系统框图ADXL34匚二 单片机 匚二单片机1602显图1系统框图3.3、 主要电路模块的使用(1) ADXL345电源模块由于ADXL345使用的是3. 3V供电电源,所以要对5V输入电 源就行转化,这里使用的是RT9161电源芯片,比1117更低的 压降,更快的负载相应速度,非常适合高噪声电源环境。如图2,当输入电压为5V时,输出为3. 3V,电路中所接的电容起滤波的 作用。GND图2 RT9161电源模块(2) ADXL345加速度计
5、模块ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13) 位,测量范围达±16g。数字输出数据为16位二进制补码格式, 可通过SPI或Ke数字接口访问。它可以在倾斜测量应用中测量 静态重力加速度,还可以测量运动或冲击导致的动态加速度。其 高分辨率,能够测量不到1.0。的倾斜角变化。SCUSCLKVDDI/OGNDRESERVEDGNDGNDSDA/SDI/SDIOSDO/ALT ADDRESSRESERVEDNCINT2INcs图3 ADXL345引脚图表1引脚功能表引脚编号引脚名称描述1Vdolo数字接口电源电压。2GND该引脚必须接地。3RESERVED保留。该引脚
6、必须连接到VS或保持断开。4GND该引脚必须接地。5GND该引脚必须接地。6Vs电源电压.7CS片选。8INTI中断1输出。9INT2中断2输出。10NC内部不连接。11RESERVED保留。该引脚必须接地或保持断开。12SDO/ALT ADDRESS串行数据输出(SPI4线)/备用K地址选择(PC)13SDA/SDI/SDIO串行数据(PC)/串行数据输入(SPI 4线)/串行数据输入和输出(SPI 3线)。14SCL/SCLK申行通信时钟。5cL为I2C时钟,SCLK为5Pl时钟。在本实验中,如图4,使用的是SPI通信,采用3线连接, 片选接地,SDIO和SCLK与单片机相连进行通信。AD
7、XL345ADXL345processorcsOOdqutSDIO OO D IN/OUTsdoQSCLK OO DOUT图4 SPI通信接口表2存储数据所在寄存器地址地址名称类型复位值描述十六进制十进制0x3250DATAX0R00000000X轴数据00x3351DATAX1R00000000X轴数据10x3452DATAY0R00000000Y轴数据00x3553DATAY1R00000000Y轴数据10x3654DATAZ0R00000000z轴数据00x3755DATAZ1R00000000Z轴数据1如图5为本实验中ADXL345加速度计的原理图示意。VCC3.3VR3VCC3.3V
8、U2ADXL345Res34.7KR4Res34.7KGD22456VDDGND RESERVEDGND GNDVsSDA/SDI/SDIO on SDO RESERVEDNC INT21NT113J2TTJO巨SDARIRes34.7KGNDR2Res34.7K图5 ADXL345原理图(3)单片机模块在本实验中,使用到单片机的功能很少,因此,单片机工作 在最小模块下。5/40SW-ADPTGM)图6晶振模块7复位模块*CL !SDA 219P1.0 Pl.l Pl.2 Pl.3 Pl.4 Pl.5 PI.6 Pl.7(ADO)PO.O (ADl)PO.l (AD2)P0.2 (AD3)P0
9、.3 (AD4)P0.4 (AD5)P0.5 (AD6)P0.6 (AD7)P0.7P3.3(INT1)P3.2(lNT0)P3.5(T1)P3.4(T0)EA/VPP(A8)P2.0(A9)P2.1(A1O)P2.2(A11)P2.3 (A12)P2.4 (A13)P2.5 (A14)P2.6 (A15)P2.7RSTXTAL1XTAL2P3.7(RD)P3.6(WR)18XIX2RES 917vccGND (RXD)P3.0 (TXD)P3J ALE/PROG PSEN4020t-A|VCC5.0|-GNDC51ICap Semie30PFa II.05926MHZ一 XTALC6Cap
10、Semi 30PFA189C51图8单片机引脚连接图(4) LCD1602显示模块点阵图形式液晶由MXN个显示单元组成,假设LCD显示屏有64行,每行有128歹IJ,每8列对应1字节的8位,即每行由16字节,共16X8=128个点组成,屏上64X16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位6/40置的亮暗对应。例如屏的第一行的亮暗由RAM区的000HOOFH 的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显 示一条短亮线,长度为8个点;当(3FFH)二FFH时,则屏幕的 右下角显示一条短亮线;当(000H)=FFH, (001H)=00H, (
11、002H) 二OOH, (OOEH) =00H, (OOFH)二00H时,则在屏幕的顶部显 示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基 本原理。表3 LCD1602管脚功能编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDO电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读/写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7DOData I/O15BLA背光源正极8D1Data I/O16BLK背光源负极在此处,LCD1602的8个
12、数据引脚需要上拉电阻来限制电流, 同时3引脚可以接一个电位器用来调节显示屏背光亮度。7/403.4、 实物结果图由于在众多仿真软件中,没有ADXL345加速度计的模型,同时为了体现出ADXL345与MCU通信的过程,所以并不能用串行通 信软件代替,所以此处通过,实物演示来例证。图10实物结果图4、课程设计总结经过为期三周的课程设计,我对C语言有了更加深刻的认识。 在编写程序的时候,我才发现能看懂程序和能自己写程序是两个 完全不同的概念,自己一开始写程序时,即便是一个很简单的功 能模块,在编译时也可能产生很多错误,在不断的改错过程中, 自己对C语言的语法结构有了深刻的理解,对编译过程中常见的 8
13、/40错误也有了全面的认识。通过这三周的课程设计,我在熟悉了 EDA-V实验箱的操作同时,也学到了很多在学习课本知识时所体 会不到的东西。最初拿到课程设计任务书时,感觉每个模块都在做实验时用 过,心想只要把各个模块组合到一起就可以实现系统功能了,但 结果其实不然;同时,通过实际动手连接元件,更加加深了我对 ADXL345的深刻认识。完成此次设计后,我不仅能对PROTEUS仿真软件熟练操作, 能达到学以致用,同时还掌握了 ADXL345和LCD1602的工作原理。 经过这一过程,我发现平常的学习在注重理论知识的掌握同时, 要加强实验环节,只有通过不断地实践,我们才能把知识掌握的 更牢固,理解的更
14、透彻。5、参考文献1Creed Huddleston著,张鼎 译,智能传感器设计.人民邮 电出版社,20092松井邦彦著,传感器实用电路设计与制作.北京:科学出 版社,20053范茂军主编,互联网与传感器技术.北京:机械工业出版 社,20124刘爱华、满宝元主编,传感器原理与应用技术.北京:人民 邮电出版社,20105张宪主编.传感器与测控电路.北京:化学工业出版社,9/402011附录1、原理图45 / 40SW-ADFT'6 V«XCg,g 4.7UF-<2<DVC£J)V<5KD GXDV»VDD $DA$D15D:OGOT - 一
15、0 器SERVID X££S£RVH>NC.IKT2Cmivcc叶pro(AD:村 0pi.ifADIJPO.lPU2尔二pu(AD3JP03Pl.4伍DW.4P】J(AD5JPO.S 伍D5PC.6P16Pl.7ADB0.7P3 3巨虫(AS)P2 0 fA95?2.1P3OT5:(A10JM.2P3.5GD,:AH 打.3P3 4(TC)(A12JP24<A13)P2.5五VP?(A14p2 5 川5段7KT All XIAL2VCCGNDLSIIXXDPJQP3.;西P3%F室).强 ?SENR2Rts3 4F附图1 ADXL345与单片机原理图
16、2、PCB版图friito-附图2 PCB版图3、C语言代码Sinclude <REG51. H>Sinclude <math. h> /Keil librarySinclude <stdio. h> /Keil library#include <INTRINS. H>#defineuchar unsigned char#defineuint unsigned int#defineDataPort PO/LCD 1602 数据端口sbitSCL=PrO;/IIC时钟引脚定义sbitSDA=Pri;/IIC数据引脚定义sbitLCM_RS=P20;
17、/LCD 1602 命令端口sbitLCM_RW=P21;/LCD 1602 命令端 口sbitLCM_EN=P2-2;/LCD 1602 命令端口#define SlaveAddress 0xA6 定义器件在 HC总线中的 从地址,根据ALT ADDRESS地址引脚不同修改/ALT ADDRESS引脚接地时地址为0xA6,接电源时地址为0x3A typedef unsigned char BYTE;BYTE BUF8;typedef unsigned short WORD;接收数据缓存区显示变量变量初始化lcdl602uchar ge, shi, bai, qian, wan;int dis
18、_data;void delay(unsigned int k);void InitLcdO ;void Init_ADXL345 (void);初始化 ADXL345void WriteDataLCM(uchar dataW);void WriteCommandLCM (uchar CNID, uchar Attribc);void DisplayOneChar(uchar X, uchar Y, uchar DData);void conversion(uint temp_data);void Single_Write_ADXL345(uchar REG_Address, ucharREG
19、_data);单个写入数据uchar Single_Read_ADXL345(uchar REG_Address);单个读取内部寄存器数据voidMultiple_Read_ADXL345();连续的读取内部寄存器数据/void Delay5us ();void Delay5ms ();void ADXL345_Start();void ADXL345_Stop();void ADXL345_SendACK(bit ack);bit ADXL345_RecvACK();void ADXL345_SendByte(BYTE dat);BYTE ADXL345_RecvByte();void AD
20、XL345_ReadPage();void ADXL345_WritePage();/*void conversion(uint temp_data)(wan=temp_data/10000+0x30 ;temp_data=temp_data%10000; 取余运算qian=temp_data/1000+0x30 ;t emp_da t a=t emp_da t a% 1000;取余运算bai=temp_data/100+0x30;t emp_da t a=t emp_da t a% 100;取余运算shi=temp_data/10+0x30;t emp_da t a=t emp_da t a
21、% 10;取余运算ge=temp_data+0x30;/ / /void delay(unsigned int k) unsigned int i, j;for (i=0;i<k;i+) for(j=0;j<121;j+);/ / /void WaitForEnable(void)void WaitForEnable(void)DataPort=Oxff;LCM_RS=0;LCM_RW=l;_nop_();LCM EN=1; nop () ; nop () ; nop () ; nop ();while (DataPort&0x80);LCM_EN=0; _nop_ ()
22、; _nop_ ();/ / f/void WriteCommandLCM(uchar CNffi,uchar Attribc) if (Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD; nop () ; nop () ; nop () ; nop ();LCM EN=1; nop () ; nop () ; nop () ; nop () ;LCM EN=0;/ / f/void WriteDataLCM(uchar dataW)WaitForEnableO ;LCM_RS=1; LCM_RW=0 ;_nop_0
23、;DataPort=dataW; _nop_ ();LCM EN=1;nop_() ; _nop_ () ;_nop_() ;_nop_();LCM_EN=0;/vL vL vL vL/ /void InitLcdOWriteCommandLCM(0x38,1);WriteCommandLCM(0x08, 1);Wr i teCommandLCM(0x01, 1);WriteCommandLCM(0x06, 1);WriteCommandLCM(0x0c, 1);/vL vL vL vLvL vL vL vL/f void DisplayOneChar (uchar X,uchar Y, uc
24、har DData)Y&=1;X&二15;if (Y)X|=0x40;X|=0x80;Wr i teCommandLCM(X, 0);WriteDataLCM(DData);延时5微秒%A %A vt vt vt >X >1# >1# vL %£ %£ %£ £z Az Az Az Az >X >X >X >1# >1# vL vl/fvoid Delay5us ()(_nop_ () ;_nop_() ;_nop_() ;_nop_();_nop_ () ;_nop_() ;_nop_()
25、 ;_nop_();_nop_ () ;_nop_() ;_nop_() ;_nop_();/vt vtx x x x/延时5毫秒%A %A vt vt vt >X >1 >1 vL vL vL vL >£z >Az >Az >Az >Az >X >X X >1 >1 vL vLvt vt vt vt/fvoid Delay5ms()WORD n = 560;while (n一一);/vt vt/起始信号%A %A vt vt vt >X >1 >1 vL vL vL vL >£
26、z >Az >Az >Az >Az >X >X X >1 >1 vL vLvt vt vt vt/fvoid ADXL345_Start()SDA = 1;SCL = 1;拉高数据线 拉高时钟线Delay5us ();延时SDA = 0;Delay5us ();SCL = 0;产生下降沿延时拉低时钟线/vt/停止信号%A %A vt vt vt >1# >1# vL vL vL vL >£z >Az >Az >Az >Az>1# >1# VL*/fvoid ADXL345_Stop(
27、)(拉低数据线拉高时钟线延时产生上升沿延时SDA = 0;SCL = 1;Delay5us ();SDA = 1;Delay5us ();/vt vti发送应答信号入口参数:ack (O:ACK 1:NAK)>1 vL vL vL vL >£z >Az >Az >Az >Az>1 >1 vL vl/fvoid ADXL345_SendACK(bit ack)SDA = ack;SCL = 1;Delay5us ();SCL = 0;Delay5us ();写应答信号拉高时钟线延时拉低时钟线延时/>A vl vl/接收应答信号%A
28、%A vt vt vt >1 >1 vL vL vL vL >£z >Az >Az >Az >Az>1 >1 vL vl/fbit ADXL345 RecvACKOSCL = 1;拉高时钟线延时Delay5us ();读应答信号拉低时钟线延时CY = SDA;SCL = 0;Delay5us ();return CY;/vt vtvf>/向HC总线发送一个字节数据%A %A xt vt vt >1# >1# vL vL vL vL >£z >£z >£z >&
29、#163;z >£x>1# >1#vt vt vt vt/>T >T 7fvoid ADXL345_SendByte(BYTE dat)BYTE i;for (i=0; i<8; i+)/8位计数器dat <<= 1;移出数据的最高位SDA 二 CY;送数据口SCL = 1;拉高时钟线延时拉低时钟线延时Delay5us ();SCL = 0;Delay5us ();)ADXL345_RecvACK();从HC总线接收一个字节数据vt vt vl>1 >1 vL vL vL vL £z Az Az Az Az>
30、1 >1L*vl vl vl vl/7fBYTE ADXL345_RecvByte()BYTE i;BYTE dat = 0;SDA = 1;数据,for (i=0; i<8; i+)使能内部上拉,准备读取/8位计数器dat <<= 1;SCL = 1;拉高时钟线Delay5us ();延时dat |= SDA;读数据SCL = 0;拉低时钟线Delay5us ();延时return dat;/*-Hj-(、(、.卜,卜,、,., V、V、V、4. V、,;、,;、,;、.卜,卜 4、,、.、,. V、V、V、V、,;、,;、,;、,;、.卜,卜,、,、,、1、V、
31、171;. 4、void Single_Write_ADXL345(ucharREG Address, ucharREG_data)ADXL345_Start();起始信号ADXL345_SendByte(SlaveAddress);发送设备地址+写信号xWXL345_SendByte(REG_Address);内部寄存器地址,xWXL345_SendByte (REG_data);内部寄存器数据,ADXL345_Stop ();发送停止信号* 单 字 节 读 取.V 'V'Vuchar Single_Read_ADXL345(uchar REG_Address) uchar
32、REG_data;ADXL345_Start ();起始信号ADXL345_SendByte (SlaveAddress) ;/发送设备地址+写信号ADXL345_SendByte(REG_Address) ;/发送存储单元地址,从。开始ADXL345_Start ();起始信号xWXL345_SendByte(SlaveAddress+1);发送设 备地址+读信号REG_data=ADXL345_RecvByte ();读出寄存器数据ADXL345_SendACK(l);ADXL345_Stop();return REG_data;停止信号*/连续读出ADXL345内部加速度数据,地址范围0
33、x320x37/*void Multiple_read_ADXL345(void)uchar i;ADXL345_Start();起始信ADXL345_SendByte(SlaveAddress);发送设备地址+写信号ADXL345_SendByte(0x32);发送存起始信发送设连续读取6/BUF0最后一回应ACK储单元地址,从0x32开始ADXL345_Start ();号ADXL345_SendByte(SlaveAddress+1);备地址+读信号for (i=0; i<6; i+)个地址数据,存储中BUF(BUFi = ADXL345_RecvByte();存储0x32地址中的
34、数据if (i = 5)(ADXL345_SendACK(l);个数据需要回NOACK)else(ADXL345_SendACK(0);ADXL345_Stop();Delay5ms ();%L %A vt vt xt >X%£ %£ %£ .J停止信号/初始化ADXL345 ,根据需要请参考pdf进行修改V kAx ., ." .!" q" .“ 1*" vl>X X" fx(、,;、,;、,;、,;、,;、xTx xTx,、,卜,、,. . xtx x?x (、xvx ,;、,;、,;、xTx xT
35、x Txvoid Init_ADXL345()Single_Write_ADXL345(0x31, OxOB);测量范围,正负16g, 13位模式Single_Write_ADXL345(0x2C, 0x08);速率设定为12. 5Single_Write_ADXL345(0x2D, 0x08);选择电源模式Single_Write_ADXL345(0x2E, 0x80);使能 DATA_READY中断Single_Write_ADXL345(0xlE, 0x00) ;/X 偏移量 根据测试传感器的状态写入Single_Write_ADXL345(0xlF, 0x00) ;/Y 偏移量根据测试
36、传感器的状态写入Single_Write_ADXL345(0x20, 0x05) ;/Z 偏移量根据测试传感器的状态写入%A >A vt vt xt >1# >1# vL vL vL vL >£z >Az >Az >AzXTX,;、;、,;、,:、,:、xTx xTx,、,、,、,. XTX 4、. «、X?x .;、显示X轴void display_x() float temp;dis_data=(BUFl«8)+BUF0; 合成数据if (dis_data<0)di s_data=-di s_data;Displ
37、ayOneChar0,' -'); 显示正负符号位)else DisplayOneChar (2, 0,J '); 显示空格temp= (float)dis_data*3. 9; 计算数据和显示,conversion (temp);转换出显示需要的数据DisplayOneChar (0, 0,,); 第 0 行,第 0 列 显示 XDisplayOneChar (1,0,':;DisplayOneChar(3, 0, qian);DisplayOneChar(4, 0,.);DisplayOneChar(5, 0, bai);DisplayOneChar(6, 0, shi);DisplayOneChar (7, 0, ' g');*/显示 y 轴 void display_y() float temp;dis_data=(BUF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一中学教育集团初中部九年级上学期语文期中试卷
- 二零二五年度郊区科技创新园区厂房场地租赁协议3篇
- 二零二五年酒店客房租赁与酒店品牌形象授权合同3篇
- 二零二五年度车队运输车辆安全技术培训协议2篇
- 二零二五年度铝扣板智能控制系统安装工程协议2篇
- 二零二五年度餐饮酒店与单位签订的餐饮服务管理协议3篇
- 二零二五年度稻谷种植与农产品品牌推广合同模板3篇
- 2025住宅室内装饰装修标准合同
- 2025铝合金门窗合同版本
- 2025劳动合同法问题解答
- 桥梁工程施工现场监测方案
- 帝国主义:资本主义发展的最高最后阶段
- 江苏省苏州市2023-2024学年高一上学期期末学业质量阳光指标调研生物试题
- 阅读理解:如何找文章线索 课件
- 2024年广西北部湾港集团招聘笔试参考题库含答案解析
- 科技馆改造室内装修工程 投标方案(技术方案)
- (外研版)高一英语必修1(全册)同步练习汇总
- 朱熹文公世系通谱
- 工程造价毕业设计总结3000字(5篇)
- 买卖合同原告代理词
- 商铺租赁撤场协议
评论
0/150
提交评论