- 博客(32)
- 收藏
- 关注
原创 STM32 PWM驱动舵机
通过按键控制舵机旋转角度,每次按键按下,舵机角度增加30°,到达180°后重置为0°,同时OLED屏幕显示当前角度。启用TIM2定时器和GPIOA时钟,配置PA1为复用推挽输出(PWM信号输出脚)时钟预分频(PSC)=72-1,计数器周期(ARR)=20000-1。舵机常用脉宽范围:0°对应500μs,180°对应2500μs。PWM频率为:72MHz/(72*20000)=50Hz。配置TIM2的通道2为PWM1模式,初始占空比为0。将角度映射到500-2500μs的脉宽。
2025-07-30 13:36:52
132
原创 STM32 PWM驱动LED呼吸灯
通过TIM_SetCompare1函数设置捕获比较寄存器(CCR)的值,控制PWM占空比。循环实现PWM占空比从0%逐渐增加到100%,再从100%逐渐减小到0%预分频系数(PSC):720-1,将72MHz系统时钟分频为100kHz。自动重装载值(ARR):100-1,使PWM周期为1ms(频率1kHz)配置GPIOA的Pin0为复用推挽输出(用于PWM信号输出)配置TIM2的通道1为PWM1模式,初始占空比为0。使能TIM2定时器和GPIOA的时钟。
2025-07-29 16:18:44
123
原创 STM32定时器外部时钟
通过 RCC_APB1PeriphClockCmd 和 RCC_APB2PeriphClockCmd 函数分别使能TIM2定时器和GPIOA的时钟,为后续的定时器和GPIO配置做好准备。GPIOA的第0引脚配置为上拉输入模式,用于接收外部时钟信号。
2025-07-28 15:21:13
124
原创 STM32单片机 定时器定时中断
定时中断是指当定时器计数到设定值时,产生一个中断请求,CPU响应中断并执行相应的中断服务程序。通过定时中断,我们可以实现周期性的任务调度、精确的时间控制等功能。
2025-07-27 16:43:34
197
原创 STM32对射式红外传感器计次
对射式红外传感器由红外发射器和接收器两部分组成。发射器持续发射红外光,当有物体经过时,会遮挡红外光,导致接收器接收到的光强发生变化。通过检测这种变化,我们可以判断是否有物体经过,从而实现计数功能。配置GPIO的外部中断,设置为下降沿触发。当传感器检测到物体经过时,输出信号由高电平变为低电平,触发中断。将连接传感器的GPIO引脚配置为输入模式,并启用上拉电阻,以确保在没有物体经过时,引脚保持高电平。在中断服务函数中,检测到中断触发后,计数值加1,并清除中断标志。
2025-07-25 16:55:47
104
原创 STM32单片机OLED显示
在软件上使用OLED显示屏需要用到相关的程序源码以调用相关函数实现功能。在硬件上需要正确的接线,连接OLED显示屏。
2025-07-24 15:36:34
152
原创 STM32 创建项目工程文件
找到在网盘上下载STM32入门教程资料的固件库文件夹打开Libraries, CMSIS, CM3,DeviceSupport, ST,STM32F10x,startup,arm 找到stm32的启动文件,将它们复制到项目文件夹里面并且在里面新建文件夹start。在keil将Target 1下的文件改名为start然后右键单击它选择添加已存在的文件到组里面来。然后找到新建的项目文件里面的start,将文件类型更改为All就能看到所有类型的文件。添加你所对应的启动文件,再吧所有的.c .h文件添加进来。
2025-07-20 16:19:01
126
原创 51单片机 使用LCD1602液晶屏
LCD1602液晶屏,顾名思义,它可以显示2行,每行16个字符。这种液晶屏采用字符点阵显示方式,每个字符由5×8的点阵组成。它的接口简单,操作方便,广泛应用于各种嵌入式系统中,如简易计算器、温度显示器、时钟等。驱动LCD1602的关键在于编写正确的初始化函数和数据写入函数。
2025-07-14 12:00:00
183
原创 51单片机 使用模块化编程实现动态数码管显示
模块化编程将程序分解为独立、可重用的模块,显著提升开发效率和质量。其核心优势包括:提高代码可维护性和可读性,增强模块复用率,降低系统耦合度,便于团队协作与调试。此外,该方法支持增量式开发和针对性性能优化,是提升软件开发效能的理想选择。
2025-07-12 12:00:00
366
原创 51单片机 动态数码管显示
基于静态数码管的基础上实现动态数码管需要注意的是创位与段影,段影本质是不同数码管的显示信号在时间或空间上发生了重叠。只要添加消隐处理就解决了,就是在switch后面加P0=0X00进行清零断码。但是加上后会导致数码管显示屏变暗,需要加上延时函数延时1ms。这样就可以实现动态数码管显示了。
2025-07-11 12:00:00
168
原创 51单片机 静态数码管显示
以共阴极数码管为例,显示数字“0”时,需要让a、b、c、d、e、f 段发光,对应的段码为0x3F(二进制:0011 1111 );在程序中,可以定义一个数组来存储这些段码,如 unsigned char NixieTable[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};然后使用switch语句控制P2_4 P2_3 P2_2 选择数码管位置根据要显示的数字,从段码表中取出对应的段码,然后将段码输出到对应的I/O口。
2025-07-10 12:00:00
120
原创 51单片机 独立按键控制LED位移
通过 两个独立按键( P3_1 和 P3_0 ),实现 LED 左移(递增) 和 LED 右移(递减) 控制 LED 亮灭位置,结合 按键消抖 和 循环逻辑,实现了“按键触发 LED 循环移位”的效果。~(0X01 << led) :取反后,左移后的“1”变为“0”(点亮对应 LED),其余位为“1”(熄灭) → 实现 LED 左移。led=0 → 0000 0001 (最低位);led=1 → 0000 0010 (次低位);led=7 → 1000 0000 (最高位)。
2025-07-09 12:00:00
199
原创 51单片机 独立按键控制LED显示二进制
通过检测按键的输入状态,改变单片机端口输出电平,使LED阵列显示对应的二进制数值。每个LED代表二进制数的一位,LED亮灭状态组合形成完整的二进制数。:机械按键在按下和释放时会产生抖动,导致多次触发。所以在检测按键时,需要使用延时函数消抖处理,比如延时10-20ms再次检测,确认按键状态。从0开始增加,到255后再加1会变成0(溢出),如此循环。时,二进制为00000001,则只有最低位LED亮;时,二进制为00000111,最低三位亮。
2025-07-08 15:45:32
153
原创 51单片机 独立按键控制LED灯亮灭
通过while循环不断检测i按键状态使用if语句条件确定按键是否按下,按下则将P2_引脚设置为低电平,LED灯亮。条件不成立按键没有在按下状态则执行else将P2_0设置为高电平,LED灯熄灭。使用if语句判断按键是否按下当按下时使用延时函数进行50毫秒的延长然后执行while(P3_1==0);避免重复检测到按键按下,最后使用取反运算符实现LED灯的亮灭。
2025-07-07 16:15:56
87
原创 51单片机 LED流水灯
为了改变LED流水灯频率可以通过STC-ISP软件延时计算器将定时长度更改为100毫秒。粘贴到main.c文件中,然后将无参延时函数更改为有参延时函数并套用循环语句实现自减。从而实现更改LED流水灯间隔时间的不同。51单片机实现LED流水灯的原理主要是通过单片机的IO口控制LED的亮灭顺序,让LED按照预设的规律依次点亮和熄灭,形成流水效果。
2025-07-06 13:56:59
114
原创 51单片机 LED灯闪烁
LED灯的闪烁是通过控制单片机的电平高低变化实现。51单片机的P2可以输出高电平(通常为5V或3.3V)或低电平(0V),通过循环切换电平状态,LED会因通断电交替而闪烁。为了使肉眼可见的观测LED闪烁通常需要用到延时函数。使用stc-isp软件上的软件延时计算器需要注意的是选择系统频率要选与所购买开发板对应的频率,然后更改定时长度。最后选择8051指令集需要选择所购买对应适用的系列。以上内容的核心知识点是电平切换,延时函数,循环语句。掌握这些便可实现基础的LED闪烁功能。
2025-07-05 11:48:08
113
原创 51单片机 点亮LED灯
P2=0xEF 通过P2端口赋值0xEF16进制转二进制0111 1111 控制LED灯。引入定义头文件#include<REGX52.H>让代码操作单片机硬件寄存器。void main() 单片机程序从main函数开始执行。最后实现单片机上点亮LED灯。让程序进行烧录下载编程。
2025-07-04 13:29:07
186
原创 LED 红绿灯交通信号模拟
转换顺序为:绿灯亮 → 黄灯闪烁 3 次 → 红灯亮 → 另一方向通行。模拟一个标准十字路口:南北方向、东西方向各一组红绿灯(红黄绿)。基于 STM32F103 的十字路口红绿灯控制系统设计与实现。每一方向轮流通行,基本周期建议为 30~60 秒。1. 红绿灯基本控制逻辑。
2025-05-05 14:46:47
202
原创 STM32 环境搭建
以管理员身份打开keil 通过keygen_new2032包破解keil 网盘下载keygen_new2032压缩包打开没有就是被和谐了,关闭防火墙重新下载就可以了。在keil中创建第一个项目文件电脑连接stm32 调试代码 能正常运行,stm32的环境就搭建好了。使用安装包下载keil。
2025-04-28 17:19:35
180
原创 C语言 运输公司对用户计算运费
3000<=s 15%折扣。路程(s)越远,每公里运费越低。s<250KM 没有折扣。2000<=s<3000 10%折扣。1000<=s<2000 8%折扣。250<=s<500 2%折扣。500<=s<1000 5%折扣。
2024-11-02 10:50:21
477
原创 C语言常用数据类型
long double :扩展精度浮点型,比 double 有更高的精度。_Bool:布尔型,只有两个可能的值:0(假)和1(真)。long long :超长整型,占用的存储空间比 long 大。struct :结构体,用于将多个不同类型的数据组合成一个单一的数据结构。short :短整型,占用的存储空间比 int 小。long :长整型,占用的存储空间比 int 大。void :表示没有值,用于函数返回类型,表示函数不返回任何值。enum :枚举型,用于定义一组命名的整型常量。
2024-10-28 12:51:09
1587
原创 C语言源程序的组成
包括执行语句、条件语句(如 if 、 else if 、 else )、循环语句(如 for 、 while 、 do-while )和跳转语句(如 break 、 continue 、 return 、 goto )。C语言提供了多种基本数据类型(如 int 、 float 、 double 、 char 等)和复合数据类型(如数组、结构体、联合体、枚举等)。其他函数:除了 main 函数外,还可以定义其他函数来组织代码,提高代码的模块化和重用性。在函数内部定义的变量,其作用域仅限于定义它的函数内部。
2024-10-22 16:52:39
832
原创 Linux下的C语言编程第一天
ls :查看某个目录下的文件 格式 :ls+目录的路径(不加路径默认当前路径)终端命令: cd :打开某个目录;格式:cd +目录的路径;
2024-10-19 23:05:46
216
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人