单片机应用编程技巧问答二.docx

上传人:b****5 文档编号:12088585 上传时间:2023-04-17 格式:DOCX 页数:14 大小:29.04KB
下载 相关 举报
单片机应用编程技巧问答二.docx_第1页
第1页 / 共14页
单片机应用编程技巧问答二.docx_第2页
第2页 / 共14页
单片机应用编程技巧问答二.docx_第3页
第3页 / 共14页
单片机应用编程技巧问答二.docx_第4页
第4页 / 共14页
单片机应用编程技巧问答二.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机应用编程技巧问答二.docx

《单片机应用编程技巧问答二.docx》由会员分享,可在线阅读,更多相关《单片机应用编程技巧问答二.docx(14页珍藏版)》请在冰豆网上搜索。

单片机应用编程技巧问答二.docx

单片机应用编程技巧问答二

单片机应用编程技巧问答

11.Holtek的数据手册在哪里下载?

答:

如果对Holtek的IC感兴趣的话,相应的数据手册可以到网站上

12.8位机还能延续多久!

答:

以现在MCU产品主力还是在8位领域,主要应用于汽车应用、消费性电子、电脑及PC周边、电信与通讯、办公室自动化、工业控制等六大市场,其中车用市场多在欧、美地区,而亚太地区则以消费性电子为主,并以量大低单价为产品主流,目前16位MCU与8位产品,还有相当幅度的价差,新的应用领域也仍在开发,业界预计,至少在2005年前8位的MCU仍是MCU产品的主流。

13.学习ARM及嵌入式系统是否比学习其它一般单片机更有使用前景?

对于一个初学者应当具备哪些相关知识?

答:

一般在8位单片机与ARM方面的嵌入式系统是有层次上的差别,ARM适用于系统复杂度较大的高级产品,如PDA、手机等应用。

而8位单片机因架构简单,硬件资源相对较少,适用于一般的工业控制、消费性家电等等。

对于一个单片机方面的软件编程初学者,应以HOLTEK系列或8051等8位单片机来做入门练习。

而初学者应当具备软件编程相关知识,单片机一般软件编程是以汇编语言为主,各家有各家的语法,但大都以RISC的MCU架构为主,其中RISC(ReducedInstructionSetComputer)代表MCU的所有指令。

都是利用一些简单的指令组成的,简单的指令代表MCU的线路可以尽量做到最佳化,而提高执行速率。

另外初学者要具备单片机I/O接口的应用知识,这在于周边应用电路及各种元器件的使用,须配合自己所学的电子学及电路学等。

14.符合44PIN的80系列8位单片机的MCU有哪些?

答:

符合44PIN的80系列8位单片机有Z8674312FSC、Z86E2112FSC、Z86E2116FSC。

15.请介绍一下MCU的测试方法。

答:

MCU从生产出来到封装出货的每个不同的阶段会有不同的测试方法,其中主要会有两种:

中测和成测。

所谓中测即是WAFER的测试,它会包含产品的功能验证及AC、DC的测试。

项目相当繁多,以HOLTEK产品为例最主要的几项如下:

接续性测试:

检测每一根I/OPIN内接的保护用二极管是否功能无误。

功能测试:

以产品设计者所提供测试资料(TESTPATTERN)灌入IC,检查其结果是否与当时SIMULATION时状态一样。

STANDBY电流测试:

测量IC处于HALT模式时即每一个接点(PAD)在1态0态或Z态保持不变时的漏电流是否符合最低之规格。

耗电测试:

整颗IC的静态耗电与动态耗电。

输入电压测试:

测量每个输入接脚的输入电压反应特性。

输出电压测试:

测量每个输出接脚的输出电压位准。

相关频率特性(AC)测试,也是通过外灌一定频率,从I/O口来看输出是否与之匹配。

为了保证IC生产的长期且稳定品质,还会做产品的可靠性测试,这些测试包括ESD测试,LATCHUP测试,温度循环测试,高温贮存测试,湿度贮存测试等。

成测则是产品封装好后的测试,即PACKAGE测试。

即是所有通过中测的产品封装后的测试,方法主要是机台自动测试,但测试项目仍与WAFERTEST相同。

PACKAGETEST的目的是在确定IC在封装过程中是否有任何损坏。

16.能否利用单片来检测手机电池的充放电时间及充放电时的电压电流变化,并利用一个I/O端口使检测结果在电脑上显示出来?

答:

目前市场上的各类智能充电器,大部分都采用MCU进行充电电流和电压的控制。

至于要在电脑上显示,好象并不实用,可能只有在一些专门的电池检测仪器中才会用到;对于一般的手机用户来说,谁会在充电时还需要用一台电脑来做显示呢?

要实现单片机与电脑的连接,最简单的方式就是采用串口通讯,但需要加一颗RS-232芯片。

17.在ARM编程中又应当如何?

答:

就以嵌入式系统观念为例,一般嵌入式处理器可以分为三类:

嵌入式微处理器、嵌入式微控制器、嵌入式DSP(DigitalSignalProcessor)。

嵌入式微处理器就是和通用计算机的微处理器对应的CPU。

在应用中,一般是将微处理器装配在专门设计的电路板上,在母板上只保留和嵌入式相关的功能即可,这样可以满足嵌入式系统体积小和功耗低的要求。

目前的嵌入式处理器主要包括:

PowerPC、Motorola68000、ARM系列等等。

嵌入式微控制器又称为单片机,它将CPU、存储器(少量的RAM、ROM或两者都有)和其它接口I/O封装在同一片集成电路里。

常见的有HOLTEKMCU系列、MicrochipMCU系列及8051等。

嵌入式DSP专门用来处理对离散时间信号进行极快的处理计算,提高编译效率和执行速度。

在数字滤波、FFT(FastFourierTransform)、频谱分析、图像处理的分析等领域,DSP正在大量进入嵌入式市场。

18.MCU在射频控制时,MCU的时钟(晶振)、数据线会辐射基频或基频的倍频,被低噪放LNA放大后进入混频,出现带内的Spur,无法滤除。

除了用layout、选择低辐射MCU的方法可以减少一些以外,还有什么别的方法?

答:

在设计高频电路用电路板有许多注意事项,尤其是GHz等级的高频电路,更需要注意各电子组件pad与印刷pattern的长度对电路特性所造成的影响。

最近几年高频电路与数位电路共享相同电路板,构成所谓的混载电路系统似乎有增加的趋势,类似如此的设计经常会造成数位电路动作时,高频电路却发生动作不稳定等现象,其中原因之一是数位电路产生的噪讯,影响高频电路正常动作所致。

为了避免上述问题除了设法分割两电路block之外,设计电路板之前充分检讨设计构想,才是根本应有的手法,基本上设计高频电路用电路板必需掌握下列三大原则:

高质感。

不可取巧。

不可仓促抢时间。

以下是设计高频电路板的一些建议:

(1)印刷pattern的长度会影响电路特性。

尤其是传输速度为GHz高速数位电路的传输线路,通常会使用stripline,同时藉由调整配线长度补正传输延迟时间,其实这也意味着电子组件的设置位置对电路特性具有绝对性的影响。

(2)Ground作大better。

铜箔面整体设置ground层,而连接via的betterground则是高频电路板与高速数位电路板共同的特征,此外高频电路板最忌讳使用幅宽细窄的印刷pattern描绘ground。

(2)电子组件的ground端子,以最短的长度与电路板的ground连接。

具体方法是在电子组件的ground端子pad附近设置via,使电子组件能以最短的长度与电路板的ground连接。

(3)信号线作短配线设计。

不可任意加大配线长度,尽量缩短配线长度。

(4)减少电路之间的结合。

尤其是filter与amplifier输出入之间作电路分割非常重要,它相当于audio电路的crosstalk对策。

(5)MCU回路Layout考量:

震荡电路仅可能接近IC震荡脚位;震荡电路与VDD&VSS保持足够的距离;震荡频率大于1MHz时不需加osc1&osc2电容;电源与地间要最短位置并尽量拉等宽与等距的线,于节点位置加上104/103/102等陶瓷电容。

19.Intel系列的96单片机80c196KB开发系统时,都有那些注意事项?

答:

一个即时系统的软体由即时操作系统加上应用程序构成。

应用程序与作业系统的接口通过系统调用来实现。

用80C196KB作业系统的MCU,只能用内部RAM作为TCB和所有系统记忆体(含各种控制表)以及各个任务的工作和资料单元。

因此一定要注意以下几点:

(1)对各个任务分配各自的堆迭区,该堆迭区既作为任务的工作单元,也作为任务控制块的保护单元。

(2)系统的任务控制块只存放各任务的堆迭指标,而任务的状态均存放于任务椎栈中。

在一个任务退出运行时,通过中断把它的状态进栈,然后把它的堆迭指标保存于系统的TCB中;再根据优先取出优先顺序最高的已就绪任务的堆迭指标SP映象值送入SP中;最后执行中断返回指令转去执行新任务。

(3)各任务的资料和工作单元尽量用堆迭实现,这样可以允许各任务使用同一个子程序。

使用堆迭实现参数传递并作为工作单元,而不使用绝对地址的RAM,可实现可重入子程序。

该子程序既可为各个任务所调用,也可实现递回调用。

20.在demo板上采样电压时,不稳定,采样结果有波动,如何消除?

答:

一般来说,仿真器都是工作在一个稳压的环境(通常为5V)。

如果用仿真器的A/D时,要注意其A/D参考电压是由仿真器内部给出,还是需要外部提供。

A/D转换需要一个连续的时钟周期,所以在仿真时不能用单步调试的方法,否则会造成A/D采样值不准。

至于A/D采样不稳定,可以在A/D输入口加一电容,起到滤波作用;在软件处理时采用中值滤波的方法。

21.在车载DVD系统中,如何设计电子防震系统?

答:

在车载DVD系统,最好选择高档DVD机,因为高档DVD机都采用电子防震系统(ADVANCEDESP),当记忆缓冲区内的读数降低,先进的电子防震设计会以双速读数系统,做出比正常速度快两倍的读数速率,以减低噪声,即使连续震荡仍可避免跳线情况出现,现在就说说什幺叫电子防震。

简单地说:

电子防震就是一个信号的储存--释放过程,首先CD要先把信号进行提前读取,也就是我们见到机子的加速,再把信号储存在RAM中,而我们在开防震的时候所听到的就是经过RAM的声音,这样就是它的过程。

当没有防震时是由于信号是1比1读取的,所以当受到冲击后,就会出现跳音。

而当开了防震时,机子受到冲击后,由RAM释放出来的声音使音乐不停地播放,而与此同时,光头迅速进行复位检索,当检索到信号后立即补充,所以不会出现跳音。

大概的情况就是这样。

但是这样还没有满足用家的要求,由于这种的方法带来的时间短,通常只有3秒,所以跳音的机会还是蛮高,如果增大RAM又带来造价的增高因为RAM这东西价格较贵,尤其是质量好的。

22.在电子防震技术中,有那些IC或器件可供选择?

答:

在电子防震技术中,最重要的技术之一要数是RAM技术,而一直以来都是因为它的成本问题,所以防震时间都一直不能增加,也就是说RAM本身就有限制,RAM的容量越大,造价就越高。

而许多厂家就如何在RAM的限制里得到最大限度的记忆时间展开了开发研究。

23.如何进行编程可以减少程序的bug?

答:

在此提供一些建议,因系统中实际运行的参数都是有范围的。

系统运行中要考虑的超范围管理参数有:

物理参数。

这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。

合理设定这些边界,将超出边界的参数都视为非正常激励或非正常回应进行出错处理。

资源参数。

这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆迭深度。

在程序设计中,对资源参数不允许超范围使用。

应用参数。

这些应用参数常表现为一些单片机、功能单元的应用条件。

如E2PROM的擦写次数与资料存储时间等应用参数界限。

过程参数。

指系统运行中的有序变化的参数。

在上述参数群对一程序编写者而言,须养成良好习惯,在程序的开头,有顺序的用自己喜欢文字参数对应列表来替代,然后用自己定义的文字参数来编写程序,这样在做程序的修改及维护时只在程序的开头做变动即可,不用修改到程序段,才比较容易且不会出错。

24.有人认为单片机将被ARM等系列结构的嵌入式系统所取代。

单片机的生命期还有多长?

答:

因为8位单片机与嵌入式系统的ARM在功能结构和单价的差异,故应用层次上就有很大的不同。

ARM适用于系统复杂度较大的高级产品,如PDA、手机等应用。

而8位单片机因架构简单,硬件资源相对较少,适用于一般的工业控制,消费性家电……等等。

评估单片机近期是否会给ARM取代,要观察两个因素:

芯片成本

因ARM的工作频率较高,电路较庞大,所需的芯片制造工艺要求在0。

25U以上,成本较高。

8位单片机工作频率相对较低,电路较小,所需的芯片制造工艺在0。

5U即可,成本较低。

功能定位

ARM的功能较单片机强,但两者定位不同。

就如现阶段不会有人用ARM去作一个简单的工业定时开关。

当然,如果两者单价相同也无不可,但现实是有很大的单价差距。

至于将来,因芯片制造成本会不断下降,上述的成本差异影响愈来愈少!

但我估计在往后5年单片机仍有价格优势,仍能存活!

但ARM是否会精简架构,降低成本,抢夺低阶市场?

我想可能性不大,ARM应该会向上发展。

同样,单片机也只能向上发展,如16位,高功能……等。

原因就是因为芯片制造工艺进步太快。

压迫芯片设计往高集成发展。

25.在单片机C编成时,如何才能使生成的代码具有和汇编一样的效率?

答:

如果是使用C语言编程时,不太可能生成的代码具有1:

1和汇编一样的效率。

C语言命令要被硬件识别并执行,必须通过编译器编译。

编译器分为前端、中端、后端。

前端与各种计算机语言写的程序打交道,后端与处理器的基本指令集接轨。

所以如果使用C编程时,要达到最高的效率,最好能够很了解所使用的C编译器。

先试验一下每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率。

在今后编程的时候,使用编译效率最高的语句,这样就能确保单片机C编程的时候同样的功能不同的C程序,编译效率最高。

但是各家的C编译器都会有一定的差异,优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%,所以不同厂家的C编译器的编译效率也会有所不同。

26.ARM单片机和哪种内核的单片机比较接近?

答:

严格的说,ARM不是单片机,是一个嵌入式的实时操作系统。

ARM(AdvancedRISCMachines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。

ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。

所以市场上像Intel、IBM、LG半导体、NEC、SONY、菲利浦和国半这样的大公司都有ARM系列,现在不存在什幺ARM单片机和哪种内核的单片机比较接近的问题。

而且由于厂家购买内核后会根据自己芯片应用方向的不同,自行添加不同的外挂功能模块,所以,同样内核的芯片其提供的功能是不同的。

27.从51转到ARM会有困难吗?

答:

从51转到ARM,其实编程之类的原理都是一样的,但是要注意的是ARM是一个RISC的架构,在ARM的应用开放源代码的程序很多,要想提高自己,就要多看别人的程序,linux,uc/os-II等等这些都是很好的源码。

28.我学过MCS51单片机教材,很有兴趣,但缺乏实践经验,手头没有任何道具可供演练,资金又有限,请问该怎么办?

答:

在没有任何条件进行实践时,如果真的有兴趣,可以下载一些具有软件仿真功能仿真软件进行一些编程,像一些做得比较好的51仿真软件应该具有这种功能。

HOLTEK的仿真软件HT-IDE3000也具有相应的功能,同时它还具有LCD软件仿真,周边电路的软件仿真。

有兴趣的话,也可以去免费下载使用:

29.如果已经有了针对某MCU的C实现的某个算法,保持框架不变,对核心的部分用汇编优化,有没有一些比较通用的原则?

答:

每个人的编程都有自己的风格与习惯,如果要利用别人的程序,在其中修修改改,如果他的程序并没有很好的模块化的话,建议最好不要这幺做,否则本来预期达到事倍功半,说不定反而事半功倍了。

要参考他人的程序当然可以,但是首要是要看懂并理解他人程序的算法精髓,而不是在他的基础上打补丁。

而关于算法方面的优化,可以购买一些数据结构的书籍,上面有比较详细的说明。

30.如果准备估计一个算法的MIPS,有什么好的途径?

答:

算法的运行时间是指一个算法在计算机上运算所花费的时间。

它大致等于计算机执行简单操作(如赋值操作,比较操作等)所需要的时间与算法中进行简单操作次数的乘积。

通常把算法中包含简单操作次数的多少叫做算法的时间复杂性。

它是一个算法运行时间的相对量度,一般用数量级的形式给出。

度量一个程序的执行时间通常有两种方法:

一种是事后统计的方法。

因为很多计算机内部都有计时功能,不同算法的程序可通过一组或若干组相同的统计数据以分辨优劣。

但这种方法有两个缺陷:

一是必须先运行依据算法编制的程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优劣。

因此人们常常采用另一种事前分析估算的方法。

一种是事前分析估算的方法。

一个程序在计算机上运行时所消耗的时间取决于下列因素:

(1)依据的算法选用何种策略;

(2)问题的规模。

例如求100以内还是1000以内的素数;

(3)书写程序的语言。

对于同一个算法,实现语言的级别越高,执行效率就越低;

(4)编译程序所产生的机器代码的质量。

这个跟编译器有关;

(5)机器执行指令的速度。

显然,同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行时,效率均不相同。

这表明使用绝对的时间单位衡量算法的效率是不合适的。

撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法"运行工作量"的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。

一个算法是由控制结构(顺序、分支和循环三种)和原操作(指固有数据类型的操作)构成的,则算法时间取决于两者的综合效果。

为了便于比较同一问题的不同算法,通常的做法是,从算法中选取一种对于所研究的问题(或算法类型)来说是基本运算的原操作,以该基本操作重复执行的次数作为算法的时间度量。

算法的MIPS有专门的一门学问,可以去好好参考相关的数据结构书籍。

31.遥控的编解码思路和设计流程是怎样的?

答:

一般来说完整的遥控码分为头码、地址码、数据码和校验码四个组成部分。

头码根据不同的厂家各不相同,地址码和数据码都由逻辑“1”和逻辑“0”组成。

编码的设计目的,就是按照编码规则发送不同的码值。

我们最常见的码型有SONY、松下、NEC等厂家型号。

遥控编码芯片最常用的是在空调、DVD、车库门等遥控器上。

设计编码程序可以分为三个部分。

第一部分是了解码型的特性。

遥控码的头码和地址码(也称为客户码)是固定不变的,数据码和校验码根据不同的键值而改变。

第二部分是计算发码时间。

遥控码大部分都是由逻辑“1”和逻辑“0”组成,也就是由一串固定占空比、固定周期的方波所组成。

通常这些方波的周期是毫秒甚至微秒等级,需要在时间上计算的比较精确。

所以选择发码单片机型号的时候,就要考虑到单片机的运行速度是不是够快,以及程序运行时间够不够。

第三部分就是程序的编写。

选定单片机型号之后,开始设计程序流程。

一般来说我们使用I/O口就可以做发码的输出端口。

发码程序一般由几个子程序组成,头码子程序、逻辑1子程序,逻辑0子程序以及校验码的算法子程序。

一旦我们得到要发送码的命令后,首先调用头码子程序,然后根据客户码和键值调用逻辑1子程序或者逻辑0子程序,最后调用校验码算法子程序输出校验码。

HOLTEK公司的HT48CA0/HT48RA0、HT48CA3/HT48RA3和HT48CA6是专为遥控器设计的单片机,它们具有专门红外输出口,可以实现绝大部分发码的要求。

设计解码程序也可以分为三部分。

第一部分了解编码波形特性。

从分析编码的高、低脉冲宽度入手,了解逻辑“1”和逻辑“0”的波形占空比、周期。

了解头码的特性。

第二部分确定接收方式。

一般我们可以用I/O口查询方法或者INT口中断响应方法来接收编码。

这两者的区别是I/O口查询方式比较耗费单片机的运行时间资源,需要不断的去侦测I/O的电平变化,以免漏掉有效的码值;而INT口中断接收方式则比较节省资源,当外部有电平变化时,单片机才需要去处理,不需要时刻进行侦测。

但是INT口中断接收方式不能辨别相同周期不同占空比的波形特性,当编码所携带的逻辑“1”和逻辑“0”具有这种特性时,就无法通过INT口中断接收方式来辨别了,因为INT中断只是在上升沿或者下降沿的时候才触发。

第三部分将接收的码值存储并分析执行。

根据判断高低电平的宽度(定时器或者延时),可以得到码值,也就是我们所说的解码。

一般我们连续收到3个相同的完整码值,就确认此码的确被发出,并接收成功。

当解码结束,根据码值我们可以判断出是哪个按键被按下,由此去执行相对的按键功能。

HOLTEK公司的HT48以及HT49(带LCD)系列单片机,都可以符合大多数解码的任务。

32.在学习单片机的过程中,如何理解预分频,12时钟模式(6时钟模型)等概念?

答:

预分频器的英文是prescaler。

它就是将输入的频率信号分频,然后再输出。

HOLTEK公司有一款最基本的8位I/O型单片机HT48R05A-1,我们就以这款单片机为例说明。

HT48R05A-1有一个8位向上计数的定时器Counter。

系统时钟Fsys(4MHz)进入八阶预分频器(8-stagePrescaler)进行分频,再进入定时计数器Counter计数。

根据软件设置,预分频器可以将Fsys进行2的n次方分频(n=1~8)。

举例来说,如果软件设置为预分频器2分频,那幺预分频器输出的频率就是Fsys/2=2MHz,这个2MHz信号再进入定时计数器Counter。

如果需要HT48R05A-1或者其它各类HOLTEK单片机的详细资料,可以在如下地址下载:

12时钟模式(6时钟模型)应该就是在MCS51系列中,12个系统时钟为一个机器周期,2个系统时钟为一个状态,即一个机器周期有6个状态。

33.A/D、D/A的采样速率与其它单片机相比有什么优势?

答:

HOLTEKA/DTyepMCU内嵌逐位逼近的A/D转换电路,精度有8bit/9bit/10bit,A/D转换时间最快为76us。

至于D/A,一般是指PWM输出,HOLTEKA/DTypeMCU都带有8bit的PWM输出,但HOLTEKPWM的特点是其输出频率由系统频率决定(既系统频率选定后,PWM频率也就定了),其占空比通过对[PWM]寄存器赋值进行控制,不需要占用定时/计数器资源。

34.采用AT89S51时,出现了按了复位按钮,RAM中的数据被修改了。

这是怎么回事?

注:

数据放在特殊寄存器之外。

答:

如果是RESET脚的复位按钮:

一般MCU的RESET复位,其特殊寄存器会被重新初始化,而通用寄存器的值保持不变。

如果复位按钮是电源复位:

那就是MCU的上电复位,其特殊寄存器会被初始化,而通用寄存器的值是随机数。

35.将P2.7用来驱动一个NPN三极管,中间串接了一个1K的电阻。

问题是:

当我尝试向P2.7写'1'时,发现管脚只能输出大约0.5V的一个电平。

这个电路的使用得妥当么?

如何正确的使用IO功能?

答:

是在仿真时遇到的问题,还是烧录芯片后遇到的问题?

可以先将P2.7的外部电路断开,测量输出电压是否正常。

如果断开后输出电压正常,那就说明P2.7的驱动能力不够,不能驱动NPN三极管,应该改用PNP三极管(一般在MCU应用中,都采用PNP方式驱动)。

如果断开后输出电压还不正常,那有可能是仿真器(或芯片)已经损坏。

36.在做充电管理的时候,提高pwm的频率往往以牺牲精度为代价,如果用的AT90S4433(avr)、78P458(elan)频率分别做到16kHz(8bit)和32kHz(8bit),而希望做到的是100kHz(8bit以上

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1