- 博客(35)
- 收藏
- 关注
原创 STM32智能加湿器
STM32F103C8T6是一款非常经典且应用广泛的微控制器,下面是它的核心信息概要。32位 ARM Cortex-M3 内核最高 72 MHzLQFP-48 封装,最多 37个可编程I/O引脚2个12位ADC、7个定时器、2个I²C、3个USART、2个SPI、1个USB、1个CAN🔧 核心功能与特点STM32F103C8T6的功能十分丰富,这使得它能适应各种复杂的应用场景。。
2025-09-27 23:16:34
877
原创 蓝桥杯13届省题
亮点是画斜线的点,用了一个除操作,没到一百除都是等于0的,所以达到了定时一百毫秒,到了一百毫秒,进去首先把定时器计数值清零,以便下次计数定时,在里面把一个标志位取反再赋回来,然后就然后这个标志位就赋给LED[ ]数组,最终实现100毫秒亮灭,具体结构是,当这个动作触发后,我们把定时器里面的计数值给清零,然后就在下面判断这个定时器计数值是否大于我们要延时的时间,大于就执行关闭这个动作的语句,
2025-09-27 22:34:03
1494
2
原创 基于STM32设计的智能手环(ESP8266+华为云IOT)
摘要:本项目基于STM32F103RCT6设计了一款多功能智能手环,具备健康监测(血氧、心率、体温)、运动计步和GPS定位功能。采用0.96寸OLED显示屏显示数据,通过ESP8266-WIFI模块连接华为云实现远程监控。硬件部分包含MPU6050传感器(6轴运动处理)和MAX30102血氧模块(IIC通信)。项目提供了完整的OLED驱动代码(支持中英文显示/绘图)、MPU6050六轴数据处理程序,并实现了异常状态蜂鸣器报警功能。所有传感器数据可通过Android APP实时查看,为健康管理提供便捷的穿戴式
2025-09-20 01:00:01
1279
原创 freeRTOS学习
主要针对优先级不同的调度,可以对任务进行不同的优先级配置,高优先级的可以抢占低优先级低的任务执行,数字越高对应的优先级越高,这个刚好与中断的优先级反过来,中断的优先级是数字越低优先级越高;1:高优先级的任务优先执行,2:高优先级的任务如果没有完成的话,低优先级的任务就不能够执行,3:如果一个任务被抢占了,那么这个任务就会进入就绪态,当高优先级的任务完成了,那么这个任务就会马上可以被执行;
2025-06-20 23:56:28
171
原创 STM32G431RBT6+CubeMX+Keil
这个选项配置应该是选择下载调试方法;用这款单片机开发板的话,就应该是这个样子配置,但是原先配置的是ST-link的,这个方法应该就是用ST-Link的下载器下载程序的,
2025-06-18 01:48:35
426
原创 c++学习合集(2025-4-29)
跟C语言一样都有一个框架;各个解释如上图;以下是代码的逐行解释:```cpp#include <iostream> // 引入标准输入输出流库(包含cout/cin等)using namespace std; // 使用标准命名空间(避免写std::cout)int main() // 程序入口函数(必须有且唯一){ // 输出 "hello world" 并换行 cout << "hello world" <<
2025-05-06 21:51:28
965
原创 蓝桥杯单片机错误合集
**分频模式** | **计数频率** | **优势** | **劣势** | **适用场景** |分为三个部分,前面的字符串用发送字符串函数,中间的是数字,一位一位的发,但是这里数字转换为字符,就涉及到ADII码,关于ASII码以下是解释,为什么要加上字符‘0’,- **1T分频**:若追求高精度或使用增强型单片机(支持1T模式),即使晶振为12MHz,也应选择1T分频以提高性能。
2025-04-20 23:06:23
1758
原创 stm32学习合集(标准库)
注意点:PA15,PB3,PB4是调试端口,一般不用做GPIO口做输入输出,如果要用的话,那就是要经过特殊的初始化,以下是特殊的处理步骤,但是我还没有试过;基本定时器预分频器:如果内部时钟是72M,那么这个分频器就可以对72MHz进行分频,计数器:就是计数自动重装寄存器:就是当计数器计到自动重装寄存器里面存储的值了,就会产生中断,同时计数器还会清零;
2025-04-18 00:36:21
2389
3
原创 单次采样噪声敏感-均值滤波
PCF8591-AD转换-光敏转换,我觉得是采集的精度太高,然后就是他的数值变化的非常快,一直在跳动,那就直接采用均值滤波,采集到的数值加起来,求平均值,就能让采集到的数值变得平滑。
2025-04-04 19:46:26
156
原创 ds1302-按键修改ds1302内部的数值
所以我们说的加1加的是十进制的1,不能够直接加,所以我们的办法是,先把时的BCD值转化为十进制,在用这个十进制值加1,这个时候加的就是十进制,然后再把这个处理过的十进制值转换为BCD码,然后再用DS1302写函数写到内部去,实现加1,还有注意的一个点,如果是修改分的话,还要考虑分是否满了60,如果满了60,那么小时就应该加1,ds1302自己时间流动的话,确实会自己进位,但是如果人为修改的话,我看了一下,它就不会自己进位;以下的代码为,按键按下小时加1;下面是十进制转BCD,BCD转十进制的函数。
2025-04-02 18:11:53
273
原创 负数加减,并显示在只能显示正数的数码管
起初在处理负数时,我并没有考虑到负数在数码管的显示各种问题,首先减操作的时候,我们是要设置一个变量用来专门数码管展示,再设立一个是否为负数的标志位,在判断数是否为负数时,限值操作和减法操作也应该在前面,然后判断是否为负数,负数标志位再变化,还有一点是0减去100,并不是-100,而是-99,在计算机中好像0也被算作了一位数,所以我们在把这个负数转换为整数的时候,就还要减去一个1,就要就能保证是每按一下就减去100,但是如果是整数就没有这个问题,代表这个数变为正数了,负数能不能除法或取余?
2025-03-26 21:32:43
329
原创 PCF8591-DA转换
首先要注意的点是,数码管显示的值是未乘51的DA值,乘了51是要放在DA转换函数里面的,接着就是关于DA值的处理,题目如下,处理DA值的代码值也如下;下面是别人写的函数,差别就DA值的定义不一样。首先是写DA函数的格式。
2025-03-25 12:12:07
288
原创 LED灯单独控制其中一位不影响其他位
主函数还要定义一个数组,LED[ 8],上面的子函数就放在while主循环中,我们要使某一位亮就要往LED[]数组里面写数值,数组里面的零位使是led1,首先原理是与操作是1不变,或操作是0不变,以此为原理就可以单独控制某一位,给1就亮,给0灭,这里的1,0并不是高低电平。以此为基础就可以封装为函数,方便使用,
2025-03-23 14:49:21
248
原创 蓝桥杯单片机十四届省题
首先是在定时器里面设置一个变量,应该是中断里面设置一个变量T1_count_grit,一毫秒就加1,然后去到判断触发是否发生的if语句,用T1_count_grit减去旧的T1_count_grit;看看他是否大于3000毫秒,是的话就进入触发,进入触发之后就把T1_count_grit赋给旧的T1_count_grit,更新旧的T1_count_grit,以便下次的判断3秒;
2025-03-17 08:35:07
138
原创 蓝桥杯单片机练习
还有就是要注意ds1302的读地址和写地址;写地址是0x80开,注意记忆ds1302的初始化函数,往0x8e写0x00;注意0x00是允许写入,0x80是禁止写入;还有就是BCD码变为十进制是除16,而不是除10;有点久没有写独立键盘函数了,要多看看。
2025-03-08 00:31:43
176
原创 蓝桥杯单片机-555定时器与频率检测
T0用做计数器,也就是频率计数,要设为8位自动重装模式,TH0和TL0要设为0xff,来一个频率就进入中断,实现频率计数。这里的TMOD要设为0x16,具体为什么看上图。T1用作计时器,也就没有什么特别的。中断函数具体代码如下,要看。
2025-03-07 01:20:30
283
原创 蓝桥杯单片机-ds1302
存储日历时间的数组是采用BCD码,数组从左到右的是秒-分-时-日-月-周-年。写操作的存储器地址是从0x80开始,也是间隔2,读和写操作都是七个地址。这里有错误,bit7为0就能写入,为1就禁止写入。读操作的存储器地址是从0x81开始,间隔2。
2025-03-06 23:41:50
200
原创 小蜜蜂工厂灯光管理系统
单独操作P0口的高四位不影响低四位;但是感觉是去抖没有整好,有时候按了按键并不能关灯或开灯;以上是完整代码,但是按键控制还是不太行,这个单片机好像点亮灯的时候不能够位寻址,这个有点疑惑。上面的代码实现led逐个点亮再逐个熄灭,上图是处理串口的命令,读取时间是处理BCD码的操作。
2025-03-04 23:05:06
240
原创 蓝桥杯单片机-ds18b20
以上的这个温度函数我是参照江科大的方法写的,注意点都在主函数那里;延时时间影响到数码管的扫描;温度转换函数放在定时器中断函数里也是太长的,折中算在一上电的时候,while死循环外就不能用温度转换函数先转换温度;小蜜蜂的处理温度的方法貌似有点麻烦;sd18b20是一个使用单总线的设备,再这个单片机上我查到的是DQ数据总线是P1_4;ds18b20温度函数。
2025-03-04 19:16:52
332
原创 蓝桥杯单片机-io扩展技术与存储器映射扩展
下图将解释P2=(P2 & 0x1f)| 0x80;这种方法只改变高三位,低5位保持不变,可避免与P2口其他设备冲突;但是现在比较新的单片机都没有存储器映射扩展,所以只做了了解;
2025-03-02 22:40:20
158
原创 蓝桥杯单片机-串口通信
TR1为1启动定时器;EA为1开启总中断;ES为1开启串口中断;还是出现了上面的问题,初始化的时候要发送一个字符,还是发送不过去,AURT的地址是0x8e;AURT初始化要设置为0x00。一般来说串口通信都是绑定定时器1的;初始化串口的话,首先TMOD要设置为。TI和RI两个标志位会变为1;为1之后要受手动置0。然后就是如果接收到了或发送成功的话,TL1和TH1设置为0Xfd。SCON设置为0X50。
2025-03-02 14:23:23
259
原创 蓝桥杯单片机-Pwm调制
以上是江科大的简单呼吸灯,注意事项如上,优点是简单,但是有个大缺点就是占用主函数的扫描时间,重要是理解delay延时函数中的中的中间数time,用time模拟出占空比;以上是通过一个状态机的方式,是看小蜜蜂的视频学的,但是我感觉也可以用数组实现调节PWM_duty;只要按键按一下,数组往后一位,感觉也能实现;上图目的是要设计一个双向呼吸灯,但是现象不是很明显,单向的可以,不太理解PWM_duty要怎么设计,首先就是一个名词,占空比,他说的是高电平时间所占整个周期时间的比例,pwm。
2025-03-01 18:34:29
239
原创 蓝桥杯单片机-定时器
定时器与中断是绑定一起的,在软件生成定时器初始化函数之后,要自己加上ET和EA使能,即赋为1.与中断寄存器不一样,TCON可以位寻址,TCON应该就是中断寄存器,他包括EA,ET0,.Tmod模式寄存器只能字节寻址,TMOD有八位,他的高四位控制定时器1和计数器1的模式选择,低四位控制的是定时器0和计数器0的模式选择。上图是小蜜蜂的视频,我的理解是,定时器和计数器本质上是计数器,作为定时器是他的信息来源也就是脉冲来源就是内部晶振,等计数满了,也就是定时的时间到了,就去执行定时中断。但是具体功能是实现了的;
2025-02-28 17:51:59
1413
原创 蓝桥杯单片机-中断函数
中断IE中断使能,举个例子,在你的家里,一般都会有个电总闸,这个EA就相当于总闸,总闸不合上,整个房子都没有电,EA也是如此,EA这个中断总闸不合上,中断就不能够响应,而EX0,ET0,等等,就是你房间里的开关,这个开关不合上,中断也是不能够产生,IP部分是选择中断优先级,一般不能动;特别要注意的就是初始化外部断不能出错,只需要初始化三个位,以上差不多是是基于小蜜蜂的视频,基本上就是这个流程;注意初始化函数和外部中断函数的书写格式,注意中断服务号,还有中断关键字不要写错,
2025-02-28 13:25:06
201
原创 蓝桥杯单片机-矩阵键盘
他的端口比较乱,有P3和P4口,所以用小蜜蜂的方法,从上到下为x1,x2,x3.x4,从左到右是y1,y2,y3,y4,使用逐行扫描的方法,江科大也是如此的方法,还有就是晶振用12兆赫兹的软件延时效果比较好,连Nop机械周期都不用,就省了引intrins.h的头文件;关于这款板子的矩阵键盘,重要的是它没有定义P4口,所以用reg52.h的话,就要第一时间定义P4口;还有就是使用矩阵键盘,跳线帽要短接1,2端;以上的代码消抖的成果还是比较的好的,只延时。最后按键消抖的方法也跟独立按键一样,
2025-02-27 21:43:44
263
原创 蓝桥杯单片机-独立按键
上图是用小蜜蜂的方法,自己小改了一下;能够实现不错的去抖动方法,主要是靠while函数,但是要放到合适的位置,;去抖的话,感觉还是江科大的定时器去抖高级一点;这款单片机的独立按键与矩阵键盘是一体的,最重要的是通过跳线帽选择是独立键盘还是矩阵键盘,3与2短接就是独立键盘,其他的就什么特别的,不足的是,好像蜂鸣器还是会跟P0口冲突,目前还没有找到解决方法,上图是江科大的方法,实现的是数码管显示键码。程序现象是led显示相对应的键码;
2025-02-27 19:18:16
188
原创 蓝桥杯单片机-数码管静动态显示
而且我尝试用江科大的方法,模块化写的时候,数码管的开始会出现乱码,但是当我不用模块化的时候,把函数都写在main函数里面,就会变得正常,我感觉是调用寄存器时,p0口冲突;上图是数码管的静态显示,能够正常运行,但是我尝试在display函数里面加蜂鸣器的时候,蜂鸣器还是不受控制,感觉还是P0口冲突;但是好像有点不足,有时候不知为何,应该是P0口冲突,导致蜂鸣器乱响;基本跟江科大的一样就是要选择寄存器,我觉得可用江科大的方法,而且小蜜蜂的方法也跟江科大的差不多,总体思路我感觉是一样的;数组的索引是从0开始的;
2025-02-27 00:56:05
356
原创 蓝桥杯单片机-蜂鸣器与继电器
蜂鸣器简单发生很简单,P0-6给1就响,重点是ULN2003,看小蜜蜂的视频得知这是达林顿管,见上图,最主要的就是达林顿管内加了非门,输入与输出反向;HC138_C=1;继电器的简单操作跟蜂鸣器一样简单,P04给1就吸合,最主要的还是达林顿管的部分,输入与输出反向。但是在写程序的时候要注意,蜂鸣器给电之后,延时一段时间,要断电即给0;void buzzer() //蜂鸣器。void relay() //继电器。void led_run()//亮灯。void main() //主函数。
2025-02-25 18:51:37
941
原创 蓝桥杯单片机-led-点灯
3:这个译码器的最高位是C,最低位是A;其他的就是输入是高电平有效,但是输出是低电平有效。1:头文件,看指导书说的还是reg51.h。但是用reg51.会出现P2_6之类的位选出现未定义;void delay(unsigned int t)//延时函数。//要求:点亮led,首先要通寄存器M74HC573M1R,sbit HC_138_C=P2^7;void jichunqi()//初始化寄存器。void diandeng()//点灯操作。
2025-02-24 23:06:07
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅