课程设计论文基于AT89C151实现手机铃声的演奏.doc

上传人:sccc 文档编号:4868540 上传时间:2023-05-20 格式:DOC 页数:25 大小:3.88MB
返回 下载 相关 举报
课程设计论文基于AT89C151实现手机铃声的演奏.doc_第1页
第1页 / 共25页
课程设计论文基于AT89C151实现手机铃声的演奏.doc_第2页
第2页 / 共25页
课程设计论文基于AT89C151实现手机铃声的演奏.doc_第3页
第3页 / 共25页
课程设计论文基于AT89C151实现手机铃声的演奏.doc_第4页
第4页 / 共25页
课程设计论文基于AT89C151实现手机铃声的演奏.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《课程设计论文基于AT89C151实现手机铃声的演奏.doc》由会员分享,可在线阅读,更多相关《课程设计论文基于AT89C151实现手机铃声的演奏.doc(25页珍藏版)》请在三一办公上搜索。

1、赣南师院物理与电子信息学院课程设计报告书姓名: 班级: 08电信本 学号: 时间: 2010-12-10 设计题目基于AT89C151实现手机铃声的演奏设计要求1.接上电源能自动播放歌曲(如其中一首“兰花草”)。2.按下复位键能停止当前播放进度,从新开始演奏。3对于同一个硬件电路,输入不同的程序(即不同的歌曲的音符)能演奏不同的歌曲。4可按顺序播放多首音乐(包括和旋乐);还能演奏不同乐器的音乐。设计过程摘要:随着人类社会的发展,人们对视觉,听觉方面的享受提出了越来越高的要求。一首简单的铃声可以给人们带来美好的回忆,提高人们的精神文化享受。在人们普遍认为只有手机及MP3才能演奏铃声,熟不知还有一

2、种更轻巧,更实惠并具有手机功能的另一种产品正在研发中,不久将问世。此新产品相比于传统的手机的发音单调,价格贵等一序列缺点,它正是克服了这些缺点。它体积小,重量轻,能演奏和旋音乐,功能多,更具有市场价值。本文设计是以单片机为核心模拟此产品而设计的。关键字:AT89C51单片机 I/O口接线 LM386 简谱 晶体振荡器 复位电路 焊接技术1.设计任务和要求1.1设计任务 应用AT89C51单片机设计单片机以实现手机铃声(兰花草)的演奏。1.2设计要求(1).接上电源能自动播放歌曲“兰花草”。(2).按下复位键能停止当前播放进度,从新开始演奏。(3).对于同一个硬件电路,输入不同的程序(即不同的歌

3、曲的音符)能演奏不同的歌曲。(4).可按顺序播放多首音乐(包括和旋乐);还能演奏不同乐器的音乐。2.方案论证要实现音乐播放的设计有以下两种基本方案,但两种方案各有优缺点,现就两种基本方案的优劣进行具体论证,从而说明选择方案二的理由。方案一:利用数字电路来实现此设计,此方案主要是靠硬件电路来实现,思路简单,但要求对电路知识相当熟悉而且电路复杂,焊接相当麻烦,不够廉价。方案二:(1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲(2)使用内部定时器产生方波驱动喇叭发出声音,改变方波频率以实现乐曲的播放。(3)驱动电路采用集成功率放大器(LM386)。(4)播放的音乐数据根

4、据简谱的发音与码值写出T值存入CPU中。(5)最小系统参考林立编著的单片机原理及应用。(6)焊接电路时仔细阅读电工技术等资料。通过比较知道该课程设计是一种基于51单片机的手机铃声的设计方案,根据基本要求规划单片机手机铃声的硬间电路和软件程序,同时对单片机的型号选择(包括器件和元件的选择),硬件电路设计,电路焊接,软件分析(软件结构和软件流程图)以及音阶等都有注释。本文介绍在计算机开发平台上利用单片机及汇编语言设计音乐硬件伴奏电路,并定制单片机单片机存储音乐数据,以“兰花草”为例,将音乐数据存储到单片机,就达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改单片机所存储的音乐数据,将其换成其他的乐

5、曲的音乐数据,再重新连接到程序中就可以实现其它音乐的演奏。3.系统硬件设计3.1系统原理图下图为本设计的总原理图,它包括最小系统和驱动电路。(见附录2)其中最小系统包括复位电路,时钟电路,AT89C51芯片以及电源。插上电源后,最小系统便开始工作。其中,复位电路使CPU及其他功能部件处于一个确定的初始状态,并从这个状态开始工作,另外,在单片机工作过程中,如果出现死机,也必须对单片机进行复位,使其重新开始工作。单片机执行指令的过程可分为取指令,分析指令和执行指令三个步骤,每个步骤又有许多微操作,这些微操作必须在一个统一的时钟控制下才能按照正确的顺序执行(本设计是采用内部时钟方式)。驱动电路的设计

6、采用功率放大器(LM386)驱动喇叭,其中C2,C3对电源滤波,构成低频去耦电路。C4消除负反馈,C1电解电容过滤调输出信号中的高频成分,保证音质。3.2各功能电路原理图及原理3.2.1 系统框图图1是这次设计的总体方案,基于AT89C51为核心,其中复位和晶振则是单片机的最小系统的必要组成部分再加上电源就能使单片机正常工作,再将输出部分接入单片机的某个输出(本设计中,输出为P1.0口,输入为LM386的反向输入),从而能够驱动喇叭发出声音。电源复位晶振AT89C51 CPU输出 图1 系统框图3.2.1 单片机最小系统如图2所示为AT89C51上电复位电路。RC构成微分电路,再接电瞬间,产生

7、一个微分脉冲,其宽度若大于2个机器周期,单片机将复位,为保证微分脉冲宽度足够大,一般取10UF电容,10K电阻。 图2复位电路3.2.2 功率放大器(LM386)LM386是一种音频集成功放,具有自身功耗低外接元件少和总谐波失真小等优点。图3所示为LM386的一般用法,在图中的C4为电源滤波,C2是消除输出信号中的高频和杂质成份,以保证喇叭能够发出清晰的声音,而C3和R1则是起到反馈的作用使功率放大器能够工作在丙类状态,使其输出功率最大。 图3功率放大器电路3.2.4 简谱对应的发音以及码值 表1提供了几种基本简谱分别所对应的发音,根据不同的发音有不同的简谱码,从而对照不同的简谱码写出不同的T

8、值,因此,在软件程序中的代码中依照歌曲的简谱写入不同的T值,以供查表使用。 表1 相应简朴的发音以及码值 简 谱发 音简 谱 码T 值3低音M1640214低音FA2641035低音SO3642606低音LA4644007低音TI5645241中音DO6645802中音RE7646843中音M8647774中音FA9648205中音SOA648986中音LAB649687中音TIC650305#5831D64934不发音03.2.5 对应歌谱图4中是本次设计所演奏的歌曲的简谱,根据歌曲中的不同简谱查看表1而对应写出T值作为一序列的代码命名为TABLE,以供查表。图4歌曲“兰花草”歌谱3.2.6

9、 元件清单 表2 元件清单 元件名称元件参数元件数量单片机芯片AT89C511个功率放大器LM3861个电解电容TANTALUM47U10VTANTALUM100N35VTAWD106KO25RO6001个(47U)1个(100N)2个(10U)电容AVXO603NPO33PPOLYLAYER4N72个(33P)1个(4N7)扩音器SPEAKER1个晶体振荡器CRYSTAL1个(12M)开关BUTTON1个电阻3WATT10K3WATT470R2个(10K)1个(470R)电源VCC若干4.软件分析及程序流程图4.1程序流程图图5所示的流程图提供了基本的程序设计过程。一开始设置定时器模式并开放

10、中断,接下来初始化代码表指针,通过它至TABLE取简谱码从而设定计数值及延时时间,下一步是开始计数和延时,当有计数溢出时进入中断,在处理中断时主要对P1.0取反,再返回主程序,代码表指针减一,重复以上步骤。主程序起始地址,跳至主程序,TIMER0中断起始地址,跳至TIMER0中断子程序,设TIMER0在MODE1中断使能,取简谱码指针,简谱码指针载入,A至TABLE取简谱码,取到的简谱码暂存于R2,是否取到00(结束码)不是,则取低4位(节拍码),将接拍码存入R5,将取到的简谱码再载入;高低4位取低4位(音符码)取到的音符码是否为0是,则跳至D1取到的音符码减1(不含0),存入(22H),(乘

11、2)至TALE1,取相对的高位字节计数值取到的高位字节存入TH0,取到的高位字节存入(21H),再载入取到的音符码,乘2加1至TABLE1,取相对的低位字节计数值 ,取到的低位字节存入TL0,取到的低位字节存入,启动TIMER0基本单位时间1/4拍187毫取简谱码指针加1,取下一个码,停止TIMER0,重复循环将A 的值暂存于堆栈,将PSW的值暂存于堆栈,重设计数值,将P10位取反相,至堆栈取回PSW的值至堆栈取回A 的值,返回主程序,125毫秒决定节拍。开始设置定时器模式T0为模式1开放中断代码表指针初始从代码表取代码,根据代码设定计数值及延时时间计数开始,延时开始计数溢出?代码表指针加一么

12、?延时时间到重装计数器进入中断堆栈保护P1.0取反出 栈RETYNYN图5 程序流程图4.2程序结构见附录15.调试与测试结果分析5.1 调试与测试在实验室焊好了喇叭后,整个设计就基本完成了。插上电源后,喇叭正常发出声音,即演奏歌曲“兰花草”的音谱,就表示焊接成功。在经过把导线整理完毕后,交由老师检验后,交上实物,此次课程设计就告一段落了。5.2 测试结果分析单片机P1口产生脉冲,经过功率放大电路,从而驱动喇叭发出声音。产生的脉冲含有音节频率成分,这些脉冲组合起来,就等同于每个音节连接起来,再把这些连续的脉冲送入驱动电路,然后驱动电路驱动喇叭根据每个音节所对应的音谱演奏出不同声调,即不同的振动

13、组成一首完整的铃声。7.心得体会单片机亦称单片微控制器,它的诞生是计算机发展史上一个里程碑,标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。它是在一块芯片内集成了计算机的各种功能部件,构成一种单片式的微型计算机。通过为期两周的单片机课程设计,使得我们对单片机课程有了一个更深入得认识,更是对是对上学期的单片机知识做了一个系统的复习,让原本枯燥的课本知识变得生动而具有实际意义,这正是我们学习知识的最终目的,及是学以致用。在本次课程设计中,我们在书上和网络上查阅了大量相关资料,并得到了同学们的帮助,是我们这次课程设计成功的关键所在。在具体实践中我发现只有动手做才会孰能技巧,还有对材料

14、的整理和理解。其中,硬件方面主要就是将元件焊接起来,这里就要求熟悉电路原理图,还要了解各芯片引脚的作用。对于软件方面则是灵活运用单片机有关的程序语言,灵活运用其扩展功能,由于对一些原理知识匮乏,在设计的过程中也曾遇到了许多困难,但通过老师和同学们的帮助以及自己在网络中搜寻的资料都一一化解了,获得知识的同时,同时又获得友情,相当喜悦。单片机知识领域博大精深,我们现在了解和掌握的知识只是皮毛,要深入和透彻运用单片机技术还需要今后更深层次的学习才有建树。由于是第一次进行单片机课程设计,不免有一些错误和纰漏,望老师能够给予帮助和指导。参考文献.1林立, 张俊亮, 曹旭东, 刘得军. 单片机原理及应用M

15、. 北京:电子工业出版社,20092童诗白,华成英.模拟电子技术基础M. 高等教育出版,20063肖洪兵,跟我学用单片机M. 北京:北京航空航天大学出版,社,2002.8 4赵晓安. MCS-51单片机原理及应用M. 天津:天津大学出版社,2001.3 5李广第,单片机基础M第1版北京:北京航空航天大学出版社,1999 6徐惠民,安德宁 单片微型计算机原理接口与应用M 第1版 北京:北京邮电大学出版社,1996 7何立民,从Cygnal 80C51F看8位单片机发展之路J单片机与嵌入式系统应用J,2002年,第5期:P58 附录1 程序结构图RS BIT P2.0 ;定义液晶显示端口标号RW

16、BIT P2.1E BIT P2.2;*L50MS EQU 60HL1MS EQU 61HL250MS EQU 62HSEC EQU 65HMIN EQU 64HHOU EQU 63H;*org 0000hljmp mainORG 000BHLJMP TT0ORG 001BHLJMP T1INTorg 1000hmain: ;-;液晶初始化MOV SP,#70H MOV P0,#01H ;清屏CALL ENABLEMOV P0,#38H ;8位,2行显示lCALL ENABLEMOV P0,#0FH ;屏显on,光标on,闪烁onlCALL ENABLEMOV P0,#06H ;计数地址加1,

17、显示幕onlCALL ENABLE;-内存初始化lcall initil ;-key1:lcall keylcall modd ljmp key1;-键盘扫描key:nopnoplcall ksjnz k1 ;有按键转到K1lcall kaijilcall SOPxn:ljmp keyk1:lcall moddlcall moddlcall ksjnz k2ljmp keyk2:mov R2,#0feh ;读键盘mov R4,#00hk3:mov A,R2mov P1,Amov A,P1JB ACC.4,L1 ;为1跳转,第一行无按键mov a,#00hljmp lkL1:jb acc.5,L

18、2mov a,#04hljmp lkL2:jb acc.6,L3mov a,#08hljmp lkL3:jb acc.7,next1mov a,#0ch;-lk:add a,R4push acck4:lcall delay1 ;若同时有其他按键,则等待lcall ksjnz k4;-mov r3,#07h clr amov r0,#30hmov r1,#31hmm1:mov a,r1mov r0,ainc r0inc r1djnz r3,mm1pop accmov r0,a RET;-next1:inc R4 ;-列扫描mov a,R2JNB acc.3,n2ljmp n1n2:ljmp ke

19、yn1:rl amov R2,aljmp k3;-ks:mov a,#0f0h ;判断P1口mov P1,anopnopmov a,P1cpl aanl a,#0f0hRET;-DELAY1:SETB RS0dl:mov R5,#0ahdl2:mov R6,#63dl3:nop nopdjnz R6,dl3djnz R5,dl2 CLR RS0 RET;- ;30H-37H初值为零;-initil: mov r3,#08hmov r0,#30hm1:mov r0,#00hinc r0djnz r3,m1 RET;-;显示 ;-modd: MOV P0,#8EHlCALL ENABLE mov

20、A,37Hmov DPTR,#TABLE3 MOVC A,A+DPTRlCALL WRITE2 RET;-;开机提示字;-kaiji:mov a,37hcjne a,#0fh,DFFMOV P0,#80H ;设光标地址 lCALL ENABLEMOV DPTR,#TABLE1;写数据lCALL WRITE1 DFF:RET;-;按键值播放歌曲;-SOP:mov a,37hcjne a,#01h,A11LCALL MODDMOV 52H,#HIGH TABLE10MOV 53H,#LOW TABLE10LCALL INITILE2lcall MAIN0A11:CJNE A,#02H,A22LCA

21、LL MODDMOV 52H,#HIGH TABLE20MOV 53H,#LOW TABLE20 LCALL INITILE2 lcall MAIN0A22:CJNE A,#03H,A33LCALL MODDMOV 52H,#HIGH TABLE30MOV 53H,#LOW TABLE30 LCALL INITILE2 lcall MAIN0 A33:CJNE A,#04H,A44LCALL MODDMOV 52H,#HIGH TABLE40MOV 53H,#LOW TABLE40 LCALL INITILE2 lcall MAIN0A44:CJNE A,#05H,A55LCALL MODDM

22、OV 52H,#HIGH TABLE50MOV 53H,#LOW TABLE50 LCALL INITILE2 lcall MAIN0A55:CJNE A,#06H,A66LCALL MODDMOV 52H,#HIGH TABLE60MOV 53H,#LOW TABLE60 LCALL INITILE2 lcall MAIN0 A66:CJNE A,#07H,A77LCALL MODDMOV 52H,#HIGH TABLE70MOV 53H,#LOW TABLE70 LCALL INITILE2 lcall MAIN0 A77:CJNE A,#08H,A88LCALL MODDMOV 52H,

23、#HIGH TABLE80MOV 53H,#LOW TABLE80 LCALL INITILE2 lcall MAIN0A88:CJNE A,#09H,A99LCALL MODDMOV 52H,#HIGH TABLE90MOV 53H,#LOW TABLE90 LCALL INITILE2 lcall MAIN0 A99:CJNE A,#0AH,AAALCALL MODDMOV 52H,#HIGH TABLE100MOV 53H,#LOW TABLE100 LCALL INITILE2 lcall MAIN0 AAA:RET ;*INITILE2:MOV L50MS,#20MOV L1MS,#

24、00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HMOV A,HOUMOV B,#10DIV ABADD A,#30H ;将BCD吗转化为ASIIC码MOV P0,#0C8H ;显示小时十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0DH ;显示冒号CALL ENABLECALL WRITE2MOV A,MINMOV B,#10DIV ABADD A,#30HMOV P0,#0CBH

25、 ;显示分十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位CALL ENABLECALL WRITE2MOV A,#3AHMOV P0,#0CDH ;显示冒号CALL ENABLECALL WRITE2MOV A,SECMOV B,#10DIV ABADD A,#30H MOV P0,#0CEH ;显示秒十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位CALL ENABLECALL WRITE2MOV P0,#0C0H ;设光标地址 CALL ENAB

26、LEMOV DPTR,#TABLE2;写数据CALL WRITE1 RET;*写指令ENABLE: CLR RSCLR RWCLR ELCALL DELAYSETB ERET;*写数据WRITE1:MOV R1,#00HA1:MOV A,R1MOVC A,A+DPTRCALL WRITE2INC R1CJNE A,#0FEH,A1 ;未到字符串末尾继续RETWRITE2:MOV P0,ASETB RSCLR RWCLR ECALL DELAYSETB ERET;*DELAY:MOV R4,#05D1:MOV R5,#0FFHDJNZ R5,$DJNZ R4,D1RET ;-TAB:db 0c0

27、h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0a1h,86h,8ehTAB1:db 89h,86h,0c7h,0c7h,0c0hTAB2:db 0c6h,88h,0c0hTABLE1:DBWELCOM HERE,0FEHTABLE2:DBDFF WB ,0FEHTABLE4:DB CAU,0FEHTABLE3:DB 30H,31H,32H,33h DB 34H,35H,36H,37HDB 38h,39H,41H,42HDB 43H,44H,45H,46H ;-;播放歌曲程序;-MAIN0:MOV TMOD,#11HMOV I

28、E,#8aH ;MOV TH1,#3cH;MOV TL1,#0b0H lcall ksjnz TTM12 MOV 40H,#00H;-NEXT20:MOV A,40HMOV DPH,52HMOV DPL,53HMOVC A,A+DPTRMOV R2,AJZ STOPANL A,#0FHMOV R1,AMOV A,R2SWAP AANL A,#0FHJNZ SINGCLR TR0JMP W1;-SING:DEC AMOV 22H,ARL AMOV DPTR,#TABLE00MOVC A,A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,A+DPTR

29、MOV TL0,AMOV 20H,ASETB TR0SETB TR1W1:LCALL DELAY30INC 40HLCALL KS ;-有键跳出JNZ STOPLJMP NEXT20;-STOP:CLR TR0CLR TR1LJMP MAIN0 ;-TTM12:LCALL K2MOV A,37HCJNE A,#0EH,TTM13CLR TR1LCALL DELAY1TTM120:LCALL KSLCALL DELAY1JZ TTM120LCALL K2MOV A,37HCJNE A,#0EH,TTM120SETB TR1LJMP NEXT20TTM13:CJNE A,#0CH,TTM14MOV

30、 A,52HINC AMOV 52H,AMOV A,53HINC AMOV 53H,AMOV A,36HINC AMOV 37H,ALJMP TTM2TTM14:CJNE A,#0DH,TTM2MOV A,52HDEC AMOV 52H,AMOV A,53HDEC AMOV 53H,AMOV A,36HDEC AMOV 37H,A;- TTM2:RET;*;定时器中断子程序0;*TT0:PUSH ACCPUSH PSWMOV TL0,20HMOV TH0,21HCPL P3.7POP PSWPOP ACCRETI;*;定时器中断子程序1;*T1INT: MOV TH1, #3cHMOV TL1

31、, #0b0HDJNZ L50MS,X4MOV L50MS,#20;*-每秒种时钟刷新秒显示一次SECSET:MOV A,SECMOV B,#10DIV ABADD A,#30H MOV P0,#0CEH ;显示秒十位lCALL ENABLElCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CFH ;显示秒个位lCALL ENABLElCALL WRITE2MOV A,SECINC AMOV SEC,AXRL A,#60X4:JNZ OUTMINSET:MOV SEC,#00H ;*每分钟刷新分显示一次MOV A,MININC AMOV MIN,A MOV B,#10

32、DIV ABADD A,#30HMOV P0,#0CBH ;显示分十位lCALL ENABLElCALL WRITE2MOV A,BADD A,#30HMOV P0,#0CCH ;显示分个位lCALL ENABLElCALL WRITE2MOV A,MIN MOV B,#3MUL ABMOV B,#100DIV ABMOV R2,AMOV A,#10XCH A,BDIV ABMOV A,MINXRL A,#60JNZ OUTHOUSET:MOV MIN,#00H ;*每小时刷新小时显示一次 MOV A,HOUMOV B,#10DIV ABADD A,#30H ;将BCD吗转化为ASIIC码MO

33、V P0,#0C8H ;显示小时十位CALL ENABLECALL WRITE2MOV A,BADD A,#30HMOV P0,#0C9H ;显示小时个位CALL ENABLECALL WRITE2MOV A,HOUINC AMOV HOU,AXRL A,#10JNZ OUTSJMP OVERFLOWOUT:RETI;*溢出处理OVERFLOW:MOV L50MS,#20MOV L1MS,#00HMOV L250MS,#00HMOV SEC,#00HMOV MIN,#00HMOV HOU,#00HRETI;-DELAY30: MOV R7,#2W2:MOV R4,#125W3:MOV R3,#

34、248DJNZ R3,$DJNZ R4,W3DJNZ R7,W2DJNZ R1,DELAY30RET;-TABLE00:DW 64580,64684,64777,64820DW 64898,64968,65030,64260DW 64400,64524,65058,63835,64021;-;第一首精忠报国;-TABLE10: DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22HDB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98HDB 24H,22H,32H,

35、54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22HDB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38HDB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32HDB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52HDB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38HDB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52HDB 52H,62H,7FH,74H,04H,58H,6FHDB 00;-;第二首月亮代表我的心;-TABLE20: DB 02H,82HDB 16H,32H,54H,02H,52HDB 0A6H,32H,54H,02H,52HDB 64H,74H,0B6H,64HDB 52H,5CH,32H,22HDB 16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32HDB

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号