新闻详情

新闻详情

首页 / 资讯中心 / 详情

基于STM32F103C8T6的多功能智能温控风扇系统设计与开源

发布时间:2026/9/8 23:29:41来源:尧图网络
基于STM32F103C8T6的多功能智能温控风扇系统设计与开源
基于STM32F103C8T6的多功能智能温控风扇系统代码、原理图、仿真工程我都整理好开源了。这个项目解决的是一个很具体的问题手头一台12V直流风扇希望它能根据环境温度自动调速温度高了风扇转得快温度低了安静停转同时能实时看到当前温度和转速等级。它不算高深但把嵌入式开发最常见的硬件设计、外设驱动、PWM控制、页面显示、仿真调试全流程串了一遍非常适合正在学STM32或者准备做相关课程设计的读者直接照抄实验室机箱散热、功放散热这类场景也能直接改来用。1. 这个项目解决了什么问题从手动风扇到自动温控的选型逻辑普通风扇只有开和关两个状态手动拨开关、手动拧调速温度升高了还得自己走过去操作。这个项目要做的就是把“需要人盯着的重复劳动”变成闭环温度传感器持续采样STM32根据温度值实时计算PWM占空比风扇转速跟着自动调整。本质上这就是一个“传感器—控制器—执行器”闭环虽然结构简单但每一环都有值得展开讲的地方。1.1 为什么选STM32F103C8T6而不是51或Arduino很多初学者上来就纠结用51、Arduino还是STM32。这三类平台我都用过直接说结论这个项目最终落在STM32F103C8T6上是因为它恰好卡在一个甜点位。对比项STC89C5251Arduino UnoSTM32F103C8T6主频12MHz左右16MHz72MHz硬件PWM多数型号没有需要定时器模拟有但精度和通道数有限支持多路高级定时器PWMADC通常要外扩PCF8591等芯片10位ADC12位ADC多通道调试方式串口烧录在线调试困难串口/仿真器SWD硬件断点观察学习价值偏基础外设扩展成本高封装过厚底层被库挡住寄存器/标准库/HAL都能深入学这个项目需要做DHT11或DS18B20的单总线通信、PWM调压、ADC采样、OLED显示四件事。51做起来会非常吃力尤其单总线对时序要求高主频低还要卡时序中断和主循环容易互相干扰Arduino写起来快但很多细节都被库挡住了等你调通这个项目对寄存器、定时器、中断的理解提升有限。STM32F103C8T6性能足够跑完整套逻辑资料多到看不完开发成本也很低从标准库过渡到HAL库非常顺。1.2 系统整体架构与功能拆解我没有把功能一股脑堆上去而是拆成了几个能独立测试的模块温度采集模块DHT11读取温湿度或者用DS18B20读高精度温度同时提供NTC热敏电阻加ADC的低成本方案。控制核心模块STM32F103C8T6负责定时采集、数据滤波、转速策略计算通过PWM输出控制风扇。风扇驱动模块PWM信号驱动功率MOS管实现占空比调速并对电机反电动势做续流保护。人机交互模块0.96英寸OLED显示实时温度和转速百分比三个按键完成开关、模式切换、温度阈值设定。供电与接口USB 5V输入或外部直流电源输入板载3.3V稳压预留UART串口用于日志调试。这样拆分之后每一块都能单独验证。烧个裸机程序点灯验证最小系统再分别测传感器读数和PWM占空比最后才把控制策略加进去联调。开发时如果发现某个功能不对能立刻缩小排查范围不至于整个项目一起抓瞎。1.3 开源内容里到底有什么仓库里不是丢一个main.c就完事而是按下面结构组织的代码工程基于标准外设库SPL的完整工程同时提供HAL库移植说明包含BSP驱动、App应用层、Main入口。原理图立创EDA和KiCad两种格式的原工程外加PDF版本方便直接查看元件参数、封装、接线表都写在文档里。仿真项目Proteus 8仿真电路还有Wokwi在线仿真配置不出硬件也能先跑逻辑。文档接线定义、引脚分配、烧录步骤写成了独立README关键代码还有一篇说明文件逐步讲。2. 原理图纸拆开看最小系统、传感器、MOS驱动三块核心原理图是很多人拿到开源项目后懒得看、真出问题了又不得不看的文件。其实这张图的核心就三块STM32最小系统、温度采集接口、风扇驱动电路其他按键、OLED、电源都是外围附属。下面逐块拆开讲。2.1 STM32最小系统与SWD调试接口的必备细节STM32F103C8T6最小系统不复杂但细节决定稳定性。晶振电路用8MHz主晶振接OSC_IN和OSC_OUT两个引脚各接一个20pF负载电容到地。电容值不是随手写的它要和晶振的负载电容CL匹配经验公式大约是CL≈C1×C2/(C1C2)寄生电容所以20pF是常见取值。如果手里只有15pF或22pF也不是不能用后续用示波器测一下起振波形即可。复位电路是NRST引脚接一个100nF电容到地再接一个10kΩ上拉到3.3V。上拉保证平时复位引脚是高电平电容在按键按下瞬间提供低电平脉冲MCU才能可靠复位。BOOT0串10kΩ电阻下拉到地BOOT1直接下拉确保从Flash启动。如果买的是带按键的蓝丸板这些板上都处理好了。每个VDD引脚旁边要放一个100nF陶瓷电容去耦尽量靠近引脚电源输入端加一个10μF电解电容。这个对ADC采样精度和系统抗干扰影响很大看不出什么原理但实测很管用。SWD调试接口留4根线SWDIO、SWCLK、GND、3.3V最好再把NRST引出。用ST-Link的SWD模式只需要两根信号线加电源地比JTAG省引脚下载调试都够用。原理图里还有一个容易被忽略的点板上有模拟电路和数字电路混合时模拟部分的地单独走过一段最后在主板单点连接或用0Ω电阻隔开。我这个项目里温度传感器的模拟参考就独立处理了ADC采样稳定性比直接裸接地好不少。2.2 温度采集的三种方案DHT11、DS18B20和NTC温度采集是整个系统的输入源头选错传感器整个项目都会被牵着走。三种方案我都试过区别和坑如下方案输出类型精度速度接线复杂度适合场景DHT11单总线数字±2℃采样间隔不小于1秒一根数据线需上拉温湿度都要看成本敏感的DIYDS18B20单总线数字±0.5℃转换时间约750ms一根数据线需上拉对温度精度有要求的场合NTC热敏电阻模拟电压依赖分压电阻和标定实时电阻分压ADC读取想把成本压到最低的批量方案DHT11的电路最简单VCC接3.3VGND接地DATA引脚接一个MCU的GPIO同时加一个4.7kΩ上拉到3.3V。这里有一个很多人翻车的点DHT11的数据线和DS18B20虽然都叫单总线但初始化方式和位时序细节不同代码里要区分开。DS18B20建议3.3V供电数据线上拉电阻也是4.7kΩ。它的优点是ROM里有唯一64位序列号可以在同一根总线上挂多个传感器做多点测温缺点是转换时间较长快速响应的PID温控采样周期必须按750ms以上设计。NTC方案我用的是10kΩ NTC配合10kΩ精密电阻分压分压点接到STM32的ADC输入通过查表或Steinhart-Hart方程换算温度。好处是没有时序问题代码省心但要注意热敏电阻自热效应激励电流不能太大分压电阻上最好并一个100nF电容滤波。2.3 风扇驱动电路MOS管选型与续流保护风扇驱动是原理图里最容易画错的地方。一个12V、0.2A的直流风扇看起来电流不大但电机是感性负载PWM调速时会产生反电动势如果直接用GPIO驱动要么电流不够要么MOS被反向电压击穿。驱动电路我这样设计选用N沟道MOS管AO3400这类VGS阈值低的型号3.3V电平可以完全导通。GPIO输出的PWM先串一个100Ω电阻到MOS管栅极再在栅极和源极之间并一个10kΩ下拉电阻保证MCU复位期间MOS管不会误导通。风扇正极接电源正负极接MOS管漏极MOS管源极接地构成低边开关。风扇两端并联一个1N5819肖特基二极管方向是风扇负极接二极管阳极、正极接二极管阴极PWM关断瞬间电机反向电流通过它续流避免尖峰打坏MOS管。电源输入端加一个470μF电解电容吸收电机启动瞬间的大电流。如果风扇功率更大比如12V/1A以上建议换更大电流的MOS并给MOS管加散热焊盘。还有一点STM32的GPIO输出PWM频率如果低于1kHz电机会有明显可闻噪声。建议初始就设为20kHz以上或者加一个RC低通滤波把PWM变成模拟电压再驱动风扇声音会安静不少。按键和OLED的电路相对常规按键接GPIO和GND外部上拉10kOLED用I2C接口SCL和SDA各接一个4.7kΩ上拉电源引脚附近放100nF电容。3. 固件代码逐段拆解从传感器时序到控制策略代码是这个项目的灵魂。工程基于STM32标准外设库因为对初学者来说标准库函数比直接撸寄存器容易理解又比HAL库少很多抽象层适合学原理。软件结构分三层底层驱动DHT11/OLED/PWM、中间层数据处理与策略、应用层主循环状态机。3.1 单总线时序的底层实现DHT11的读取时序最容易写歪。DHT11单总线的规格是总线空闲时高电平MCU先拉低至少18ms作为启动信号然后释放总线DHT11回一个80μs低脉冲再接一个80μs高脉冲之后开始输出40位数据。每一位的高电平长度不同逻辑0约26-28μs逻辑1约70μs所以读取时靠高电平持续时间判断。下面是DHT11触发和读字节的核心代码用GPIO模拟时序// 拉低总线触发DHT11 void DHT11_Start(void) { DHT11_DATA_GPIO_MODE(GPIO_Mode_Out_PP); // 配置为推挽输出 DHT11_DATA_LOW(); delay_ms(20); // 至少18ms DHT11_DATA_HIGH(); delay_us(30); // 释放总线30us } // 从DHT11读取一个字节 uint8_t DHT11_ReadByte(void) { uint8_t i, data 0; for (i 0; i 8; i) { while (DHT11_DATA_READ() RESET); // 等待高电平开始 delay_us(40); // 延时40us后再判断电平 if (DHT11_DATA_READ() SET) data | (0x80 i); while (DHT11_DATA_READ() SET); // 等待该位结束 } return data; }这段代码有两个关键点启动信号低电平必须保持足够时间读位时延时40μs后再采样延时太短容易把0误判成1太长又容易丢位。72MHz主频下延时精度足够但移植到其他MCU时务必用示波器重新校准。严格来说等待电平的while循环要加超时保护防止总线被外部干扰拉死产品代码里必须考虑。DHT11读到40位数据后前16位是湿度和温度整数部分中间16位是小数最后8位是校验和。校验方法是前四字节相加的低8位等于校验字节不等就丢弃这次数据。不加校验直接读偶尔会出现温度乱跳。DS18B20的时序和DHT11不同但同样有跳过ROM、启动转换、读暂存器这些指令。仓库里我单独写了ds18b20.c初始化时会检测总线上是否存在设备读取时也做了CRC校验。移植时注意DS18B20启动转换后必须等待至少750ms不能用DHT11那套时间逻辑。3.2 定时器PWM初始化与转速控制PWM部分用TIM3的CH1映射到PA6。初始化流程如下void PWM_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; // 开启时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); // PA6配置为复用功能推挽输出 GPIO_InitStructure.GPIO_Pin GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOA, GPIO_InitStructure); // 定时器时基72MHz/(711)1MHz计数到999PWM频率为1kHz // 这个示例用1kHz便于观察实际驱动建议调到20kHz TIM_TimeBaseStructure.TIM_Period 999; TIM_TimeBaseStructure.TIM_Prescaler 71; TIM_TimeBaseStructure.TIM_ClockDivision 0; TIM_TimeBaseStructure.TIM_CounterMode TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse 0; TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High; TIM_OC1Init(TIM3, TIM_OCInitStructure); TIM_Cmd(TIM3, ENABLE); } void Fan_SetDuty(uint16_t duty) // duty范围0-1000 { TIM_SetCompare1(TIM3, duty); }这里有个实际调过的坑直接抄网上的代码把PWM频率设成1kHz风扇工作时的线圈啸叫声非常明显。后来我把定时器改成20kHz也就是Prescaler设71、Period设49耳朵贴到风扇附近也几乎听不到高频噪声。用普通直流电扇和MOS低边驱动时20kHz是个比较舒服的折中。控制函数封装成Fan_SetDuty(duty)duty范围0-1000对应0-100%占空比策略层不会直接操作寄存器主循环保持清爽。3.3 温度映射与迟滞控制策略控制策略是这个项目最核心的部分。最简单的做法是把温度直接线性映射成PWM占空比if (temp 25.0f) duty 0; else if (temp 35.0f) duty 1000; else duty (uint16_t)((temp - 25.0f) / 10.0f * 1000.0f);线性映射可行但有一个经典问题当温度在25℃附近波动时PWM会在0和一个小占空比之间反复切换风扇呼一下停一下呼一下停一下噪声和电机寿命都受影响。所以我加了迟滞控制启动温度和停止温度做成不同值比如降到28℃以下才彻底停转上升到30℃以上才开始有输出。这本质上是施密特触发器的思路工业控制里很常见。再进一步想让风扇在设定范围内更平滑可以用分段映射温度区间占空比行为低于25℃0%停止25℃~28℃0%迟滞区维持上次状态28℃~33℃30%~70%线性跟随升温33℃~38℃70%~100%线性快速散热高于38℃100%全速转动这里30%-70%的曲线还可以用查表或拟合曲线做非线性映射不必死板线性。实测下来这些参数足够日常场景如果要做恒定温度控制比如培养箱或加热台建议上PID。滤波方面我用了滑动平均维护一个长度为10的温度采样数组读满后取平均值能滤掉DHT11的偶发跳变。如果换NTCADC采样还要多次采样滤波再查表避免量化噪声直接导致控制输出毛刺。3.4 OLED显示与按键交互的软件结构OLED部分用SSD1306驱动I2C接口。我封装了简洁的显示函数主循环里每秒刷新一次显示当前温度、湿度、转速百分比和运行模式。OLED刷新不需要太快但要注意不要把刷新逻辑和主控制循环放在同一个阻塞调用里否则会拖慢PWM响应。我做成非阻塞状态机每500ms更新一次更新期间不阻止风扇控制。按键部分做了防抖和短按、长按区分void Key_Scan(void) { static uint8_t lastKey 1, keyFilter 1; uint8_t keyNow GPIO_ReadInputDataBit(KEY_GPIO_PORT, KEY_PIN); if (keyNow ! keyFilter) { keyFilter keyNow; if (keyFilter 0) // 确认按下 Key_Event | KEY_FLAG_MODE; // 触发模式切换 } }这是一个轮询式消抖实际工程里也可以改成中断定时器扫描。最终选轮询是因为整个系统是一个控制循环不需要抢占逻辑简单不易出bug而且这种写法在Proteus仿真里也更容易复现。4. 仿真环境怎么搭、怎么调Proteus与Wokwi实战记录软件写完之后不一定马上就能拿到板子。我在仓库里配了两套仿真Proteus 8适合模拟完整电路Wokwi在线仿真适合快速调业务逻辑。两套仿真的目的和坑不太一样。4.1 Proteus里搭建温控风扇仿真并观察PWM波形Proteus 8 Professional搭建步骤大体是这样新建工程从元件库搜索STM32F103C8T6放到画布。添加LM35温度传感器输出接到STM32的PA0PA0配置为ADC输入或者在仿真里用一个电位器模拟温度变化更直观。添加一个电机作为风扇负载用理想开关或场效应管作为低边开关PWM信号从PA6接入。添加虚拟示波器连接到PWM引脚和电机两端观察占空比变化。给STM32加载编译好的hex文件配置外部晶振8MHz然后运行。Proteus最常见的坑是不配置外部晶振仿真直接提示芯片不运行或者加载的hex是用HAL库编译出来的Proteus对HAL库的支持不如标准库稳定。所以我建议仿真阶段用标准库工程。另一个坑是LM35输出是模拟电压在Proteus里可以直接接到ADC但必须在ADC初始化里把采样通道配好否则读到的值一直是0。真机用LM35时注意其输出电压范围约0-1.5V3.3V供电下ADC量程0-3.3V可以直接接入。用虚拟示波器观察PWM信号时当传感器温度升高PWM占空比会发生明显变化。如果在仿真里用LM35记得在旁边加一个电压源模拟温度变化否则温度恒定电机转速恒定看不到自动调速的动态过程。4.2 Wokwi在线仿真的优势与坑Wokwi是浏览器端的嵌入式仿真平台支持STM32F103C8T6、ESP32、Arduino等主流MCU。把它放进开源仓库的原因很简单很多读者不方便安装Proteus而Wokwi打开网页就能跑还能配合DHT11的虚拟器件实时模拟传感器数据对验证控制逻辑非常高效。在Wokwi里创建工程时先选择STM32F103C8T6它会自动生成platformio.ini等配置文件然后可以添加DHT11、OLED、按键、直流电机等器件。Wokwi里的DHT11模型可以随时在右侧面板调整温湿度数值主循环能立刻读到变化调试控制策略时优势巨大——不用拿电烙铁去改变环境温度。Wokwi的坑也有两个一是它不是完整的硬件模拟器对GPIO电平细节、I2C时序和PWM波形的模拟并不精确不能完全代替Proteus或真板验证电路二是部分硬件模型对单总线时序容忍度更宽松代码时序参数不正确也常常能跑过上了真机问题就暴露。换句话说Wokwi调通不代表真机一定没问题。我的建议是拿到开源代码先Wokwi调业务逻辑再到Proteus验电路连接最后才上真机如果已经有板子Wokwi可以当作快速演示环境。4.3 仿真转真机时的注意事项从仿真转到真机最大的差异是时序和电平。DHT11在仿真里用延时就能稳定读取到真机可能因为GPIO速度、上拉电阻、线缆电容导致时序不对。解决办法是调试时用示波器抓总线波形确认高低电平宽度和理想时序一致。真机ADC采样还会受电源纹波影响温度曲线可能不一致。原理图阶段要做好模拟电源滤波MCU的VREF接到干净的3.3V采样端并一个小电容。仿真正常但真机ADC值总在某个值附近跳动优先检查电源纹波和地线回路再考虑软件滤波。另外真机的风扇驱动MOS管发热、续流二极管方向接反、PWM频率不合适这些问题在仿真里压根不会暴露上真机后需要逐项检查。5. 开源仓库的整理思路与后续扩展建议开源一个项目不是丢个压缩包而是要让人能看得懂、跑得起来。整理仓库时我重点放在“读者拿到手第一步就能顺利复现”上。5.1 仓库目录结构与README要点仓库目录大致如下smart-temp-fan/ ├── docs/ │ ├── 接线表.md │ ├── 烧录与调试指南.md │ └── 硬件BOM表.xlsx ├── firmware/ │ ├── STM32F103C8T6_SPL_Project/ │ ├── STM32F103C8T6_HAL_Project/ │ └── README.md ├── hardware/ │ ├── schematic_pdf/ │ ├── kicad_source/ │ └── lceda_source/ ├── simulation/ │ ├── proteus8/ │ └── wokwi/ └── README.mdREADME第一屏写清楚五样东西项目名称和演示效果、引脚连接表、硬件清单BOM、编译烧录步骤、常见问题。不放这些信息代码再漂亮别人也很难用起来。引脚连接表是关键我把这张表放在文档最前面外设引脚说明OLED SCLPB8I2C1_SCLOLED SDAPB9I2C1_SDADHT11 DATAPB12需外接4.7kΩ上拉PWM输出PA6TIM3_CH1ADC温度采样PA0ADC1_IN0按键K1PA1模式切换按键K2PA2温度设定按键K3PA3温度设定-有了这张表学的人不用去原理图里一个个查引脚直接照着接线就能跑。文档里我还放编译目标配置截图以及ST-Link的接线方法。5.2 二次开发的几个方向基础功能稳定之后可以从这几个方向继续扩展PID恒温控制把温度到占空比的映射改成PID输出。温度误差作为输入PWM占空比作为输出。比例项负责快速响应积分项消除稳态误差微分项抑制超调。参数可以先在仿真里用Ziegler-Nichols法粗调再上真机微调。自动手动模式并存按键切换自动/手动手动模式下直接设定占空比适合对风扇转速有明确要求的人。增加湿度采集换用DHT22或SHT30同时显示温湿度控制策略加入湿度因子。联网或蓝牙控制挂ESP8266模块或HC-05蓝牙模块手机远程查看温度并控制风扇项目就从单机控制升级成物联网终端。低功耗改造电池供电时进入STOP模式用RTC唤醒周期采样显示画面通过按键唤醒外设不用时全部关闭。STM32F103C8T6低功耗特性虽然不如L系列但调好了也能实现很长的待机。这些扩展方向在仓库的docs/扩展思路.md里都有具体方案直接跟着改就可以。最后分享一点个人体会这个项目的价值不在于风扇本身有多智能而是它把“从一片空白到能跑起来的完整项目”所需的每一环都走了一遍。如果你是第一次上手建议先把代码烧进板子跑通再去改控制策略最后动原理图如果已经很熟可以试着把DHT11换成SHT30、把OLED换成LCD或者引入PID看看能不能保持和原工程一样清晰的代码结构。开源的意义就是让后来者站在前面踩过的坑上继续往前走遇到问题把现象和测量波形发出来一起讨论我很乐意帮大家排查。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

从上海汽车测试展看行业趋势:三电、智驾与数据闭环成焦点 2026/9/9 0:17:46

从上海汽车测试展看行业趋势:三电、智驾与数据闭环成焦点

作为一个常年泡在各种测试测量展会的老油条,我每年的日程里都有几个必去的固定项目,上海汽车测试展就是其中之一。今年这届逛下来,最大的感受是:行业风向真的变了,光靠“堆设备”的时代过去了,现在大家聊的…

阅读更多 →
网络安全——Burpsuite 2026/9/9 0:17:46

网络安全——Burpsuite

一、什么是Burpsuite Burpsuite 简单来说就是一款抓包软件 二、Burpsuite 的简单抓包 1、例如,靶机是DVWA(192.168.19.166),在kali上的Burpsuite 进行抓包 点击login 后,可以在Burpsuite上抓到一个包 可以进行通过或…

阅读更多 →
Three.js三维房间搭建实战:从渲染管线到交互与性能优化 2026/9/9 0:17:46

Three.js三维房间搭建实战:从渲染管线到交互与性能优化

简介:以three.js为核心的Web3D三维房间构建项目,面向前端开发者和三维可视化初学者,重点解决从二维平面图到可交互三维空间的转换难题。资源采用模块化实现方式,包含完整HTML页面、OrbitControls相机控制脚本和核心JavaScript逻辑…

阅读更多 →
DHCP Option 43实战:华为eNSP中AP自动发现AC的配置与排错 2026/9/9 0:17:46

DHCP Option 43实战:华为eNSP中AP自动发现AC的配置与排错

做无线项目这么多年,AP拿到了IP地址却死活找不到AC的问题,我排查过不下几十次。大多数时候罪魁祸首不是CAPWAP配置,也不是VLAN划分,而是DHCP下发的Option 43没配对。尤其在华为eNSP做综合实验时,很多人AP起不来、AC不认…

阅读更多 →
基于.NET MVC的教师公寓管理系统开发实战 2026/9/9 0:17:46

基于.NET MVC的教师公寓管理系统开发实战

简介:这套基于 C# 与 .NET MVC 的教师公寓管理系统设计与实现源码,主要面向本科毕业设计与课程设计人群,也适合希望掌握 Web 系统开发流程的初学者参考。资源包为 zip 压缩格式,共含 500 个文件,压缩后仅 12.63MB&…

阅读更多 →
基于ASP.NET的学生成绩管理系统课程设计全解析 2026/9/9 0:14:45

基于ASP.NET的学生成绩管理系统课程设计全解析

简介:这是一套基于ASP.NET的学生成绩管理系统课程设计全套资料包,面向正在完成网页方向课程设计、毕业设计,或希望系统学习ASP.NET开发全流程的读者。系统设计了教师、学生、管理员三类角色入口,完整覆盖课程维护、学生信息管理、…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞