基于单片机的电子指南针设计

摘要:随着科技的进步与发展,尤其是电子技术的推动下社会逐渐向智能化、信息化和人工智能等方面发展。与此同时市场更加需要掌握精确的方位角度信息,服务到生活、产业、出行、航行等各方各面。传统的指南针由于本身的物理特性,抗干扰能力不强,指向灵敏度不足,精度不高等缺点逐渐被市场淘汰。本论文根据指南针的基本原理特征,设计了一套基于单片机的电子指南针。系统选用STC89C52单片机作为主控芯片,来进行数据处理和程序运,采用HMC5883L磁场传感器来采集当前地磁场的信息,再将采集到的磁场信息转换为电信号传送给单片机。单片机进行数据处理输出到液晶显示屏上显示方位信息,同时设有时钟芯片方便实时显示时间,设有按键模块,可以设定时间和范围角度。还设有报警模块,可进行超出范围角报警的功能。经测试本系统的指向精度可达1°,是一个更精确,抗干扰性强,更加智能的电子指南针。
关键词:指南针;单片机;磁场传感器

0 前言

随着人们生活水平的不断提高,人们开始追求更加美好和便捷的生活。辨向快捷、角度准确、抗干扰性强等条件成了市场对于指南针的近一步要求。随着相关的研发和投入逐渐增多,也出现了一些科学的技术和方案。应用科学的电子技术帮助人们快速便捷的掌握方位信息,将传统的指南针技术演变成使用智能单片机技术实现,再通过显示屏的交互方式更加方便用户查看方位信息,为了增加实用性,添加了时间显示、角度超出报警等辅助功能。单片机又被称作单片微型控制器,具有成本低、易操作的特点,在我们的日常生活中,小到台灯、手机,大到汽车、飞机,单片机技术的应用无处不在。霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率 HMC118X系列磁阻传感器,并附带霍尼韦尔专利的集成电路包括放大器、自动消磁驱动器、偏差校准、能使罗盘精度控制在1°到 2°的 12 位模数转换器,简易的 I2C 系列总线接口。HMC5883L 是采用无铅表面封装技术,带有 16 引脚,尺寸为 3.0×3.0×0.9mm。HMC5883L 的所应用领域有手机、笔记本电脑、消费类电子、汽车导航系统和个人导航系统。
本文设计了一个基于单片机的电子指南针系统,该系统 在 设 计 的 时 候,主控选用STC公司的 STC89C52进行数据的处理作并且为系统控制的中心,通过磁阻传感器HMC5883L 传感器来对地球的磁场信息进行采集,将采集到的磁场信息转化为电信号,传输到单片机。同时添加一个时钟模块,在采集方位的同时,也可以实时的进行时间的显示,使得系统更加的便利。为了进一步的增加系统的实用性,用户在使用的时候,可以通过按键设置方位角度的上下限,当超过设定的角度范围,进行蜂鸣器的报警处理。在电源供电方面,为了使得系统更加的具有实用性,本系统采用电池的供电的方式为整个的系统进行供电。本设计的电子指南针可用来代替传统的指南针用于民船航行,大地测量,旅行导航,车载导航等用来辨别方向的实际用途,有较高的应用价值。

1 系统方案设计

总体设计方案的确定是整个设计中最为复杂的一部分,在确定总体方案时既要考虑各部分元件的选择,也要考虑到所有元件之间的配合。在选择元件时往往会有很多种方案都能满足自己的设计要求,此时,我们就要去考虑整个设计的性价比、线路的复杂程度,甚至我们还要去考虑该芯片是否 能购买到等因素。总之影响我们设计方案的因素很多,我们都要逐一考虑,最终在自己的努力和老师、同学的帮助下确定了自己的方案。
本文设计的电子指南针主要能实现以下功能:
(1) 能够实时的检测当前的方位情况,并使用屏幕进行显示;
(2) 能够实时的进行时间的显示,方便用户进行查看;
(3) 用户可以通过按键设置时间,调整时间;
(4) 具有报警的功能,用户可以进行方位角度的设定,超过限制,进行蜂鸣器报警处理。

2 系统硬件电路设计

基于单片机的电子指南针系统,是基于智能控制与传感器的系统,即该系统由一个主控模块和一个磁场传感器模块和报警模块组成,同时还加入了液晶显示模块和一个时钟模块,可以实时的来显示时间信息,该系统还加入了按键模块和报警模块,本系统的总体电路的设计框图如图 1 所示。各个模块功能如下:
主控模块可以进行内部的数据处理和程序的运算;传感器模块是用来实时的对磁场进行检测;时钟模块能实时的计 算时间,用于时间的显示,显示模块实时的对信息进行显示;按键模块使用按键作为信息的交互输入,用户时间的调整和角度报警的调整;电源模块使用电池电压供电,然采用稳压
模块进行输出 5V,为控制单元供电;蜂鸣器报警模块,当系统的角度超过设定的角度时,进行蜂鸣器的报警。

3 系统软件设计

本设计的主要的核心采用 STC89C52,这一款单片机的开发是非常的简单的,使用 C 语言进行程序的设计和开发,在开发环境的选择方面,我们选用的是专门的单片机的开发软件 Keil μVision5 来实现的,借助 Keil 内部的数据的存储库也是非常的高效的,我们可以直接调用,而不需要进行直接的底层程序的开发和设计。
在硬件设计完成后,我们需要进行根据相关的硬件设计进行软件的设计,主要是通过设计不同的 I/O,然后完成不同的逻辑的关系。对于单片机的程序开发而言,软件设计的流程就是根据设计需要,然后对于单片机内部的相关的模块的程序进行调用和初始化的设计,然后进行特定的模块的 初始化设计。对于此单片机的数字指南针而言,就是单片机上电以后,对于单片机的程序进行调控,然后开始读取HMC5883L 传感器的返回数据,通过读取之后,进行液晶的显示。
对于此设计而言,在进行程序设计的时候,在该函数的开头是先对我们设计的系统的单片机和一些相关的外围器件进行了系统的初始化操作,然后才能正常使用的我们在设计的时候,我们设计的器件进行初始化和重新赋值一些变量,进而在后续的程序操作中,对该模块进行程序的操作,参数的读取。在单片机的程序设计中,初始化完后我们需要设计一个 while (1) 的死循环,使得程序的运行进入这个死循环,如果没有设计一个死循环,程序运行一次就会退出,通过设计之后,加入死循环程序设计结构,就会不断地进行循环达到实时检测执行的目的,就能实时的进行数据的采集和显示。在主程序的设计中需要注意的是主函数中不宜放过多的代码,具体的用户功能的操作的代码我们在设计的时候,一般都是采用函数进行封装的方式进行的,然后在主函数进行调用,这样也可以方便阅读修改,具体流程图如 2所示。

4 系统调试与测试

在整机测试前,设计一系列的分模块调试,以便能够发现系统的问题,同时采用这种分步调试的方法能够找出误差出现的原因,方便数据的修正,易于发现程序中的漏洞、提高系统整体的测量精度和运行的稳定性。分模块的调试主要包括,单片机最小系统的测试、液晶 LCD12864 显示模块,
磁场的采集模块以及数字时钟的采集模块。
系统的稳定可靠,最主要的是搭建一个稳定的最小系统。本系统采用的方法是,通过书写一个流水灯的程序,来验证最小系统的稳定性,其程序与单片机最小系统如图 3所示。

当最小系统调试完整之后,进行磁场传感器和液晶显示 的联合调试,液晶的第一行显示当前的角度,第二行显示更为直观的方位角度,液晶可以正确的显示采集到的角度信息,如图 4 所示。

然后进行数字时钟的显示调试,经过系统调试之后,液晶可以显示当前的时间信息,通过数字的方式进行显示,如图 4 所示。其中第一行角度和第二行方位角和右侧指针圆盘方位指示都是三种方向指示方式,为了更加直观的体现方向,时间采用 12 小时制,可以实时显示,配有电池可以实现断电走时的作用。
本系统具有用户通过按键设定方位报警的功能,用户通过按下按键,进入设置界面,如图 5 所示,此时液晶提示进行罗盘的设置,用户可以通过按键进行角度上限和角度下限的设定。当超过设定角度设定范围时,蜂鸣器就会发出报警提示。

相关推荐
IT学长编程3 小时前
计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·毕业设计·springboot·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·教师科研管理系统
redcocal3 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
辰哥单片机设计6 小时前
门磁模块详解(防盗感应开关 STM32)
stm32·单片机·嵌入式硬件·传感器
夜间去看海7 小时前
基于51单片机的自动清洗系统(自动洗衣机)
嵌入式硬件·51单片机·proteus·洗衣机
yrx0203077 小时前
stm32 IIC总线busy解决方法
stm32·单片机·嵌入式硬件
孟诸8 小时前
计算机专业毕设-校园新闻网站
java·vue·毕业设计·springboot·课程设计
YHPsophie9 小时前
ATGM331C-5T杭州中科微BDS/GNSS全星座定位授时模块应用领域
经验分享·笔记·单片机·信息与通信·交通物流
奔强的程序9 小时前
【计算机毕业设计】医院电子病历
java-ee·毕业设计·课程设计·源代码管理
Archie_IT9 小时前
【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载
arm开发·stm32·单片机·嵌入式硬件