- 博客(38)
- 收藏
- 关注
原创 数组的初始化与使用
摘要:本文介绍了C语言数组的基本概念和使用方法。数组是存储相同类型元素的连续内存结构,通过索引访问元素。文章详细说明了数组的声明、初始化(包括完全和部分初始化)、多维数组的定义和访问方式。同时讲解了基本数据类型(int、char、float、double)的特性及存储空间。通过示例代码演示了数组遍历、数据类型大小检测和简单图形绘制。最后提出了数组逆序输出的课后练习,强调数组越界访问会导致未定义行为。
2025-12-23 20:02:55
388
原创 EEPROM&DCP&I2C
摘要:本文介绍了I2C总线协议及其在STM32上的应用实现。首先概述I2C的双线制、多主从架构等核心特性,详细说明其物理层和协议帧结构。然后重点讲解EEPROM存储器的特点和I2C通信实现方法,包括X24C02的读写函数和MCP4017数字电位器的控制函数。最后通过实验演示了使用I2C实现EEPROM数据存储和电位器调节功能,包括上电次数记录和电阻值动态调整。整个方案展示了I2C在嵌入式系统中连接低速外设的典型应用。
2025-12-23 13:03:26
683
原创 LCD的介绍和使用
摘要:本教程介绍LCD显示控制实验,重点讲解如何将LCD初始化文件添加到STM32工程(支持F401RB和G4芯片),并实现按键控制LED和蜂鸣器状态时在LCD上同步显示状态信息。实验基于74HC573电路设计,通过控制使能端消除LED干扰。主要内容包括:LCD驱动函数使用(初始化、清屏、文本显示)、按键状态判断逻辑,以及在不同行显示"LED ON/OFF"和"BUZZ ON/OFF"状态信息的实现方法。实验需在原有按键控制LED的基础上,结合提供的代码框架完成LCD
2025-12-21 21:47:23
471
原创 循环结构的功能
本文介绍了C语言中的三种循环结构(while、do-while、for)及其特点:while先判断后执行,do-while至少执行一次,for适合计数器控制。同时讲解了循环控制语句break(立即终止循环)、continue(跳过本次循环)和goto(无条件跳转)的使用方法及区别,强调应优先使用结构化控制语句。通过数值比较和累加求和的示例代码,演示了不同循环结构的应用场景,并建议初学者避免使用goto语句。最后布置了使用continue和break语句判断数值的课后练习。
2025-12-21 20:47:14
1238
原创 SYSTICK、RCC应用
摘要:SYSTICK是ARM Cortex-M处理器的24位递减计数器,用于周期性中断、精确延时和低功耗场景。通过CTRL、LOAD、VAL和CALIB四个寄存器配置,定时周期由重装载值和时钟频率决定。RCC模块管理时钟和复位,通过RCC_CIR寄存器处理时钟中断。实验任务包括利用SYSTICK进行按键扫描,切换HSE/HSI时钟源并观察现象。系统滴答定时器需在CTRL寄存器中使能才能正常使用。
2025-12-20 21:49:50
506
原创 KEY(按键)&BUZZ(蜂鸣器)
摘要:本文介绍了按键(KEY)和蜂鸣器(BUZZ)的基本概念与分类,重点阐述了STM32开发板上的应用实现。通过STM32CubeMX配置按键(输入)、LED灯和蜂鸣器(输出)引脚,使用状态机消抖法处理按键扫描。实验实现了按键1/2控制LED1开关,按键3/4控制蜂鸣器开关的功能。文中提供了硬件引脚配置方案和Keil代码实现框架,建议课后扩展练习其他LED控制和蜂鸣器时长调节功能。(149字)
2025-12-20 21:19:58
898
原创 C语言选择控制结构
本文介绍了C语言中的分支控制结构。单分支使用if语句实现条件判断,演示了通过scanf输入数值并使用if语句进行大小比较输出的示例。双分支通过if-else语句实现,修改单分支代码展示了两种情况的处理逻辑。文章还包含printf和scanf函数的简要说明,并布置了课后练习:编写程序判断输入数字是否大于指定值并输出结果。示例代码均在VS2022环境下测试,同时提示了使用scanf时需注意的安全问题。
2025-12-19 17:19:41
393
原创 C语言进制转化
本文介绍了C语言中常用的数制转换方法。主要内容包括:四种基础进制(二进制、八进制、十进制、十六进制)及其表示方式;C语言整型数据的二进制存储特性与格式化输出方法(%d、%o、%x等);转换函数如strtol()和printf/scanf的使用;手动转换的除法取余算法;以及自定义函数的实现思路。文章还通过图示展示了十进制与二进制相互转换的具体计算过程,并指出其他进制转换方法类似。全文简明扼要地概括了C语言中处理进制转换的核心知识点。
2025-12-19 14:51:18
315
原创 嵌入式按键扫描模块化
摘要 本文介绍了STM32按键扫描的模块化编程实现方法。通过配置GPIO引脚和编写独立的按键扫描模块,将功能分解到.c和.h文件中。文章详细展示了按键扫描的三种状态处理(未按下、按下、等待松手),使用HAL_GPIO_ReadPin()函数读取引脚电平,并通过状态机实现按键消抖功能。最终模块可返回不同按键对应的数值(1-4),为后续功能调用提供基础。该模块化设计使主函数代码更简洁,便于维护和扩展。
2025-11-23 20:30:06
324
原创 C语言的组成部分
C语言由四个核心部分组成:1) 32个关键字(如if、int等),具有特定语法功能;2) 值(常量),包括整型、实型、字符和字符串;3) 运算符,涵盖算术、逻辑、位运算等类别,各具优先级规则;4) 标识符,用于命名变量/函数,需遵循字母/下划线开头、区分大小写等命名规范。这四部分共同构成C语言的基础语法体系,其中关键字和运算符提供基本操作能力,标识符和值则用于数据表示与存储。
2025-11-22 22:44:13
624
原创 GPIO输入及按键、蜂鸣器的应用
本文介绍了嵌入式系统中GPIO输入及按键、蜂鸣器的应用。按键部分详细讲解了基本功能、硬件设计要点、软件实现方法、典型应用场景和常见问题优化。蜂鸣器部分阐述了其在报警提示、人机交互、调试辅助等方面的核心功能。实验使用STM32CUBE进行配置,通过代码示例展示了LED灯和蜂鸣器的控制方法,包括电平反转和引脚写入操作,并提出了流水灯与蜂鸣器联动的实现思路。全文涵盖了从硬件配置到软件实现的完整开发流程。
2025-11-22 22:01:02
856
原创 通用输出端口(GPIO)
GPIO是嵌入式开发中常用的数字接口,可通过寄存器直接控制引脚状态。STM32的GPIO寄存器包括模式寄存器(MODER)、输出类型寄存器(OTYPER)、数据寄存器(ODR/BSRR)等,用于配置引脚工作模式、输出类型和电平状态。通过操作ODR寄存器可实现LED控制,如0x0000FE00对应PC8引脚输出低电平点亮LED。流水灯实现采用循环移位操作ODR寄存器,配合延时函数。寄存器操作需注意位运算、时钟使能和电平兼容性等问题。相比库函数,直接操作寄存器效率更高,但需熟悉芯片手册的寄存器定义。
2025-10-03 15:20:24
920
原创 MATLAB基本运算(2)
本文介绍了MATLAB的基本运算功能,包括算术、关系和逻辑运算,以及数学函数的使用方法。重点阐述了MATLAB中三角函数的角度输入方式,特别是cosd函数可直接计算角度的特性,并与弧度转换方法进行了对比验证。同时详细说明了MATLAB中逗号与分号的使用区别:逗号用于分隔元素、函数参数并显示结果,而分号用于抑制输出、分隔矩阵行和代码行。最后通过复数运算实例演示了这些运算规则的实际应用,强调在MATLAB编程中需注意运算符的选择和标点符号的正确使用。
2025-09-20 20:12:32
991
原创 多页电路设计
Proteus支持两种多页电路设计方式:多页平行设计和层次电路设计。多页设计通过"设计浏览器"管理页面,使用全局标签或端口实现跨页连接,适用于模块化电路和层次化PCB布局。设计时需注意信号命名一致性,可通过快捷键PageUp/PageDown切换页面。流水灯电路示例展示了多页平行设计流程:新建工程→添加根页→重命名页面→分页设计电路→通过全局标签连接→整体仿真。多页设计保存在同一.pdsprj文件中,支持模块化设计降低复杂度。
2025-09-20 12:54:12
937
原创 基于protues的电子时钟仿真与模拟
本文介绍了电子时钟电路的Proteus设计与仿真过程。首先新建工程并设计原理图,包括查找元器件(7SEG-C0M-AN_GRN、74HC04等)、布局连线,重点说明了网络标签的使用方法(全局/局部标签设置)、电源连接注意事项及元器件属性编辑。然后指导进行电路仿真,可观测到LED以1Hz闪烁表示秒计时,数码管显示分、时变化,24小时循环。最后提供了修改电容值等参数的快捷方法。整个设计过程强调使用网络标号技术简化布线,确保电路可靠连接。
2025-09-19 17:33:05
667
原创 proteus母页设计
本文介绍了母页设计的基本操作。母页作为模板核心部分,其内容会显示在所有设计页面中,仅支持2D图形、位图和文本。详细说明了2D图形的绘制方法(直线、方框、圆等)和编辑技巧,以及如何设置母页的图纸大小、边框和标题栏。同时指导了保存模板的步骤,强调模板需保存在系统指定路径才能在新建文件时调用。最后指出执行相应命令可退出母页查看设计效果。
2025-09-19 13:43:46
1020
原创 MATLAB的基本运算
摘要: MATLAB常用函数操作指南:1) round函数用于数值四舍五入,支持指定小数位数;mean函数计算数组均值,可指定维度。2) 创建单元数组用花括号{}包含多种数据类型,如{5+2i,6,'TOM',false}。3) 结构体通过直接赋值或struct函数创建,如student.age=21,可用fieldnames获取字段名。示例应用:计算成绩均值B=mean(A),取整C=round(B);创建混合类型单元数组;构建含age/height字段的结构体并提取属性信息。
2025-09-18 16:06:03
644
原创 基于数学电路设计的简易篮球竞赛30s倒计时装置
本文介绍了Proteus软件中元器件模式、标签模式、脚本模式和终端模式的功能特点,并整理了常用元器件操作快捷键。主要内容包括:1)四种模式的功能说明,元器件模式用于元件选择与属性设置,标签模式用于网络标识,脚本模式支持自动化操作,终端模式用于仿真监测;2)常用快捷键操作,涵盖元件查找、选择、放置、移动、旋转、连线等;3)实验步骤指导,包括新建工程、原理图设计、属性设置和电路仿真等操作要点。文章为Proteus用户提供了实用的操作指南和设计技巧。
2025-09-18 15:45:44
1244
原创 嵌入式开发环境应用
摘要:本实验以STM32F401RB开发板为例,通过STM32CubeMX配置LED引脚(PC8设置为输出高电平),完成时钟、外设等初始化工程创建。在Keil5中编写代码,使用HAL_GPIO_TogglePin函数实现LED电平反转,配合500ms延时实现LED闪烁效果。实验重点包括芯片选择、引脚分配、时钟配置等关键步骤,最终成功点亮LED灯。
2025-09-17 18:36:37
436
原创 嵌入式系统设计(基于STM32CUBEMX和HAL库)
摘要:嵌入式系统是专用计算机系统,具有实时性、低功耗特点。STM32CubeMX是ST公司推出的图形化配置工具,可快速生成基于HAL库的初始化代码,简化STM32开发流程。HAL库提供统一API接口,封装底层操作,便于移植。两者结合可显著提升开发效率,但需注意性能开销和代码体积问题。开发环境安装需通过指定网盘获取安装包,按指引完成STM32CubeMX及芯片支持包的安装。
2025-09-17 12:24:09
1327
原创 MATLAB的作用
MATLAB是一款强大的数值计算与可视化编程工具,核心功能包括高效矩阵运算、数据处理与可视化、算法开发及系统仿真。它提供丰富的内置函数库和工具箱(如信号处理、图像处理、机器学习),支持复杂数学运算和2D/3D图形绘制。通过Simulink可进行多领域系统建模,并能将代码部署为独立应用或与其他语言集成。MATLAB广泛应用于科研、工程建模(如控制系统设计)和金融分析等领域,其简洁的矩阵语法(如A*B)和可视化功能(plot函数)显著提升开发效率。
2025-09-16 21:31:34
1398
原创 基于电路原理设计的彩灯装置
本文介绍了基于Proteus的彩灯电路设计与仿真实验步骤。实验以555芯片构成多谐振荡器,输出信号驱动74LS161计数器,通过4路LED以二进制方式显示计数状态。关键步骤包括:新建工程、正确连接电源终端、设置仿真参数、合理布局元器件(包括电阻、电容等)并连线。运行时,LED灯每0.5秒变换一次状态(灯灭表示"1",灯亮表示"0")。实验成功实现了数字电路彩灯装置的设计与功能验证,为数字电路学习提供了实践案例。
2025-09-16 21:07:19
189
原创 矩阵按键的使用
矩阵按键是一种通过行列扫描实现多按键检测的电路设计,可有效节省微控制器IO资源。其核心原理是将按键排成矩阵(如4x4),通过行线输出扫描信号,列线检测输入状态来识别按键位置。硬件设计需注意上拉电阻、消抖处理和防串扰措施。软件实现上采用状态机检测和延时消抖,通过逐行置低电平并检测列线状态来确定按键位置。文中给出了STC15单片机的矩阵键盘扫描代码示例,演示了如何通过控制特定IO口电平并检测输入状态来实现按键识别。该方法适用于计算器、密码锁等需要多按键输入的嵌入式系统,但需注意数码管显示可能出现的乱码问题。
2025-09-15 21:23:23
310
原创 动态数码管(简化过程)
本文介绍了数码管显示的模块化编程方法。首先通过数组存储数码管码值,然后创建专门的Nixie函数模块来处理数码管位置和数值显示,其中包含消影延时功能以提高显示稳定性。示例代码展示了如何简化多个数码管显示不同数字的实现,核心是使用Nixie(位置,数值)函数调用来替代繁琐的底层操作。这种模块化设计不仅精简了代码,还提高了可读性和复用性,特别适合嵌入式系统中多位数码管的控制需求。
2025-09-15 13:01:47
911
原创 动态数码管
动态数码管通过分时复用技术驱动多个数码管显示,利用人眼视觉暂留效应实现"同时点亮"的视觉效果。其工作流程包括:段选线并联、位选线独立控制、快速轮询扫描(1-20ms/次)。典型应用包括电子钟表等设备,具有节省I/O资源和降低功耗的优势。文中还介绍了74HC573锁存器的使用和基于STC15单片机的驱动代码实现,通过分时控制8位数码管显示1-8数字,并提到后续将优化简化代码结构。开发中需注意扫描频率与亮度的合理配置。
2025-09-14 17:47:50
434
原创 模块化编程
文章摘要:模块化编程通过将程序分解为独立模块,显著提升代码可维护性、复用性和团队协作效率。其核心优势包括:精准错误定位、避免代码重复、并行开发支持、降低系统复杂度、便于测试扩展。文中以C语言为例,演示了创建自定义头文件(如Delay.h)实现延迟函数复用的具体步骤,并介绍了预编译处理(宏定义、条件编译等)对模块化的支持作用。最后建议对固定代码段进行默认设置优化,减少重复编写。全文完整代码示例见原帖,操作疑问可留言讨论。
2025-09-14 12:57:32
661
原创 静态数码管的运用
摘要:本文介绍了数组在数码管显示控制中的应用。通过C语言代码示例,展示了如何定义数码管码值数组tab[],并利用按键控制数码管显示不同数字(例程1)以及实现倒计时功能(例程2)。两个例程均使用STC15单片机,通过P0、P2端口控制数码管显示,其中例程2还结合了延时函数实现倒计时效果。数组在此处用于存储数码管各数字对应的段码值,通过索引快速调用所需显示的数字码值。文中还包含基本的数组操作说明,强调数组在嵌入式系统中的实际应用价值。
2025-09-13 17:00:04
403
原创 静态数码管
静态数码管是一种常见的显示器件,由多个LED(发光二极管)组成,用于显示数字或简单字符。通常分为共阴极和共阳极两种类型,通过控制各段LED的亮灭来显示特定字形。静态显示的特点是每个数码管的段选信号独立控制,显示稳定无闪烁,但占用硬件资源较多。
2025-09-13 12:08:06
944
原创 用独立按键控制LED灯的移位
该摘要描述了两个基于STC15单片机的LED控制程序。第一个程序通过S7按键实现LED灯移位功能,每次按键触发LED状态左移一位。第二个程序通过不同按键(S7-S4)分别控制两个LED灯的亮灭状态,其中S7控制LED1点亮,S6控制LED1熄灭;S5控制LED2点亮,S4控制LED2熄灭。两个程序均包含去抖动延时函数,采用P0和P2端口进行I/O配置,通过检测P3端口的按键状态实现交互控制。
2025-09-12 16:52:53
152
原创 独立按键控制LED灯
文章摘要:本文介绍了独立按键的基本原理与应用,包括硬件连接方式(上拉/下拉电阻)、软件消抖方法及其优缺点。重点讲解了使用独立按键控制LED灯的实例代码,通过检测P30引脚电平变化实现按键控制LED亮灭。同时复习了C语言中if-else条件判断的基本语法,包括单条件、多条件判断和嵌套使用等编程基础内容。该案例适合单片机初学者理解基础输入输出控制。
2025-09-12 15:57:07
734
原创 LED流水灯控制代码详解
本文介绍了一种使用位移运算符优化LED流水灯控制的方法。通过分析传统逐位点亮LED的繁琐代码,作者提出利用左移运算符(<<)和取反运算符(~)简化控制逻辑。核心实现方案是:定义一个无符号变量LED,在for循环中通过P0=~(0X01<<LED)语句实现LED灯依次点亮,每500ms移动一位。这种方法相比原始方案减少了大量重复代码,仅需一个循环即可完成8个LED的流水效果。文章还系统梳理了C语言中各类运算符的功能和使用方法,为理解位移运算在硬件控制中的应用提供了理论基础。
2025-09-11 17:07:26
970
原创 简化LED灯的实现
本文介绍了使用STC15单片机控制LED灯的实验过程。首先通过逐个设置P0口各引脚为0实现了所有LED灯的点亮,然后演示了LED灯流水灯效果,但代码较为繁琐。接着引入十六进制控制方法,通过P0口直接赋值0x00实现全亮,0xAA实现奇数号LED灯亮(二进制10101010)。文中提供了完整的代码示例和延时函数实现,展示了从单个控制到批量控制的优化过程,以及二进制与十六进制在单片机编程中的转换应用。
2025-09-11 16:19:39
502
原创 51单片机入门教程(点亮LED)
摘要:本文介绍了如何通过STC15单片机控制LED灯的亮灭。通过设置P00端口电平(0为高电平点亮LED,1为低电平熄灭),配合Proteus仿真软件运行程序。文中给出了具体操作步骤和代码示例,包括初始化设置、延迟函数实现LED闪烁效果(500ms间隔)。核心代码包含头文件引用、主函数控制逻辑以及精确到854次循环的毫秒级延迟函数实现。
2025-09-11 12:36:29
264
原创 51单片机入门教程
本文介绍了LED灯的基本原理和KEIL5开发环境的使用方法。LED灯通过发光二极管实现高效节能照明,具有寿命长、能耗低等优势。在KEIL5软件使用方面,详细说明了创建工程的步骤:从Project菜单建立新工程,选择STC15系列单片机,设置英文路径避免报错,最后添加C语言源文件。这些操作步骤为后续LED灯控制程序的编写奠定了基础,适合初学者快速上手单片机开发环境。
2025-07-05 17:59:47
184
原创 c语言的循环语句(基础版)
while循环会在满足某个条件的情况下重复执行一段代码。如果一开始条件就不满足,那么循环体中的代码将不会被执行。do-while循环与while循环类似,但至少会执行一次循环体,即使条件一开始就不满足。更新表达式) { // 循环体语句}这个循环会打印0到9的所有数字,与for循环的例子相同。do {// 循环体语句} while(条件表达式);这个循环会打印0到9的所有数字,与前两个例子相同。while(条件表达式) {// 循环体语句}这个循环会打印0到9的所有数字。3.Do-While循环。
2023-12-05 21:29:12
198
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅