电子罗盘的设计_第1页
电子罗盘的设计_第2页
电子罗盘的设计_第3页
电子罗盘的设计_第4页
电子罗盘的设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

电子罗盘的设计【摘要】:当今社会交通越来越发达,导航系统也随之普遍。在以前人们使用纸质地图看路况。但是由于经济发展,交通路线也变化好大。现在虽然有GPS,但是在山区有覆盖遮蔽的地方,GPS也失去作用。汽车出巡不方便,为解决这个的问题,本文主要研究使用在汽车导航设备的能够精确定向的电子罗盘系统。本文主要介绍磁阻式电子罗盘的工作原理,并详细介绍了磁阻传感器HMC5883,AT89S52单片机的磁阻式电子罗盘的硬件设计;根据传感器信号输出特点,利用AT89S52单片机处理信息功能经过分析后,经显示屏显示方向。在研制磁阻电子罗盘原理样机过程中,我对系统做出一定的误差补偿,使其系统的精度提高,并且对系统做经一步的改进。对研制的数字电子罗盘系统样机,进行测试。其结果显示,该数字电子罗盘能对行驶方向进行的动态测量,在0到360范围行驶方向测量精度可达2.0。研制的数字电子罗盘,具有体积小、性能稳定、反应快、低功耗等优点,在车辆导航设备领域有非常广阔的应用前景。【关键词】:AT89S52单片机;HMC5883传感器;电子罗盘i【Abstract】:Todayssociety,moreandmoredevelopedtransportation,navigationsystemshavebecomepopular.Inthepastmostpeopleusethemaptoseetheroad.However,duetoeconomicdevelopment,transportroutesarealsobigchanges.AlthoughtherearenowGPS,butthemountainsarecoveredinshelteredplaces,GPSisalsouseless.Carparadeinconvenient,tosolvethisproblem,westudyamethodforprecisedirectionalvehicleequipmentelectroniccompasssystem.Thispaperdescribesthemagnetoresistiveelectroniccompassworks,anddescribedindetailbasedonmagnetoresistivesensorHMC5883andonAT89S52magnetoresistiveelectroniccompasshardwaredesign;theuseoftheinformationprocessingfunctionsAT89S52microcontrollerafteranalysisthroughthedisplayshowsthedirectionoftravel.Andproposeappropriatecompensationmethodstoimprovesystemaccuracy,theinitialcompletionofthemagnetoresistiveelectroniccompassprincipleprototypedevelopment,andgivesanimprovementscheme.Digitalelectroniccompasssystemprototypeisdeveloped,andhascarriedonthedebugging,testresultsshowthattheelectroniccompasscanrealizecourseAngleofdynamicmeasurement,withinthescopeof0to360courseAnglemeasurementprecisioncanbeupto+/-2.0.Thedigitalelectroniccompass,hassmallvolume,stablefunction,quickresponse,andlowpowerconsumption,inthefieldofvehiclenavigationequipmenthasverybroadapplicationprospects.【Keywords】:AT89S52microcontroller;HMC5883sensor;electroniccompassorientationsysteii目录摘要1前言3第一章绪论.4第1.1节电子罗盘的原理4第1.2节电子罗盘的发展趋势4第二章总体方案设计.6第2.1节总体方案选择.6第2.2节硬件方案.7第2.3节软件方案.8第三章硬件系统设计.10第3.1节控制模块设计.10第3.2节传感器模块设计.11第3.3节显示模块设计13第3.4节总体电路设计.14第四章软件系统设计.17第4.1节主程序设计17第4.2节传感器模块程序设计18第4.3节显示模块程序设计19第五章系统调试.20总结.21参考文献.22致谢.23附录1实物照片说明.24附录2部分源程序.24-0-前言通常的导航仪器主要有两种:陀螺罗经和磁罗盘。对地磁场测量方向的仪器叫做磁罗盘。我国发明指南针就是一个简易的磁罗盘,对整个人类社会发展做出巨大贡献。在公元50年左右,磁石已经被运用到导航航啦,并且研制出了司南。在公元960-1127年时候,支撑是的指南针指南龟被研制出来。到20世纪初,随着工业的发展,罗盘制造工艺也得到了飞速的发展,材料的选择和机械制造使得罗盘的性能有了显著地提高。尤其是是机械式磁罗盘,现在某些情况下依然使用机械式磁罗盘。到了20世纪出,陀螺罗盘的问世,对罗盘又是一场革命。罗盘感应这地球的自转,磁性物质对其没有影响。使得陀螺罗盘的标度盘非常稳定,读取数据更加精确。当代GPS虽然有广泛的应用,但是信号经常被物体所遮挡,使其精度大打折扣。有效性也大大降低。数字电子罗盘系统则将填补这一个不足,采用地磁场的工作原理,无论何时何地磁场的水平分量永远指向地磁北极,对GPS信号进行有效补偿。随着科技发展和道路建设完善,汽车会给人们生活极大方便,汽车将会普及在我们生活中。电子罗盘定向系统将会出现每一辆汽车里;届时很多人会开自己的车旅游,回家,谈生意等等,当置于一个陌生的环境中,导航定向对于行车安全非常重要。所以,迫切需要研究出一种低功耗,便于携带,内置磁场感应器,系统稳定,并且能完成精确定向的微系统,而本课题设计就是研究出一个数字电子罗盘,专门解决这个问题而产生的。-1-第一章绪论第1.1节电子罗盘原理目前电子罗盘按照有无倾角补偿可以分为平面电子罗盘和三维电子罗盘,也可以按照传感器的不同分为磁阻效应传感器、霍尔效应传感器和磁通门传感器。利用磁性材料的磁阻效应制成磁性效应传感器。磁性材料的易磁化轴、形状和磁化磁场的方向影响着其磁化方向。图1.1显示出,当电流流通磁性材料时,其电阻阻值大小由材料流通电流的方向与磁化方向的夹角决定。把磁场M加在磁性材料上,之前磁化方向开始转动。如果磁化方向转向与电流的方向垂直,角增大,电阻阻值将减小;如果平行,即角减小,电阻阻值将增大,电流方向与电阻值的关系为cos,这就是磁阻效应。图1.1磁阻效应原理磁阻式传感器具有低功耗,抗干扰,温度稳定性好,而且电路很容易搭建。灵敏度和线性度比较好。其性能及稳定性容易被迟滞误差和零点温度漂移所影响,地磁场强度比较小,外界非磁场容易对磁阻式电子罗盘产生干扰。电子罗盘发展相当迅速,在需要导航的系统的各行各业。并且有着非常大的应用前景。第1.2节电子罗盘的发展趋势由于GPS导航在高山、树林时信号传输不能很好的回馈到卫星中。同时GPS容易受到其他信号、波形干扰,导致其稳定在某些地区较差。所以需要一个稳定的导航系统在-2-任何场地都能测出行驶方向,所以这个导航系统有很大的发展前景。有地磁大小和方向随地点不同而不同,无论在地球的每一个地方,磁场的水平分量永远指向磁北,电子罗盘根据这一个原理制作的,所以电子罗盘可以用于稳定的精确的汽车导航定向,电子罗盘系统的市场需求也在我国日趋明显,而且也初具规模。我认为未来电子罗盘的发展的方向有以下几点:(1)使电子罗盘导航系统科技含量更高,整个制造流程可以形成一个完整的产物链(2)把GPS的技术和电子罗盘技术相结合,对于导航的精确性、实用性和稳定性有提高。(3)把电子罗盘做成信息技术服务的产业,使其应用到更多的行业里,加快电子罗盘研究与发展。未来科技发展更加快速,相对磁场技术也会越来成熟,电子罗盘系统将朝着先进性、经济性、实用性、功能型的成熟完善的系统!-3-第二章总体方案设计第2.1节总体方案选择对于电子罗盘的设计,经查找资料结合所学知识,我得到两种方案。方案一:采用Philips公司生产的KMZ52感应磁场传感器KMZ52是Philips公司生产的一种磁阻传感器,是利用坡莫合金薄片的磁阻效应测量磁场的高灵敏度磁阻传感器。该磁阻传感器内置两个正交磁敏电阻桥、完整的补偿线圈和设置/复位线圈。补偿线圈的输出与当前测量结果形成闭环反馈,使传感器的灵敏度不受地域限制。这种磁阻传感器主要应用于导航、通用地磁测量和交通检测。该磁阻传感器在金属铝的表面沉积了一定厚度的高磁导率的坡莫合金,在翻转线圈和外界磁场两个力的作用下,电子改变运动方向,使得磁敏电阻的阻值发生变化。同时KMZ52的斑马条电阻成45放置,这使得电子在正反向磁场力作用下有较好的对称性。由于加入了翻转磁场,KMZ52的变化曲线与普通的磁敏电阻不同,更加线性化。KMZ52磁阻传感器的核心部分是惠斯通电桥,是由4个磁敏感元件组成的磁阻桥臂。磁敏感元件由长而薄的坡莫合金薄膜制成。在外加磁场的作用下,磁阻的变化引起输出电压的变化。图2.1KMZ52传感器引脚图-4-方案二:使用霍尼韦尔HMC5883L各向异性磁阻传感电路霍尼韦尔HMC5883L是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。HMC5883L包括最先进的高分辨率HMC118X系列磁阻传感器,并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动器、偏差校准、能使罗盘精度控制在1-2的12位模数转换器。简易的I2C系列总线接口。HMC5883L是采用无铅表面封装技术,带有16引脚,尺寸为3.03.00.9mm。HMC5883L的所应用领域有手机、笔记本电脑、消费类电子、汽车导航系统和个人导航系统。HMC5883L采用霍尼韦尔各向异性磁阻(AMR)技术,该技术领先于其他磁传感器技术。这些各向异性传感器具有在轴向高灵敏度和线性高精度的特点.传感器具有的对正交轴的低灵敏度的固相结构能用于测量地球磁场的方向和大小,其测量范围从毫高斯到8高斯(gauss)。霍尼韦尔的磁传感器在低磁场传感器行业中是灵敏度最高和可靠性最好的传感器。图2.2HMC5883L传感器引脚图通过对比各传感器特点我们了解到它们的优缺点,HMC5883L三轴磁阻传感器和ASIC都被封装在一起了,不需要外接ASIC,而12-bitADC与低干扰AMR传感器,能在8高斯的磁场中实现2毫高斯的分辨率,且内置驱动器,显得更为优越。霍尼韦尔的磁传感器在低磁场传感器行业中是灵敏度最高和可靠性最好的传感器。综上结合所学知识我选择传感器方案二,使用霍尼韦尔HMC5883L各向异性磁阻传感电路。-5-第2.2节硬件方案数字电子罗盘3大模块分别是:传感器模块、数据采集模块和MCU模块。需要硬件有:磁阻传感器、双轴加速度传感器、AD转换器以及单片机的磁阻式电子罗盘。硬件总体框图如下:磁阻式传感器电源A/D转换器单片机显示屏键盘总线包含X,Y,Z轴信号图2.3系统硬件总体框图采用三轴磁阻传感器进行地球磁场矢量测量,双轴加速传感器可以传感地球重力场中测量载体的姿态,然后通过姿态坐标变换将磁阻传感器得到载体坐标的测量信号变换到地平坐标系。其磁阻式传感器HMC5883包含输出为3路的差分模拟电压值,差分值大约为几毫伏,信号经过传感器内置的ASIC放大器把信号进行放大,再进行模数转换器进行放大和模数转换;再由有单片机处理数字信号,经由处理后得到航向角由显示屏来显示;复位电路用于恢复磁阻传感器在强磁干扰后的灵敏度;电源模块分别为复位电路和信号处理电路供电。第2.3节软件方案系统软件除了完成初始化、信号采集、信号调理、A/D转换,再到单片机中进行信号处理分析,然后判断能否输出。其框图如下所示:-6-开始系统初始化采集信号信号调理A/D转换信号分析、处理显示屏显示结束是否输出是否图2.4软件总体框图单片机对传感器失调、温度漂移等干扰造成的误差进行调整。失调和温度漂移会在传感器敏感信号上面叠加一个直流偏置电路,单片机通过将传感器在置位和复位情况下得到的信号进行分析,算出平均值。就可以得到由于失调和漂移造成的直流偏置信号,在方向角计算前对该偏置信号进行补偿即可消除其影响。再判断能否输出,如果不能输出,则再采集一次;能输出则把数据送到显示屏显示。-7-第三章硬件系统设计第3.1节控制模块设计AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图3.1AT89S52引脚图DIP封装-8-图3.2AT89S52电路连接图第3.2节传感器模块设计1工作原理霍尼韦尔HMC5883L磁阻传感器电路是三轴传感器并应用特殊辅助电路来测量磁场。通过施加供电电源,传感器可以将量测轴方向上的任何入射磁场转变成一种差分电压输出。磁阻传感器是由一个镍铁(坡莫合金)薄膜放置在硅片上,并构成一个带式电阻元件。在磁场存在的情况下,桥式电阻元件的变化将引起跨电桥输出电压的相应变化。这些磁阻元件两两对齐,形成一个共同的感应轴,随着磁场在感应方向上不断增强,电压也会正向增长。因为输出只与沿轴方向上的磁阻元件成比例,其他磁阻电桥也放置在正交方向上,就能精密测量其他方向的磁场强度。2电源管理该器件可有两种不同的供电模式。第一个是内部运作的VDD供电电源,第二个是为IO接口供电的VDDIO电源,当然VDDIO的电压可以与VDD电源相近;单电源模式,或在VDDIO电压低于VDD的情况下,HMC5883L都能正常运作并能与其他装置兼容。-9-图3.3HMC5883L内部示意图3IC接口控制该装置可以通过IC总线来实现。该装置将作为从机在一个主机(例如:处理器)的控制下连接总线。该装置必须符合I2C-BusSpecification(I2C-总线技术规格标准),作为一个I2C兼容装置,该装置包含一个7-bit串行地址,并支持I2C协议。这一装置可以支持标准和快速模式,分别为100kHz和400kHz,但不支持高速模式(Hs)。还需要外接电阻才能支持这些标准和快速模式。要求主机的活动(寄存器的读取和写入)优先于内部活动,例如:测量。这一优先次序的安排是为了不让主机等待,同时IC总线占用的时间比必需的时间长。4置位/复位带驱动的H-桥式电路ASIC包含大型开关FETs,可以传输大而短的脉冲到传感器的置位/复位带。这一置位/复位带在很大程度上是一种电阻性负载。并不需要外部去增加外部置位/复位回路。每次测量时,ASIC会自动完成置位/复位。首先一次置位脉冲产生后进行测量,然后,一次复位脉冲产生后进行测量,两次测量的差值的一半将会被放置在三轴上每根轴的数据输出寄存器上。这样,在所有测量中传感器的内部偏差和温度漂移差值就可以被移除/抵消了。5寄存器访问下面表格列出了寄存器及其访问。所有地址为8bits。表3.1寄存器列表地址名称访问00配置寄存器A读/写01配置寄存器B读/写02模式寄存器读/写03数据输出XMSB寄存器读-10-04数据输出XLSB寄存器读05数据输出ZMSB寄存器读06数据输出ZLSB寄存器读07数据输出YMSB寄存器读08数据输出YLSB寄存器读09状态寄存器读10识别寄存器A读11识别寄存器B读12识别寄存器C读这里介绍读取和写入此装置的过程。该装置使用地址指针来显示该寄存器地点是被读取或写入。这些指针位置从主机发出到从机并成功获得的7位地址加1位读/写标识符。为了尽量减少主机和装置之间的通信,无主机干预下地址指针自动更新。寄存器指示器被读取后将自动的在目前被成功读取的寄存器的地址上加1。地址指针本身不能通过I2C总线被读取。任何试图去读取不存在的地址返回为0s,任何去写不存在的地址或者是未定义的bit写入定义的地址都将会被该装置予以忽略。为将地址指针移到随机存储器位置,首先发出一个“写”到寄存器地址,在指令后不带数据位。HMC5883L的串行总线与两个上拉电阻相连,再与电源连接,传感器字节连接单片机引脚,这个引脚需要加一个上拉电阻,为单片机提供灌电流。连接电路如下:图3.4HMC5883电路连接第3.3节显示模块设计1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个57或者511等点阵字符位组成,每个点阵字符位都可以显-11-示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。1602LCD是指显示的内容为162,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。其引脚图和引脚说明如下:图3.5LCD1602引脚图1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。-12-图3.6LCD1602模块连线图第3.4节总体电路设计电路如图:VSS1VDD2VL3RS4R/W5E6D07D18D29D310D411D512D613D714BLA15BLK16U21602RSENP00P01P02P03P04P05P06P07VCCVCCVR110KY2Vcc21X12X23GND4RST5I/O6SCLK7Vcc8U3DS1302batter1VCCP32P33P34VCCRWP14P15P16P10/T21P11/T2EX2P123P134P145P156P167P178RESET9RXD10TXD11INT012INT113T014T115WR16RD17X218X119GND20P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30EA/VP31P0732P0633P0534P0435P0336P0237P0138P0039VCC40U1AT89S52VCCRSTX1X2P01P02P00P03P04P05P06P07P17P15P16123456789RP1排排VCCP20P21P22P23P24P25P26P27P13P14P31P32P33P34P351122CR110uS1SW-PBVCCRSTY112MCY230pCY130pX1X2R210K12J12HR11KD1123LEDVCCR310KR410KR510KS2SW-PBS3SW-PBS4SW-PBRSENRW12345U4VCCSDASCLR610KR710KVCCSDASCLP30图3.7电路整体结构图此电路采用排阻,排阻就是封装在一起的若干电阻,可以是串联,也可1端并接,只是简化了PCB的设计、安装,减小空间,保证焊接质量。对于晶振,单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。在电路设计中,我加入了DS1302时钟芯片,确定系统年月日的时间。-13-DS1302的引脚排列,其中Vcc为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc或Vcc2两者中的较大者供电。当Vcc2大于Vcc+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc时,DS1302由Vcc供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。电路连接如下:图3.8DS1302电路连接图-14-第四章软件系统设计第4.1节主程序设计软件设计流程图如下:先对系统进行初始化,然后再决定是否进行采集测量,然后对信号处理,然后对其补偿。方向进行校正。不用测量则直接进行校正,计算偏移量,保存到单片机中。还设置了休眠模式,有定时中断等功能。开始读取预置参数系统初始化测量模式信号采集信号分析处理硬铁补偿方向解算磁偏角校正屏幕显示关机结束显示校准提示计算偏移量保存保存到单片机是是是否否否-15-图4.1系统主程序图第4.2节传感器模块程序设计由复位置位电路的电流带的特性,在S/R+端给一个脉冲,则元件能找到准确的方向与其对准。而此脉冲只能加在一个方向。罗盘在工作时,PA1口每隔1秒钟对传感器置位一次。程序流程图:开始PAO端口产生下降沿PA1端口产生下降沿5us10usPA1端口产生上升沿30usPA0端口产生上升沿采集结束采集电桥输出数据30us采集电桥输出数据采集结束计算电桥偏置电压结束是是是是是是否否否否否否图4.2电桥偏置电压流程图-16-voidreset_HMC1022()PORTAPA1口产生下降沿_NOP();/延时15usPORTA|=(1#include/Keillibrary#include/Keillibrary#include#includeDS1302.H#defineucharunsignedchar#defineuintunsignedint#defineSYSTIM20/使用的端口,请按照以下接线#defineDataPortP0/LCD1602数据端口sbitSCL=P37;/IIC时钟引脚定义sbitSDA=P36;/IIC数据引脚定义sbitLCM_RS=P10;/LCD1602命令端口sbitLCM_RW=P11;/LCD1602命令端口sbitLCM_EN=P12;/LCD1602命令端口/按键端口定义sbitKEY_SET=P32;sbitKEY_ADD=P33;sbitKEY_MIN=P34;-22-/蜂鸣器端口定义/sbitBEEP=P27;#defineSlaveAddress0x3C/定义器件在IIC总线中的从地址typedefunsignedcharBYTE;typedefunsignedshortWORD;BYTEBUF8;/接收数据缓存区ucharge,shi,bai,qian,wan;/显示变量/uintstart_A=50,stop_A=80;/报警区间ucharSET_FLAG=0;ucharsys_time=0;uintangle1=0;intdis_data;/变量bitdis_flag=0;unsignedchardataTIME_Buffer6=0;/时间数据暂存数组unsignedcharLCD1602_Table=0123456789:-;voiddelayms(unsignedintk);voidInitLcd();voidInit_HMC5883(void);/初始化5883voidWriteDataLCM(uchardataW);voidWriteCommandLCM(ucharCMD,ucharAttribc);voidDisplayOneChar(ucharX,ucharY,ucharDData);voidconversion(uinttemp_data);voidSingle_Write_HMC5883(ucharREG_Address,ucharREG_data);/单个写入数据ucharSingle_Read_HMC5883(ucharREG_Address);/单个读取内部寄存器数据voidMultiple_Read_HMC5883();/连续的读取内部寄存器数据/以下是模拟iic使用函数-voidDelay5us();voidDelay5ms();voidHMC5883_Start();voidHMC5883_Stop();voidHMC5883_SendACK(bitack);bitHMC5883_RecvACK();voidHMC5883_SendByte(BYTEdat);BYTEHMC5883_RecvByte();voidHMC5883_ReadPage();voidHMC5883_WritePage();/-/*voidconversion(uinttemp_data)-23-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;/*/voiddelayms(unsignedintk)unsignedinti,j;for(i=0;i0)TIME_Buffer0-;break;case2:-25-if(TIME_Buffer11)TIME_Buffer1-;break;case3:if(TIME_Buffer21)TIME_Buffer2-;break;case4:if(TIME_Buffer30)TIME_Buffer3-;break;case5:if(TIME_Buffer40)TIME_Buffer4-;break;default:break;while(!KEY_MIN);/*/voidWaitForEnable(void)DataPort=0xff;LCM_RS=0;LCM_RW=1;_nop_();LCM_EN=1;_nop_();_nop_();while(DataPortLCM_EN=0;/*/voidWriteCommandLCM(ucharCMD,ucharAttribc)if(Attribc)WaitForEnable();LCM_RS=0;LCM_RW=0;_nop_();DataPort=CMD;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;/*/voidWriteDataLCM(uchardataW)WaitForEnable();LCM_RS=1;LCM_RW=0;_nop_();DataPort=dataW;_nop_();LCM_EN=1;_nop_();_nop_();LCM_EN=0;-26-/*/voidInitLcd()WriteCommandLCM(0x38,1);WriteCommandLCM(0x08,1);WriteCommandLCM(0x01,1);WriteCommandLCM(0x06,1);WriteCommandLCM(0x0c,1);/AngeltimeDisplayOneChar(0,1,A);DisplayOneChar(1,1,n);DisplayOneChar(2,1,g);DisplayOneChar(3,1,e);DisplayOneChar(4,1,l);DisplayOneChar(5,1,:);/*/voidDisplayOneChar(ucharX,ucharY,ucharDData)YXif(Y)X|=0x40;X|=0x80;WriteCommandLCM(X,0);WriteDataLCM(DData);/*延时5微秒(STC90C52RC12M)不同的工作环境,需要调整此函数,注意时钟过快时需要修改当改用1T的MCU时,请调整此延时函数*/voidDelay5us()_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();-27-_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();voidDelay5ms()WORDn=560;while(n-);/*起始信号*/voidHMC5883_Start()SDA=1;/拉高数据线SCL=1;/拉高时钟线Delay5us();/延时SDA=0;/产生下降沿Delay5us();/延时SCL=0;/拉低时钟线/*停止信号*/voidHMC5883_Stop()SDA=0;/拉低数据线SCL=1;/拉高时钟线Delay5us();/延时SDA=1;/产生上升沿Delay5us();/延时/*发送应答信号入口参数:ack(0:ACK1:NAK)-28-*/voidHMC5883_SendACK(bitack)SDA=ack;/写应答信号SCL=1;/拉高时钟线Delay5us();/延时SCL=0;/拉低时钟线Delay5us();/延时/*接收应答信号*/bitHMC5883_RecvACK()SCL=1;/拉高时钟线Delay5us();/延时CY=SDA;/读应答信号SCL=0;/拉低时钟线Delay5us();/延时returnCY;/*向IIC总线发送一个字节数据*/voidHMC5883_SendByte(BYTEdat)BYTEi;for(i=0;i=SYSTIM)sys_time=0;dis_flag=dis_flag;if(SET_FLAG=0)TIME_Buffer0=READ_DS1302(READ_DS1302_YEAR);TIME_Buffer1=READ_DS1302(READ_DS1302_MONTH);TIME_Buffer2=READ_DS1302(READ_DS1302_DAY);TIME_Buffer3=READ_DS1302(READ_DS1302_HOUR);TIME_Buffer4=READ_DS1302(READ_DS1302_MINUTE);TIME_Buffer5=READ_DS1302(READ_DS1302_SECOND);if(SET_FLAG=1&dis_flag)DisplayOneChar(1,0,);-31-DisplayOneChar(2,0,);elseDisplayOneChar(1,0,LCD1602_TableTIME_Buffer0/10);DisplayOneChar(2,0,LCD1602_TableTIM

温馨提示

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

评论

0/150

提交评论