基于单片机的老人防丢系统设计

目 录

摘 要 I
Abstract II
引 言 3
1 系统总体架构 6
1.1方案设计与选择 6
1.2 系统架构设计 6
1.3 系统器件选择 7
2 系统硬件设计 9
2.1 单片机外围电路设计 9
2.2 LCD1602液晶显示电路设计 12
2.3 短信模块电路设计 14
2.4 GPS模块电路设计 14
2.5 电源与按键控制电路设计 15
3 系统软件流程设计 16
3.1 系统总体流程 16
3.2 GPS模块通信子程序设计 17
3.3 液晶显示子程序设计 17
3.4 按键子程序设计 19
3.5 SIM900A模块通信子程序设计 20
4 系统验证 21
4.1 焊接与调试 21
4.2 程序烧录与调试 22
4.3 系统调试 22
结 论 24
参考文献 26
附录1 元器件清单 28
附录2 源程序清单 29
致 谢 34

摘 要

目前世界上关于老年人的服务还较少,老年人服务制度以及职位人才培养并不到位,经常会出现老人走丢的情况,老年人外出的安全就成了很大的问题。为了解决老年人外出过程的安全问题,本论文的设计是一款基于单片机的老人防丢系统,首先是通过GPS模块采集老人所在地的经纬度信息,由单片机对信息进行收集处理,并通过LCD1602液晶进行实时显示,当系统按键按下的时候,通过短信模块将经纬度信息发送到手机上。
结合系统的功能,完成了单片机外围电路的设计,LCD1602液晶显示外围电路设计,短信模块外围电路设计,GPS模块外围电路设计,电源与按键控制电路设计。在电路设计的基础上,进行了相关程序设计,实现单片机与GPS模块之间的数据通信,实现了数据与工作状态在液晶显示器上实时显示,在按键按下的时候,系统能够进行按键识别,并通过短信模块发送位置信息。最后进行了电路板的焊接与调试,完成了程序的烧录和调试。
经过实践验证,结果表明基于单片机的老人防丢系统在遇到老人们记忆力差,小孩子没有行动能力,故容易迷路和走失时,系统会发送位置信息给家属,家属收到短信后就可以快速找到老人或小孩。能够有效的保证老人孩子的安全。

关键词:定位; 单片机; LCD; GPS

Abstract

Services for the elderly is seldom in the world. The service system for the elderly and the training of position talents are not in place. The situation of the elderly leaving and losing often occurs. The safety of the elderly going out has become a big problem. In order to solve the safety problem of the elderly in the process of going out, the design of this paper is a kind of anti losing system for the elderly based on single-chip microcomputer. Firstly, the longitude and latitude information of the elderly’s location is collected by GPS module, collected and processed by single-chip microcomputer, and displayed in real time by LCD1602. When the system button is pressed, the longitude and latitude information is sent to hand by SMS module On board.
Combined with the function of the system, the peripheral circuit design of single chip microcomputer, LCD1602, SMS module, GPS module, power supply and key control circuit are completed. On the basis of the circuit design, the relevant program design is carried out to realize the data communication between the single chip microcomputer and the GPS module, realize the real-time display of data and working status on the LCD, when the key is pressed, the system can recognize the key and send the position information through the short message module. Finally, the welding and debugging of the circuit board are carried out, and the program burning and debugging are completed.
After practice, the result shows that when the old people’s memory is poor and the children have no ability to move, the system will send location information to the family members when they are easily lost and lost, and the family members can quickly find the old people or children after receiving the message. Can effectively ensure the safety of the elderly and children.

Keywords: fixed position; MCU;GPS ; LCD

引 言

目前世界上关于老年人的服务还较少,老年人服务制度以及职位人才培养并不到位,依据相关数据报告,中国现有老年痴呆患者500万人之多,占世界总病例数的四分之一,同时该数据还在以每年大概30万的速度增加,他们的安全就成了很大的问题。
中国政府依据我们目前的国情,对人口老龄化问题高度重视,老龄事业也因此得到长足的发展。目前,一个政府主导、社会参与、全民关怀的发展老龄事业的工作格局已经形成。国家成立了全国老龄工作委员会,确定了老龄工作的目标、任务和基本政策;颁布了《中华人民共和国老年人权益保障法》,制定了《中国老龄事业发展"十五"计划纲要》,把老龄事业明确纳入了经济社会发展的总体规划和可持续发展战略。针对老年人而产生的一些保障产品将会有着巨大的发展空间。
针对防止老年人走丢的问题,国内外也进行了一部分研究,主要是结合GPS技术,GPS是全球定位系统系统,实现了任意观测点在任何时间段都能被4个卫星所检测到,从而采集到该点的经纬度和高度信息,基与GPS强大的定位功能,被广泛的应用导航、定位和授时等方面,用来引导飞机、车辆、行人和船,沿着准确、安全的路线行进,最终到达终点。通过此技术最大的功能就是防止老人或走丢走失,还可以放在汽车里,通过此技术,我们可以随时掌握老人所在的地点、时间等信息。
在《位置实时寻踪的防走丢胸牌设计》[1]文中设计的一种能够实时定位的胸牌,在胸牌内加入定位芯片,可以获取用户位置以及移动轨迹,胸牌中还配置了生物、运动等传感器,能够对老年人的运动步数,身体血压和心率等进行实时监测,虽然其便于携带和使用,但是还存在一些问题,首先是由于胸牌尺寸的限制,其使用的电源受到限制,所以电量不能够得到保证,不能保证在老人外出的时间段中始终有电;第二个是其缺少必要的显示及报警功能,不能让使用者直观感受到目前所处的位置,也不能在使用者出现意外或者走丢的时候实时通知其家人。
《基于STC89C51单片机的智能鞋的设计与开发》[2]本文是在鞋内嵌入硬件系统,获取穿戴者的GPS信息,将数据定时发送到用户的手机APP。该系统虽然可以定时发送使用者的信息到特定的手机,但不能保证在老年人出现情况的第一时间就完成信息的发送,同时由于产品是一款智能鞋,其不够小巧轻便,可能不能适应大部分老年人的喜好,不能保证老年人每次外出均能够穿上这种鞋子,因此,其使用范围和效果有待观察[3]。
本论文的设计是一款基于单片机的老人防丢系统,系统以STC89C52单片机作为中央处理器,使用GPS模块来采集数据并将数据发送给单片机,单片机对所得到的数据信息进行接收并提取,然后根据定位计算公式得出当前位置的经纬度信息和时间信息。
计算得到的位置信息送交给LCD液晶进行实时显示。在老人迷路或出现意外的时候,为了及时让使用者的亲友可以知道使用者的位置,通过SIM900A模块发送短信到设定的手机号上,将检测到的经纬度和时间信息展示在短信上。
在对于老年智能走丢防控系统的研究领域中,欧美等西方国家一直处于遥遥领先的地位,在美国我们可以在商场或者超市买到各种各样的防走丢系统,在欧洲许多国家,每家用户上也可以去上门订购智能控制产品,包括学生的也可以为家里成员订购国外的,GPS定位系统也是非常完善的,且历史悠久,性能可靠,产品高档,功能齐全,也是根据国际标准所制作,但是价格会稍微高一些,需要专业的技术安装与维护,很多普通消费者望而却步。在欧洲,美国日本等韩国家,对于老人防丢智能控制系统已经在销量上超过中国10年以上,且市场率占有非常高,并且他们的生产技术比国内大部分的生产控制智能产品公司都要高表现突出的品牌影响和技术能力非常的多[4]。但这些品牌对于普通百姓却是望而却步的,他们主要还是针对一些高端的市场综上所述整体的智能技术在许多发达国家已经非常成熟,但是价格比较高,安装复杂,维护起来不太方便,因此我们为了解决这些缺点,让技术更得到全世界的普及。我国对这项领域的研究虽然起步较晚,但整体对于产品的实用性强,价格机制的特点做出了具体的把控,符合国人现阶段的消费水平,产品外观有待提高,但是由于各厂家没有统一的生产标准,产品的质量难以达标,专业服务的能力有限,缺乏品牌的影响力[5]。我国的智能控制系统研究水平与欧美日韩等发达国家还有很大的差距,现有的产品可靠性不高,安装不方便,自动化控制水平低,根据这些实际情况开发出适合我国使用的智能控制器,应成为现代社会发展的当务之急。
本次设计的意义是为了解决当前社会上一些老人和小孩在户外容易迷路和走失这一严重的问题,老人们记忆力差,小孩子没有行动能力,故容易迷路和走失,这时候只要发送位置信息给家属,家属收到短信后就可以快速找到老人或小孩。通过对单片机和GPS模块的研究,可以更好地理解GPS定位装置的工作原理和实现方法,改进现有的GPS定位装置的一些问题,促进产品更好地发展。

1 系统总体架构

1.1方案设计与选择
基于单片机的老人防走丢系统主要目的是为了告知老人或其家属老人目前所处的位置,在老人迷路的时候,确保家属在第一时间能找到老人,避免意外发生。
针对上述需求,初步设计了两种方案,方案一是依托GPS模块获取老人的位置,再通过配置运动传感器实现对老人的计步监测等功能,为了使老人亲友能够知道老人的位置,可以通过网络将信息更新到使用者的手机APP上。
第二种方案是以单片机为处理器,对GPS定位信息进行接收处理,可以在系统液晶显示屏上实时看到自己所处的位置以及当前时间。系统中预留了一个使用者亲友的手机号,在使用者需要亲友帮助的时候可以按一下系统上的开关按键,即可发送一条包含自己所处位置的经纬度信息给自己的亲友,这样亲友就能迅速的得到使用者的位置信息,并迅速赶到使用者所处的位置,由此避免老人走丢。
对上述两种方案进行对比,首先是从系统复杂度上进行考虑,方案一中需要添加一些传感器,这必然会增加系统硬件的设计复杂度,对这些数据进行处理又会增加软件复杂度;其次我们从实现及使用上来讲,通过短信的形式给亲友发送短信,要比通过网络更新数据更为可靠,因为按键操作对老人来说相对比较容易。
1.2 系统架构设计
如图1.1所示为基于单片机的老人防丢系统的系统架构框图,系统以STC89C52单片机作为中央处理器,使用GPS模块来采集数据并将数据发送给单片机,单片机对所得到的数据信息进行接收并提取,然后根据定位计算公式得出当前位置的经纬度信息和时间信息。计算得到的位置信息送交给LCD液晶进行实时显示。为了让使用者的亲友可以知道使用者的位置,通过SIM900A模块发送短信到设定的手机号上,将检测到的经纬度和时间信息展示在短信上[6]。
1、电路供电部分:整个电路基本工作电压为5V,单片机烧写程序可通过TTL线进行串行下载。这一点比AT的单片机要好,因为AT单片机是不支持串行下载的,需要通过专门的下载器进行下载。
2、人机交互:通过SIM900A模块,将单片机和手机进行短信通信,手机上可以显示采集到的时间和经纬度信息。单片机通过串口发送相应的命令到SIM900A模块,SIM900A模块发送短信到代码中设定好的手机号上,短信内容为“当前用户所在位置的经度为:xxx,纬度为:xxx,时间为:xxx”[7]。
3、信号处理:以STC89C52单片机为处理器,对GPS模块得到的数据进行收集以及分析运算。最后将处理后得到的经纬度和时间信息送交给LCD液晶进行实时显示。
4、数据采集:基于单片机的老人防丢系统首先需要得到老人所处的位置信息,通过GPS接收模块,获取定位信息,让后送交给单片机进行数据处理。
5、数据展示:为了便于使用者能知道自己的位置和当前时间,单片机对数据进行处理以后,送交给LCD1602液晶显示屏,对得到的当前测试地的经纬度及时间的信息进行显示,同时在系统过程中,显示“GPS扫描”、“短信发送中”、“发送成功”等状态,便于用户使用。如图1.1所示为基于单片机的老人防丢系统架构。
在这里插入图片描述

图1.1 基于单片机的老人防丢系统架构
1.3 系统器件选择
结合上文的系统需求分析,为了采集GPS定位数据,在基于单片机的老人防走丢系统中使用GPS模块来进行位置信息采集,并将数据发送给单片机。
整个系统的运行都依靠单片机来进行操控,不同的单片机类型功能也不一样,经过仔细考虑和结合实际情况,采用的是8052内核的STC89C52单片机。因为此程序的代码不是十分的繁多,所以为了节约成本没有采用比较复杂成本比较昂贵的STM32或者是MSP430等单片机。而去采用528kb的内存单片机。
显示部分用LCD1602液晶来显示当前的信息,相比于传统的数码管显示, LCD1602显示的字符量更多,弥补信息量比较少,显示内容有限的缺陷,它可以显示文字、数字还可以显示特殊的符号。同时其屏幕亮度也可以适当调节,既可以节约资源,又适宜老年人使用[8]。
最后单片机需要将采集到观测点的经纬度信息和时间信息通过短信的方式发送给手机,这里就需要使用SIM900A模块。

2 系统硬件设计

结合第一章的系统需求分析以及器件选型,我们首先需要结合对基于单片机的老人防丢系统中的各个模块的硬件电路完成设计。
2.1 单片机外围电路设计
单片机是一块硅片上集成了微处理器、存储器和输入输出接口的芯片,可以通过控制者编程实现很多功能,比如对各种传感器和外设进行控制,对外部输入的数据和信号进行收集计算,并进行相应的操作,是工业生产中的大脑。以STC89C52单片机是基于单片机的老人防丢系统中的核心,围绕其需要展开很多电路实现系统中的相关功能,我们首先需要完成对单片机外围系统的设计。
2.1.1 STC89C52单片机介绍
STC89C52单片机有32个I/O口可以连接更多的外设和传感器,8K字节的FLASH存储器可以进行更多的计算缓存,521字节的RAM大大提高的反应速度。STC89C52单片机的烧录也非常简单,通过TX和RX口,采用对应的编译器就可以将程序烧录进去。
在这里插入图片描述

图2.1 STC89C52单片机封装引脚
如图2.1所示为STC89C52单片机封装引脚,完成设计之前首先需要对管脚进行了解。以下分别作简要介绍
VCC:供电电压。
GND:接地。
P0、P1、P2、P3:I/O引脚,可以在本次设计中作为输入输出端口,用以接收GPS的位置信息或者向LCD液晶输出信息等。
P3口特殊功能口,具体如下表所示:
RXD即可在本系统中用以接收GPS传来的位置信息,TXD即可在本系统中用向短信模块发送位置信息。

表2-1 P3口的第二功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
/PSEN:外部程序存储器的选通信号。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。

2.1.2 STC89C52单片机外围电路设计
根据第一章对基于单片机的老人防丢系统需求分析,结合单片机所完成的具体工作以及单片机的管脚介绍,最终总结单片机外围电路需要进行几个方面的设计:
(1)单片机供电部分:
在设计过程中,为保证防丢系统单片机正常运作,首先根据芯片数据手册中的管脚定义,完成对单片机的供电设计。
(2)单片机外部晶振:
本次设计中单片机需要与GPS模块之间进行串行口通信,故需要接入外部晶振。单片机使用外部的12MHz晶振,使用外部晶振的时候,19号管脚可以悬空,本次设计让其接地。
(3)单片机与短信模块的通信,通知短信模块发送:
依据系统设计,在外部开关按键按下的时候,单片机需要将当前解算好的位置、时间信息送交给短信模块,并由其发送给设定好的手机上,芯片的10管脚(P3.0)和11管脚(P3.1)是标准的I/O 口,同时10管脚也可作为串口1数据的接收端,11管脚也可作为串口1数据的发送端。将11管脚作为TXD连接到短信模块的3管脚RXD[9]。
(4)单片机与GPS模块间的串口通讯,进行数据的采样以及分析运算:
本次设计中利用前文提到的串口来与GPS模块之间实现数据通信,将10管脚作为RXD连接到GPS模块的2管脚TXD;将已计算好的当前数据信息送交给LCD1602液晶显示屏显示;
(5)对开关进行响应,即当开关按下通知发送短信:
依据设计需要,系统在外部开关键K1按下的时候,将会发送短信到设定的手机号上。在设计中将开关一端接在单片机的P1.0口,另外一端接地,这样在通常情况下P1.0不是低电平。通过对单片机的P1.0口的高低电平进行判断,即可知道外部开关按键是否按下,如果P1.0口为低电平则表示开关按下,需要将当前的信息发送给短信模块[10]。
(6)控制LCD1602进行信息显示:
本次设计中,需要显示的相关数据由P0.0口~P0.7口这个8个端口送交给LCD液晶显示,由于单片机的P0口没有上拉电阻,是高阻状态,不能正常输出高电平,因此我们在设计中将P0口与LCD液晶数据端口相连接时外接一个10k 的排阻;同时依据液晶显示的数据手册,对液晶显示进行操作还需要涉及三个控制管脚,分别是LCD1602的"使能"、“读写选择"和"数据/命令选择”,因此在单片机需要给出三个控制信号,控制信号的端口为P2.5,P2.6和P2.7三个端口[11]。
(7)读取内部存储器:
依据芯片的数据手册,单片机的31管脚在接高电平时,单片机使用内部存储器。结合上一节介绍系统中所使用的STC89C52单片机有内部ROM,因此在本次设计中,将该管脚一只接高电平。
最终,如图2.2即为基于单片机的老人防丢系统中STC89C52单片机外部电路。
在这里插入图片描述

图2.2 STC89C52单片机外部电路设计

2.2 LCD1602液晶显示电路设计
2.2.1LCD1602液晶显示器介绍
本次设计采用LCD1602液晶显示器作为输出显示器,LCD1602液晶屏显示利用液晶的特性,通过改变电压达到控制区域显示,最终显示出想要的图形或者数字。显示容量个字符;工作电压;工作电流;字符尺寸[12]。
2.2.2 LCD1602液晶外围电路设计
本次设计LCD1602液晶显示屏上展示系统设备的经纬度和时间,上面显示测得的经度和纬度,下面显示该区时间。LCD1602液晶显示外围电路设计分为以下几个部分。
  (1)液晶供电部分:
结合LCD1602液晶显示的数据手册,为了在基于单片机的老人防丢系统中使的液晶正常工作,需要完成供电设计。
  (2)与单片机之间的通信:
根据图4中的接口定义,我们可以知道,LCD1602液晶的7到14号管脚是其数据口(),在基于单片机的老人防丢系统中,数据口仅需要执行输入功能,液晶需要通过这个8个数据口从单片机接收已经解算好的时间、位置信息,同时还需要根据单片机指示显示“GPS扫描”、“短信发送中”、“发送成功”等状态。在设计中将这8个数据口和单片机的P0口进行连接,结合上文对P0口的介绍,这中间要加一个上拉电阻进行连接[13]。
为了保证与单片机的通讯,还有三个控制管脚。依据数据手册,LCD1602液晶的6管脚为使能端口,在数据传输的时候,高电平有效,连接单片机的P2.5口;5管脚为读写选择端,将其连接到单片机的P2.6口,接受单片机给出的控制信号;4管脚为数据/命令选择端,连接单片机的P2.7口。
  (3)液晶显示的对比度调节:
依据数据手册,LCD1602液晶的3管脚是调节显示对比度的端口,考虑到老人年群体对显示屏亮度比较敏感或者有不同喜好,在电路设计中,将该端口外接一个10K的电位器,系统的使用者可对显示对比度的调节。
最终,如图2.3即为基于单片机的老人防丢系统中LCD液晶外部电路。
在这里插入图片描述

图2.3 LCD1602液晶显示电路图

2.3 短信模块电路设计
基于单片机的老人防丢系统中,STC89C52单片机将GPS模块采集到的数据进行解算,得到老人所处位置以及时间,通过SIM800通信模块发送到设定的手机号上,发送的内容为:"当前位置的经度为:xxx;纬度为:xxx ;时间为:xxx 。
本设计采用的通信模块为,此模块具有体积小,价格便宜,发送短信时间快等特点。被广泛的运用在通信设置中。
一般该模块接上电以及串口后即可正常工作,故该模块的1口接地,5口接电源正极,3口接收单片机传出的信息,在本次设计的系统中,不需要收功能,因此只接如图所示三个管脚即可正常工作[14]。最终短信模块电路原理图如图2.4所示。
在这里插入图片描述

图2.4短信模块电路图
2.4 GPS模块电路设计
本次基于单片机的老人防丢系统中,GPS模块所使用的vkel型,可以与外部以串口通信实现数据传输。本次设计中只需要用到三个管脚,图2.5为GPS模块的电路图:2管脚和5管脚分别接电源正和地,3端口通过串口输出采集到的数据信息送交个单片机。
在这里插入图片描述

图2.5 GPS模块电路
2.5 电源与按键控制电路设计
对基于单片机的老人防丢系统的供电设计只需要对各个子部分进行供电需求分析,结合相关器件的数据手册,在子部分中,单片机、LCD液晶、GPS模块等其正常工作的电压均为5V。
因此电源模块包括一个3脚的电源座子和6脚的电源开关。电源座子用于连接外部的电源插头,电源开关用于控制整个单片机的电路开和关。
1口引脚连接到电源开关的3口引脚,电源开关的1、3口引脚和4、6口引脚的作用相同,用于电源的正极输出。本次设计的电源电路如图2.6所示。
在这里插入图片描述

图2.6 电源电路
依据系统的需求,系统在开关按键按下的时候需要对事先预定好的手机号发送短信。在设计中将开关一端接在单片机的P1.0口,另外一端接地,这样通过对单片机的P1.0口的高低电平进行判断,即可知道外部开关按键是否按下,如果P1.0口为低电平则表示开关按下,需要将当前的信息发送给短信模块。按键开关由于其拨动时间,难免产生误差,所以在编写按键函数时,要额外写一个去抖函数,提高精确性[15]。图2.7为按键控制电路原理图。
在这里插入图片描述

图2.7 按键控制电路

3 系统软件流程设计

结合第二章的系统需求分析,在完成了系统电路的设计以后,系统的主要功能还需要通过软件实现,需要进行相关软件流程设计,实现基于单片机的老人防丢系统预定的相关功能。
软件流程设计采用模块化设计的方法,即在程序编写之前,首先结合基于单片机的老人防丢系统硬件电路以及系统需求对程序进行功能模块化,再编写各个模块的程序,模块之间可以通过软件接口衔接,使程序易于编写、调试和修改。程序设计过程中的软件开发环境选用Keil软件。
3.1 系统总体流程
在当整个基于单片机的老人防丢系统运行时,首先是各部分的初始化,要完成包括单片机的中断设置、串口通信设置、LCD液晶初始化等。
当初始化完成后会各个模块开始工作,GPS模块运行,采集观察点到卫星之间的距离,通过引脚串口将数值发送给单片机,单片机根据定位公式,计算出该点所在的经纬度和时间等信息[16]。
单片机将解算好的时间、位置信息送交个LCD1602液晶显示屏进行实时显示。与此同时,单片机将信息有一个发送数组进行存储,并判断系统的开关按键是否按下,当检测到按键按下时,单片机将发送数组的信息以串口的形式送交给短信模块,短信模块将发送给短信到设定的手机号上。
在这里插入图片描述

图3.1 系统程序架构

3.2 GPS模块通信子程序设计
在基于单片机的老人防丢系统中,GPS模块负责将定位,并将采集到的数据送交个单片机进行处理。GPS模块与单片机之间通信的方式是串行口通信,当单片机的串行端口完成对GPS一帧数据的接收后,单片机将会产生一个中断即串行口中断,收到中断后。即需要对接收的GPS数据进行按照定位解算算法进行定位解算,得出机器所在位置的经度、纬度、时间和高度等信息[17]。
单片机解算过程主要是依据格式来完成:
<1> UTC时间
<2>定位状态
<3>纬度
<4>纬度半球N(北半球)或S(南半球)
<5>经度
<6>经度半球E(东经)或W(西经)
<7>地面速率
<8>地面航向
<9> UTC日期
<10>磁偏角
<11>磁偏角方向,E(东)或W(西)
<12>模式指示
按照上述格式,将我们所需要的信息存储到可识别的结构体之中。解析完毕以后,将解析完成标志位置1,作为判断标志,即可进行后续的操作。

3.3 液晶显示子程序设计
在基于单片机的老年人防走丢系统中,单片机需要对LCD1602液晶写入解析好的经纬度、时间等信息,根据单片机指示显示“GPS扫描”、“短信发送中”、“发送成功”等状态。如图3.2为LCD1602子程序流程图:
在这里插入图片描述

图3.2 LCD1602子程序流程图
根据LCD1602的数据手册,在使用LCD1602之前需要进行初始化,初始化需要完成2个工作:一个是显示模式设置,第二个是显示开/关及光标设置。我们需要通过程序为LCD1602写入相关设置指令,如配置芯片16×2显示,8位数据接口,光标设置等完成初始化。
如图所示为LCD1602内部的RAM地址映射图,当我们在图中00到0F以及40到4F这个32个地址写入数据时,液晶都可以直接显示出来,但要写入后面即10到27这些位置的时候,通常是显示字符比较长的情况,需要通过移屏的方式来实现,考虑到系统中需要显示的信息字符数不多,因此我们设置芯片16×2显示[18]。
在这里插入图片描述

图3.3地址映射图
结合图3.3给出的地址映射图,可以知道,我们在写入数据的过程中,如果需要显示在第一行,则其地址是从0X00开始,若需要显示在第二行,则地址从0X40开始。
如图所示为LCD1602写操作时序。
在这里插入图片描述

图3.4LCD1602写操作时序
写入数据需要以下几个步骤:首先需要通过RS信号确定是写数据还是写命令,因为写数据是指显示什么内容,写命令是写入地址这些。
第二步:R/W端口输入一个低电平;
第三步:将数据从单片机的I/O口输送给液晶的数据端口;
第四步:在E端口给一个持续高电平,即可完成写操作。
在工作过程中,还需显示系统目前的工作状态,如开机以后,显示“GPS SCAN”,短信发送的时候显示“SMS SEDN”;发送成功以后显示“SEND OK”。
3.4 按键子程序设计
依据设计需要,系统在外部开关键K1按下的时候,将会发送短信到设定的手机号上。在设计中将开关一端接在单片机的P1.0口,另外一端接地,这样通过对单片机的P1.0口的高低电平进行判断,即可知道外部开关按键是否按下。当我们按下按键时,P1.0口为低电平,需要将当前的信息发送给短信模块。如图为按键子程序流程图:
在这里插入图片描述

图3.5 按键程序流程图
由于开关按键连接到单片机的P1.0口,为了方便操作,我们首先对P1.0口进行声明,即将P1.0端口定义为Key,后续程序中不断的对Key值进行检测判断即可再执行相关的指令。
根据电路设计,理论上在Key值为0时,表明开关被按下,但由于手动按下开关再释放的这个过程有一定的抖动现象,因此我们判断Key值为0以后加上一个去抖操作,通常加上一个10ms的延时即可,延时过后再次对Key值进行判断,如果Key值仍为0,即表明开关按下,单片机需要进行发送短信的相关操作处理。然后判断Key值是否恢复到1,如果为1表明按键被释放,再次回到程序入口,不断检测Key值是否为0,判断开关是否按下,如果Key为0则继续等待[19]。

3.5 SIM900A模块通信子程序设计
单片机将检测到的经纬度和时间信息通过SIM900A通信模块发送到指定的手机上,其工作流程首先开启中断,然后判断是否有串行中断1,若有则进行PDU编码,然后发送对应信息SMS短信到手机上,发送成功就结束,若是发送失败则重新发送,超过3次之后等待一段时间。若没有串行中断1,则判断是否有串行中断2,若存在读取SIM卡,然后数据转码,数据发送到串口,删除短信,结束。

4 系统验证

4.1 焊接与调试
手工焊接是常用的焊接方法,目前,很多工厂在生产中并没有采用原来的焊接方法,但在常见部件的维修和系统测试中,往往采用原来的手工焊接。如果焊接本质上存在问题,将影响整个控制系统的功能实现。手工焊接主要包括以下四个步骤。
(1)第一步开始焊接
清理待焊部位,主要清除油污和灰尘,然后将待焊构件的两角朝一定方向折断。注意不要使部件的引脚相交,这会影响焊接。接下来,让电烙铁头接触待焊部件的引脚,并放上焊锡丝。这里要注意的是,烙铁头不能碰到其他部件的引脚,否则两个部件将被焊接在一起。
(2)第二步给焊接升温
第一步完成后,下一步是加热焊锡丝。主要工作是将加热后的电烙铁放在器件引脚旁边,慢慢熔化焊锡丝。注意电烙铁的温度和加热时间,并根据设备类型做出具体的区别。在焊接过程中,当需要拆卸焊接部件时,也需要对焊接处进行加热。主要操作是先将焊点处的焊锡丝进行修补,使焊点呈圆形,然后用电烙铁对焊点进行加热。在加热过程中,可以直接拆卸部件。此时,必须注意焊接时间,时间过长会将损坏衬垫。
(3)清理焊接面
当第二步完成时,有时会发现焊接不完美,或者担心焊接错误,需要修改。主要有两种情况。一是焊料不足,焊点不圆。这时,焊点需要修理。此时需要注意的是焊料量不能增加,否则很容易与其他引脚连接。二是焊锡太多。此时,可用电烙铁在焊接处来回滑动,用电烙铁将多余的焊锡带走,或用吸锡器吸去焊锡。
(4)检查焊点
当完成以上三步后,最后需要进行整体观察,主要检查焊接点是否圆满、紧固、亮度好以及有没有与其它管脚相连在一起等等。
最终得到的基于单片机的老年人防丢系统实物图如图4.1所示。
在这里插入图片描述

图4.1 系统实物图

4.2 程序烧录与调试
当单片机焊接好之后,将STC89C52单片机和各个模块都插上去,用6节南孚电池进行供电,按下电源开关,如果此时LCD1602液晶显示屏亮,说明没有短路,然后将编写好的程序烧录进单片机,如果烧写成功,则LED1602液晶显示器上会显示“GPS INIT”,表示此时单片机焊接基本没有错误,之后进行功能调试。
将烧录好的单片机重新打开,首先是有SIM900模块构成的初始化界面,此时LCD1602液晶显示器显示“GSM INIT”,当通信模块SIM卡调试好之后,进入主页面,主页面分为两行,上面显示测得的经度和纬度,下面显示该区时间。GPS模块工作时,模块上的LED指示灯亮起,同时可以在LCD1602液晶显示屏上看到对应的经度、纬度和时间[20]。按下按键,单片机通过SIM900A模块发送短信到手机上,可以看到手机接收到短信,同时LCD液晶显示“SEND OK”表示发送完成,在手机上查看短信内容时此时的经度、纬度和时间。至此,所有功能测试完成。

4.3 系统调试
在整体系统上电调试前,大概观察下焊接的系统还存在问题,例如存在很显眼的断裂,正负极接反以及相连、虚焊、等问题,然后用万用表检测一下,电源正负极之间是否短路等严重的电源问题,最终保证系统焊接没有问题。
在搭建调试平台后我们对软件程序进行调试,在程序调试通过后开始验证系统功能是否满足要求,如果功能没有实现或实现不完全,需要继续调试程序,反复进行,直到所有功能都实现为止。

结 论

随着科学技术的飞速发展,GPS将越来越广泛地应用于老年人的防丢系统中。目前,人们可以使用的GPS技术已经非常成熟。未来,它仍然是一个蓬勃发展、前景无限的技术和产业领域。展望未来,作为一种全新的、非常重要的、非常有用的安全工具,老年人防丢体系在家庭安全方面将有很大的发展空间。它将朝着高定位、高精度的方向发展,以满足日益增长的社会需求。
本设计主要是基于STC89C52芯片为核心的老人防丢系统设计,并有GPS处理模块,包括单片机系统、短信发射电路、GPS接收电路、单片机复位电路、单片机时钟电路、LED显示电路、按键控制电路。从系统总体架构、方案设计与选择、系统器件选择、系统架构设计、系统硬件设计、单片机外围电路设计、STC89C52单片机介绍、STC89C52单片机外围电路设计、液晶显示电路设计、液晶显示器介绍、LCD1602液晶外围电路设计、短信模块电路设计、GPS模块电路设计、电源与按键控制电路设计、系统软件流程设计、程序架构 、GPS模块通信子程序设计、液晶显示子程序设计、按键子程序设计、SIM900A模块通信子程序设计、系统验证、焊接与调试、系统调试、程序烧录与调试方面分析讲解。设计的最终结果是使老人防丢系统能够实时的为家人提供老人所在位置,实现短信的发送以及GPS的接收,从而实现利用老人防丢系统找到走势老人。以数字的形式显示具体的经纬度。老人防丢系统的原理是利用短信的发射和GPS接受,家人根据所收短信上的给GPS坐标来找到老人。本次设计的意义是为了解决当前社会上一些老人和小孩在户外容易迷路和走失这一严重的问题,老人们记忆力差,小孩子没有行动能力,故容易迷路和走失,这时候只要发送位置信息给家属,家属收到短信后就可以快速找到老人或小孩。通过对单片机和GPS模块的研究,可以更好地理解GPS定位装置的工作原理和实现方法,改进现有的GPS定位装置的一些问题,促进产品更好地发展。
本文所设计的基于单片机的老人防丢系统设计,其结构简单、体积小、抗干扰性能好,若要满足更高的精度要求,还须进行适当改进。在某些特殊场合的应用中,还要考虑短信和GPS的信号强度。本系统不仅适用于老年人的走失问题,还适用于儿童在商场等公众场合迷失情况,应用范围较广。

参考文献

[1]李佳潞.位置实时寻踪的防走丢胸牌设计[J]. 科技视界, 2017, 000(035):93-94
[2]苏立鑫, 王艺凝, 虞佳敏等.基于STC89C51单片机的智能鞋的设计与开发[J]. 科技风, 2019, 000(005):15
[3]孔德力.基于STC52单片机GSM短信上报GPS经纬度信息的设计[J].南方农机,2019,50(24):130-131
[4]罗晶心.北斗卫星导航系统现状及通信中的应用[C]. 中国卫星导航系统管理办公室学术交流中心.第十一届中国卫星导航年会论文集——S01 卫星导航行业应用.中国卫星导航系统管理办公室学术交流中心:中科北斗汇(北京)科技有限公司,2020:57-61
[5]李振东.GPS Ⅲ发展现状及趋势[C]. 中国卫星导航系统管理办公室学术交流中心.第十一届中国卫星导航年会论文集——S02 导航与位置服务.中国卫星导航系统管理办公室学术交流中心:中科北斗汇(北京)科技有限公司,2020:47-50
[6]冯国良.GSM-R网络在铁路无线通信中的研究[J].自动化技术与应用,2020,39(02):52-54
[7]韩蕾.GSM-R中跨SGSN更新时源SGSN域名解析数据的智能生成方案设计[J].铁路通信信号工程技术,2020,17(02):81-85
[8]蔡聪聪.多系统海上动态精密单点定位性能分析[C]. 中国卫星导航系统管理办公室学术交流中心.第十一届中国卫星导航年会论文集——S05 空间基准与精密定位.中国卫星导航系统管理办公室学术交流中心:中科北斗汇(北京)科技有限公司,2020:87-92
[9]薄亚东.智能手机GNSS原始观测值质量与定位分析[C]. 中国卫星导航系统管理办公室学术交流中心.第十一届中国卫星导航年会论文集——S08 测试评估技术.中国卫星导航系统管理办公室学术交流中心:中科北斗汇(北京)科技有限公司,2020:86-92
[10]黄克亚.高等院校嵌入式系统课程单片机选型比较[J].电子世界.2020(01)
[11]张德宁,程曼,张梦,索雪松.基于Proteus的《单片机原理与应用》实验实践[J].科学技术创新,2017(19):107-108
[12]何立民.单片机应用系统设计[J]. 北京:航天航空大学出版社
[13]胡学海.单片机原理及应用系统设计[M]. 北京: 电子工业出版社,2007:66-156
[14]黄河, 郭纪林.单片机原理及应用[M]. 大连: 大连理工大学出版社,2009
[15]廖常初.PLC编程及应用[M].机械工业出版社,2005
[16]张万忠.抄可编程控制器应用技术[M].北京化学工业出版度社,2001
[17]齐占庆.王振臣.道电气控制技术[M].北京:机械工业出版社,2002
[18]李道霖.电气控制与PLC原理及应用[M].北京: 电子工业出版社,2004
[19]史国生.电气控制与可编程控制器技术[M].北京:化学工业出版社,2003
[20]施仁,刘文江.自动化仪表与过程控制.北京:电子工业出版社,1991

附录1 元器件清单
规格 名称 标号 数量
10uF 电解电容 C1 1
22pF 陶瓷电容 C2, C3 2
12MHZ 晶振 J1 1
KEY1 按键 K1 1
10K 电阻 R1 1
10K 电位器 RT1 1
ST89C52 单片机 U1 1
LCD1602 液晶 U2 1
4.7K 排组 U3 1
SWITCH 开关 U4 1
POW 电源 U5 1
CON2 排针 U10 1
gsm模块 U14 1
GPS gps模块 U21 1

附录2 源程序清单
#include “common.h”#include “uart.h”#include “gps.h”#include “gsm.h”#include “lcd.h”
uchar ess_inc;
sbit key = P1^0;
GPS_INFO GPS; //GPS信息结构体
bit GPS_rx_flag = 0;
#define SEND_NUMBER “AT+CMGS=“15754344981”\r\n”//在此修改手机号码
char xdata send_data[37]=“N: ',E: ',2000-00-00,00:00\r\n”;//短信内容
unsigned char send_len= 0;
bit sendflag=0;//短信发送标志
void GPS_DispTime(void) 显示时间
{
uchar i = 0;
uchar ch;
char time[5];
Int_To_Str(GPS.D.year,time);//年
LCD1602_Set_AC(0, 1);//显示坐标
i = 0;
send_len = 18;
while(time[i] != ‘\0’)//等待字符串处理完
{
ch = time[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;//短信内容信息装载
}
LCD1602_write_data(‘-’);
Int_To_Str(GPS.D.month,time);//月
LCD1602_Set_AC(5, 1);//显示坐标
i = 0;
send_len = 23;
while(time[i] != ‘\0’)//等待字符串处理完
{
ch = time[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;
}
LCD1602_write_data(‘-’);
Int_To_Str(GPS.D.day,time);//日
LCD1602_Set_AC(8, 1);//显示坐标
i = 0;
send_len = 26;
while(time[i] != ‘\0’)//等待字符串处理完
{
ch = time[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;
}
LCD1602_write_data(‘,’);
Int_To_Str(GPS.D.hour,time);//时
LCD1602_Set_AC(11, 1);
i = 0;
send_len = 29;
while(time[i] != ‘\0’)//等待字符串处理完
{
ch = time[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;}
LCD1602_write_data(‘:’);
Int_To_Str(GPS.D.minute,time);//分
LCD1602_Set_AC(14, 1);
i = 0;
send_len = 32;
while(time[i] != ‘\0’)//等待字符串处理完
{ ch = time[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;
}
}
void GPS_DisplayOne(void)
{
uchar len,ch, i;
char info[10];
ess_inc = 0;
if (GPS.NS == ‘N’) //判断是北纬还是南纬
{
LCD1602_DisplayChar(0, 0, ‘N’);//1602显示 N
len = 0;
Int_To_Str(GPS.latitude_Degree,info); //纬度
LCD1602_Set_AC(1, 0);//显示坐标
i = 0;
send_len = 2;
while(info[i] != ‘\0’)//等待字符串处理完
{
ch = info[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;//短信内容信息装载
len ++;
}
send_data[send_len++] = ‘d’;
LCD1602_write_data(0xDF);//显示 d
len ++;
Int_To_Str(GPS.latitude_Cent,info); //纬分
i = 0;
while(info[i] != ‘\0’)//等待字符串处理完
{
ch = info[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;
len ++;
}
LCD1602_write_data(0x27);
Int_To_Str(GPS.latitude_Second,info); //纬秒
i = 0;
while(info[i] != ‘\0’)//等待字符串处理完
{
ch = info[i++];
}
len ++;
while(7 - len)
{
len ++;
LCD1602_write_data(’ ‘);
}
}
ess_inc += 1;
if (GPS.EW == ‘E’) //判断是东经还是西经
{
LCD1602_DisplayChar(8, 0, ‘E’);//显示信息
len = 0;
Int_To_Str(GPS.longitude_Degree,info); //经度
LCD1602_Set_AC(9, 0);//显示坐标
i = 0;
send_len = 11;
while(info[i] != ‘\0’)//等待字符串处理完
{
ch = info[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;
len ++;
}
send_data[send_len++] = ‘d’;
LCD1602_write_data(0xDF);
len ++;
Int_To_Str(GPS.longitude_Cent,info); //经分
i = 0;
while(info[i] != ‘\0’)//等待字符串处理完
{
ch = info[i++];
LCD1602_write_data(ch);//显示信息
send_data[send_len++] = ch;
len ++;
}
LCD1602_write_data(0x27);
Int_To_Str(GPS.longitude_Second,info); //经秒
i = 0;
while(info[i] != ‘\0’)//等待字符串处理完
{ ch = info[i++]; }
len ++;
while(7 - len)
{
len ++;
LCD1602_write_data(’ ');
}
}
GPS_DispTime();
ess_inc += 1;
if(sendflag==1)//发送短信
{
sendflag = 0;
gsm_send_englishmsg(SEND_NUMBER,send_data);//发送位置短信
delay_ms(1000);
delay_ms(1000);
LCD1602_DisplayString(0,0," SEND OK “);
delay_ms(1000);
LCD1602_DisplayString(0,0,” “);
}
}
void main(void)
{
uchar error_num = 0;
GPS_rx_flag = 0;
LCD1602_Initialize();//LCD1602显示屏初始化
uart_init(UART_B9600);//串口初始化
GPS_rx_flag = 1;
//开机显示扫描信号中
LCD1602_DisplayString_Center(0,“GPS SCAN…”);
LCD1602_ClearLine(1);
while(1)
{
if (rev_stop) //如果接收完一行
{
if (GPS_RMC_Parse(RX1_Buffer, &GPS)) //解析GPRMC
{
GPS_DisplayOne(); //显示GPS信息
error_num = 0;//无效次数计数清零
gps_flag = 0;
rev_stop = 0;
}
else
{
error_num++;
if (error_num >= 20) //如果数据无效超过20次
{
error_num = 20;
LCD1602_DisplayString_Center(0,“GPS SCAN…”);
LCD1602_ClearLine(1);
}
gps_flag = 0;
rev_stop = 0;
}
}
if(key == 0)//短信按键按下
{
delay_ms(10);
if(key == 0)
{
while(key == 0);
LCD1602_DisplayString(0,0,” SMS SEND… ");
delay_ms(1000);
sendflag = 1;//开启发送标志
}
}
};
}

致 谢

这次的毕业论文设计总结是在我的指导老师谢莹老师和冯雅丽老师亲切关怀和悉心指导下完成的。从毕业设计选题到设计完成,老师们给予了我耐心指导与细心关怀,有了谢老师和冯老师耐心指导与细心关怀我才不会在设计的过程中迷失方向,失去前进动力。老师们有严肃的科学态度,严谨的治学精神和精益求精的工作作风,这些都是我所需要学习的,感谢两位老师给予了我这样一个学习机会, 谢谢!
感谢与我并肩作战的舍友与同学们,感谢关心我支持我的朋友们,感谢学校领导、老师们,感谢你们给予我的帮助与关怀;感谢城市学院,特别感谢智能工程学院四年来为我提供的良好学习环境,谢谢!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++——字符串、读写文件、结构体、枚举

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的夜间车辆检测系统(深度学习代码+UI界面+训练数据集)

摘要&#xff1a;开发夜间车辆检测系统对于自动驾驶技术具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个夜间车辆检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不同模型间…

力扣坑题:回文排列

bool canPermutePalindrome(char* s){ int arr[128]{0}; for(int x0;x<strlen(s);x) { arr[(s[x])]; } int flag0; for(int i0;i<128;i) {if(arr[i]%2!0){flag;} } if(flag>1) {return false; } return true; }没想到吧&#xff0c;不止26个英文字母

maven一点通

1.maven简介 Maven是一个基于Java的工程构建工具&#xff0c;用于管理和构建项目的依赖关系。它提供了一种标准的项目结构和一组约定&#xff0c;使得项目的开发、构建、部署和文档化更加容易和可靠。 Maven的主要功能包括&#xff1a; 依赖管理&#xff1a;Maven可以自动下载…

海康威视相机SDK二次开发(JAVA语言)

目录 前言客户端创建虚拟相机示例代码保存图片程序运行结果修改需求 二次开发引入外部包对SaveImage.java文件进行修改保存图片saveDataToFile方法选择相机chooseCamera方法主方法 FileUtil类处理过期照片启动类与配置文件application.yml通过实体类读取yml启动类 SaveImage.ja…

【JS逆向学习】猿人学第六题 js混淆 回溯

逆向目标 网址&#xff1a;https://match.yuanrenxue.cn/match/6接口&#xff1a;https://match.yuanrenxue.cn/api/match/6参数&#xff1a;payload(m、q) 逆向过程 老规矩&#xff0c;先来分析网络请求&#xff0c;加密的地方一目了然&#xff0c;没什么可多说的&#xff…

惬意上手Redis

Redis介绍 Redis&#xff08;全称为REmote Dictionary Server&#xff09;是一个开源的、内存中的数据存储结构&#xff0c;主要用作应用程序缓存或快速相应数据库。 REmote Dictionary Server: 有道翻译Redis是“远程字典服务”&#xff0c;远程不过是远程访问&#xff0c;而…

Linux:搭建ntp服务器

我准备两个centos7服务器 一个为主服务器连接着外网&#xff0c;并且搭建了ntp服务给其他主机同步 另外一个没有连接外网&#xff0c;通过第一台设备去同步时间 首先两个服务器都要安装ntp软件 yum -y install ntp 再把他俩的时间都改成别的 左侧的是主服务器&#xff0c;主…

07|链(下):想学“育花”还是“插花”用RouterChain确定客户意图

任务设定 鲜花养护&#xff08;保持花的健康、如何浇水、施肥等&#xff09;鲜花装饰&#xff08;如何搭配花、如何装饰场地等&#xff09; 如果接到的是第一类问题&#xff0c;你要给ChatBot A指示&#xff1b;如果接到第二类的问题&#xff0c;你要给ChatBot B指示。 整体…

数据可信流通,从运维信任到技术信任

信任 共同观点&#xff1a; 信任是涉及交易或交换关系的基础 身份可确认利益可依赖能力有预期行为有后果 数据流通中的不可信风险 内循环&#xff1a;数据持有方在自己的运维安全域内对自己的额数据使用和安全拥有全责外循环&#xff1a;数据要素在离开持有方安全域后&#…

【网络安全】 MSF生成木马教程

本文章仅用于信息安全学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若读者因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与作者无关。 环境准备&#xff1a; 名称系统位数IP攻击机Kali Linux6410.3.0.231客户端Windows 76410.3.0.234…

ACWing--基础算法--贪心(部分题解)

目录 906.区间问题--区间分组 906.区间问题--区间分组 原题&#xff1a; 给定 N 个闭区间 [ai,bi]&#xff0c;请你将这些区间分成若干组&#xff0c;使得每组内部的区间两两之间&#xff08;包括端点&#xff09;没有交集&#xff0c;并使得组数尽可能小。 输出最小组数。 输…

Linux 部署 Samba 服务

一、Ubuntu 部署 Samba 1、安装 Samba # 更新本地软件包列表 sudo apt update# 安装Samba sudo apt install samba# 查看版本 smbd --version2、创建共享文件夹&#xff0c;并配置 Samba 创建需要共享的文件夹&#xff0c;并赋予权限&#xff1a; sudo mkdir /home/test sud…

分布式事务的解决方案--Seata架构

一、Seata的XA模式 二、AT模式原理 三、TCC模式原理 四、MQ分布式事务 异步&#xff0c;非实时&#xff0c;实现最终的一致性。 四、分布式事务的解决方案

VMware下创建虚拟机

Centos7是比较常用的一个Linux发行版本&#xff0c;在国内的使用比例比较高 安装完VMware一定要检查虚拟网卡有没有安装成功&#xff0c;如果没有VMnet1和VMnet8 虚拟机是无法上网的&#xff0c;就需要卸载重启电脑重新安装 控制面板—网络和Internet—网络连接 快捷方式打开&a…

用`ORDER BY RAND()`随机化你的查询结果

[TOC](用ORDER BY RAND()随机化你的查询结果) 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题大全》 《java 专栏》 &#x1f369;惟余辈才疏学浅&#xff0c;临摹之作或有不妥之处&#xff0c;还请读者海涵指正。☕&…

1.中医学习-总论

目录 1.为什么要学中医 2.什么是中医 介绍 中医例子1&#xff1a; 中医例子2: 中医最高境界“大道至简” 中医讲究的是本质 中医核心&#xff1a;阴阳、表里、寒热、虚实 ​编辑医不叩门 3.阴阳 1.一天中的阴阳 2.一年中的阴阳 3.阴阳之间的关系 4.阴阳四季的变化 …

代码随想录算法训练营第二十五天|216.组合总和III,17.电话号码的字母组合

216.组合总和III 题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xff0c;并且每种组合中不存在重复的数字。 说明&#xff1a; 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k 3, n 7 输出: [[1,2,4]] 示例 2: 输入…

3. ElasticSearch搜索技术深入与聚合查询实战

1. ES分词器详解 1.1 基本概念 分词器官方称之为文本分析器&#xff0c;顾名思义&#xff0c;是对文本进行分析处理的一种手段&#xff0c;基本处理逻辑为按照预先制定的分词规则&#xff0c;把原始文档分割成若干更小粒度的词项&#xff0c;粒度大小取决于分词器规则。 1.2 …

Qt学习--继承(并以分文件实现)

基类 & 派生类 一个类可以派生自多个类&#xff0c;这意味着&#xff0c;它可以从多个基类继承数据和函数。定义一个派生类&#xff0c;我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。 总结&#xff1a;简单来说&#xff0c;父类有的&#xff0c;子…