- 博客(44)
- 资源 (4)
- 收藏
- 关注
原创 Github爆火的《高性价比人生指南》最新版丨零代码狂揽5万+Star
最特别的是,它不讲空话,每条建议都拆成:要花什么成本、能换回什么、证据有多硬、来源在哪里。健康、急救、省钱、防骗、法律红线、医保社保、恋爱婚育、失业兜底、创业合规、出国技能,几乎覆盖了普通人最容易踩坑的地方。5 万颗星是什么概念?而它没有代码、没有界面、没有融资,纯靠一篇篇过日子该知道的事,硬生生挤进了 GitHub 热榜前列。它也不逼你全部做到,作者说得很坦诚:这是按性价比排好的备选单,不是任务清单。GitHub上有个项目,零代码、零营销、零变现套路,上线不到一个月,Star直接冲到5万。
2026-10-09 11:41:06
292
原创 基于51单片机电子秤设计系统(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!HX711带led灯及蜂鸣器报警
本设计以STC89C51/52单片机为核心控制器,主要功能HX711可以对称重进行校准、去皮,带led灯以及蜂鸣器报警。
2026-07-02 16:03:07
44
原创 基于STM32单片机的温度控制系统(Proteus仿真+Keil源码+设计文档)DS18B20 附下载链接!
设计一个基于STM32单片机的温度控制系统:1. DS18B20监测环境温度,显示在LCD1602上2. 可以设置温度上下限3. 可以控制加热或者降温4. 超过限制温度用LED或者蜂鸣器进行提示
2026-07-01 11:00:12
367
原创 基于STM32控制的智能密码锁仿真(Proteus仿真+Keil源码)附下载链接!
1. OLED屏可以实时显示系统状态信息;2. 采用六位密码锁的程序设计;3. 键盘可以实现密码的输入;4. 密码正确时,光耦开关打开,密码隐藏,三秒后,光耦开关关闭,上锁;5. 密码错误时,输入的密码清零,重新输入;6. 密码输入错误时,可以通过删除按键删除,重新输入。
2026-07-01 10:27:13
220
原创 基于51单片机的简易计算器设计(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!
1)硬件:4*4 矩阵键盘 + LCD1602显示 2)软件:主程序、按键扫描、LCD1602显示三大模块 3)软件程序主要由三部分组成: 主程序、按键扫描程序和LCD1602显示程序
2026-06-30 14:33:45
594
原创 基于51单片机交通信号灯设计(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!
设计一个基于51单片机交通信号灯系统:功能1:东西南北双向各配双数码管倒计时,搭载红绿黄三色指示灯;功能2:支持双向通行时长独立设定,自带黄灯缓冲,智能规避参数错误;功能3:通行倒计时剩余五秒,自动触发黄灯预警提醒;功能4:特殊模式:紧急模式(红灯常亮,禁行);夜间模式(黄灯常亮,提示前方注意安全)。
2026-06-30 11:44:44
319
原创 基于51单片机超声波测距报警系统(带温度补偿)(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!HC-SR04
设计一个基于51单片机超声波测距报警系统(带温度补偿)系统:功能1:HC-SR04 超声波模块进行测距,有效测距范围 2cm-400cm,测量精度可达 1cm; 功能2:实时显示环境温度,并通过软件算法补偿测距误差; 功能3:LCD1602 液晶显示屏显示实时距离;功能4:支持按键设置报警阈值,参数支持掉电保存,当检测距离小于设定阈值时,自动启动语音提示。
2026-06-30 09:52:55
362
原创 基于51单片机温度检测电子设计系统DS18B20(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!
传感器采用DS18B20,负责采集温度数据后发给单片机。显示设备采用4位共阴数码管,显示检测到的温度值。按键模块,主要是进行报警值的设置。报警模块采用蜂鸣器+LED的模式,超出报警范围则进行声光报警。
2026-06-29 14:34:22
180
原创 基于51单片机八路抢答器设计(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!
设计一个基于51单片机八路抢答器设计系统:主要功能: ① 设计一个8路抢答器。 ② 有一个开始按钮,按下开始后才能开始抢答。 ③ 能显示抢答成功的组号。
2026-06-29 11:44:33
206
原创 基于51单片机智能小车设计循迹+避障超声波红外(Proteus仿真+Keil源码+设计文档+AD原理图等)DS18B20 附下载链接!
1. 小车双超声波避障功能;2. 小车红外循迹功能;3. 小车DS18B20温度采集功能;4. 按键控制车左转右转功能;5. LCD1602液晶屏显示距离、温度等信息功能。
2026-06-29 10:53:04
360
原创 基于51单片机篮球计时计分器(Proteus仿真+Keil源码+设计文档)附下载链接!
功能:1.在整个比赛过程中记录比赛时间和改变比赛时间。2.可以在比赛期间随时更新A和B队的比分。3中场休息期间交换场地,交换A队和B队的位置。4.当添加比赛分数时,如果有错误,可以手动更改赛场分数。5.赛事结束时可以触发警报。
2026-06-29 10:19:04
287
原创 基于51单片机数字电压表设计(Proteus仿真+Keil源码等)adc0809 附下载链接!
设计一个基于51单片机数字电压表的设计,通过控制单片机,实现adc0809模数转换,数码管显示。
2026-06-28 22:33:45
386
原创 基于STM32控制的温度报警器(Proteus仿真+Keil源码)可设置温度上下限,超限报警!DS18B20附下载链接!01
系统搭载 OLED 显示屏实时显示实时温度、温度上下限阈值,配备三色 LED 指示灯与蜂鸣器实现温度状态声光提示(温度正常亮绿灯且蜂鸣器关闭、低于下限亮黄灯、高于上限亮红灯,异常时蜂鸣器报警),并通过独立按键完成温度上下限阈值的实时调节。
2026-06-27 22:49:25
375
原创 基于51单片机心形流水灯跑马灯设计(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!
采用51单片机做为主控制器,32位流水灯花样自动变换,循环往复。
2026-06-26 17:45:21
336
原创 基于51单片机温湿度检测报警系统(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!DHT11
基于51单片机温湿度检测报警系统(Proteus仿真+Keil源码+设计文档+原理图等)附下载链接!DHT11
2026-06-26 09:39:40
487
原创 为什么C语言访问内存地址需要指针?
MOV BYTE [678], 123当内存收到这一串信号时, 电路中的某8个存储单元就会响应, 这8个存储单元会记住代表“123”的开(ON) 或关(OFF) 的电信号。 为什么是8位呢? 这是因为指令里指定了“BYTE”。如果将BYTE换成WORD,那么123将会被解释成一个16位的数值。MOV AL, BYTE [SI]MOV指令有一个规则, 那就是源数据和目的数据必须位数相同。也就是说, 能向AL里代入的就只有BYTE, 这样一来就可以省略BYTE, 即可以写成:(AL是一个8..
2020-09-10 17:26:06
724
1
原创 排序算法 - 选择排序、插入排序、冒泡排序
首先我们先看一下选择排序的思想:每一趟(例如第i趟,i=0,1,2,…n-2)在后面n-i个待排的元素中选出关键字最小的元素,作为有序元素序列的第i个元素。这段表述乍一听是不容易理解的,我的理解能力比较差,所以学习的时候就直接跳过了。我始终认为对于数据结构来讲,画图永远是最有效、最直观的一种方式,从链表到队列,一直到目前学习的排序算法都是如此。以下动图均源自知乎用户:程序员吴师兄...
2020-03-26 13:48:01
453
原创 队列的特殊实现 - 用栈实现队列
用栈实现队列这种方式我是想不到的,不过却是很容易理解的一种方式算法的实现思路:准备两个用于栈实现队列:inStack和outStack1、当有新元素入队时 : 将其压入inStack 中2、当需要出队时 :(1)当outStack 为空时 : 将inStack 中的元素逐一弹出并压入outStack 中 将outStack 的栈顶元素弹...
2020-03-25 17:52:34
331
原创 栈的应用 - 符号匹配性检测
当我们用编译器编译工程的时候,时常会出现缺失大括号或者小括号等之类的情况。那么编译器是怎样实现符号匹配监测的呢?其实也是利用了栈的原理。首先来看一下算法的整体思路:1、从第一个字符开始扫描2、当遇到左符号时进栈,当遇到普通字符忽略3、当遇到右字符时,弹出栈顶的元素,并将右符号与弹出栈顶的符号进行匹配,如果匹配成功,则继续下一个字符;如果匹配失败,则停止程序并报错。4、成功结束...
2020-03-24 14:40:39
549
原创 柔性数组
柔型数组的定义:结构中最后一个元素允许是未知大小的数组,这个数组就是柔性数组。但结构中的柔性数组前面必须至少一个其他成员,柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存。包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小以适应柔性数组的预期大小。这种代码结构产生于对动态结构体的需求。这里使用实现静态链表...
2020-03-19 22:58:41
292
原创 Qt连接MySQL提示“QSqlDatabase: QMYSQL driver not loaded”
Qt连接MySQL出现此提示信息的原因是Qt Creator与MySQL位数不统一,使用MySQL5.2及以上的版本会出现这个问题。原环境:Qt Creator 4.5.0 Based on Qt 5.9.4 (MSVC 2015, 32 bit) MySQL 5.7.22 Win64其中Qt Creator在帮助中可以获取版本信息,打开MySQL控制台输入show variab...
2020-03-18 12:42:20
593
原创 void*数据封装
使用void*数据类型的封装,有两个作用1、void*表示“任意类型的指针”,用于函数的形参类型,表示可以接受任何的数据类型的参数传递进来。例如memcpy函数的原型如下void *memcpy(void *destin, void *source, unsigned n);参数 destin-- 指向用于存储复制内容的目标数组,类型强制转换为 void* 指针。...
2020-03-17 10:09:09
639
原创 APP访问服务器抓取页面显示所需数据
通过一段时间的学习,我们实现了一个简单的物联网系统,该系统以STM32嵌入式微控制器为主控下位机,采集温度传感器数据,通过esp8266 Wi-Fi芯片连接无线局域网访问自己在本机搭建的服务器,并将数据存储在数据库中。同时,用android stdio写一个简单的APP,用来抓取网页内容,实时显示当前环境温度。前面几篇博客,我们已经完成了大部分的工作,现在只针对安卓端进行说明。安卓APP用...
2019-10-14 17:21:16
1474
2
原创 stm32接入机智云平台实现app控制led灯
准备工具:stm32f407 单片机 esp8266 WiFi模块 PC 机智云app flash烧写工具第一步烧写机智云Gagent固件进入下载中心,选择硬件资源开发GAgent,选择我们要烧写的esp8266GAgent把烧写下载好的GAgent固件(1)选择和单片机匹配的flash大小(2)GAgent_00ESP826_04020034_32Mbit.bi...
2019-10-07 17:36:23
4983
原创 stm32+esp8266上传实时温度到本地服务器(附资料下载链接)
在之前我们已经实现了esp8266和本地服务器的交互,并将数据写入到MySQL数据库中,但实际意义不大,我们需要实现将数据实时写入,所以需要添加传感器模块,并以单片机为主控处理数据,完成上传。这一次配置esp8266不再使用串口助手,而是将命令写到代码中自动完成。我们使用两个串口,串口一用来调试,串口三用作发送命令给esp8266。需要提前将手机打开设点,保证PC和esp8266都能连接,...
2019-10-07 08:49:01
6817
原创 通过DS18B20学时序
DS18B20是单总线通信,所以它的时序相对来说也比较简单,从它开始入门再适合不过了准备工具:单片机 DS18B20传感器 DS18B20 datasheet关于DS18B20的详细介绍大家可以看它的datasheet,这里只针对时序做一些介绍,参考正点原子的代码,从datasheet出发做详细的阐述,DS18B20有着严格的时序要求,稍有差错,就容易无法正常工作,接下来我们来分析它...
2019-10-04 11:05:58
2675
原创 ESP8266上传数据到MySQL数据库(附资料下载链接)
思路:ESP8266通过串口助手将数据上传储存在MySQL数据库中,通过浏览器访问PHP文件来显示数据库中的数据。准备工具:ESP8266模块 普通安卓数据线 预装好的MySQL数据库 wamp集成开发环境 PHP实现的网页 串口助手第一步通过给ESP8266烧写AT指令固件第二步配置ESP8266,指令如下AT+CWMODE=3:设置工作模式(STA,AP模式)A...
2019-10-02 16:15:49
13039
4
原创 ESP8266调用心知天气API
首先我们需要一个可以调用返回天气信息的API,这里以心知天气为例,可以免费注册,虽然功能受限,但对于初学者来说,足够了心知天气api:https://api.seniverse.com/v3/weather/now.json?key=your_private_key&location=beijing&language=zh-Hans&unit=c调用的时候只需要将...
2019-10-01 08:51:54
8069
1
原创 C语言实现简单的状态机
先来看一下状态机的定义:状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。有限状态机简写为FSM(Finite State Machine),主要分为2大类:第一类,若输出只和状态有关而与输入无关,则称为Moore状态机第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机考虑状态机的...
2019-09-22 20:19:57
2165
原创 AT指令实现ESP8266和PC的相互连接
准备工具:串口调试助手,网络调试助手ESP8266作为服务器,PC作为客户端在串口助手上完成以下代码操作:AT+CWMODE=2 ##配置ESP8266模块为AP模式,开启wifi热点。AT+RST ##重启模块使AP模式生效AT+CIPMUX=1 ##启动多连接,这里强调一下,ESP8266作为服务器做多支持5个客户端的链接,id分配顺序是0-4。AT+CWS...
2019-09-22 09:19:22
1869
原创 $_GET和$_POST的用法和区别
一开始接触PHP的时候,被$_GET和$_POST这两个变量搞得很头晕,特来总结,如有补充和指正,欢迎留言基本定义:get和post是页面提交的两种方式,有着不同的应用。$_GET变量接受所有以get方式发送的请求,及浏览器地址栏中的?之后的内容。$_POST变量接受所有以post方式发送的请求,例如,一个form以method=post提交,提交后php会处理post过来的全部变量...
2019-09-19 14:48:42
3745
原创 用PHP完成简易博客系统(附项目完整资料)
因为项目需要简单的完成一个页面接收参数并且操作数据库的过程,在老师的指引下决定通过一个博客小项目加深自己的理解。学习路线是用一天的时间大概熟悉了HTML和PHP的语法,然后结合一些视频课程和相关博客完成目标,这里只完成了博客的基本功能,想要扩展可以自行研究。整体内容参考网易云课堂的PHP100课程的第9,10两节,因为界面没有使用CSS,所以比较丑,但功能还是全面的,主页效果图如下准备...
2019-09-19 10:49:28
5071
2
原创 结构体之函数传参问题
最近在写程序的时候,经常被结构体搞得晕头转向,尤其是关于结构体作为函数参数的情况,在此总结。以asctime函数为例,函数原型为:char *asctime(const struct tm *tm);分析可知,参数类型为输入型参数,返回一个字符串类型的数据。查阅man手册,了解struct tm的一些相关定义操作asctime时先要定义结构体变量tmNow:...
2019-05-18 09:43:14
1693
原创 main函数传参问题
在 C99 标准中,只有以下两种定义方式是正确的:int main( void )// 无参数形式{ ... return 0;}int main( int argc, char *argv[] ) // 带参数形式{ ... return 0;}大多数时候第一种写法就能完成任务,而main也完全可以不需要传参,...
2019-05-15 20:57:11
454
原创 Linux下安装交叉编译工具链
安装目的gcc经过编译后生成的可执行文件是在linux操作系统之上运行的,也就是说经过gcc编译器最后生成的一大堆机器码只有Linux操作系统认识,但是我们做ARM裸机实验时Soc上是没有linux操作系统的,所以这时候ARM裸机只认识经过ARM指令集生成的机器码。这时候我们要想让可执行文件在ARM裸机上运行就需要使用arm-linux-gcc (交叉编译工具)编译生成的可执行文件。字面理解a...
2019-05-13 23:04:43
3221
原创 typedef简单用法
1、typedef工具是一种高级数据特性,他使您能够为某一类型创建自己的名字。例如:typedef unsigned char BYTE通常我们使用醒目的大写字母定义,以提醒用户这个类型名称是一个符号缩写接下来就可以用刚刚定义的类型名BYTE来定义变量了BYTE x;2、typedef用来命名一个结构类型时,可以省去结构的标记:struct x1{ .....
2019-04-15 21:06:08
225
原创 类型限定词const、volatile和restrict的用法
一、关键字const1、const修饰变量表示这个量是常量,不能通过赋值、增量或减量运算来修改该变量的值。const修饰变量的格式为:const type name = value;下面的代码是不被允许的:const int a = 10; //把a限定为常量a = 20; //上面的声明把使a成为一个只读变量,因此这句代码是不被允许的但...
2019-04-14 20:59:27
565
原创 动态内存分配:malloc()和free()
1、通过查询gcc的man手册,我们可以看到malloc的函数原型:void *malloc(size_t size); //分配长度为size字节的内存块(1)返回值是void指针,void*表示未确定类型的指针,void *可以指向任何类型的数据,指针指向的类型是不确定的,这个指针在需要的时候可以被强制转化成其他任何一种确定类型的指针。(2)malloc只管分配内存空间,...
2019-04-14 10:51:55
259
stm32+esp8266上传实时温度到本地服务器.zip
2020-03-18
mysql-connector-c-6.1.6(解决qt连接mysql问题).zip
2020-03-18
ESP8266上传数据到MySQL数据库.zip
2020-04-16
PHP开发简易博客(适合新手)
2020-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅