单片机数字音乐盒 1.docx

上传人:b****0 文档编号:18077400 上传时间:2023-08-13 格式:DOCX 页数:56 大小:291.49KB
下载 相关 举报
单片机数字音乐盒 1.docx_第1页
第1页 / 共56页
单片机数字音乐盒 1.docx_第2页
第2页 / 共56页
单片机数字音乐盒 1.docx_第3页
第3页 / 共56页
单片机数字音乐盒 1.docx_第4页
第4页 / 共56页
单片机数字音乐盒 1.docx_第5页
第5页 / 共56页
单片机数字音乐盒 1.docx_第6页
第6页 / 共56页
单片机数字音乐盒 1.docx_第7页
第7页 / 共56页
单片机数字音乐盒 1.docx_第8页
第8页 / 共56页
单片机数字音乐盒 1.docx_第9页
第9页 / 共56页
单片机数字音乐盒 1.docx_第10页
第10页 / 共56页
单片机数字音乐盒 1.docx_第11页
第11页 / 共56页
单片机数字音乐盒 1.docx_第12页
第12页 / 共56页
单片机数字音乐盒 1.docx_第13页
第13页 / 共56页
单片机数字音乐盒 1.docx_第14页
第14页 / 共56页
单片机数字音乐盒 1.docx_第15页
第15页 / 共56页
单片机数字音乐盒 1.docx_第16页
第16页 / 共56页
单片机数字音乐盒 1.docx_第17页
第17页 / 共56页
单片机数字音乐盒 1.docx_第18页
第18页 / 共56页
单片机数字音乐盒 1.docx_第19页
第19页 / 共56页
单片机数字音乐盒 1.docx_第20页
第20页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机数字音乐盒 1.docx

《单片机数字音乐盒 1.docx》由会员分享,可在线阅读,更多相关《单片机数字音乐盒 1.docx(56页珍藏版)》请在冰点文库上搜索。

单片机数字音乐盒 1.docx

单片机数字音乐盒1

 

《单片机原理与应用》大作业

 

 

 

题目数字音乐盒

院系

专业

姓名

班级学号

指导教师

  

二○一一年十二月

单片机大作业任务书

作业名称

基于AT89C51单片机的数字音乐盒

姓名

院(系)

班级

专业

学号

电话

QQ号

1、设计任务:

设计一款基于AT89C51单片机的数字音乐盒。

2、设计要求:

(1)利用单片机的I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。

(2)共有10首音乐,每首乐曲都由相应的按键控制,并有开关键、暂停键、上一曲及下一曲控制键;

(3)利用LCD液晶显示歌曲的序号、播放时间,开机时显示英文欢迎提示字符。

 

完成时间

2011-2012学年第一学期

 

目录

单片机大作业任务书2

1、设计任务2

2、设计要求:

2

1概述4

1.1单片机数字音乐盒有关介绍4

1.2本设计任务6

2总体方案论证与设计7

2.1单片机的选取8

2.2系统总体结构框图8

3系统硬件设计10

3.1AT89C51芯片功能和硬件连接10

3.1.2管脚说明(如图3.1):

图3.110

3.2键盘12

3.5整体硬件电路13

4系统软件设计14

4.1主模块的设计14

4.3基本显示模块设计16

4.4系统初始化程序17

4.6程序流程图21

4.7文档顶端程序清单22

5调试结果32

5.1系统总电路图32

5.2运行结果及分析32

总结33

参考文献34

1概述

随着社会的发展和进步,许多人性化而电子产品被人们用在日常生活之中,而单片机被广泛的运用到人们长期接触的事物上,比如银行交易窗口的滚动字幕,还有各种彩灯的控制,手机、计算机、机器人等各行各业之中。

传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。

但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。

水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。

另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。

基于单片机设计制作的电子式音乐盒。

与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。

电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。

基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。

所放歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。

另外,可以设计彩灯外观效果,增设放歌时间、序号显示灯功能,使音乐盒的功能更加丰富。

本设计采用4*4键盘,16*2LCD。

1.1单片机数字音乐盒有关介绍

电子音乐已广泛地应用于社会生活的各个领域。

其类型从音乐卡片到CD、MP3等多种多样,制作原理也各不相同。

声音是通过振动产生的。

单片机对某一I/O引脚以一定的频率循环置1和清0,这一引脚便产生一定频率的方波,该方波通过放大后作用于扬声器便产生一定频率的声音。

若改变输出方波的频率,产生的声音也就改变了。

通过控制输出方波的时间长短,声音的长短也就得到控制。

因此,根据乐谱,单片机就可产生电子音乐。

音乐中最关键的两个要素是音符和节拍。

单片机控制的音乐发生器系统由硬件电路和软件两部分构成。

利用单片机控制的电子音乐发生器软硬件上具有独特的优点,系统的开发周期短,成本低,电路制作容易。

更换歌曲时,硬件电路无需作任何修改,只需修改软件即可实现。

软件编程时,可用51系列单片机的汇编语言或C51语言实现。

同时还可根据个人的习好通过软件改变节拍的延时时间,增加电子音乐的趣味性。

1.1.1发音原理介绍

发音原理:

播放一段音乐需要的是两个元素,一个是音调,另一个是音符。

首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。

对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。

另外,音符的频率有所不同。

基于上面的内容,这样就对发音的原理有了一些初步的了解。

音符的发音主要靠不同的音频脉冲。

利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P3.7引脚的输出音乐。

只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。

1.1.2音符频率的产生

音符及定时器初始值:

例如:

中音1(do)的音频=523HZ,周期T=1/523s=1912

定时器/计数器0的定时时间为:

T/2=1912/2

=956

定时器956

的计数值=定时时间/机器周期=956

/1

=956(时钟频率=12MHZ)

装入T0计数器初值为65536-956=64580

将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P3.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。

将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。

下表1.1是C调各音符频率与计数初值T的对照表:

表1.1C调各音符频率与计数初值T的对照表

音符

频率(Hz)/初值(

音符

频率(Hz)/初值(

低1DO

262/63627

中1DO

523/64580

高1DO

1042/65056

低2RE

294/63835

中2RE

589/64687

高2RE

1245/65134

低3M

330/64021

中3M

661/64780

高3M

1318/65157

低4FA

350/64107

中4FA

700/64822

高4FA

1397/65178

低5SO

393/64264

中5SO

786/64900

高5SO

1568/65217

低6LA

441/64402

中6LA

882/64969

高6LA

1760/65252

低7SI

495/64526

中7SI

990/65031

高7SI

1967/65282

音符、音符编码及定时器初始值:

为了产生音符,必须求出音符低音5—高音5的计数初值。

例如C调的低1DO的THTL=65536-50000/262=63627,

中音的THTL=65536-500000/523=64580,

高音的DTHTL=65536-500000/1042=65056。

为了方便写谱,对其进行简单的编码,在编程时,根据音符编码(表1.2)查找对应的计数初值。

比如说音乐是C调的,那么出现低音的5SO,直接将代码写为1;出现低音6LA,直接写一个2的代码;出现低音7SI,直接写一个3代码。

表1.2音符编码表

音符

音符编码

音符

音符编码

不发音

0

低5SO

1

低6LA

2

低7SI

3

中1DO

4

中2RE

5

中3M

6

中4FA

7

中5SO

8

中6LA

9

中7SI

A

高1DO

B

高2RE

C

高3M

D

高4FA

E

高5SO

F

高6LA

G

1.1.3节拍频率的产生

节拍的产生与编码:

音乐中的节拍用延时时间产生。

例如,1拍=0.4s,1/4拍=0.1s,以此类推。

假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。

为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间,如表1.3和表1.4所示。

表1.3节拍数编码表

按1/4拍为一个延时时间的节拍编码与节拍对应的表

按1/8拍为一个延时时间的节拍编码与节拍对应的表

节拍编码

节拍

节拍编码

节拍

节拍编码

节拍

节拍编码

节拍

1

1/4

6

6/4

1

1/8

6

6/8

2

2/4

8

8/4

2

2/8

8

8/8

3

3/4

A

10/4

3

3/8

A

10/8

4

4/4

C

12/4

4

4/8

C

12/8

5

5/4

F

15/4

5

5/8

表1.4乐谱节拍编程时的时间延时表

乐谱节拍

1/4拍的延时时间

乐谱节拍

1/8拍的延时时间

4/4

125ms

4/4

62ms

3/4

187ms

3/4

94ms

2/4

250ms

2/4

125ms

音符编码和节拍编码完成后,在编程时,每个音符占一个字节,高四位是音符编码,低四位是节拍编码。

1.2本设计任务

随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。

小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。

传统的音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。

本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,使用方便,可以批量生产,具有一定的商业价值。

本设计是基于单片机控制的数字音乐盒的设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机数字音乐盒。

若该设计使用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。

若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计中采用单片机利用AT89C51,它是低功耗、高性能的CMOS型8位单片机。

片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。

另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。

在该设计中利用单片机I/O口产生一定频率的方波,驱动蜂鸣器,发出各种不同的音调,从而演奏乐曲,并能够由LCD显示信息。

键盘在单片机应用系统中能实现向单片机输入数据,传送命令等功能,是人工干预单片机的主要手段。

本设计采用4*4键盘,16*2LCD,七段显示数码管LED。

在开机按钮按下时有英文欢迎提示字符,播放时显示歌曲序号(或名称)。

在演奏过程中可通过功能键选择乐曲,暂停,播放。

2总体方案论证与设计

本设计是基于单片机的数字音乐盒设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒。

要求利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调并采用LCD显示信息,从而演奏乐曲,开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称),可通过功能键选择乐曲,暂停,播放。

本设计采用4*4键盘,16*2LCD。

下面对各模块的设计逐一进行论证比较。

2.1单片机的选取

首先选择单片机中最为普遍的MCS51系列。

其中AT89C2051是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C2051单片机可应用于许多高性价比的应用场合。

主要性能:

●MCS-51产品兼容;

●2KB可重编程FLASH存储器(1000次);

●2.7-6V电压范围;

●全静态工作:

0Hz-24KHz

●2级程序存储器保密锁定

●128*8位内部RAM

●15条可编程I/O线

●两个16位定时器/计数器

●6个中断源

●可编程串行通道

●高精度电压比较器(P1.0,P1.1,P3.6)

●直接驱动LED的输出端口

由于完成核心功能——音频输出只需一个I/O口,并且额外功能LED移位显示可根据所选单片机的剩余I/O口进行设计,因此AT89C2051足以满足基本要求。

其20个引脚体积小巧,内部2k字节的程序存储器容量适中,低压低频工作条件,并且价格低廉容易购得。

综上,本次设计选择AT89C2051单片机。

2.2系统总体结构框图

3系统硬件设计

本设计中用到了AT89C51单片机,4*4键盘,蜂鸣器,16*2LCD等硬件电路常用元器件。

3.1AT89C51芯片功能和硬件连接

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

3.1.1主要特性:

·与MCS-51兼容

·4K字节可编程闪烁存储器

·寿命:

1000写/擦循环

·数据保留时间:

10年

·全静态工作:

0Hz-24Hz

·三级程序存储器锁定

·128*8位内部RAM

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路

3.1.2管脚说明(如图3.1):

图3.1

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

管口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

   /EA/VPP:

/EA保持低电平时,在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

   XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

   XTAL2:

来自反向振荡器的输出。

  

3.1.3芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE

管脚处于低电平10ms来完成。

在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。

在闲置模式下,CPU停止工作。

但RAM,定时器,计数器,串口和中断系统仍在工作。

在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

3.2键盘

键盘在单片机应用系统中能实现向单片机输入数据,传送命令等功能,是人工干预单片机的主要手段。

3.2.1键盘输入的特点

键盘实质上是一级按键开关的集合。

通常,键盘开关利用了机械触点的合、断作用。

3.2.2按键的确认

键的闭合与否,反映在行线输出电压上就呈现高电平或低电平,如果高电平表示键断开,低电平则表示键闭合,通过对行线电平高低状态的检测,便可确认按键按下与否。

为了确保CPU对一次按键动作只确认一次按键有效,必须消除抖动的影响。

按键输入电路由4*4矩阵键盘组成,P1口作为输入控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列。

3.2.3如何消除按键的抖动

采用软件来消除按键抖动的基本思想是:

在一次检测到有键按下时,该键所对应的行线为低电平,执行一段延时10MS的子程序后,确认该行线电平是不否仍为低电平,如果仍为低电平,则确认为该行确实有键按下。

当按键松开时,行线的低电平变为高电平,执行一段延时10MS的子程序后,检测该行线为高电平,说明按键确实已经松开。

3.4音频输出部分

整个输出部分由一个蜂鸣器/喇叭组成,原理图如右图所示:

用P3.7口控制蜂鸣器。

输出显示电路如图所示:

 

 

3.5整体硬件电路

如图3.5所示:

图3.5音乐盒硬件电路原理图

3.5.1原理说明:

当键盘有键按下时,判断键值,启动计数器T0,产生一定频率的脉冲,驱动蜂鸣器,放出乐曲。

同时启动定时器T1,显示乐曲播放的时间,并驱动LCD,显示歌曲号及播放时间。

1) 硬件电路中用P1.0~P1.7控制按键,其中P1.0~P1.3扫描行,P1.4~P1.7扫描列;

2)用P2.0~P2.2作为LCD的RS、R/W、E的控制信号;

3)用P0.0~P0.7作为LCD的D0~D7的控制信号;

4)用P3.7口控制蜂鸣器;

5)电路为12MHz晶振频率工作,起振电路中C1,C2均为30pf。

 

3.5.2键盘按键

键盘按键分布如下:

0

1

4

8

9

A

B

C

D

 

按键功能说明:

1—A

十首歌曲

C

下一首歌曲

D

上一首歌曲

E

暂停

F

开机画面

 

4系统软件设计

4.1主模块的设计

主模块是系统软件的主框架。

结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。

它的合理与否关系到程序最终的功能的多少和性能的好坏。

本系统的主模块的程序框图如下图6所示:

 

图6

4.2外部中断源系统设计

在本设计中中断源是采用外部中断0方式,其入口地址是0003H。

其中断响应级别最高。

(1)定时器/计数器

工作方式寄存器TMOD用于选择定时器/计数器的工作方式和工作模式。

其格式如下表4.1:

TMOD

D7

D6

D5

D4

D3

D2

D1

D0

GATE

M1

M0

GATE

M1

M0

T1方式字段

T0方式字段

表4.1

下面表4.2对TMOD各位进行说明:

门控位—GATE

工作方式选择位—M1、M0

M1

M0

工作方式

0

0

方式0,为13位定时器/计数器

0

1

方式1,为16位定时器/计数器

1

0

方式2,8位的常数自动重新装载的定时器/计数器

1

1

方式3,仅适用于T0

表4.2

其中,在本设计中采用方式1的16位定时器/计数器。

—计数器模式和定时器模式选择位

=0,为定时器模式。

=1,为计数模式。

定时器/计数器控制寄存器TCON,其格式如下表4.3:

TCON

D7

D6

D5

D4

D3

D2

D1

D0

TF1

TR1

TF0

TR0

IE1

IT1

IE0

ITO

表4.3

其各位的功能如下:

TF1、TF0—计数溢出标志位当计数器溢出时,该位置1。

TR1、TR0—计数运行控制位

4.3基本显示模块设计

基本显示模块设计的重点是由显示代码取得相应的段码,显示段码数据的并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

程序流程如图4.4所示。

图4.4

4.4系统初始化程序

RSBITP2.0;定义液晶显示端口标

RWBITP2.1

EBITP2.2

L50MSEQU60H

L1MSEQU61H

L250MSEQU62H

SECEQU65H

MINEQU64H

HOUEQU63H

ORG0000H

LJMPMAIN

LJMPTT0

ORG001BH

LJMPT1INT

ORG1000H

MAIN:

液晶初始化

MOVSP,#70H

MOVP0,#01H;清屏

CALLENABLE

MOVP0,#38H;8位,2行显示

LCALLENABLE

ORG

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

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2