单片机课程设计报告实时时钟系统设计报告.doc

上传人:文库蛋蛋多 文档编号:4147695 上传时间:2023-04-07 格式:DOC 页数:30 大小:466.50KB
返回 下载 相关 举报
单片机课程设计报告实时时钟系统设计报告.doc_第1页
第1页 / 共30页
单片机课程设计报告实时时钟系统设计报告.doc_第2页
第2页 / 共30页
单片机课程设计报告实时时钟系统设计报告.doc_第3页
第3页 / 共30页
单片机课程设计报告实时时钟系统设计报告.doc_第4页
第4页 / 共30页
单片机课程设计报告实时时钟系统设计报告.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《单片机课程设计报告实时时钟系统设计报告.doc》由会员分享,可在线阅读,更多相关《单片机课程设计报告实时时钟系统设计报告.doc(30页珍藏版)》请在三一办公上搜索。

1、广西水利电力职业技术学院信息工程系实时时钟系统设计报告专业班级: 10通信技术2班学 号:姓 名:指导教师: 2011年 12 月 10 日摘要在设计中我们主要用到AT89S52芯片为系统控制核心,通过8位共阳数码管来显示该设计的主要功能,用4*4的按键来操作所有设计的控制,以及通过对单片机进行编程来实现对数据的简单计算设置,按键控制及该计算器所拥有的功能进行控制。关键词:AT89S52,计算器目 录一、方案的论证和比较:11.1 单片机型系统的选择与论证11.2 显示模块的选择与论证11.3 时钟实现2二、系统框图及工作原理32.1 系统总体设计结构框图32.2 系统的硬件电路设计3三 、软

2、件编程93.1 主程序流程图93.2 键盘程序103.3 LCD液晶显示流程图113.4 DS1302时间部分15四、测试结果和结论16五、心得体会17致谢18参考文献19附录 A20附录 B20附录 C26一、方案的论证和比较:1.1 单片机型系统的选择与论证方案一:此方案采用AT89C51八位单片机实现。它内存较小,只有4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,无在线下载编程功能,也无在线仿真功能。只能通过编程器烧写成以.hex为后缀名的文件。方案二:此方案采用AT89S52八位单片机实现。它

3、内存较大,有8K的字节Flash闪速存储器,比AT89C51要多4K。它可在线编程,可在线仿真的功能,这让调试变得方便。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。综上所述,我们采用了第二个方案,即AT89S52。1.2 显示模块的选择与论证方案一:采用LCD点阵显示,用来显示文字、图形、图像、等各种信息的显示屏幕。它均由LCD矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形,该方案简单易行。但所需的元件较多,且不容易进行操作,可读

4、性差,一旦设定后,很难再加入其他的功能,当加上日期、时间时增加了编程的难度。方案二:采用液晶(JHD529M1)显示器件,该液晶显示器件与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该器件的价格也略低于相同点阵的图形液晶模块。而且此液晶显示平稳、省电、美观,更容易实现题目要求,对后续的功能兼容性高,同时有中文字库,也可以实现图像显示。只需将软件作修改即可,可操作性强,也易于读数,能同时显示日期、时间、星期且易于修改。综上分析,我们采用了第二个方案。1.3 时钟实现方案一:采用软件实现,直接用单片机的定时器编程以实现时钟,优点节省硬件,缺点是编程复杂程序运行的每一

5、步都需要时间,多一步或少一步程序都会影响记时的准确度,准确度较差。方案二:采用专用的时钟芯片实现时钟的记时,专用时钟芯片记时准确,容易控制,能够从芯片直接读出日期、时间、星期,更符合题目要求。综上分析,我们采用了第二个方案,时钟芯片选择常用的DS1302。二、系统框图及工作原理2.1 系统总体设计结构框图以AT89S52芯片为核心,当它接到来自按键的信号后,在数码管上显示相应的信息,同时在LCD上也显示相应的信息,并且有已处理好的图片文字也显示出来。当接到来自时钟芯片的信号时,其内部程序将根据信号的类型进行处理,并且将处理的结果从其他的I/O口送到显示模块。处理过程所需的时间极短,并且液晶显示

6、的显示时间稳定。系统设计框图如图1所示。图1.系统设计框图2.2 系统的硬件电路设计2.2.1 单片机控制部分1) 单片机的内部结构MCS-51单片机片内主要由振荡电路、中央处理器(CPU)、内部总线、程序存储器、数据存储器、定时器/记数器、中断系统和I/O口等模块组成,各部分通过内部总线紧密地联系在一起。2) 单片机的振荡与时钟单片机必须在时钟的驱动下才能进行工作,MCS-51系列单片机内部有一个时钟振荡电路,只需外接振荡源,就能产生一定频率的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。图2就是内部时钟工作方式的电路图,这是一种常用的方式。这种方式是外接振荡源,一般选石英振荡器。

7、此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。电路中两个电容C1、C2的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用。C1、C2的典型值为30pF。晶振为12MHz。图2.振荡电路3) 单片机的复位及复位电路 复位状态计算机在启动运行时都需要复位,复位使中央处理器CPU和系统中的其他器件都处于一种初始状态,并从这个初始状态工作。MCS-51系列单片机有一个复位引脚RST。在MCS-51系列单片机的RST引脚上输入一个高电平信号,该高电平信号至少要维持两个机器周期以上的时间,单片机被复位。复位电路

8、与其他计算机一样,MCS-51单片机系统的复位方法有上电自动复位、手动复位以及“看门狗”复位等。此最小系统采用手动复位电路。在系统运行过程中,有时可能对系统需要进行复位,为避免对硬件经常加电和断电造成的损害,我们可以采用手动复位。这种方法是将一个开关串联一只电阻后,再并联于电容C的两端,在系统运行过程中需要复位时只要使开关闭合,在RST引脚上就会出现一定时间的高电平信号,从而使单片机实现复位。图3.复位电路4) 当AT89S52芯片接到来自键盘输入的信号以及时钟芯片的信号时,其内部程序将根据信号的类型来处理,并将处理的结果送到相对应的显示模块。本部分的硬件电路图如下:图4. 单片机控制模块2.

9、2.2 液晶显示模块部分该模块是由JHD529M1液晶显示器件组成, 其器件带中文字库是一种128X64显示模式,具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字, 也可完成图形显示,低电压低功耗是其又一显著特点。其引脚功能为:由于本系统共用一个电源,所以第1,20脚为电源接地端;第2,19脚为电源正端;第3脚为对比度选择;第4脚为

10、显示数据或显示指令数据端;第5脚为DB7B0的数据被写到IR或DR;第6脚为使能信号端;第714脚为DB7B0的数据线端;第15脚为串/并口选择端;第17为复位端,低电平有效;第18脚为LCD驱动电压输出端。其模块连接图如下:图5.液晶显示模块2.2.3 键盘输入部分本系统中用到6个按键,用P1的8个I/O口接独立键盘即可满足需要,软件消除抖动处理,并能准确判断所需执行的相应程序。其中,P1.0P1.5为键盘接口。判别有无键按下。将P1口输出置1,再进行查询,若全为1,表明无按键按下,否则,表明至少有一个键按下。在判断有键按下后,调用延时子程序,时间为15MS,再判断P1.0P1.5的状态,如

11、果仍然是有键按下,则确认键被真正按下,否则当做按键抖动处理。当确认有键按下后,使P1口为低电平,读入P1.0P1.5的状态,若P1.0为0,表示按键S1按下,如此依次类推。键盘功能如下表:表1 键盘基本功能表(K1)(时间设置)(K2)(取消)(K3)(加1)(K4)(减1)(K5)(闹钟设置)(K6)(确定)(K5)+(K6)(闹铃开关)注:(K1=S1,K2=S2,K3=S3,K4=S4,K5=S5,K6=S6)其电路图如下:图6.键盘模块2.2.4 时钟系统DS1302涓流充电时钟保持芯片的原理与应用DS1302通过简单的串行接口与单片机进行通信实时时钟/日历电路,并提供秒分时日日期月年

12、的信息,每月的天数和闰年的天数可自动调整时钟。操作可通过AM/PM 指示决定采用24 或12 小时格式,DS1302与单片机之间能简单地采用同步串行的方式进行通信。RAM 的读/写数据以一个字节或可多达31个字节的字符组成的方式通信。DS1302工作时功耗很低保持数据和时钟信息时功率小于1mW,DS1302 是由DS1202改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc, 为可编程涓流充电电源附加七个字节存储器,它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域。其电路图如下:图7.时钟模块三 、软件编程3.1 主程序流程图开机LCD液晶屏幕显示“日历、时间和闹铃

13、开/关”信息。调用系统初始化程序,调用键盘子程序,调用读时间芯片时间子程序,调用时钟芯片初始化/改写程序,调用显示时间日期子程序。3.2 键盘程序判断是否有按键按下,没有则不停查询,如有并调用相应液晶显示子程序。流程图略按键使用流程图如下:3.3 LCD液晶显示流程图LCD液晶显示是通过调用初始化程序,写数据子程序,写指令子程序,地址转换子程序,汉字显示子程序,读忙状态子程序以及延时子程序组合。具体如下:3.3.1 LCD初始化子程序子程序3.3.2 写数据子程序3.3.3 地址转换子程序子程序3.3.4 LCD读写时序图1)先将RS,R/W置相应位,再将数据送到端口,E发一高电平脉冲将命令或

14、数据写入JHD529M1,时序图见下图,程序见附件。图8.JHD529M1时序图2)JHD529M1读操作时序图图9.JHD529M1读操作时序图3)JHD529M1写操作时序图图10.JHD529M1写操作时序图3.4 DS1302时间部分 3.4.1 设置时间写入时钟芯片流程图将时间值写到1302时钟芯片上,其用干调整更准确时间,程序流程图如下图。其中内部定时器为调整时间和日期。3.4.2读时间程序流程图四、测试结果和结论 各项功能测试方法及测试结果如下表1:表2.各项功能测试方法及结果类别测试项目测试方法测试结果基本部分(1)时间显示开机显示测试实现(2)闹铃提示开机显示测试实现(3)时

15、间设置按K1进入时间、日期调整功能,和选择调整位,按K2为取消调整,K3加1,按K4减1,按K6确认设定结束 测试实现(5)闹铃设置按K5进闹铃设置界面,按K1选择调整位,按K2为取消调整,K3加1,按K4减1,按K6确认设定结束测试实现发 挥部分(1)整点提示(采用蜂鸣器)每到达一个整点时,鸣器器会响一秒测试实现(2)日历显示开机显示,设置方法同时间设置一样 测试实现在LCD的第一行显示的是年、月、日,第二行显示的是星期,第三行显示的是时间,第四行显示的闹铃开、关。在闹铃设置时,当按K5键,LCD会切换到闹铃设置的屏幕中去。该时钟设置包含的功能有:1、时钟显示,2、闹铃提示,3、时钟设置,4

16、、闹铃设置,5、整点提示(采用蜂鸣器),6、日历显示。用DS1302实现了实时检测的功能,并且可以随时调整时间和日期,同时时钟芯片还加了备用电源,在断电情况下也可以记忆原来时间。在我的设计中就采用了纽扣电池作备用电源,当断电的是时候还能还能工作。本系统设计所用到的元件少,主要以单片机为核心,加上外围电路构成了仪器仪表的键盘显示模拟系统。其中采用串行时钟芯片控制时间,LCD液晶显示时间和键盘输入的信息,经过大家的共同努力,实现了设计要求的功能。五、心得体会略致谢略参考文献1汪德彪. MCS-51单片机原理及接口技术. 北京:电子工业出版社. 2003. 2韩志军 、沈晋源 、王振波 .单片机应用

17、系统设计-入门向导与设计实例.北京:机械工业出版社.2005.3张有得、涂时亮、赵志英. 实用子程序及其应用. 北京: 复旦大学出版社. 1988.4李广第. 单片机基础. 北京:北京航空航天大学出版社. 1994.5王廷才.电子线路CAD Protel99 使用指南. 北京:机械工业出版社. 2001.附录 A电路总原理图附录 B;硬件:;AT89S52 晶振12MHz.液晶屏12864。时钟芯片DS1302(32768Hz);主要功能:; 时钟显示.; 闹钟提示; 闹钟设置; 时钟设置; 整点报时; 日历显示.;*;液晶屏的每行起始单元地址(DDRAM地址)(带字库): ;第一行-80H

18、第二行-90H;第三行-88H 第四行-98H ;*;P0口液晶屏数据传输;*;写值到液晶屏:;20H-显示空格;*/开关的定义/* K1 BIT P1.0 ;设置/移动 K2 BIT P1.1 ;取消 K3 BIT P1.2 ;加 K4 BIT P1.3 ;减 K5 BIT P1.4 ;闹钟设置 K6 BIT P1.5 ;确定 ;(K6+K5) 开/关闹钟功能.;*/液晶屏管脚的定义/* RS BIT P2.2 ;定义数据与指令线 RW BIT P2.3 ;定义读/写线 E BIT P2.4 ;定义使能控制线 PSB BIT P2.5 ;定义串并口选择线 RESET BIT P2.7 ;定义

19、复位线 SPEAK BIT P3.3 ;蜂鸣器 ;*/DS1302管脚的定义/* SCLOK BIT P3.4 ;时钟芯片的时钟 IO_DATA BIT P3.5 ;时钟芯片的数据 RST BIT P3.6 ;时钟芯片的数据传输控制 NIAOZH BIT 20H.0;*/对DS1302读出/写入数值(BCD码)存贮单元/* T_MIAO EQU 37H ;秒值存贮单元.(BCD码) T_FEN EQU 38H ;分值存贮单元.(BCD码) T_SHI EQU 39H ;时值存贮单元.(BCD码) T_RI EQU 3AH ;日值存贮单元.(BCD码) T_YUE EQU 3BH ;月值存贮单元

20、.(BCD码) T_XINGQI EQU 3CH ;星期值存贮单元.(BCD码) T_NIAN EQU 3DH ;年值存贮单元.(BCD码);*/DS1302(BCD码)转成对应十/个位分开的二进制码的存贮单元/* MIAO_S EQU 3EH ;秒值十位存放单元液晶屏显示用 MIAO_G EQU 3FH ;秒值个位存放单元 FEN_S EQU 40H ;分值十位存放单元 FEN_G EQU 41H ;分值个位存放单元 SHI_S EQU 42H ;时值十位存放单元 SHI_G EQU 43H ;时值个位存放单元 RI_S EQU 44H ;日值十位存放单元 RI_G EQU 45H ;日值个

21、位存放单元 YUE_S EQU 46H ;月值十位存放单元 YUE_G EQU 47H ;月值个位存放单元 XINGQI_X EQU 48H ;星期没有十位 NIAN_S EQU 49H ;年值十位存放单元 NIAN_G EQU 4AH ;年值个位存放单元 S_MIAO_S EQU 4BH ;秒值十位暂存单元设置时用 S_MIAO_G EQU 4CH ;秒值个位暂存单元 S_FEN_S EQU 4DH ;分值十位暂存单元 S_FEN_G EQU 4EH ;分值个位暂存单元 S_SHI_S EQU 4FH ;时值十位暂存单元 S_SHI_G EQU 50H ;时值个位暂存单元 S_RI_S EQ

22、U 51H ;日值十位暂存单元 S_RI_G EQU 52H ;日值个位暂存单元 S_YUE_S EQU 53H ;月值十位暂存单元 S_YUE_G EQU 54H ;月值个位暂存单元 S_XINGQI_X EQU 55H ;星期没有十位 S_NIAN_S EQU 56H ;年值十位暂存单元 S_NIAN_G EQU 57H ;年值个位暂存单元 NIAOZHONG EQU 58H ;屏显闹钟开/关控制单元 (值为04H-开 06H-关) KEY EQU 59H ;查键盘状态对应的按键值 INCDEC EQU 5AH ;加一/减一数据暂存单元. XIANBIAO EQU 5BH ;屏显设置位码标

23、志位 N_FEN_S EQU 5CH ;闹钟的分值显示/比较存贮单元. N_FEN_G EQU 5DH ;闹钟的分个位. N_SHI_S EQU 5EH ;闹钟的时值显示/比较存贮单元. N_SHI_G EQU 5FH ;闹钟的时个位. SN_FEN_S EQU 60H ;闹钟的分值暂存单元. SN_FEN_G EQU 61H ;闹钟的分个位. SN_SHI_S EQU 62H ;闹钟的时值暂存单元. SN_SHI_G EQU 63H ;闹钟的时个位 ORG 0000H LJMP START;*/读DS1302时间子程序 秒/分/时/日/月/星期/年/*;81H-读出秒值 83H-读出分值 8

24、5H-读出时值 87H-读出日值;89H-读出月值 8BH-读出星期值 8DH-读出年值DUSHI: PUSH ACC CLR RST ;使能端,为0时禁读写,为1时开启. CLR SCLOK SETB RST MOV R0,#T_MIAO ;读取顺序:秒-分-时-日-月-星期-年 MOV R1,#81H ;81H-读出秒值 MOV R2,#07H MOV B,#8EH ;8FH-禁止写入数据到1302(指令) ACALL WRSHI ;调用写一个字节时钟芯片子程序 把要写的内容放在 B 寄存器 MOV B,#80H ;80H-禁止写入数据到1302(数据) ACALL WRSHIDD: CL

25、R RST CLR SCLOK SETB RST MOV B,R1 ACALL WRSHI ACALL RESHI MOV R0,A INC R0 INC R1 INC R1 SETB SCLOK CLR RST DJNZ R2,DD POP ACC RETXIESHI: PUSH ACC CLR RST ;时钟芯片片选 写初始/修改日期子程序 CLR SCLOK ;时钟脉冲 SETB RST MOV B,#8EH ;控制寄存器 ACALL WRSHI MOV B,#00H ;写操作前WP=0 允许对1302写操作. ACALL WRSHI MOV B,#80H ;停止振荡器 ACALL WR

26、SHI MOV B,#80H ACALL WRSHI SETB SCLOK CLR RST MOV R0,#T_MIAO ;写顺序:秒-分-时-日-月-星期-年 MOV R1,#80H MOV R2,#07HS1302: CLR RST CLR SCLOK SETB RST MOV B,R1 ACALL WRSHI MOV A,R0 MOV B,A ACALL WRSHI INC R0 INC R1 INC R1 SETB SCLOK CLR RST DJNZ R2,S1302 CLR SCLOK SETB RST MOV B,#8EH ;控制寄存器 ACALL WRSHI MOV B,#80

27、H ;WP=1 不允许对1302写操作 ACALL WRSHI SETB SCLOK CLR RST POP ACC RETWRSHI: MOV R3,#08H ;写一个字节时钟芯片子程序AGIII: MOV A,B ;把要写的内容放在 B 寄存器 RRC A MOV B,A MOV IO_DATA,C SETB SCLOK CLR SCLOK DJNZ R3,AGIII RETRESHI: MOV R3,#08H ;读一个字节时钟芯片子程序AGIII2: MOV C,IO_DATA RRC A ;读取的数据放在A寄存器 SETB SCLOK CLR SCLOK DJNZ R3,AGIII2

28、RET;*/查键盘状态子程序/*CHAZT: MOV KEY,#00H MOV P1,#0FFH MOV A,P1 CPL A ANL A,#3FH JZ BACK4 ;若(A)=0,则转移,否则顺序. LCALL TIM ;调用10mS延时子程序去抖动 MOV P1,#0FFH MOV A,P1 CPL A ANL A,#3FH JZ BACK4 MOV KEY,ABACK4: RET ;*/加一子程序(09)/*INCSHU: INC INCDEC MOV R2,INCDEC CJNE R2,#0AH,IN_BIIN_BI: JC IN_NET MOV INCDEC,#00HIN_NET:

29、 RET;*/减一子程序(90)/*DECSHU: DEC INCDEC MOV R2,INCDEC CJNE R2,#0AH,DE_BIDE_BI: JC DE_NET MOV INCDEC,#09HDE_NET: RET;*/加一子程序(05)/*INCSHU5: INC INCDEC MOV R2,INCDEC CJNE R2,#06H,IN_BI5IN_BI5: JC IN_NET5 MOV INCDEC,#00HIN_NET5: RET;*/减一子程序(60)/*DECSHU5: DEC INCDEC MOV R2,INCDEC CJNE R2,#06H,DE_BI5DE_BI5:

30、JC DE_NET5 MOV INCDEC,#05HDE_NET5: RET;*/加一子程序(02)/*INCSHU2: INC INCDEC MOV R2,INCDEC CJNE R2,#03H,IN_BI2IN_BI2: JC IN_NET2 MOV INCDEC,#00HIN_NET2: RET;*/减一子程序(20)/*DECSHU2: DEC INCDEC MOV R2,INCDEC CJNE R2,#03H,DE_BI2DE_BI2: JC DE_NET2 MOV INCDEC,#02HDE_NET2: RET;*/ 表 /*TAB1: DB 0123456789时刻 TAB2:

31、DB 0123456789年月日 TAB3: DB 星期 TAB4: DB 闹钟开关TAB5: DB 一二三四五六日 END附录 C元件清单表如下:元件名称元件型号元件标号元件封装电容0.01uC5RAD0.1电容0.01uC1RAD0.1电容0.01uC2RAD0.1电阻1KR1AXIAL0.4电阻1KR8AXIAL0.4电阻2kR4AXIAL0.4电阻10KR5AXIAL0.4电阻10KR3AXIAL0.4电阻10KR7AXIAL0.4电阻10KR6AXIAL0.4电容10UC6100U电阻10kRP1SIP332.768K晶振32KY2RAD0.1电阻100R100AXIAL0.4电容1

32、00uC10100U电容104C3RAD0.1AT89S528051U1DIP40三极管9012Q1TO-39三极管9013Q2TO-393口排插CON3J5SIP32口排插CON2J1SIP26口排插CON6J2SIP67口排插CON7J9SIP920口排插CON20J7SIP2012M晶振晶振Y1AXIAL0.4温度传感器DS18B20J4SIP3时钟芯片片DS1302U3DIP8发光二极管LEDD13发光二极管电阻10KR2AXIAL0.4蜂鸣器SPEAKERLS1蜂鸣器复位开关SW-PBS184444自锁开关SW-PBS17666666排阻PAIZUJ8SIP9元件名称元件型号元件标号

33、元件封装电容0.01uC5RAD0.1电容0.01uC1RAD0.1电容0.01uC2RAD0.1电阻1KR1AXIAL0.4电阻1KR8AXIAL0.4电阻2kR4AXIAL0.4电阻10KR5AXIAL0.4电阻10KR3AXIAL0.4电阻10KR7AXIAL0.4电阻10KR6AXIAL0.4电容10UC6100U电阻10kRP1SIP332.768K晶振32KY2RAD0.1电阻100R100AXIAL0.4电容100uC10100U电容104C3RAD0.1AT89S528051U1DIP40三极管9012Q1TO-39三极管9013Q2TO-393口排插CON3J5SIP32口排插CON2J1SIP26口排插CON6J2SIP67口排插CON7J9SIP920口排插CON20J7SIP2012M晶振晶振Y1AXIAL0.4温度传感器DS18B20J4SIP3时钟芯片片DS1302U3DIP8发光二极管LEDD13发光二极管电阻10KR2AXIAL0.4蜂鸣器SPEAKERLS1蜂鸣器复位开关SW-PBS184444自锁开关SW-PBS17666666排阻PAIZUJ8SIP9

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号