自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 使用2-opt改进模拟退火算法找到TSP最优解

2-opt 是一种局部搜索算法,通过移除两条边并重新连接路径来生成候选解。这种操作可以快速消除路径中的交叉边或不必要的绕路,显著减少路径长度。相比于完全随机生成路径,2-opt 能够生成更高质量的候选解。

2025-03-27 19:58:05 228

原创 模拟退火算法实现TSP问题最优解

模拟退火算法通过模拟这一过程,允许暂时接受较差的解,以避免陷入局部最优,从而更有可能找到全局最优解。- 若 ( Delta E ≥ 0 \)(更差),以概率 P=e的(-Delta E/T)冷却率(`cooling_rate=0.995`):降温速度过快,全局搜索时间不足。迭代次数(`iterations=10000`):对于48城市问题,迭代次数不足。初始温度(`temp=1000`):可能过低,导致早期无法充分探索解空间。提高初始温度(如 `temp=1e5`),确保高温阶段能接受更多差解。

2025-03-07 09:25:23 184

原创 32单片机之串行通信接口SPI

如图所示,当时钟线SS从高电频到低电平表示传输的开始,SCK先进行上升沿 ,主机数据通过MOSI移出,从机同理,当SCK进行下降沿数据移入进行交换。主设备负责控制时钟信号,从设备根据主设备的时钟进行数据传输。SS/CS(Slave Select/Chip Select):从设备选择线,主设备通过拉低该引脚来选择特定的从设备。MOSI(Master Out Slave In):主设备输出,从设备输入的数据线。MISO(Master In Slave Out):主设备输入,从设备输出的数据线。

2025-03-02 22:29:50 259

原创 32单片机之IIC

在 OLED 屏幕的第二行第一列显示加速度计 X 轴的数据 AX,宽度为 5 个字符。在 OLED 屏幕的第三行第一列显示加速度计 Y 轴的数据 AY,宽度为 5 个字符。在 OLED 屏幕的第四行第一列显示加速度计 Z 轴的数据 AZ,宽度为 5 个字符。在 OLED 屏幕的第二行第八列显示陀螺仪 X 轴的数据 GX,宽度为 5 个字符。在 OLED 屏幕的第三行第八列显示陀螺仪 Y 轴的数据 GY,宽度为 5 个字符。在 OLED 屏幕的第四行第八列显示陀螺仪 Z 轴的数据 GZ,宽度为 5 个字符。

2025-02-27 22:07:46 842

原创 51单片机4-1静态数码管显示

通过ABC接口端控制数码管,使用 switch 语句控制 P2 的特定位(P2_4、P2_3、P2_2),以选择不同的数码管。这是一个数组,用于存储每个数字(0-9)对应的数码管段码。每个元素表示一个数字在共阴极数码管上的点亮模式。从而实现数码管的显示。如图所示如果要显示数字六就是AFEDCG要点亮,对应的编码就是1011 1110。数码管是常见的显示器,以下是数码管的结构示意。d多块的数码管结构如下。完整的代码模块如图所示。

2025-02-26 10:21:21 150

原创 51单片机系列之独立按键控制LED状态

执行 P2_0 = ~P2_0,将 P2.0 引脚的值取反。例如,如果 P2.0 原本为高电平(1),则变为低电平(0),反之亦然。检测按钮按下:通过 if(P3_1 == 0) 判断 P3.1 引脚是否为低电平(表示按钮按下)。:通过 while(P3_1 == 0) 等待按钮释放(即 P3.1 回到高电平)。为了消除这种抖动的影响,通常会在软件中加入延迟来过滤掉这些短暂的波动。:调用 Delay(20),等待 20ms,以过滤掉按钮按下的抖动。:再次调用 Delay(20),过滤掉按钮释放时的抖动。

2025-02-24 15:14:55 160

原创 51单片机之独立按键实现LED闪烁

因为独立按键模块对应的K1接口P31在单片机核心是对应P3.1所以P3_1==0就表示 松手,LED不亮,反之则说明LED亮使用条件语句控制亮灭。之前说到点亮一个LED是P2=0xFE(这个是操作八个为一组的寄存器)如果是之操作一个LED就是P2_0=0(点亮就是P2_0=1);前文都是使用延迟来控制LED闪烁,本文引入一个新知识点——独立按键实现LED闪烁。以下是元器件的原理图。

2025-02-19 11:10:37 198

原创 51单片机之流水灯

要进行流水灯闪烁就要实现八个灯的闪烁,这里要求熟记进制转换。

2025-02-18 15:48:01 200

原创 51单片机之LED闪烁

延迟模块代码的获取:首先打开stc-isp,然后打开软件延时计算器,设定500毫秒,12.000MHz,STC-Y1指令集就可以获得代码,将延迟代码添加到主模块。注意:_nop_():这是一个空操作指令,通常用于精确控制延迟时间。要添加头文件#include <INTRINS.H>//nop。前一章说到亮灯是0xFE灭就是0xFF(1111 1111)使用一个while循环实现闪烁功能。前面一章说了如何实现LED点亮,那么要实现LED闪烁要增加一个延迟功能。

2025-02-18 11:16:23 109

原创 51单片机2-1点灯

当单片机将该引脚设置为低电平(0)时,电流从电源流向 LED 再流向单片机的引脚,形成闭合回路,LED 点亮。当单片机将该引脚设置为高电平(1)时,没有电流流动,LED 不亮。因此P2端接口应该是1111 1110二进制转换为十六进制0xFE。#include <REGX52.H>是头文件,为什么P2=0xFE可以实现点灯那就要从单片机构造说起。代码是一个简单的单片机程序,目标是设置 P2 端口的值为 0xFE(二进制 1111 1110)。

2025-02-18 10:12:37 202

原创 C++数据结构学习之选择排序

所谓选择排序就是先定义第一项为最小值,随后遍历后面的数据,要是遍历完发现有数据比最小值小则交换两者位置,实现数据排序。(2)内层循环从当前元素之后开始搜索,寻找比当前假设的最小值更小的元素,并更新最小值的位置。(3)每次内层循环结束后,使用swap函数将找到的最小值与未排序部分的第一个元素交换位置。(1)外层循环遍历每个元素,假设当前元素是最小值的位置。选择排序的时间复杂度为 O(n^2),空间复杂度1。(4)重复上述过程直到整个向量有序。以下是选择排序的主题函数。

2025-01-26 10:59:08 129

原创 C++学习数据结构之冒泡排序

冒泡排序就是从第一项20开始与后一项40进行数值比较,要是比后一项40小则保持不变到第二项40与后一项30比较,当他比后一项大则交换顺序,可以看到当实现一次冒泡排序最后一项肯定是最大值,如此类堆,实现数值排序。冒泡排序的基本思想是重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就交换它们的位置。走访数列的工作是重复进行直到没有需要交换的元素为止。如果在外层循环的某次迭代结束时flag仍然为true,意味着在这次遍历中没有发生任何交换,因此可以提前终止排序过程,因为这表明数组已经是有序的了。

2025-01-25 20:42:01 349

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除