基于单片机的电子指南针设计_第1页
基于单片机的电子指南针设计_第2页
基于单片机的电子指南针设计_第3页
基于单片机的电子指南针设计_第4页
基于单片机的电子指南针设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录目录目录TOC\o"1-2"\h\u16860摘要: 图1.3HMC1501实物图特点:磁场范围高至6高斯(地磁场=0.5高斯)。封装尺寸小。设计成单轴和双轴可组合在一起工作从而提供3轴(xyz)传感。单轴传感器封装在8针SIP或8针SOIC,或陶瓷8针DIP内。双轴传感器封装在16针或20针SOIC封装内。这类小型装置相比于机械磁通门大大降低了装配成本并提高了可靠性和耐用性。价格便宜,这类传感器经专门设计对于大批量的OEM应用价格合适,市场价格100-500元。考虑到所选择的单片机为51系列,课程设计所要求的精度及成本问题,所以选择了Honeywell公司的HMC5883L磁阻传感器来做课程设计。2主要元器件介绍2.1主控制器STC89C52介绍STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,兼容标准MCS-51指令系统及80C51引脚结构,高性能8位单片机AT89C52是一个低功耗,高性能CMOS8位单片机,片内含8kBytes的可反复擦写1000次的Flash只读程序存储器,,做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。2.2磁阻传感器HMC5883L介绍霍尼韦尔HMC5883L是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。HMC5883L包括最先进的高分辨率HMC118X系列磁阻传感器,并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动器、偏差校准、能使罗盘精度控制在1°~2°的12位模数转换器.简易的I2C系列总线接口。HMC5883L是采用无铅表面封装技术,带有16引脚,尺寸为3.0*3.0*0.9mm。HMC5883L的所应用领域有手机、笔记本电脑、消费类电子、汽车导航系统和个人导航系统。霍尼韦尔HMC5883L磁阻传感器电路是三轴传感器并应用特殊辅助电路来测量磁场。通过施加供电电源,传感器可以将量测轴方向上的任何入射磁场转变成一种差分电压输出。磁阻传感器是由一个镍铁(坡莫合金)薄膜放置在硅片上,并构成一个带式电阻元件。在磁场存在的情况下,桥式电阻元件的变化将引起跨电桥输出电压的相应变化。这些磁阻元件两两对齐,形成一个共同的感应轴(如图2.1所示),随着磁场在感应方向上不断增强,电压也会正向增长。因为输出只与沿轴方向上的磁阻元件成比例,其他磁阻电桥也放置在正交方向0上,就能精密测量其他方向的磁场强度。箭头标明磁场方向,该磁场在正常测量模式下产生正向输出可读。2.2.1I2C通信HMC5883LL通过两线I2C总线系统作为一个从机装置进行通信。HMC5883LL使用是一个I2C协议所定义的简化后的通信接口协议,通过这一文件,。数据传输速率是标准模式100kbps或400kbps速率,如I2C总线规格中所规定。总线位格式是一个8位数据/地址传送和1位应答位。格式的数据字节(有效载荷)应区分HMC5883L从机上的大小写的ASCII字符或二进制数据,以及返回的二进制数据。负二进制值将是以二进制的补码形式。默认(出厂)HMC5883LL7位从机地址为0x3C的写入操作,或0x3D的读出操作。图2.1HMC5883L-顶视图HMC5883L引脚配置表,如表1所示。表1HMC5883L引脚配置表引脚名称描述1SCL串行时钟-I2C主从时钟2VDD供电端2.16V-3.6V3NC空引脚4S1与电源供电引脚相连5NC空引脚6NC空引脚7NC空引脚8SETP与S/R电容器C2相连,连驱动端9GND接地10C1与储能电容器C1相连11GND接地12SETC与S/R电容器C2相连-驱动端13VDDIOI/O口供电14NC空引脚15DRDY数据准备,中断引脚。内部拉高。可选的连接。保持250µ秒时,数据被放置在数据输出寄存器。16SDA串行数据–I2C主从数据图2.2HMC5883L外围电路图2.3实际尺寸的由HMC5883L构成的传感器模块HMC5883LL串行时钟(SCL)和串行数据(SDA)线需要主机(通常是主机微处理器)和HMC588LL之间装有上拉电阻(Rp)。在标称VDDIO电压下建议负载电阻值约为10千欧姆。其他电阻值也可以由I2C总线规格定义后连接到VDDIO上。总线规格的SCL和SDA线可以连接到多个装置上。总线可以是一个单一主机到多个从机,也可以是一个多个主机配置。所有数据传输均由产生时钟信号的主机发起,数据传输是8位进行。所有装置都由I2C唯一的7位地址标注。在每8位传输之后,主机装置产生一个第9个时钟脉冲,并释放SDA的线。接收装置(指向的从机)将SDA线拉至低位确认(ACK)传输成功或使SDA线处于高位表示否定确认(NACK)。按I2C规格,所有SDA线中的传输必须发生在SCL低时。但当SCL处于高位时,在总线上与SDA传送时这一要求会导致两种特别的情况。主机将拉SDA拉低,而SCL线是高,表明开始(S)的条件;当SDA的线被拉高而SCL处于高位,这是停止(P)的情况。I2C总线协议还允许重新启动的条件,这时主机发出第二次启动条件还没有叫停。所有总线传送从主机发出启动序列开始,然后发出从机地址字节。地址字节包含从机地址;先7位和最低有效位。如果指定的运作是一个读出或写入,地址的LSb字节会标志出来。在第9个时钟脉冲,接收的从机装置会发出ACK。这些总线事件以后,主机将发送数据字节以便写入操作,或从机在读出操作时进行时钟输出。所有总线的传送在主机发出停止序列时终止。2.2.2连续测量模式连续测量模式,在客户所选择的速率下进行连续的测量,并所测量的更新数据输出寄存器。如果有必要,数据可以从数据输出寄存器重新读取,但是,如果主机并不能确保在下次测量完成之前可以访问数据寄存器,数据寄存器上的旧的数据会被新的测量数据取代。为了保存测量之间的电流,该装置被放置在一个类似闲置模式的状态,但模式寄存器没有改变成空闲模式。即MD[n]位不变。配置寄存器A的设置在连续测量模式时会影响数据输出速率(比特DO[n]),测量配置(bitsMS[n]),和增益(bitsGN[n])。所有寄存器在连续测量模式中保留数值。在连续测量模式下I2C总线可被网络内的其他装置启用[5]。2.2.3数据处理HMC5883L能测量X,Y,Z三个方向的数据,这三个方向是正交的,对这三个方向的数据进行处理可以得到磁场的角度,每个方向拥有两个八位的数据寄存器A和B,寄存器A中储存一个测量结果中的高位数据,寄存器B中储存一个自测量结果的低位数据,这两个寄存器中的值是以二进制补码形式存在的十六位,其范围是0XF800到0X07FF。因为Z轴垂直于磁场,所里理论上等于零,只需要X,Y的值就可以算出角度来,公式为angle=arctan(X/Y)[6]。2.31602LCD液晶显示器1602LCD工业字符型液晶,能够显示16*2即32个字符。即16列两行。是一种专门用来显示字母,数字,符号等的点阵型液晶。由若干个5*7或者5*11等点阵字符位组成,每个字符位都可以显示一个字符,每位之间有一个点阵的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。图2.41602LCD实物图1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V

工作电流:2.0mA(5.0V)

模块最佳工作电压:5.0V

字符尺寸:2.95×4.35(W×H)mm引脚功能说明1602LCD采用标准的16脚(带背光)接口,各引脚接口说明如表2所示。表21602LCD引脚功能编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极3程序流程图程序流程图如图3.1所示初始化系统初始化系统开始读完?IC写信号发设备地址IC停止连续读取磁场数据IC读信号发读取单元地址是否显示数据图3.1程序流程图4设计思路角度算法:angle1=arctan(2y/x)*(180/∏)+180指南针的角度指向正南方时为0度,指针的角度随x轴顺时针方向进行递增,角度从0度到359度[7,8]。如图4.1所示正南0度正东270度正西90度正北180度图4.1指南针四方位正角5内部主要程序//*********************************************************//主程序********//*********************************************************voidmain(){unsignedinti,j;intx,y,z;doubleangle;InitLcd();Init_HMC5883();while(1){Multiple_Read_HMC5883();//连续读出数据,存储在BUF中x=BUF[0]<<8|BUF[1];//CombineMSBandLSBofXDataoutputregisterz=BUF[2]<<8|BUF[3];//CombineMSBandLSBofZDataoutputregistery=BUF[4]<<8|BUF[5];//CombineMSBandLSBofYDataoutputregisterangle=atan2((double)y,(double)x)*(180/3.14159265)+180;//angleindegrees//显示方位 if((angle<22.5)||(angle>337.5)) //South { DisplayOneChar(2,0,'S'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'u'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); Clear_char(); }if((angle>22.5)&&(angle<67.5)) //South-west { DisplayOneChar(2,0,'S'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'u'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); DisplayOneChar(7,0,'-'); DisplayOneChar(8,0,'W'); DisplayOneChar(9,0,'e'); DisplayOneChar(10,0,'s'); DisplayOneChar(11,0,'t'); Clear_char(); }if((angle>67.5)&&(angle<112.5)) //West { DisplayOneChar(2,0,'W'); DisplayOneChar(3,0,'e'); DisplayOneChar(4,0,'s'); DisplayOneChar(5,0,'t'); Clear_char(); }if((angle>112.5)&&(angle<157.5)) //North-West { DisplayOneChar(2,0,'N'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'r'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); DisplayOneChar(7,0,'-'); DisplayOneChar(8,0,'W'); DisplayOneChar(9,0,'e'); DisplayOneChar(10,0,'s'); DisplayOneChar(11,0,'t'); Clear_char(); }if((angle>157.5)&&(angle<202.5)) //North { DisplayOneChar(2,0,'N'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'r'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); Clear_char(); }if((angle>202.5)&&(angle<247.5)) //North-East { DisplayOneChar(2,0,'N'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'r'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); DisplayOneChar(7,0,'-'); DisplayOneChar(8,0,'E'); DisplayOneChar(9,0,'a'); DisplayOneChar(10,0,'s'); DisplayOneChar(11,0,'t'); Clear_char(); }if((angle>247.5)&&(angle<292.5)) //East { DisplayOneChar(2,0,'E'); DisplayOneChar(3,0,'a'); DisplayOneChar(4,0,'s'); DisplayOneChar(5,0,'t'); Clear_char(); }if((angle>292.5)&&(angle<337.5)) //South-East { DisplayOneChar(2,0,'S'); DisplayOneChar(3,0,'o'); DisplayOneChar(4,0,'u'); DisplayOneChar(5,0,'t'); DisplayOneChar(6,0,'h'); DisplayOneChar(7,0,'-'); DisplayOneChar(8,0,'E'); DisplayOneChar(9,0,'a'); DisplayOneChar(10,0,'s'); DisplayOneChar(11,0,'t'); Clear_char(); } angle*=10;//计算数据和显示 conversion(angle); DisplayOneChar(2,1,'A'); DisplayOneChar(3,1,'n'); DisplayOneChar(4,1,'g'); DisplayOneChar(5,1,'l'); DisplayOneChar(6,1,'e');DisplayOneChar(7,1,':');DisplayOneChar(8,1,qian);DisplayOneChar(9,1,bai);DisplayOneChar(10,1,shi);DisplayOneChar(11,1,'.'); DisplayOneChar(12,1,ge);//延时for(i=0;i<50000;i++) for(j=0;j<10;j++);}}6实物演示图6.1实物显示度数56°指南针以正北方向为准,当显示为0°时即为正北方。如图6.1所示显示为56°,东北方向。即是北偏东56°。图6.2实物显示度数3°如图6.2所示显示为3°北方。即是正北方向。但实际方向是北偏东3°,在实际使用中3°的偏差不会影响的使用。图6.3实物显示度数210°如图6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论