自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习C++、QT---34(使用QT库实现串口调试助手01:解决串口调试助手的UI)

摘要:本文介绍了串口调试助手UI界面的开发过程。重点讲解了GroupBox控件的分组功能和布局技巧,使用栅格布局实现控件自适应排布,并通过垂直/水平布局保持界面整洁。文中还涉及TextEdit、CheckBox、LineEdit、SpinBox等控件的使用方法,强调合理命名控件的重要性以便后续代码开发。通过复制组合控件和微调布局,最终完成了类似安信可官方串口助手的界面设计。

2025-07-24 01:21:24 424

原创 学习C++、QT---33(QT库中如何使用事件过滤器实现我们的放大缩小字体功能)

本文介绍了在Qt中使用事件过滤器实现Ctrl+滚轮缩放功能的方法。通过重写QObject的eventFilter函数,检测滚轮事件时判断Ctrl键状态,然后根据滚轮方向调用zoomIn()或reduce()函数。关键点包括:1)使用QGuiApplication::keyboardModifiers()检测修饰键状态;2)将QEvent转换为QWheelEvent以获取滚轮详细信息;3)返回true表示事件已被处理。文章还解释了事件转换的必要性和watched参数的应用场景,并总结了Qt学习的关键在于掌握常

2025-07-23 01:09:29 578

原创 学习C++、QT---32(QT库中如何进行事件重写实现我们的放大缩小字体功能)

《Qt控件开发中的父子关系与事件处理机制解析》 本文深入解析了Qt开发中的两个核心技术点:控件父子关系和事件处理机制。在父子关系方面,详细阐述了parent参数的核心作用,包括建立控件层级、实现自动内存管理(父控件销毁时自动删除子控件)以及决定显示效果。文章通过具体示例展示了传递parent与不传递的区别,并解释了Qt采用这种设计的原因。在事件处理部分,重点分析了wheelEvent、keyPressEvent等事件的重写方法,强调在扩展功能时需要合理调用父类事件处理函数以保留默认行为,并详细说明了acce

2025-07-22 05:28:08 846

原创 学习C++、QT---31(QT库中如何自定义控件的信号与槽的讲解)

本文探讨Qt中自定义按钮信号与槽的实现问题。当继承QWidget而非QAbstractButton时,需要手动实现clicked信号,因为QWidget不包含按钮特有功能。作者通过MyButton类自定义信号,在Widget类中绑定信号与槽,使用lambda表达式实现。文中对比了两种实现方式:1)直接在事件处理函数中编写逻辑;2)通过信号槽机制分离逻辑。指出事件处理用于控件内部操作,信号槽用于组件间通信,体现了Qt"事件驱动"和"组件解耦"的设计思想。强调信号槽机制在

2025-07-21 00:35:02 758

原创 学习C++、QT---30(QT库中如何自定义控件(自定义按钮)讲解)

摘要:本文详细介绍了Qt中自定义控件的两种方法:继承QWidget进行极致开发或基于现有控件扩展功能。重点讲解了如何通过继承QWidget创建自定义按钮控件,包括重写鼠标事件、使用QPixmap加载图片资源、处理绘图事件(paintEvent)以及控件提升的方法。文章深入分析了const QString&参数传递机制,解释了引用和const在参数传递中的优势。最后展示了完整的实现过程,包括控件尺寸设置、图片绘制和手动更新界面等关键步骤,实现了一个具有动态响应效果(鼠标悬停、点击等状态变化)的自定义按

2025-07-20 13:06:09 1416

原创 学习C++、QT---29(QT库中QT事件的介绍和用了几个案例来对事件怎么使用的讲解)

QT事件处理机制摘要:通过重写QT框架预定义的protected虚函数(如鼠标、键盘、窗口事件等),开发者可扩展原生功能。例如在closeEvent中通过accept()/ignore()控制窗口关闭逻辑,在resizeEvent获取新旧窗口尺寸,利用wheelEvent的angleDelta()识别滚轮方向(+120上滚/-120下滚)。这种事件驱动设计体现了面向对象优势:1)避免重复实现通用功能;2)通过语义化命名提升可读性;3)用虚函数机制支持灵活的功能扩展。典型应用场景包括拦截默认操作(如关闭确认弹

2025-07-19 20:43:02 930

原创 学习C++、QT---28(QT库中使用QShortcut类对快捷键创建和使用的讲解)

本文介绍了在Qt中实现文本编辑器快捷键功能的方法。首先通过QShortCut类创建快捷键,建议在构造函数中初始化以保证功能稳定性。文中详细说明了如何实现文件打开(Ctrl+O)和保存(Ctrl+S)功能,强调需要正确绑定activated信号与对应槽函数。对于字体大小调整功能,通过QWidget的font()方法获取当前字体属性,使用QFont类修改字体大小后,必须调用setFont()更新文本显示。快捷键设置需注意特殊符号的表示方式(如Ctrl+Shift+=表示放大字体)。整个过程涉及信号槽机制、字体属

2025-07-18 00:17:50 1089

原创 学习C++、QT---27(QT中实现记事本项目实现行列显示、优化保存文件的功能的讲解)

本文介绍了文本编辑器行列显示功能和文件保存功能的实现方法。在行列显示功能中,通过QTextCursor获取光标位置信息,将行号(blockNumber)和列号(columnNumber)转换为QString类型后拼接显示在label上。文件保存功能优化为:已打开文件直接保存,未打开文件才弹出文件选择对话框。特别强调了读取文件前需重置seek(0)的重要性,避免因光标位置导致的文本拼接问题。这些功能实现体现了Qt编程中信号槽机制、类型转换和文件操作等关键技术点的应用。

2025-07-17 23:54:01 812

原创 学习C++、QT---26(QT中实现记事本项目实现文件路径的提示、C++类模板、记事本的行高亮的操作的讲解)

本文介绍了记事本开发中的三个关键技术点:1. 文件路径显示通过setWindowTitle()函数实现窗体标题显示当前文件路径;2. C++类模板的使用,通过template<typename T>声明和具体类型实例化来减少重复代码;3. Qt文本编辑器行高亮功能的实现,详细说明了如何利用QTextEdit的cursorPositionChanged信号、setExtraSelections方法及相关属性设置来实现光标所在行的整行高亮效果,包括背景色设置和整行选择模式的应用。这些技术为记事本开发

2025-07-15 23:07:00 1061

原创 学习C++、QT---25(QT中实现QCombobox库的介绍和用QCombobox设置编码和使用编码的讲解)

本文介绍了在Qt项目中通过QComboBox实现文本编码切换的方法。主要内容包括:1)使用QComboBox的currentIndexChanged信号与槽函数绑定来实现编码切换;2)处理编码转换时的文本读取问题,包括清空文本、重置文件指针和正确设置编码;3)对比了append和setText方法的差异,说明为何append更适合多行文本显示;4)详细解释了file.seek(0)的作用是将文件指针重置到开头位置。该方法解决了用户无法直接修改代码时的乱码问题,实现了灵活的编码切换功能。

2025-07-14 15:45:53 1359

原创 学习C++、QT---24(QT实现记事本项目的打开、保存、关闭)

本文介绍了Qt记事本程序的实现方法,主要包含三个功能:打开文件、保存文件和关闭文件。在打开文件功能中,使用QFileDialog选择文件,通过QFile和QTextStream读取文件内容并显示在textEdit控件上;保存文件功能同样使用QFileDialog选择保存路径,将textEdit中的纯文本内容写入文件;关闭文件功能则清空界面并关闭文件。文中还提到要注意避免编码设置固定导致的程序卡死问题,建议采用动态编码方式。

2025-07-14 15:39:07 721

原创 学习C++、QT---23(QT中QFileDialog库实现文件选择框打开、保存讲解)

本文介绍了QT中QFileDialog文件选择框的使用方法。首先讲解了如何通过静态函数实现文件打开和保存功能,包括设置路径、过滤器等参数,并处理中文编码问题。然后详细说明了如何创建自定义的QFileDialog对象,设置文件模式为多选ExistingFiles,添加.txt过滤器,并通过exec()显示对话框。最后讲解了如何使用C++11范围循环遍历所选文件路径列表,用QFile和QTextStream读取文件内容,并处理UTF-8编码。文章还强调了QStringList作为QList<QString

2025-07-13 13:22:47 986

原创 学习C++、QT---22(QT中QTextStream库读取文件、写入文件的讲解)

摘要:文章介绍了Qt中QTextStream类的使用方法,包括文件读取和写入操作。重点讲解了readLine()、atEnd()等核心方法的使用场景和注意事项,分析了不同读取方式的优缺点(如readLine适合大文件,readAll适合小文件)。针对中文乱码问题,强调需通过setCodec()设置正确编码(如UTF-8)。文章还提供了文件操作的最佳实践,包括错误处理、性能优化建议等,并以实际代码示例演示了文件的逐行读取和写入操作。

2025-07-12 10:45:46 1135

原创 学习C++、QT---21(QT中QFile库的QFile读取文件、写入文件的讲解)

摘要:本文介绍了Qt中QFile类的基本文件操作,包括读取和写入文件的方法。首先讲解了如何通过构造函数或setFileName()关联文件路径,然后详细说明了文件打开模式的选择(如ReadOnly、WriteOnly等)以及跨平台文本处理功能。在读取文件时,重点讲解了read()方法的使用和缓冲区初始化注意事项,同时强调了错误处理的重要性。对于文件写入操作,说明了当文件不存在时会自动创建新文件的特性,并介绍了write()方法的多种参数形式。全文通过具体代码示例展示了Qt文件操作的核心流程和注意事项。

2025-07-11 23:27:15 776

原创 学习C++、QT---20(C++的常用的4种信号与槽、自定义信号与槽的讲解)

摘要:本文介绍了Qt中四种信号与槽通信的实现方法。第一种是自动生成槽函数,需保持命名格式"on_对象名_信号名";第二种在构造函数中手动连接,需自行定义槽函数;第三种使用lambda表达式实现匿名函数;第四种采用函数指针方式。重点讲解了自定义信号与槽的实现步骤:1)声明信号(signals前缀)和槽(public slots前缀);2)连接信号槽;3)用emit发射信号。特别指出旧语法连接时只需写参数类型(int),而新语法需写完整函数签名。调试建议使用qDebug()输出,遇到问题可尝

2025-07-11 23:20:31 800

原创 学习C++、QT---19(C++的信号与槽的概念引入)

摘要:本文介绍了Qt框架中信号与槽机制的基本使用方法。主要内容包括:1) 通过按钮点击关闭窗口的简单示例演示信号与槽的连接方式;2) Qt Creator中两种连接信号与槽的可视化操作方法;3) QObject::connect函数的三种语法格式(字符串方式、函数指针方式)及其优缺点对比;4) 信号与槽机制继承关系的说明,指出所有Qt对象都直接或间接继承自QObject类。文章强调信号与槽是Qt实现对象间通信的核心机制,并比较了新老语法在兼容性、错误检查等方面的差异。

2025-07-06 01:19:54 822 1

原创 学习C++、QT---18(C++ 记事本项目的stylesheet)

摘要: 本文介绍了Qt样式表(QSS)的自定义方法,重点讲解如何通过资源文件管理图片资源并应用于UI控件(如QPushButton)。内容包括:1)样式表基础语法(hover、pressed状态控制);2)创建Qt资源文件(.qrc)并添加前缀/文件;3)使用border-image加载图片资源;4)解决布局问题(通过setLayout绑定布局管理器,配合弹簧控件调整间距)。最终实现跨平台UI样式统一和自适应布局效果,避免依赖系统默认渲染。 (字数:150)

2025-07-05 00:19:55 871

原创 学习C++、QT---17(C++ 记事本项目的雏形实现)

摘要:本文介绍了使用Qt开发记事本应用的基本步骤。首先通过原型图设计界面布局,包括添加打开、关闭、保存按钮并设置水平分布。然后添加Widget组件设置背景色,将按钮组件包含其中。接着使用Label和TextEdit组件构建文本区域,通过垂直布局调整整体结构。最后解决了窗口缩放时布局不自动调整的问题,通过在widget.cpp中添加布局设置代码。整个过程展示了Qt界面开发的基本方法和常见问题的解决方案。

2025-07-03 17:05:26 1016 1

原创 学习C++、QT---16(C++的接口、属于QT的第一个项目的启动)

摘要:文章介绍了将抽象类作为接口实现多态的方法,适用于人和狗等具有共同行为的对象。在QT项目创建时,建议选择QWidgetApplication进行图形化界面设计,其中MainWindow适合复杂项目,Widget适合简单项目。创建工程时会自动生成UI文件和相关代码结构,这些底层设计虽然对新手较难理解,但了解基本概念有助于后续开发。作者坦言部分原理较难解释清楚,建议参考官方文档。

2025-07-02 22:11:25 754

原创 学习C++、QT---15(C++的多态、纯虚函数)

摘要:C++多态指通过基类指针操作不同派生类对象,实现统一接口调用不同功能。以万能遥控器为例,基类remoteControl定义虚函数,派生类实现具体功能。多态核心是:1)基类虚函数;2)派生类重写;3)基类指针指向派生类对象。虚函数表(VTable)机制实现动态绑定,对象内存首地址存储指向VTable的指针。抽象类通过纯虚函数(=0)定义,强制派生类实现所有纯虚函数,不可实例化。相比Java的abstract关键字,C++用纯虚函数实现抽象类特性。(150字)

2025-07-01 00:34:03 931

原创 学习C++、QT---14(C++的多重继承、菱形继承问题)

摘要:多重继承允许子类同时继承多个父类的属性和方法,使用逗号分隔父类名。当调用同名函数或变量时,需使用作用域解析符(::)指定父类。菱形继承会导致基类数据在最终派生类中存在多份拷贝,造成冗余和歧义。虚继承(virtual)可解决该问题,确保最终派生类只保留一份基类数据。虚继承的构造函数需由最终派生类直接调用虚基类构造,忽略中间类的虚基类构造,避免多次初始化。虚继承通过统一管理虚基类数据,有效解决菱形继承的核心问题。

2025-06-30 00:59:36 1039

原创 学习C++、QT---13(C++的基类构造函数、虚函数)

本文摘要: C++继承与多态核心知识点解析:1.基类构造函数通过成员初始化列表由派生类调用实现父类变量初始化,需注意访问权限和调用顺序。2.虚函数机制详解:使用virtual声明基类虚函数,派生类用override重写实现多态,调用时执行派生类功能。3.重要规则:含虚函数的基类必须使用虚析构函数,确保派生类对象被基类指针删除时正确调用所有析构函数。这些机制是C++面向对象编程的基础,掌握后可灵活设计类层次结构。(150字)

2025-06-29 07:00:00 509

原创 学习C++、QT---12(C++的继承、权限对继承的影响)

本文主要介绍了C++继承的概念和应用。继承允许子类继承父类的属性和方法,提高代码复用性。文章通过手机类和苹果类的案例说明了继承的基本语法(使用冒号和public关键字)。此外还讲解了分文件优化继承的方法,即将类声明与实现分离到不同文件。最后重点讨论了继承中的权限问题,指出父类成员在不同继承方式下(public/protected/private)的访问权限变化规律,强调权限从public到protected再到private的降级特性,并提供了判断不同区域访问权限的方法。掌握这些继承特性对C++编程至关重要

2025-06-28 02:47:47 1057

原创 学习C++、QT---11(C++析构函数、static静态变量的讲解)

本文讲解了C++中析构函数和静态变量的关键特性。析构函数(~类名)在对象作用域结束或被delete时自动调用,常用于资源管理,如释放动态内存。静态变量(static)属于类而非对象,通过类名::变量名访问,所有对象共享同一值。文中通过实例展示了静态变量计数对象的创建与销毁:构造函数中静态变量自增,析构函数中自减,利用作用域变化演示了析构函数的调用时机。这些特性使代码更规范,资源管理更高效。

2025-06-27 10:57:17 1024

原创 学习C++、QT---10(C++this关键字、new关键字、delete关键字)

C++对象操作关键要点摘要: this关键字: 用于解决构造函数参数与成员变量同名冲突(this->name=name) this指向当前对象地址,验证显示与对象地址一致 支持链式调用,通过返回*this(对象引用)实现连续操作 new/delete关键字: new在堆空间分配对象内存,需手动管理生命周期 栈对象(Car BMW)随作用域结束自动销毁 delete释放堆内存,避免内存泄漏,尤其对长期运行程序至关重要 (字数:149)

2025-06-27 10:52:18 415

原创 学习C++、QT---09(C++构造函数的讲解)

本文介绍了构造函数的基本概念和使用方法。构造函数必须在类中定义,名称与类相同且无返回类型。构造函数分为无参和有参两种形式,编译器会根据对象创建时的参数自动匹配调用。构造函数的优势包括:1)强制初始化成员变量;2)通过参数灵活定制对象初始状态;3)封装初始化细节提高代码可维护性。特别要注意,当类中定义了有参构造函数时,编译器不会自动生成无参构造函数,此时必须显式提供匹配参数。构造函数仅在对象创建时调用一次,确保了对象初始状态的规范性。

2025-06-26 01:00:22 905

原创 学习C++、QT---08(C++函数的重载)

函数重载是指同一函数名根据参数类型、数量或顺序不同实现不同功能。比如print函数可以输出姓名或年龄等不同信息。运算符重载则是重新定义内置运算符(如==、+)对自定义类的操作逻辑,让对象能像内置类型一样运算。例如重载==比较两个对象的属性而非地址,或重载+实现对象相加生成新对象。重载通过编译器自动调用对应函数,简化代码结构,提升可读性和复用性,支持多态扩展,使自定义类型操作更自然高效。

2025-06-25 01:43:59 1123

原创 学习C++、QT---07(C++的权限、C++的引用)

本文摘要: 本文通过银行案例讲解编程中的权限控制概念,用银行账户操作类比面向对象编程中的权限管理。银行数据如余额相当于类中的私有属性,ATM机等公共接口对应类的公共方法,确保数据安全操作。同时解析了C++中的引用机制,表明引用是变量的别名,共享相同内存地址,并指出函数间变量传递的注意事项。最后强调在引用返回时需避免使用局部变量,以防止内存错误。全文通过生活案例生动阐释编程核心概念。

2025-06-24 12:56:51 1135

原创 学习C++、QT---06(真正的成员变量、类的组合)

摘要:本文探讨了C++中成员函数与成员变量的区别,强调真正的成员函数需在类内声明、外部实现,并通过作用域解析运算符(::)指明所属类。同时讲解了类的组合概念,即类中包含其他类对象(如车类包含轮胎类),并详细说明了指针对象的内存分配(new操作)。此外,分析了cout输出字符数组和string对象的底层机制,指出前者依赖'\0'终止符,后者通过size()确定长度。最后以汽车类为例,阐述了嵌套对象的不同访问方式(.和->运算符)。

2025-06-23 11:24:21 876

原创 学习C++、QT---05(结构体和类)

摘要:本文对比了C语言与C++中数组、指针和结构体的异同。重点讲解了C++类对C结构体的改进,包括默认访问权限、string类型处理字符串的优势,以及new/delete内存管理方式。通过具体示例展示了C++类如何实现更安全的字符串操作和更方便的成员访问,同时保留了C语言的指针功能。文章还特别强调了C++中string类型对字符串拼接的支持,以及如何处理非string类型与字符串的拼接问题。

2025-06-23 01:01:43 1129

原创 学习C++、QT---04(Lambda表达式)

本文摘要:文章首先以编程哲理"每条路上都藏着意想不到的宝藏"开篇,随后重点讲解C++流程控制与函数特性。比较了C与C++的for循环写法差异,指出C++允许变量在循环条件中定义。讨论了goto语句的弊端和内联函数(inline)的适用场景,强调其能减小调用开销但需谨慎使用。详细解析了Lambda表达式:介绍其作为匿名函数的优势、基本语法格式,以及三种变量捕获方式(值捕获、全捕获、引用捕获)。通过计算器案例演示Lambda与回调函数的配合使用,指出正确用法应避免显式命名。最后建议通过练习巩

2025-06-22 13:24:42 848

原创 学习C++、QT---03(C++的输入输出、C++的基本数据类型介绍)

本文摘要: C++与C语言的输入输出对比分析:cin/cout对应scanf/printf,endl相当于\n。C++数据类型与C语言相似,但bool类型在C99以上需stdbool.h头文件。头文件<climits>提供整数类型限制信息,但可能被<iostream>间接包含。头文件引用规范:尖括号用于系统库,双引号用于自定义文件。建议显式包含<climits>以确保代码规范性。(150字)

2025-06-21 13:27:21 1010

原创 学习C++、QT---02(创建第一个C++项目、命名空间的讲解)

因为上面也有总结,主要是因为C++怕命名冲突,比如我自己也定义了一个cout如果没有命名空间那么就会编译错误,因为编译器不懂我这个cout是标准库的还是哪里的,就是因为有重复的名字,就会冲突,然后C++又很容易冲突,所以需要命名空间的管理,只要有命名空间的管理那么多少个cout都是可以的。我们需要新建一个.h文件作为命名空间的文件,里面需要写上函数的声明和函数的实现,但是写到后面有经验了就可以也将我们的函数实现的代码封装成一个库文件,和我们C++标准库c标准库的库文件一样。

2025-06-21 13:19:15 612

原创 学习C++、QT---01(安装QT Creator教程、介绍)

我这边安装的是QT5,有QT6和QT5为什么要QT5呢,因为选择QT5是市面上大多数的产品都有QT5的版本,且时间长久有丰富的开发文档和模板对新手小白友好,好上手,但是用QT6的话也是可以的毕竟QT的理念都是差不多的。嘿嘿嘿,我们暂时先把51单片机学完了,学了一些基本的外设和协议,制作了一个智能小车,现在我们需要学习一下QT和C++了目的是提升代码能力,和为了后面学习Linux系统的高级ARM开发板也是巨大的帮助。3基本默认的qmake这个是QT Creator 默认的构建项目工具(按照红色框框)

2025-06-20 03:00:13 1316

原创 学习STC51单片机43(芯片为STC89C52RCRC)智能小车9(语音识别小车)

摘要:本文介绍了非特定语音识别模块SU-03T在智能小车项目中的应用。内容包括模块特性(不区分音色的通用识别)、硬件连接要点(注意VCC接5V)、配置步骤(通过AI平台设置语音指令与电平输出),以及将循迹/避障/跟随模式整合到同一程序的代码实现方法,重点解决了定时器资源冲突问题(需舍弃差速行驶功能)。最后提到通过OLED屏增强交互体验,并规划了后续C++、STM32和Linux的学习路径。

2025-06-19 15:10:29 1342

原创 学习STC51单片机42(芯片为STC89C52RCRC)智能小车9(Wife控制小车、4G控制小车)

TIPs:要是突然之间亿佰特助手无法进入AT指令了之后我们就直接用ch340转TTL的模块接4G模块,亲测直接有用了,然后我们配置4G模块之后,在连接到我们的单片机上,这样我们单片机发送速度就会到服务器上面啦,然后我们服务器发送M1等指令,也会通过内网穿透的IP地址进行发送数据给4G模块,然后4G模块在通过串口发送给单片机,单片机再执行指令,这个就是整个流程啦。那我们就可以通过局域网在同一个网段的IP地址进行通信,因为我们连接的是ESP8266散发出来的热点,所以是同一个网段。那么WIFE小车怎么做?

2025-06-18 00:28:23 808 1

原创 学习STC51单片机41(芯片为STC89C52RCRC)智能小车8(测速显示到OLED显示屏)

摘要:本文介绍了OLED二次开发中显示动态测速功能的方法。通过调用厂商提供的OLED驱动代码(OledFont.h等文件),开发者可以快速实现字符显示功能,避免自行制作字模的繁琐工作。案例中在原有测速模块代码基础上整合了OLED显示功能,通过Oled_Show_Str()函数动态显示速度数据,同时结合蓝牙模块实现了速度数据的无线传输。开发过程体现了"代码复用"理念,直接使用厂商预制的字符库和算法,显著提升了开发效率。

2025-06-17 20:43:19 571

原创 学习STC51单片机40(芯片为STC89C52RCRC)智能小车7(实现测速通过串口反馈到上位机)

摘要:本文详细介绍了嵌入式系统中测速模块的工作原理及代码实现。测速采用槽型光耦模块,通过码盘转动产生高低电平脉冲(每个格子对应一个下降沿中断),利用外部中断计数。计算速度时,需结合码盘格数(20格)和轮子周长(约1cm/格),统计1秒内的脉冲数即可得出线速度。代码实现包含外部中断初始化、定时器配置(0.5ms基准)和串口数据传输,通过状态标志位控制每秒发送一次速度数据。该方案典型体现了嵌入式开发中硬件模块特性与软件算法的协同工作特点。 (149字)

2025-06-16 23:47:29 836

原创 学习STC51单片机39(芯片为STC89C52RCRC)智能小车6(超声波避障小车)

摘要:文章介绍超声波避障小车的实现过程,主要使用HC-SR04超声波模块和SG90舵机。首先改装翻盖垃圾桶代码,优化为分文件结构,封装舵机与超声波代码。重点讲解了超声波超时定时器设置(10ms)以提高稳定性,以及通过距离检测控制舵机转向(左135°、中90°、右0°)。最后阶段加入电机控制,通过数组存储左右测距距离进行比较,实现小车向更宽位置移动或后退避障。整个过程强调代码优化和硬件稳定性处理,最终完成可自动避障的小车功能。

2025-06-16 21:41:35 745

原创 遥控电风扇

这篇文章介绍了一个用433M无线模块和继电器控制的遥控电风扇DIY项目。作者使用了简单的电子元件(继电器、电池盒、小电机等)和15行代码实现了遥控开关功能。文中还提到继电器的接线方式(NO、NC、COM口)以及模块的低电平触发特性,并调侃了这个突发奇想的搞笑创意。整个项目虽然简易,但展现了电子DIY的乐趣。

2025-06-14 21:15:52 375

QT记事本项目1.0、QT记事本项目1.0

自己用QT做的记事本、打开保存、转编码都已经实现、行高亮、光标位于多少列多少行都已实现,我这个是我复习的时候写的,会比较丑一点,自己改哈,或者联系我,我帮你改

2025-07-21

MinGW,即 Minimalist GNU for Windows

MinGW,即 Minimalist GNU for Windows,是一个在 Windows 平台上使用的开源编译器系统。以下是关于它的详细介绍: 功能与特点 GCC 支持:MinGW 包含了 GNU Compiler Collection(GCC),这是一套广泛使用的编译器套件,能够将 C、C++ 等高级编程语言编写的代码编译成可在 Windows 系统上运行的机器码。例如,开发人员可以使用 MinGW 将 C 语言代码编译成 Windows 可执行文件(.exe)。 Windows 特定支持:它提供了一组头文件和库,使得开发人员能够利用 Windows 操作系统的特性和 API 来开发应用程序。比如,通过 MinGW 可以调用 Windows 的图形界面 API 来创建窗口应用程序。 开源与免费:作为开源项目,MinGW 是免费使用的,这使得它在开发者社区中非常受欢迎,尤其是对于那些预算有限或注重开源生态的项目。 轻量级:MinGW 被设计为轻量级的开发环境,它不依赖于庞大的运行时环境或复杂的安装过程,能够快速安装和配置,适合不同规模的项目开发。 应用场景 Windows 应用程序开发:许多开发者使用 MinGW 来开发各种类型的 Windows 应用程序,包括控制台应用程序、图形界面应用程序以及命令行工具等。例如,开发一个简单的文本处理工具或者一个小型的游戏。 开源项目与跨平台开发:在开源项目中,MinGW 经常被用于在 Windows 平台上构建和测试代码,使得项目能够在不同操作系统上保持一致性和可移植性。比如,一些跨平台的开源库,如 OpenCV(用于计算机视觉),可以使用 MinGW 在 Windows 上进行编译和开发。 教育与学习:对于学习 C、C++ 编程的学生和初学者来说,MinGW 是一个很好的选择,因为它提供了一个简单易用的编译环境,便于他们快速上

2025-05-09

空空如也

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

TA关注的人

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