LESSON4数码管动态显示_第1页
LESSON4数码管动态显示_第2页
LESSON4数码管动态显示_第3页
LESSON4数码管动态显示_第4页
LESSON4数码管动态显示_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LESSON4数码管动态显示51单片机硬件驱动设计与C语言扫描机制深度解析Contents课程目录从数码管基础原理到动态扫描代码实现,系统掌握硬件驱动与软件编程的核心方法。01课程导入与数码管基础02静态显示与动态显示原理对比03核心驱动电路硬件设计04动态扫描机制与视觉暂留05C语言代码实现与逻辑解析06性能优化与常见问题排查Chapter01课程导入与数码管基础剖析七段数码管的物理结构、电气特性与段码映射规则APPLICATIONSCENARIOS数码管在嵌入式系统中的应用场景数码管凭借高亮度、低成本与快速响应的物理优势,在工业控制与仪器仪表中占据重要地位,是嵌入式系统人机交互的经典输出器件,也是理解底层I/O控制的关键基石。工业控制设备—常用于显示温度、压力等实时传感器数据,其高亮度特性确保在强光或恶劣环境下依然清晰可读高亮度·强光可读仪器仪表与家用电器—广泛采用数码管作为状态指示与数值输出窗口,凭借极低的生产成本满足大规模量产需求低成本·大规模量产嵌入式入门必修—掌握数码管驱动是理解底层I/O控制与定时器中断机制的关键,是硬件设计与软件编程的基础模块I/O控制·定时器中断工业控制环境中采用数码管显示的仪器仪表设备LESSON4·HARDWARESTRUCTURE七段数码管的内部物理结构七段数码管通过特定形状的LED封装实现字符显示,理解其内部物理结构与段码映射关系,是编写底层驱动代码的先决条件,直接决定了段选数据的编码逻辑。01核心发光单元由a至g七个条形LED段及一个小数点dp组成,通过物理排列构成"日"字型,能够覆盖0-9数字及部分字母显示。02每个LED段具有独立的引脚,单片机通过向对应引脚输出高低电平来控制该段的亮灭,多个段的组合亮灭即形成特定的字符轮廓。03内部LED的电气连接方式决定了驱动逻辑,必须根据数据手册明确各引脚对应的段名,才能正确编制段码真值表。七段数码管内部LED排列结构实物LEDDISPLAY·数码管共阴极与共阳极数码管的电气特性对比共阴极与共阳极数码管的内部公共端连接方式截然相反,导致其驱动电平逻辑与段码真值表完全互补,在硬件选型与软件编程时必须严格匹配,否则会导致显示乱码。共阴极与共阳极数码管引脚定义对比01共阴极结构COM接地所有LED阴极连接为公共端(COM),需将COM接地,段选引脚输入高电平时对应LED段点亮,适合NPN三极管驱动。02共阳极结构COM接电源所有LED阳极连接为公共端(COM),需将COM接电源,段选引脚输入低电平时对应LED段点亮,适合PNP三极管驱动。03段码互补关系0x3F↔0xC0两者段码数据呈按位取反关系,例如共阴极数字"0"段码为0x3F,共阳极为0xC0,软件移植时需进行逻辑取反。SegmentEncoding段码编码规则与真值表解析段码编码是将数码管的物理段亮灭状态映射为单片机可识别的8位二进制数据的过程,通过建立标准化的段码真值表,可以大幅提升软件开发的效率与代码的可读性。MAPPING段到位的映射将a至g及dp八个段依次映射到8位数据总线的D0至D7位,通过置1或清0控制对应段的亮灭,形成字符的底层二进制编码。这种映射方式实现了物理显示与数字信号的直接对应。a–g→D0–D7EXAMPLE共阴极编码示例以共阴极为例,显示数字"1"需点亮b、c段,对应二进制00000110,转换为十六进制即0x06。以此类推可构建0–9的完整段码数组,供程序直接调用。0x06PRACTICE工程实践优化实际工程中,将段码表定义为全局常量数组存放于ROM,运行时通过索引直接查表获取数据,避免重复计算以节省CPU资源,同时提高代码的可维护性。ROM查表CHAPTER02静态显示与动态显示原理对比从I/O口资源占用与分时复用机制剖析两种驱动架构的本质差异Lesson4·数码管显示静态显示的工作原理与I/O口占用分析静态显示通过为每个数码管分配独立的段选与位选I/O口实现持续点亮,虽然显示稳定且CPU占用率极低,但随着位数增加,I/O口资源消耗呈线性暴增,在资源受限的单片机中难以实用。段选独立连接每个数码管的8个段选线独立连接到单片机I/O口,输出对应字符的段码后,数码管即保持常亮状态,无需CPU进行后续刷新操作8位段选位选固定电平位选线通常直接接固定电平(如共阴极接地),确保数码管始终导通,显示内容仅由段选端口的数据锁存器决定,实现持续稳定显示常亮锁定I/O资源瓶颈若驱动4位数码管,静态显示需要4×8=32个段选I/O口,对于总共只有32个I/O口的标准51单片机,直接导致资源耗尽4×8=32LESSON4·数码管动态显示静态显示的优缺点及适用场景局限静态显示以极高的硬件资源消耗换取软件逻辑的极简与显示的绝对稳定,其工程应用被严格限制在极少数位数的显示场景中,无法胜任现代嵌入式系统多位数显的需求。软件极简软件编程极其简单,只需一次性写入段码数据,且无刷新频率限制,彻底杜绝了显示闪烁与鬼影等动态扫描常见的视觉问题。0Hz刷新硬件高耗硬件成本高昂,不仅大量占用单片机宝贵的I/O口资源,还需要增加额外的锁存器芯片来扩展端口,导致PCB面积与BOM成本双增。I/O+BOM↑适用边界仅推荐用于1至2位数码管的简单状态指示,当显示位数达到3位及以上时,必须果断放弃静态方案,转向动态扫描架构。≤2位LESSON4·核心机制动态显示的核心思想:分时复用机制动态显示通过"分时复用"的工程哲学,让多位数码管共享同一组段选I/O口,利用极短时间内的轮流导通与视觉暂留效应,以极低的硬件成本实现了多位数字的稳定显示。01段选线并联:统一输出段码数据打破独立控制思维,将所有数码管的同名段选线(如所有a段)物理并联,由同一组8位I/O口统一输出当前时刻需要显示的段码数据。8位I/O02位选控制:逐位轮流点亮引入位选控制概念,为每个数码管的公共端分配独立的I/O口,单片机通过快速切换位选信号,决定当前哪一位数码管接收段码并点亮。公共端03时间换空间:嵌入式资源优化经典本质是"时间换空间"的硬件设计策略,牺牲部分CPU时间用于高频扫描,换取I/O口资源的大幅节约,是嵌入式系统资源优化的经典案例。资源优化HARDWAREARCHITECTURE动态显示的段选并联与位选独立架构动态显示的物理架构建立在段选线全局并联与位选线独立控制的基础之上,这种非对称的接线方式将I/O口消耗从乘法关系降为加法关系,彻底突破了单片机端口数量的瓶颈。51单片机开发板·多位数码管动态显示电路实物01段选端口全局并联:8个数码管的a至dp段分别短接,仅需8个I/O口即可控制所有数码管的显示内容,实现段码数据的广播式输出8I/O02位选端口独立控制:每个数码管的COM端单独连接至单片机I/O口或驱动芯片,用于在特定时间片内选通目标数码管,实现显示位置的精确寻址COM03资源消耗呈加法关系:驱动N位数码管仅需8+N个I/O口,例如8位数码管仅需16个I/O口,相比静态显示的8×N个实现了数量级的优化8+NCOMPARISON·LESSON04静态与动态显示的硬件资源与性能综合对比静态显示与动态显示在I/O资源、CPU负载、硬件成本与软件复杂度上呈现出完全互斥的工程特性,开发者需根据显示位数、系统资源与成本预算进行严谨的架构选型。静态显示与动态显示核心指标对比对比维度静态显示动态显示I/O口占用极高(8×N)极低(8+N)CPU占用率极低(一次性写入)较高(需持续高频扫描)硬件成本高(需大量锁存器)低(仅需少量驱动管)软件复杂度极低(无刷新逻辑)中等(需处理时序与消影)显示稳定性绝对稳定无闪烁依赖刷新率,处理不当易闪烁动态显示以较低的硬件成本和较高的软件复杂度,换取了I/O资源的大幅节约,是多位数码管驱动的绝对主流方案。CHAPTER03核心驱动电路硬件设计从I/O口电气瓶颈到三极管与移位寄存器的增强驱动方案ELECTRICALANALYSIS单片机I/O口直接驱动的电气瓶颈分析51单片机I/O口的微弱驱动能力无法直接满足数码管的电流需求,强行直接驱动不仅会导致显示亮度严重不足,更可能因电流过载而永久性损坏单片机内部逻辑电路。拉电流能力极弱51单片机输出高电平时的拉电流通常仅为几十微安,远低于数码管单段点亮所需的10–20mA,导致LED无法达到正常发光亮度。几十μA灌电流能力有限虽然输出低电平时的灌电流能力稍强(约1–2mA),勉强能驱动单个小尺寸数码管,但在多位并联场景下依然无法满足总电流需求。1–2mA过载损坏风险若强行让I/O口输出大电流,会导致芯片内部输出级晶体管过热,长期运行极易造成单片机引脚永久失效或整个芯片烧毁。永久失效P0PortArchitectureP0口开漏输出结构与上拉电阻配置51单片机P0口采用特殊的开漏输出结构,内部缺乏上拉电阻,无法直接输出高电平,在作为数码管段选端口时,必须外接上拉电阻以构建完整的逻辑高电平输出回路。01开漏结构特性:P0口内部输出级仅有下拉MOS管而无上拉MOS管,当输出逻辑"1"时,引脚处于高阻态,无法向外部电路提供电流高阻态02上拉电阻配置:必须在P0口与VCC之间外接排阻(通常为10KΩ),当内部MOS管截止时,由外部电阻将引脚电平拉高,从而输出有效的高电平信号10KΩ03驱动能力补偿:虽然上拉电阻解决了逻辑电平问题,但其提供的电流依然有限,因此在驱动多位数码管时,P0口仍需配合锁存器或驱动芯片使用锁存器51单片机开发板P0口外接排阻实物特写Lesson4·DriverDesign三极管增强驱动:NPN与PNP的选型与连接利用三极管的开关特性构建电流放大回路,是解决单片机I/O口驱动能力不足的最经济方案,根据数码管的共阴/共阳极属性正确选型NPN或PNP三极管是电路设计的关键。NPNTypeNPN三极管应用适用于共阴极数码管的位选驱动,单片机I/O口输出高电平使三极管饱和导通,将数码管公共端拉低接地,形成完整的发光回路。NPN管在导通时集电极电位接近地电位,适合控制负端。共阴极驱动方案PNPTypePNP三极管应用适用于共阳极数码管的位选驱动,单片机I/O口输出低电平使三极管饱和导通,将数码管公共端拉高接VCC,提供充足的段选电流。PNP管在导通时发射极电位接近电源正极,适合控制正端。共阳极驱动方案Protection基极限流电阻配置必须在单片机I/O口与三极管基极之间串联限流电阻,防止基极电流过大烧毁单片机引脚或导致三极管深度饱和难以关断。合理选择阻值可平衡开关速度与功耗。1KΩ–4.7KΩLESSON4·数码管动态显示共阴极数码管的NPN三极管位选驱动电路共阴极数码管的位选驱动需采用NPN三极管构建低侧开关,通过精确计算基极与集电极电流,确保三极管工作在饱和导通与可靠截止区,从而实现数码管的稳定寻址。电路拓扑构建NPN三极管(如9013)发射极接地,集电极接数码管COM端,基极通过限流电阻接单片机I/O口,构成典型的低侧开关驱动电路LOW-SIDESWITCH饱和导通条件当I/O口输出高电平时,基极电流需满足Ib>Ic/β,确保三极管进入深度饱和状态,使集电极与发射极之间的压降降至最低(约0.2V)Ib>Ic/β可靠截止保障当I/O口输出低电平时,基极电位被拉低,三极管迅速截止;为防止干扰导致误导通,可在基极与地之间并联10KΩ下拉电阻以加速电荷泄放10KΩSERIAL-TO-PARALLELDRIVER移位寄存器74HC595在段码驱动中的应用74HC595通过串行输入并行输出的机制,将8位段码数据的传输压缩至仅需3个I/O口,是解决单片机端口资源极度匮乏时的标准硬件扩展方案,广泛应用于多位数码管驱动。74HC595·DIP-16封装·8位串入并出移位寄存器01串行转并行机制—单片机通过单根数据线逐位发送段码数据,74HC595内部移位寄存器在时钟信号驱动下将串行数据转换为8位并行数据输出1DATAPIN→8BIT02双寄存器架构—内部包含移位寄存器和存储寄存器,数据先在移位寄存器中组装,完成后通过锁存信号一次性输出,避免显示乱码闪烁DUALREGISTER03级联扩展能力—多片74HC595可通过串行输出引脚级联,仅用3个I/O口即可驱动16位、32位甚至更多位数码管,实现极高的硬件资源利用率3I/O→32+DIGITS时序控制74HC595的引脚定义与时序控制逻辑74HC595的稳定工作依赖于严格的时序控制,数据输入、移位时钟与锁存时钟三个核心引脚的电平翻转顺序必须精确匹配芯片手册规范。DS数据输入·SHCP移位时钟单片机在SHCP上升沿到来前将数据位稳定在DS引脚,上升沿触发时数据被移入内部8位移位寄存器的最低位,逐位完成串行到并行的转换。↑上升沿触发STCP锁存时钟当8位数据全部移入后,STCP引脚产生一个上升沿,将移位寄存器中的数据并行锁存至输出寄存器,最终反映在Q0–Q7物理引脚上。Q0–Q7并行输出MR主复位·OE输出使能MR接高电平保持正常工作,OE接地使能输出;若需控制显示亮度,可将OE接PWM信号,通过调节占空比实现硬件级亮度调节。PWM亮度调节CHAPTER04动态扫描机制与视觉暂留解析人眼视觉暂留效应、刷新频率阈值与消影处理的底层逻辑DynamicDisplayPrinciple人眼视觉暂留效应与刷新频率阈值动态显示的不闪烁假象建立在人眼视觉暂留的生理特性之上,单片机必须以高于临界融合频率的速度轮询点亮数码管,才能在人脑视觉中枢中合成连续稳定的静态图像。视觉暂留生理机制光刺激视网膜后,视觉神经的信号传递存在短暂延迟。当光源熄灭后,视觉形象仍在大脑中保留约0.04秒,这种生理现象被称为视觉暂留,是动态显示技术能够实现连续画面感知的核心基础。0.04秒延迟临界融合频率当光源闪烁频率超过人眼的CFF(CriticalFusionFrequency)阈值时,离散的闪烁光将被大脑感知为连续稳定的恒定光源。该阈值因人而异,但通常落在50–60Hz范围内。50–60Hz扫描周期设定对于4位数码管动态显示系统,要求整体刷新率达到50Hz以上。每位数码管的点亮时间须严格控制在5ms以内,确保20ms内完成一轮完整扫描,避免肉眼可察觉的闪烁。5ms/位TIMINGCONTROL动态扫描的时序控制与消影处理数码管动态扫描中的"鬼影"现象源于段码与位选信号切换时的时序竞争,必须通过严格的"关断-送数-选通"三步消影逻辑,彻底消除残影,确保显示内容的纯净与准确。PROBLEM鬼影产生机制在切换显示位时,若先输出新段码再切换位选,上一位的段码数据会短暂施加在下一位数码管上,导致下一位出现微弱的错误字符残影。时序竞争SOLUTION标准消影三步曲第一步:输出全灭段码或关闭所有位选(消影);第二步:输出下一位目标段码数据(送数);第三步:选通下一位的位选引脚(点亮)。关断·送数·选通RELIABILITY软件延时补偿在每次电平翻转后,需插入极短的软件延时(如几个机器周期),以等待I/O口电容充放电完成及外部驱动芯片的响应,确保时序逻辑的绝对可靠。机器周期LESSON4·数码管动态显示扫描频率对显示亮度与CPU占用率的影响动态扫描频率的设定是一个多目标优化问题,过高的频率会加剧CPU负载并降低占空比导致亮度衰减,过低的频率则引发视觉闪烁,需根据数码管位数与系统任务调度寻找最佳平衡点。亮度与占空比衰减在N位数码管系统中,每位数码管的点亮占空比仅为1/N,扫描频率越高,单次点亮的绝对时间越短,人眼感知到的平均亮度会显著下降。1/N占空比CPU资源挤占若采用软件延时进行扫描,过高的刷新率会导致CPU大量时间被阻塞在扫描循环中,严重影响主程序对其他传感器或通信任务的实时响应。实时阻塞工程调优策略通常将整体刷新率设定在60Hz–100Hz之间,既能保证无闪烁的视觉体验,又能维持合理的亮度,同时将CPU占用率控制在可接受的范围内。60–100HzSIGNALFLOW多位数码管共享段码控制的信号流转多位数码管的动态显示是一个高度协同的时序系统,段码数据的并行广播与位选信号的串行轮询在微秒级的时间尺度上精确交替,共同构建出稳定连续的多位数字视觉呈现。01数据准备阶段CPU根据当前需要显示的数值,从ROM段码表中查表获取对应的8位段码数据,并将其暂存于内部寄存器或RAM变量中ROM查表02段码广播阶段CPU将暂存的段码数据一次性输出到全局并联的段选端口,所有数码管段选引脚接收相同电平,仅被选通的数码管发光并行广播03位选轮询阶段位选端口按预设顺序依次输出有效电平,配合短暂软件延时,确保每位数码管维持足够点亮时间以积累视觉亮度串行轮询CHAPTER05C语言代码实现与逻辑解析从基础延时扫描到定时器中断架构的代码级深度拆解LESSON4·数码管动态显示动态显示核心数据结构:段码表与位选码构建结构化的段码表与位选码数组是动态显示软件设计的基础,通过合理的内存分配与常量定义,不仅能提升代码的可读性,更能显著优化单片机的运行效率与内存占用。段码表定义使用code关键字将0-9及特殊字符的段码数组存储在ROM中(如seg_table[]),避免占用宝贵的RAM空间,并防止数据被意外篡改。unsignedcharcode位选码映射根据硬件连接方式定义位选数组(如wei_table[]={0xFE,0xFD,0xFB,0xF7}),将物理引脚的复杂操作抽象为简单的数组索引访问。ArrayIndexAccess显示缓冲区设计在RAM中开辟全局显示缓冲区(如disp_buf[4]),主程序只需更新缓冲区内容,扫描函数负责自动刷新,实现业务逻辑与底层驱动的解耦。Logic/DriverDecoupleDynamicScanning基础动态扫描函数的C语言逻辑拆解基于软件延时的基础动态扫描函数通过循环轮询实现多位数码管的交替点亮,逻辑直观易懂,但存在阻塞CPU的固有缺陷,通常仅用于入门教学与极简系统验证。循环轮询架构使用for循环遍历显示缓冲区,依次提取每位数码管的待显示数据,通过数组索引直接获取段码与位选控制字。POLLING时序控制逻辑严格按「送段码→送位选→软件延时→消影关断」顺序执行,确保每位数码管获得稳定点亮时间并消除切换残影。≈2ms主循环依赖必须置于while(1)主循环中高频调用,一旦被长耗时任务阻塞,数码管将出现明显闪烁或局部常亮。WHILE(1)LESSON4·SERIALPROTOCOL74HC595串行数据发送函数的逐行解析74HC595的C语言驱动函数通过精确控制数据引脚与时钟引脚的电平翻转,模拟串行通信时序,将8位并行数据逐位移入芯片并最终锁存输出,是掌握底层时序编程的经典范例。数据位提取与移位在8次for循环中,通过按位与操作(dat&0x80)提取最高位送至DS引脚,随后将数据左移一位(dat<<=1),为下一次移位做准备。此操作确保数据从高位到低位依次传输,符合串行通信的时序要求。dat&0x80DSPIN移位时钟控制每次数据位稳定后,将SHCP引脚先拉低再拉高,利用其上升沿触发74HC595内部移位寄存器将DS端的数据移入,完成单比特传输。时钟信号的精确控制是保证数据正确移位的关键。SHCP↑EdgeSHIFTCLK锁存时钟触发8位数据全部移入后,将STCP引脚先拉低再拉高,利用其上升沿将移位寄存器中的数据并行锁存至输出端,完成一次完整的字节更新。锁存操作使输出端同步更新,避免传输过程中的抖动。STCP↑EdgeLATCHCLKTimerInterrupt·DynamicScanning定时器中断在动态扫描中的应用优势将动态扫描逻辑移植至定时器中断服务程序中,利用硬件定时器的精准触发实现非阻塞式后台刷新,彻底解放了CPU资源,是构建复杂嵌入式系统多任务协同的标准架构。非阻塞式刷新配置定时器每2ms产生一次中断,在中断服务函数中仅执行一位数码管的扫描与消影,主程序无需等待,可并行处理传感器采集或通信协议。2ms中断周期精准频率控制硬件定时器的溢出时间由晶振频率与寄存器初值严格决定,不受主程序代码执行时间波动的影响,确保数码管刷新率绝对稳定,彻底杜绝闪烁现象。硬件级定时保障静态变量状态保持在中断函数内部使用static变量记录当前扫描的位索引,每次中断触发时索引自增并取模,实现4位数码管的自动循环轮询,代码结构极为精简。static状态索引SYSTEMARCHITECTURE完整主循环与中断服务程序的协同架构采用"主程序更新数据+中断程序负责刷新"的分层架构,实现了业务逻辑与底层显示的彻底解耦,不仅提升了系统的实时性与稳定性,更为后续功能扩展奠定了优良的软件基础。业务逻辑层(主循环)主程序专注于传感器数据读取、按键状态检测与算法运算,将需要显示的数值转换为BCD码后,直接写入全局显示缓冲区(disp_buf)。该设计使业务逻辑与显示刷新完全分离,主循环无需关心硬件时序细节。disp_buf硬件驱动层(中断服务)定时器中断函数以固定频率被触发,自动读取disp_buf中的数据,执行查表、送段码、送位选与消影操作,对主程序完全透明。中断服务程序保证了显示刷新的确定性和实时性。TimerISR数据同步保护在更新多位显示缓冲区时,需短暂关闭定时器中断或采用原子操作,防止数据更新到一半时发生中断,导致数码管显示撕裂画面。同步机制是保障显示完整性的关键防线。原子操作CHAPTER06性能优化与常见问题排查攻克显示闪烁、鬼影残影与亮度不均等工程实践中的典型痛点ROOTCAUSEANALYSIS数码管显示闪烁的成因分析与频率调优数码管闪烁是动态扫描系统中最常见的视觉缺陷,其根源在于刷新频率跌破人眼视觉暂留阈值或扫描周期发生剧烈抖动,需通过硬件定时器与软件架构优化予以彻底根治。主循环阻塞导致降频若采用软件延时扫描,主程序中的长耗时任务(如UART等待、长延时函数)会严重拖慢扫描循环的执行速度,导致整体刷新率跌破50Hz临界值。<50Hz中断优先级冲突在复杂系统中,若高优先级中断频繁触发且执行时间过长,会推迟定时器中断的响应,造成扫描周期不均匀,引发肉眼可见的频闪。JITTER调优与根治策略强制将扫描逻辑移入定时器中断,合理设置定时器初值确保单次扫描时间恒定;同时优化主程序逻辑,避免在中断开启期间执行关中断操作。HWTIMERLESSON4·数码管动态显示"鬼影"现象的产生机制与软件消影策略"鬼影"残影是段码与位选信号在纳秒级切换过程中产生的时序竞争结果,必须通过引入硬件响应延时补偿与双重消影机制,在软件层面构建无死角的信号隔离屏障。CAUSE·产生机制寄生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论