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

news2025/1/10 23:44:03
摘要:随着科技的进步与发展,尤其是电子技术的推动下社会逐渐向智能化、信息化和人工智能等方面发展。与此同时市场更加需要掌握精确的方位角度信息,服务到生活、产业、出行、航行等各方各面。传统的指南针由于本身的物理特性,抗干扰能力不强,指向灵敏度不足,精度不高等缺点逐渐被市场淘汰。本论文根据指南针的基本原理特征,设计了一套基于单片机的电子指南针。系统选用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 所示,此时液晶提示进行罗盘的设置,用户可以通过按键进行角度上限和角度下限的设定。当超过设定角度设定范围时,蜂鸣器就会发出报警提示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2065211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度剖析C++string(上篇)

目录 前言 1.C string类 2.string类中的常见构造 3.string类对象的容量操作 4.. string类对象的访问及遍历操作 5. auto和范围for(补充) auto关键字 范围for 结束语 前言 C语言我们学习了字符串和字符串的相关函数,在C语言中,字符串是…

【Redis基础1】——使用场景-缓存穿透

目录 1-引言:初始缓存穿透1-1 缓存穿透是什么?(What)1-2 缓存穿透是怎么造成的?(Why) 2- 核心:如何避免缓存穿透(How)2-1 方案1:缓存空数据2-2 方案2:布隆过滤器2-2-1 布隆过滤器原理…

计算机毕业设计Hive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习 PySpark

步骤: 1.Python采集深圳政府公开数据平台的共享单车数据(最大可采集上亿2017-2021数据),并用百度逆地理编码服务解析经纬度获取位置信息。并将数据上传hdfs; 2.可使用sklearn、卷积神经网络等算法对数据进行分析,对共享单车的订单…

树链剖分学习

1.算法适用:维护树上一段或者某个点的子树权值和,同时支持树上路径大小修改,子树修改 2.实现:将树剖分成一条一条链,重链和轻链。其中,轻链连接非重儿子,重链相反。 3.主体部分: …

Array List 练习(添加手机对象并返回要求的数据)

package ArrayListDemo;import java.util.ArrayList;public class ArrayListDemo7 {public static void main(String[] args) {//1.创建集合对象ArrayList<Phone> list new ArrayList<Phone>();//2.创建手机对象Phone ph1 new Phone("小米",1000);Pho…

06-07 - 文件系统(下)

---- 整理自 王利涛老师 课程 实验环境&#xff1a;宅学部落 www.zhaixue.cc 文章目录 15. 根文件系统15.1 根文件系统的基本概念15.2 挂载根文件系统的三种方式15.3 根文件系统的挂载15.3.1 rootfs 文件系统的概念15.3.2 root 参数分析15.3.3 根目录“ / ” 16. 使用 initrd 作…

智能家居:‌未来生活的崭新篇章

随着科技的飞速发展&#xff0c;‌智能家居正逐渐从概念走向现实&#xff0c;‌为我们的日常生活带来前所未有的便捷与舒适。‌智能家居&#xff0c;‌简而言之&#xff0c;‌就是利用先进的物联网技术、‌人工智能、‌大数据分析等&#xff0c;‌将家中的各种设备连接起来&…

text token通过cross attention来编辑图片

https://zhuanlan.zhihu.com/p/645249016https://zhuanlan.zhihu.com/p/645249016diffusers中的cross-attention实现_diffusers.models.attention.crossattention-CSDN博客文章浏览阅读71次。在models/unets/unet_2d_condition.py中,如何在Unet中将原注意力类替换,Unet中的at…

笔记:Echarts柱状图 实现滚轮条 数据太多

效果&#x1f447;&#x1f447;&#x1f447; 配置&#xff1a;&#x1f447; let option {dataZoom: [{type: "slider",show: true,zoomLock: true,start: 0,end: 20,bottom: 60,height: 10,textStyle: {color: "transparent",fontSize: 9,},fillerColo…

WEB应用服务器 -- Tomcat详解及案例实现

一、Web前端三大核心技术 1.1 HTML HTML&#xff08;HyperText Markup Language&#xff09;超文本标记语言&#xff0c;它不同于一般的编程语言。超文本即超出纯文本的范畴&#xff0c;例如&#xff1a;描述文本颜色、大小、字体等信息&#xff0c;或使用图片、音频、视频等…

Linux 操作系统全览:从文件管理到系统状态掌控

在当今的计算机技术领域&#xff0c;Linux 操作系统以其稳定性、安全性和高度的可定制性而备受青睐。本文将深入探讨 Linux 操作系统的多个重要方面&#xff0c;包括文件管理、文本操作、软件安装、用户和权限管理以及网络和系统状态管理。 一、Linux 文件管理 Linux 的文件系…

哈工深、NUS等联合提出全新信息抽取基准任务:细粒度定位的统一多模态信息抽取...

信息抽取是 NLP 领域长久以来最经典的研究方向之一。信息抽取的研究经历过了多模态抽取阶段&#xff0c;以及大一统的抽取阶段。在大语言模型和多模态时代&#xff0c;信息抽取的发展何去何从&#xff0c;目前社区仍在积极探索中。 近期&#xff0c;由哈工深和新加坡国立大学等…

131-横向移动-Kerberos攻击SPN扫描WinRMWinRSRDP

1、RDP协议 Remote Desktop Protocol 远程桌面协议通常开放3389 &#xff0c;Windows上面使用mstsc就可以弹出最常见的远程桌面连接方式&#xff0c;一般都是使用明文进行连接其实还可以使用hash进行 在内网中使用RDP协议一般是需要进行代理转发或者建立节点的 端口扫描 shel…

实现AOP机制 + Spring总结

文章目录 1.目录2.SmartAnimal.java 接口&#xff08;JDK代理必须有接口&#xff09;3.SmartDog.java4.SmartAnimalAspect.java5.SunSpringApplicationContext.java1.在Bean的后置处理器之后使用动态代理2.完整代码 6.测试1.AppMain.java 调用被代理的类的方法2.结果 7.Spring底…

维特——六九轴陀螺仪传感器代码的移植方法

使用的是如图所示的这款陀螺仪&#xff0c;相比MPU6050&#xff0c;它可以做到Z轴不漂的效果。 官方给的代码是使用两个串口&#xff0c;一个用来和上位机通信&#xff0c;一个用来于该模块通信。在实际使用中&#xff0c;我们只需要单片机和该模块通信即可&#xff0c;所以我…

Centos安装Jenkins教程详解版(JDK8+Jenkins2.346.1)

本教程基于 JDK8 和 Jenkins2.346.1 JDK安装 下载OpenJDK8文件 wget https://mirrors.tuna.tsinghua.edu.cn/Adoptium/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u422b05.tar.gz解压到指定目录 # 创建目录 mkdir -p /usr/local/software# 解压文件到指定目录&#…

uniapp点击预览图片,两种效果

背景&#xff1a; 在使用uniapp框架中&#xff0c;我们对图片的展示需要点击放大展示(单张)&#xff1b;如果是多张图片&#xff0c;要支持左右滑动查看多张图片(多张)。 官网链接&#xff1a;点击跳转官网 一、单张&#xff0c;点击放大 代码&#xff1a; <template> …

Spring模块详解Ⅲ(Spring Expression Language (SPEL)和Spring JDBC)

目录 Spring Expression Language&#xff08;SpEL&#xff09;Spring Context 模块详解1. 什么是 Spring Context?2. ApplicationContext 的主要实现3. 国际化支持国际化消息文件使用 MessageSourceXML 配置&#xff1a;Java 配置&#xff1a; 使用国际化消息&#xff1a; 4.…

SwapPrompt(论文解读): Test-Time Prompt Adaptation for Vision-Language Models

2023(Neural IPS) 摘要 测试自适应 &#xff08;TTA&#xff09; 是无监督域自适应&#xff08;UDA&#xff09;中一种特殊且实用的设置&#xff0c;它允许源域中的预训练模型去适应另一个目标域中的未标记测试数据。为了避免计算密集型的骨干网络微调过程&#xff0c;因此利…

【技巧】-DNSlog外带文件

❤️博客主页&#xff1a; iknow181 &#x1f525;系列专栏&#xff1a; 网络安全、 Python、JavaSE、JavaWeb、CCNP &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐评论✍ 1.什么是DNSlog 我们都知道DNS就是将域名解析为ip&#xff0c;用户在浏览器上输入一个域名A.com&#x…