- 博客(121)
- 收藏
- 关注
原创 PID控制
本文介绍了PID控制算法的核心原理及其在智能平衡车中的应用。PID由比例(P)、积分(I)、微分(D)三部分组成,通过数学运算处理误差。文章详细讲解了连续型和绝对式PID公式,并分析了各参数的作用:比例项加快响应但可能引起振荡;积分项消除稳态误差但需限幅;微分项抑制振荡但易受噪声影响。同时介绍了增量式PID和串级PID控制原理,后者通过嵌套PID环增强控制效果。最后以平衡车直立环为例,说明如何通过角度和角速度反馈实现稳定控制。
2025-11-29 22:23:35
1043
1
原创 学生信息管理系统
本文展示了一个基于链表实现的C语言学生成绩管理系统。系统采用模块化设计,包含头文件定义数据结构(学生信息和链表节点)和函数声明,源文件实现具体功能。主要功能包括:1)录入学生信息(学号、姓名、成绩);2)打印所有学生信息;3)统计学生人数;4)按学号查找学生;5)修改学生信息;6)删除学生记录。系统通过菜单驱动界面操作,使用_getch()实现无回车确认的字符输入,并包含基本的错误处理功能。代码结构清晰,展示了链表数据结构的创建、遍历、插入和删除等基本操作。
2025-11-12 12:44:04
203
原创 Raylib贴图
摘要 本文介绍了使用Raylib库进行简单贴图操作的基本方法。主要内容包括: 关键贴图函数:LoadTexture()、LoadImage()、LoadTextureFromImage()和DrawTexture() 示例代码展示如何加载和显示纹理: 初始化200x200窗口 从文件路径加载PNG纹理 在主循环中使用DrawTexture()显示纹理 程序结束时卸载纹理并关闭窗口 演示了基本的纹理加载、显示和资源释放流程 代码示例实现了简单的纹理显示功能,可作为Raylib图形编程的入门参考。
2025-11-10 17:15:12
427
原创 Raylib 基本绘图操作
本文介绍了使用Raylib图形库的基本绘图操作。主要内容包括:1)Raylib提供的二维、三维坐标结构体Vector2和Vector3的基本使用;2)绘图的基本框架(BeginDrawing/EndDrawing函数对);3)演示了绘制随机像素点和圆形的方法;4)强调绘图代码应与事件处理代码分离的开发规范。示例代码展示了初始化窗口、绘制随机点和圆形,并清空背景色的完整流程。
2025-11-10 17:13:49
317
原创 Raylib库环境配置
本文介绍了在VS2022中配置raylib游戏引擎开发环境的步骤。主要包括:1)下载raylib安装包并解压;2)在项目属性中配置包含目录和库目录;3)添加必要的库文件到链接器;4)设置系统环境变量。最后通过一个简单的窗口创建示例验证了配置是否成功。配置过程涉及头文件、静态库和动态库的设置,并需要注意添加音频相关库。
2025-11-10 16:45:14
236
原创 ESP32 I2C通信
I2C是一种两线式串行通信总线(SDA和SCL),采用半双工方式。主机通过Wire.begin()初始化,从机需指定地址。数据传输包含发送(beginTransmission/endTransmission)和接收(requestFrom)两种模式。接收时需注意数据长度问题:若数据不足,剩余空间会被0xFF填充,可通过固定长度、头部标记或结束字符解决。示例代码演示了主机与从机(地址33)的通信流程。此外,I2C还常用于控制LCD1602显示屏,通过LiquidCrystal_I2C库实现简单初始化显示功能。
2025-11-04 17:31:38
319
原创 计算机操作系统理论学习
操作系统核心概念摘要 操作系统负责管理软硬件资源,主要涉及: 启动过程:从BIOS自检到加载MBR,完成硬件初始化 进程管理:通过fork/exec创建进程,采用不同调度算法(如FIFO、最短任务优先)管理进程状态切换 线程与同步:通过信号量解决临界区问题,处理经典同步问题(读者-写者、哲学家就餐) 死锁处理:通过银行家算法预防死锁,采用检测/恢复机制 内存管理:使用虚拟内存映射物理内存,采用多级页表和页面置换算法(LRU、时钟算法) 文件系统:实现索引分配存储文件,支持混合索引优化大文件访问 这些机制共同
2025-11-01 15:10:28
588
原创 正则表达式基础
摘要:正则表达式是处理大量字符串的规则方法,用于快速过滤替换内容。Linux正则以行为单位处理,常用工具包括grep(过滤)、sed(取行替换)和awk(取列)。grep支持-n显示行号、-i不区分大小写等参数;sed支持-n只打印匹配项;awk可打印指定列。正则语法包含^(开头)、$(结尾)、.(任意字符)、[](字符集)、{n,m}(重复次数)等特殊符号,用于精确匹配字符串模式。
2025-09-11 22:04:22
247
原创 计算机硬件基础认知
本文简要介绍了计算机硬件的基本组成和工作原理。CPU作为核心部件,包含运算器、控制器和三级缓存,主频和多核设计影响性能;内存采用双通道技术提升效率;硬盘分为机械和固态两种;显卡负责信号转换,分为N卡和A卡,性能由显存、位宽和CUDA核心决定。文章还说明了硬件与软件的交互过程,如通过Word文档加载展示CPU、内存、硬盘的协同工作,以及进程和线程的概念。最后列举了常见显示分辨率和显卡接口类型。
2025-09-10 20:04:50
408
原创 verilog的学习
本文介绍了Verilog硬件描述语言的基础知识,包括模块定义、端口描述和电路功能实现方法。主要内容涵盖:模块定义语法和命名规则;输入输出端口声明方式;门级原始结构实现逻辑功能;使用assign进行连续赋值的抽象方法;过程语句在always块中的使用规范。最后通过8个基础练习(如导线连接、逻辑门实现等)演示了Verilog的实际应用,展示了从简单输出到组合逻辑电路的设计过程。文章循序渐进地介绍了Verilog从基础语法到实际电路设计的核心概念。
2025-08-02 21:34:16
320
原创 shell 脚本基础学习
本文介绍了Shell脚本的基础知识,包括第一个Hello World示例、交互式输入、数值计算、文件测试、参数处理、条件判断、循环结构等核心语法。主要内容有:1) 基本脚本结构以#!/bin/bash开头;2) 使用read进行交互输入;3) 数值运算需注意空格问题;4) 使用test命令进行文件存在性检查;5) $0、$1等特殊变量获取参数;6) if和case条件判断语法;7) while和for循环实现。文章通过具体代码示例展示了Shell脚本的常见用法,适合初学者快速掌握基础语法要点。
2025-07-20 16:19:51
195
原创 数电汇总——logisim的辛酸史
文章摘要:本文记录了Logisim安装使用过程中遇到的问题及解决方案,包括Java环境更新和权限问题处理。重点探讨了数字逻辑电路基础知识,包括SR触发器、D触发器、多路复用电路的原理和应用,以及门电路搭建(异或门、同或门)、组合逻辑电路(译码器、编码器)的设计实现。文章还详细分析了减法器的工作原理,并对比了普通编码器和优先编码器的区别,通过Logisim软件进行了电路仿真验证。 (字数:150字)
2025-07-14 20:16:53
553
原创 寄存器设计
本文介绍了四种寄存器电路的设计原理与实现方法:基本寄存器由触发器构成,用于并行数据存储;移位寄存器通过脉冲信号实现数据逐位移动;循环移位寄存器采用多路选择器构建循环队列结构;并行存取寄存器则结合串并转换功能。还介绍了节拍脉冲发生器(独热码环形计数器)的设计,通过循环移位实现状态控制。文章详细展示了各寄存器的电路原理图及作者手工绘制的实现方案,包括异步复位、数据选择等关键设计要点,并比较了并行与串行存储方式的差异。
2025-07-14 15:37:22
352
原创 锁存器和触发器的设计
本文介绍了多种数字锁存器和触发器的设计原理。首先讲解了基本SR锁存器的结构与功能(00保持、01置0、10置1、11不确定),然后介绍了加入时钟控制的门控SR锁存器。接着展示了使用与非门构建的门控SR锁存器,以及单输入端的D锁存器设计。为克服"空翻"问题,提出了主从D触发器,利用时钟沿控制状态变化。最后介绍了基于D触发器构建的JK触发器(具有翻转功能)和T触发器(实现异或操作),并强调了设计中需注意时钟沿特性。各设计均附有原理图和手搓电路图说明。
2025-07-13 17:10:16
524
原创 比较器设计
本文介绍了1位、2位和4位无符号比较器的设计原理与实现方法。1位比较器通过逻辑门直接比较输入位的大小关系;2位比较器从高位开始比较,若高位相等则比较低位;4位比较器采用相同原理,从最高位依次比较。文章还提出了电路优化方案,如利用或非门简化逻辑,并展示了手绘的电路图。设计思路均为:若高位不等则直接判断结果,否则继续比较低位,最终输出大于、小于或相等三种结果。
2025-07-13 11:37:18
636
原创 译码器设计
译码器设计摘要 本文介绍了三种常见译码器的设计方法:2-4译码器通过两输入信号控制四个输出信号;3-8译码器可直接用2-4译码器扩展实现;LS138低电平译码器需注意使能端控制逻辑。重点指出LS138的低电平有效特性(被选输出为0)与输入地址信号(A2/A1/A0)的电平状态无关,地址线仅用于选择输出通道,而不影响输出电平特性。文中均提供了原理图与实际搭建电路图的对比展示。
2025-07-13 11:36:19
539
原创 多路选择器的学习
摘要 本文介绍了2选1、4选1和8选1选择器的设计方法。2选1选择器通过在或门加入使能端实现控制功能;4选1选择器通过拆分信号位宽解决警告问题;8选1选择器则采用2个4选1和1个2选1选择器组合实现。文章详细说明了各类选择器的真值表、原理图和具体实现过程,包括设计过程中遇到的问题及解决方法,如使能端放置位置和信号位宽匹配问题等。
2025-07-12 18:50:01
350
原创 加法器学习
本文介绍了三种加法器的设计与实现原理。首先,半加器通过异或门(A^B)得到和(Sum),通过与门(A&B)产生进位(Cin)。其次,全加器在考虑低位进位(Cin)的基础上,使用S=A^B^Cin计算新和,Cout=AB+ACin+BCin产生新进位。最后,行波进位加法器采用多个全加器级联,使进位从低位向高位依次传递,实现多位二进制数的相加。这三种加法器构成了数字电路中进行算术运算的基础模块,其中半加器是最简单的加法单元,全加器扩展了进位处理能力,而行波进位加法器则实现了多位并行加法运算。
2025-07-12 18:27:41
395
原创 部署大模型:解决ollama.service: Failed with result ‘exit-code‘的问题
在尝试启动ollama服务时,用户遇到了服务无法正常启动的问题。通过systemctl status ollama命令,发现服务处于activating (auto-restart)状态,且ExecStart进程以exit-code状态失败。进一步使用journalctl -u ollama -f查看日志,发现是文件访问权限问题导致服务启动失败。用户检查了ollama的默认路径/usr/share/ollama/.ollama/models,发现权限不足。通过执行sudo chmod -R 755 /usr
2025-05-13 20:28:19
1387
原创 51单片机数码管操作
提要点:1.51单片机上的数码管是的,所以需要在位选的时候给定低电平(接地)选中其几号LED,而接下来的注意一定是从哦,因为我前面定义的位选三个接口顺序是由高位到低位的!!!
2025-03-18 08:42:02
490
原创 C++多态
(函数重载,运算符重载)和(派生类、虚函数)二者区别:静态多态是在地址编译时绑定,而动态多态是在地址运行时绑定动态多态的特点:1.有继承关系2.子类重写父类虚函数(就是跟父类行为函数名称一样,但是是作为子类的行为)(简单来说就是创建父类传参函数,下面再添加子类对象,让子类对象传入进去即可)
2025-03-10 15:01:11
547
原创 C++ 继承
2.当子类以共有继承 继承父类时,父类所有的对象(除了private)都是可以以共有继承形式访问。2.当子类以 保护继承 继承父类时,子类所有继承对象均以保护继承的形式出现,并且内外不能访问。3.当子类以 私有继承 继承父类时,子类所有继承对象均以私有继承的形式出现。一般我们不会写菱形继承的形式,在此也不做代码解释了哈哈哈哈哈。1.菱形继承会导致所指对象的属性不明确,还会浪费空间。1.访问子类同名成员(直接访问即可)(不建议使用该格式,会引来麻烦)2.访问父类同名成员(需要。
2025-03-07 21:10:27
440
原创 C++重载运算符
提要点:1.可以选取进行重载,也就是operator+(Person &p),传入一个参数就是直接调用它,另外一个参数作为传入,p1.operator(p2)2.可以用进行重载(本人认为这种相对好理解一些)
2025-03-06 17:05:01
239
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅