自动路灯控制器的设计.docx

上传人:b****6 文档编号:16371170 上传时间:2023-07-12 格式:DOCX 页数:31 大小:437.72KB
下载 相关 举报
自动路灯控制器的设计.docx_第1页
第1页 / 共31页
自动路灯控制器的设计.docx_第2页
第2页 / 共31页
自动路灯控制器的设计.docx_第3页
第3页 / 共31页
自动路灯控制器的设计.docx_第4页
第4页 / 共31页
自动路灯控制器的设计.docx_第5页
第5页 / 共31页
自动路灯控制器的设计.docx_第6页
第6页 / 共31页
自动路灯控制器的设计.docx_第7页
第7页 / 共31页
自动路灯控制器的设计.docx_第8页
第8页 / 共31页
自动路灯控制器的设计.docx_第9页
第9页 / 共31页
自动路灯控制器的设计.docx_第10页
第10页 / 共31页
自动路灯控制器的设计.docx_第11页
第11页 / 共31页
自动路灯控制器的设计.docx_第12页
第12页 / 共31页
自动路灯控制器的设计.docx_第13页
第13页 / 共31页
自动路灯控制器的设计.docx_第14页
第14页 / 共31页
自动路灯控制器的设计.docx_第15页
第15页 / 共31页
自动路灯控制器的设计.docx_第16页
第16页 / 共31页
自动路灯控制器的设计.docx_第17页
第17页 / 共31页
自动路灯控制器的设计.docx_第18页
第18页 / 共31页
自动路灯控制器的设计.docx_第19页
第19页 / 共31页
自动路灯控制器的设计.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

自动路灯控制器的设计.docx

《自动路灯控制器的设计.docx》由会员分享,可在线阅读,更多相关《自动路灯控制器的设计.docx(31页珍藏版)》请在冰点文库上搜索。

自动路灯控制器的设计.docx

自动路灯控制器的设计

 

合肥学院

计算机科学与技术系

 

微机原理与接口技术

课程设计

 

课程设计科目

自动路灯控制器的设计

学生姓名

陈超

学号

1304012026

班级

13计科2班

指导教师

高玲玲、何立新

时间

2016.1.10

 

1、题意分析与解决方案

1.1题意需求分析

自动路灯控制器的设计,先在LED数码管上显示时钟初值,包含有“时”、“分”、“秒”(例如07小时59分59秒),时钟按每秒运转动态显示。

当当前显示时间与实际时间不一致时,应具有校时功能,即可以通过矩阵键盘对时钟数值进行设置、修改。

而且可以按设计的时间使LED灯亮和灭。

当前数码管显示时间与所设定的亮灯和灭灯时间相等时,可以使LED灯亮和灭。

所以在本课程设计中,应需要解决的问题有:

(1)如何驱动LED数码管,将时钟该数值显示在数码管上;

(2)如何实现对矩阵键盘的扫描,获取按键值来对不正确的时钟数值的时、

分、秒进行修改;

如何实现当当前数码管显示时间与所设定的亮灯和灭灯时间,驱动LED灯,持续亮灯,亮灯后,继续走时。

1.2解决问题方法及思路

1.2.1硬件部分

本实验中我们要用到的硬件主要是8253、8259、8279、8255、矩阵键盘、LED七段数码管、LED灯。

设计一个时钟,包含有时、分、秒,驱动LED七段数码显示时间。

对于设定的时钟初值如何显示在数码管上,可以利用8279接口芯片来驱动数码管。

8279模块的B端、C端分别接到数码管的段选和位选。

实现时钟走时,可利用8253定时器/计数器来实现时钟按每秒走时。

将8253芯片的OUT0端接到8259的IR0端口,通过8253的电平输出来触发中断,实现每过1s,秒值加1,并更新数码管的显示。

对于时钟数值与要求时钟不一致时,利用矩阵键盘来触发时钟的修改功能。

矩阵键盘的分配如下:

0—9键为数字功能键,相应键值代表所要修改的数值,E键为时钟修改取消键,F键为时钟修改确认键。

按下时钟修改确认键后,进入修改,从时的十位开始到秒的个位逐位修改。

按照亮灯和灭灯时间,驱动LED灯,并用8255来驱动。

8255有A口、B口、C口,用C口的PC口与LED灯连接,若当前时间与设定时间相等时,则将PC1置成低电平,此时LED灯亮。

若不相等,则置PC1为高电平。

1.2.2软件部分

设定时钟初值,将设定的初值存储在缓冲区中,然后按照LED数码管的显示特性和字模表,通过8279模块的B端、C端先送段选,后送位选,以驱动数码管,实现将时钟数值显示在数码管上。

为了简便8253的操作,可以利用8253的定时器/计数器0来定时0.5s,然后定义标志量对0.5的计时个数进行判断,从而达到时钟以1s为单位进行走时,时钟的动态显示。

8253触发8259的中断时,在中断程序中判断秒值是否等于60,若不相等,则继续计时;若相等,则将秒值置0,分值加1,接着判断分值是否等于60,若不等于,则继续走时;若等于,则分值置0,时值加1,最后对时值进行判断。

若时值等于24,则时值置0;若不等于24小时,则继续走时。

8279模块通过A端、D端获取矩阵键盘的状况,对矩阵键盘的按键的状态判断,来确定是否修改时钟。

当按下的键值为F键值时,则进行时钟修改程序。

接着获取相应的数值键,来修改时间。

LED灯亮灭功能中,比较当前钟值与设定的灯亮时间值是否一样,当一样时,对8255的C口的PC口通过控制字使得与其相连的LED灯亮,比较当前钟值与设定的灯灭时间值是否一样,则将PC口的值置高电平,使LED灯灭。

 

2、硬件设计

2.1选择芯片8253

2.1.1芯片8253在本设计中的作用

8253定时器/计数器芯片为本实验提供计时功能,对8253完成控制字的设置、定时初值的写入等初始化后,可以实现定时0.5s,然后利用对0.5s的计数标志量的判断,比较其是否为2,来实现1s为单位的走时效果。

2.1.28253的功能分析

8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,主要由数据总线缓冲器、读/写逻辑、控制字寄存器及3个计数器组成。

8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。

每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。

每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。

每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。

执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。

输出锁存器的值是通过程序设置的。

输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。

8253芯片有6种工作方式:

方式0:

计数结束中断;

方式1:

可编程触发器;

方式2:

频率发生器;

方式3:

方波发生器;

方式4:

软件触发选通信号;

方式5:

硬件触发选通信号。

本实验中,采用的是8253的定时/计数器0,工作在方式2,在计数结束后输出上升沿触发中断。

2.1.38253的技术参数

图2-18253芯片引脚图

D7-D0:

双向三态数据线

CLK0-CLK2:

计数输入,用于输入定时基准脉冲或计数脉冲

GATE0-GATE2:

门控输入,用于启动或禁止计数器的操作,以使计数器和计测对象同步。

低电平禁止工作,为高电平或GATE上升沿出发后,允许计数器工作

OUT0-OUT2:

输出信号,以相应的电平指示计数的完成,或输出脉冲波形

A1、A0:

片内地址寄存器地址输入信号,用于寻找3个计数器和控制字寄存器

#RD、#WR、#CS:

分别为读、写和片选信号,均为低电平有效

表2-1控制功能表

#CS

#RD

#WR

A1

A0

寄存器选择及其操作

0

1

0

0

0

计数器0置计数初值

0

1

0

0

1

计数器1置计数初值

0

1

0

1

0

计数器2置计数初值

0

1

0

1

1

置控制字

0

0

1

0

0

计数器0读出计数值

0

0

1

0

1

计数器1读出计数值

0

0

1

1

0

计数器2读出计数值

0

0

1

1

1

无操作(D7-D0三态)

1

X

X

X

X

禁止(D7-D0三态)

0

1

1

X

X

无操作(D7-D0三态)

2.2选择芯片8255

2.2.1芯片8255在本设计中的作用

本实验中利用8255芯片的A通道来控制LED灯。

2.2.28255的功能分析

8255A采用40脚双列直插式封装单一+5V电源,全部输入/输出均与TTL电平兼容,为可编程通用并行接口芯片。

它有24条可编程的I/O引脚,与Intel系列微处理器完全兼容,直接的位清0或置1功能,简化了接口控制。

8255A是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、B口和C口。

三个端口都可以作为输入端口或输出端口。

8255有三种工作方式。

方式0:

基本输入输出,端口与外设之间无联络信号,只能使用无条件传送方式输入输出数据;方式1:

是选通输入输出方式,PC口用作联络信号;方式2:

双向数据传送方式,仅A口有此功能。

A口有三种工作方式:

即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。

8255A的工作只有当片选CS效时才能进行。

8255A在本设计中起并行传输接口作用,将C口作为输出端口,对PC口进行操作,通过C口向LED灯传输数据,来驱动LED灯工作。

2.2.38255的技术参数

PA7~PA0:

A口数据信号线。

 

PB7~PB0:

B口数据信号线。

 

PC7~PC0:

C口数据信号线。

 

RESET:

复位信号。

当此信号来时,所有寄存器都被清除。

同时三个数据端口被自动置为输入端口。

 

D7~D0:

它们是8255A的数据线和系统总线相连。

 

CS:

片选信号。

在系统中,一般根据全部接口芯片来分配,若低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,8255A被选中。

只有当其有效时,读信号写才对8255A进行读写。

  

RD:

读信号。

当此信号有效时,CPU可从8255A中读取数据。

 WR:

写信号。

当此信号有效时,CPU可向8255A中写入数据。

 

A1、A0:

端口选择信号。

8255A内部有3个数据端口和1个控制端口,共4个端口。

规定:

 

A1、A0为00时,选中A端口; 

A1、A0为01时,选中B端口; 

A1、A0为10时,选中C端口; 

A1、A0为11时,选中控制口。

 

输入最低电压:

min=-0.5V,max=0.8 V 

输入最高电压:

2.0 V 

输出最低电压:

0.45 V 

输出最高电压:

2.4 V

表2-28255A的技术参数

参数名称

符号

测试条件

最大规范值

最小规范值

输入低电平电压

VIL

0.8V

-0.5V

输入高电平电压

VIH

Vcc

2.0V

输入低电平电压

(数据总线)

VOL

IOL=2.5MA

0.45V

输入低电平电压

(外部端口)

VOL

IOL=1.7MA

0.45V

输入高电平电压

(数据总线)

VOH

IOH=-400MA

2.4V

输入高电平电压

(外部端口)

VOH

IOH=-200MA

2.4V

达林顿驱动电流

IDAR

REXT=750

VEXT=1.5V

-0.4MA

1.0MA

电源电流

ICC

120MA

输入负载电流

IIL

I=Vcc—0V

+10MA

-10MA

输出浮动电流

IOFL

Vout=Vcc--0

+10MA

-10MA

8255A主要参数分析:

8255A的达林顿驱动电流最大为4.0mA,当电流超过达林顿驱动电流是芯片就有可能会被损坏,而LED的驱动电流要比它高的多发光,在保证8255A芯片安全的同时又能让LED管显示就会需要外加器件。

2.3选择芯片8259

2.3.1芯片8259在本设计中的作用

本实验中利用8259芯片来实现LED灯的亮灭。

2.3.28259的功能分析

8259A有4个初始化命令字ICW1~ICW4,它们按照一定的顺序送入,用于设置8259A的初始状态。

无论何时,当微处理器向8259A发送一条A0=0和D4=1的命令时,这条命令就译码为ICW1。

A0=0和D4=1是ICW1的标识位!

利用A0=0,D4=1对ICW1寻址。

[1] 

(1)ICW1:

规定8259的连接方式(单片或级联)与中断源请求信号的有效形式(边沿或电平触发)。

命令字格式

ICW1

图2-2ICW1命令字

如图所示,利用A0=0,D4=1寻址。

注意:

D7、D6、D5、D2在8086/8088系统中不用,可为1,也可为0。

它们在8080/8085系统中使用。

(2)ICW2(中断类型码字)

ICW2是设置中断类型码的初始化命令字。

编程时用ICW2设置中断类型码高5位T7~T3,低3位自动插入IR的编码。

ICW2

图2-3ICW2命令字

例如:

写入ICW2的内容为40H,则IR0~IR7对应的8个中断类型号依此为:

40H、41H、….47H,8个中断类型号一定是连号!

ICW2决定了某位中断请求输入线所对应的向量类型码,可以使CPU自动得到相应的中断请求的中断类型号。

(3)ICW3(级连控制字)

ICW3是标志主片/从片的初始化命令字。

(4)ICW4(中断结束方式字)

ICW4为方式控制初始化命令字。

 

2.3.38259的技术参数

 8259A的引线及内部结构 

1、 引脚信号  

8259A引脚信号如下图所示:

 

 

图2-48259A芯片引脚图

 D7~D0:

双向、三态数据线,与系统数据总线相连。

对8259A编程时,命令字由此写

入;在第二个中断响应总线周期中,中断类型码由此传给CPU。

  RD :

读信号,输入,与系统控制总线IOR 相连。

RD =0时,CPU对8259A进行读操作。

 

WR :

写信号,输入,与系统控制总线IOW 相连。

当WR =0时,CPU对8259A进行写操作。

 

 A0:

片内寄存器寻址信号,输入,用于对片内寄存器端口寻址。

每片8259A有两个寄

存器端口,A0=0时,选中偶地址端口,A0=1时,选中奇地址端口。

在与8088系统相连时,可将该引脚与地址总线的A0连接;与8086系统连接时,可将该引脚与地址总线的A1连接。

  CS :

片选信号,输入。

CS =0时,8259A被选中。

在与8088系统相连时,系统地址信号A15~A1经译码器译码后为8259A产生片选信号。

 

SP /EN :

双功能双向信号。

当8259A工作在缓冲模式时,它作为输出,用于控制缓冲器的传送方向。

当数据从CPU送往8259A时,SP /EN 输出为高电平;当数据从8259A送往CPU时,SP /EN 输出为低电平。

当8259A工作在非缓冲模式时,它作为输入,用于指定8259A是主片还是从片(级联方式)。

SP /EN =1的8259A为主片,SP /EN =0的8259A为从片。

 

 INT:

中断请求信号,输出,与CPU的中断请求信号线INT相连。

在级联方式下,从片的INT与主片的IR7~IR0中的某一根连接在一起。

  

INTA :

中断响应信号,输入,与CPU的中断响应信号线INTA 相连。

 

 CAS2~CAS0:

级联控制线,主片的CAS2~CAS0与从片的CAS2~CAS0对应相连。

对于主片,CAS2~CAS0为输出信号;对于从片,CAS2~CAS0为输入信号。

当从片发起的中断请求被响应时,主片通过CAS2~CAS0送出相应的编码给从片,告诉从片该中断请求被允许。

 

 IR7~IR0:

中断请求输入信号,由外设输入。

上升沿(边沿触发方式)或高电平(电平触发方式)表示有中断请求到达。

  VCC:

+5V电源输入信号。

     

GND:

电源地

2.4选择芯片8279

2.4.11、可编程并行接口芯片8279

1)8279的作用

在本设计中用8279芯片控制键盘输入和LED显示。

2)8279的功能分析

8279芯片是一种通用的可编程序的键盘/显示接口器件,单个芯片就能完成键盘输入和LED显示控制两种功能。

可与任何8位机接口。

8279A芯片包括键盘输入和显示输出两个部分。

若采用8279作为键盘/显示器接口,则可以实现对键盘、显示器自动扫描,8279主要是管理键盘输入和显示器输出的。

8279可编程键盘显示器接口芯片具有动态显示驱动电路简单、不占用CPU的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点.当今已成为设计计算机应用系统,特别是实时性较高的测控系统的首选器件之一。

图2-58279的内部框图

图中,IRQ:

中断请求输出线,DB0~DB7:

双向数据总路线(传送命令、数据、状态),

读写控制输入端,RESET:

复位输入端,CLK:

时钟输入端,

片选,C和/D(A0):

片内寄存器选址,OUTA0~A3、OUTB0~B3:

8位显示输出端,

熄灭显示输出端,SL0~SL3:

公用扫描输出线,RL0~RL7:

键盘回馈输入线,SHIFT:

抵挡键输入线,CNTL/STB:

控制/选通输入线。

另外,8279的键盘接口部分内部有一个8×8位先进先出的堆栈(FIFO),用来存放键盘输入代码,显示器接口部分内部有一个16×8位显示RAM,用来显示段数据,能为16位LED显示器(或其它显示器)提供多路扫描接口。

3)8279的引脚信号和功能

8279可编程键盘显示器接口芯片具有动态显示驱动电路,不占用CPU的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点。

8279A是可编程的键盘/显示接口芯片。

它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。

8279A内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8×8=64BRAM,键盘控制部分可控制8×8=64个按键或8×8阵列方式的传感器。

该芯片能自动消抖并具有双键锁定保护功能。

显示RAM容量为16×8,即显示器最大配置可达16位LED数码显示。

4)8279的命令字及其格式

8279三种工作方式:

键盘工作方式、显示工作方式和传感器工作方式。

键盘工作方式:

双键互锁和N键轮回。

双键互锁是指当有两个以上按键同时按下时,只能识别最后一个被释放的按键,并把其键值送入内部FIFORAM中。

N键轮回是指当有多个按键同时按下时,所有按键的键值均可按扫描顺序依次存入FIFORAM中。

显示工作方式:

是指CPU输入至8279内部FIFORAM的数据的输出格式,有8个字符左端入口显示、16个字符左端入口显示、8个字符右端入口显示、16个字符右端入口显示四种方式。

传感器方式:

是指扫描传感器阵列时,一旦发现传感器的状态发生变化就置位INT向CPU申请中断。

选择不同的工作方式均是通过CPU对8279送入命令来进行控制。

8279共有8种命令,命令寄存器为8位,其中D7~D5为命令特征位,D4~D0为命令的控制位。

CPU对8279写入的命令数据为命令字,读出的数据为状态字。

8279共有八条命令,其功能及命令字格式分述如下。

(1)键盘/显示方式设置命令字

命令格式:

D7D6D5D4D3D2D1D0

0

0

0

D

D

K

K

K

其中:

D7、D6、D5=000为方式设置命令特征位。

DD(D4、D3):

用来设定显示方式,如表1-2所示。

表2-3显示方式选择

D4

D3

显示方式

0

0

8个字符显示,左端入口

0

1

16个字符显示,左端入口

1

0

8个字符显示,右端入口

1

0

16个字符显示,右入口

所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列;所谓右入口,则是显示位置从最右一位(最低位)开始,以后逐次输入显示字符时,已有的显示字符依次向左移动。

KKK(D2、D1、D0):

用来设定七种键盘/显示扫描方式,如表2-4所示。

 

表2-4键盘/显示扫描方式

D2

D1

D0

键盘/显示扫描方式

0

0

0

编码扫描键盘,双键锁定

0

0

1

译码扫描键盘,双键锁定

0

1

0

编码扫描键盘,N键轮回

0

1

1

译码扫描键盘,N键轮回

1

0

0

编码扫描传感器矩阵

1

0

1

译码扫描传感器矩阵

1

1

0

选通输入,编码显示扫描

1

1

1

选通输入,译码显示扫描

(2)时钟编程命令

命令格式:

D7D6D5D4D3D2D1D0

0

0

1

P

P

P

P

P

其中:

D7、D6、D5=001为时钟命令特征位。

PPPPP(D4、D3、D2、D1、D0)用来设定外部输入CLK时钟脉冲的分频系数N。

N取值范围为2~31。

如CLK输入时钟频率为2MHZ,PPPPP应被置为10100(N=20),才可获得8279内部要求的100KHZ的时钟频率。

(3)读FIFO/传感器RAM命令

命令格式:

D7D6D5D4D3D2D1D0

0

1

0

AI

X

A

A

A

其中:

D7、D6、D5=010为读FIFO/传感器RAM命令特征位。

该命令字只在传感器方式时使用。

在CPU读传感器RAM之前,必须用这条命令来设定所读传感器RAM中的地址。

AAA(D2、D1、D0)为传感器RAM中的八个字节地址。

AI(D4)为自动增量特征位。

当AI=1时,每次读出传感器RAM后地址自动加1使地址指向下一个存储单元。

这样,下一个数据便从下一个地址读出,而不必重新设置读FIFO/传感器RAM命令。

在键盘工作方式中,由于读出操作严格按照先入先出顺序,因此,不需使用这条命令。

(4)读显示RAM命令

命令格式:

D7D6D5D4D3D2D1D0

0

1

1

AI

A

A

A

A

其中:

D7、D6、D5=011为读显示RAM命令字的特征位。

该命令字用来设定将要读出的显示RAM地址。

AAAA(D3、D2、D1、D0)用来寻址显示RAM中的存储单元。

由于位显示RAM中有16个字节单元,故需要4位寻址。

AI(D4)为自动增量特征位。

AI=1时,每次读出后地址自动加1,指向下一地址。

(5)写显示RAM命令

命令格式:

D7D6D5D4D3D2D1D0

1

0

0

AI

A

A

A

A

其中:

D7、D6、D5=100为写显示RAM命令字的特征位。

在写显示RAM之前用这个命令字来设定将要写入的显示RAM地址。

AAAA(D3、D2、D1、D0)为将要写入的显示RAM中的存储单元地址。

AI(D4)为自动增量特征位。

AI=1时,每次写入后地址自动加1,指向下一次写入地址。

(6)显示禁止写入/消隐命令

命令格式:

D7D6D5D4D3D2D1D0

1

0

1

X

IW/A

IW/B

BL/A

BL/B

其中:

D7、D6、D5=101为显示禁止写入/消隐命令特征位。

IW/A、IW/B(D3、D2)为A、B组显示RAM写入屏蔽位。

当A组的屏蔽位D3=1时,A组的显示RAM禁止写入。

因此,从CPU写入显示器RAM数据时,不会影响A的显示。

这种情况通常在采用双4位显示器时使用。

因为两个四位显示器是相互独立的。

为了给其中一个四位显示器输入数据而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。

BL/A、BL/B(D1、D0)为消隐设置位。

用于对两组显示输出消隐。

若BL=1,对应组的显示输出被消隐。

当BL=0,则恢复显示。

(7)清除命令

命令格式:

D7D6D5D4D3D2D1D0

1

1

0

CD

CD

CD

CF

CA

其中:

D7、D6、D5=110为清除命令特征位。

表2-5显示RAM清除方式

D4

D3

D2

清除方式

1

0

×

将全部显示RAM清为00H

1

1

0

将全部显示RAM置为20H,A组输出0010,B组输出0000

1

1

1

将全部显示RAM置为FFH

0

×

×

D0=0不清除,D0=1按上述方法清除

CF(D1)用来置空FIFO存储器,当CF=1时,执行清除命令后,FIFORAM被置空,使INT输出线复位。

同时,传感器RAM的读出地址也被置为0。

CA(D0)为总清的特征位。

它兼有CD和CF的联合效能。

在CF=1时,对显示的清除方式由D3、D2的编码决定。

显示RAM清除时间约需160us。

在此期间状态字的最高位D7=1,表示显示无效。

CPU不能向显示RAM写入数据。

(8)结束中断/错误方式设置命令

命令格式:

D7D6D5D4D3D2D1D0

1

1

1

E

X

X

X

X

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

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

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

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