西安电子科技大学通信工程学院课程设计_第1页
西安电子科技大学通信工程学院课程设计_第2页
西安电子科技大学通信工程学院课程设计_第3页
西安电子科技大学通信工程学院课程设计_第4页
西安电子科技大学通信工程学院课程设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计实验报告010812#跳舞机设计一.设计目的:掌握矩阵键盘和显示接口的硬件设计方法掌握键盘扫描程序和显示程序的编程方法实用程序设计及学习DOS、BIOS调用1.基本功能设计:至少设计4个数码管和4个按键数码管显示的舞蹈动作是随机的可以统计游戏者的分数2.扩展功能:电脑和实验版上可以加一些声光电的效果3.创新功能:, 作为正常,当作反向应用,即。二.系统方案:设计思路如下:产生4个随机数,将随机数和方向对应。将随机方向显示在数码管上,从按键获得方向输入,比较两方向的值。时间结束将统计到的正确值转换成评分,输出评分等级。程序分为以下几大部分:主程序,RDNUM,DISPLAY,SCANNU

2、M1,CMPNUM。其中RDNUM 调用系统时间规范化产生随机数,载入BUF,;DISPLAY则将BUF1的数值在TABEL2查询获得数码管值,并将内容显示出来;SCANNUM1循环调用DISPLAY以维持在扫描键值期间的数码管显示,同时监控按键获得键值,查询TABE1将键值转换为数值,超时则记为-1;CMPNUM调整键值和随机数,将他们的对应域统一,形成映射,比较二者的值;主程序通过循环调用SCANNUM1持续监控按键直到超时,4次调用CMPNUM,统计正确数,最后对结果评分等级NICE,GOOD,PASS,FAIL,调用DISPLAY显示评分。1.主程序:MOV AX,DATAMOV DS

3、,AX ;数据段段址送DS。MOV AX,STACKMOV SS,AX ;堆栈段段址送SS。MOV SP,OFFSET TOP ;获取堆栈指针。MOV DX,0EE03H ;DX指向8255的D口。MOV AL,10001001B ;工作方式状态控制字,表示方式0,端口C输出。OUT DX,AL ;完成8255初始化。STEP1:CALL FAR PTR RDNUM ;调用RDNUM生成随机数,存储于BUF。LEA DI,BUF ;DI传递当前正在比较的随机数。MOV CX,4 STEP2:CALL FAR PTR SCANNUM1 ;扫描键值,返回值star t初始化8255产生随机数,存入

4、缓存扫描键盘,将扫描到的键值存入缓存,超时则标记-1比较随机数和键值统计正确值数码管显示评分等级end存于BL。CALL FAR PTR CMPNUM ;比较数值。INC DI ;读取下一个随机数。LOOP STEP2;循环四次逐个键值扫描,比较。STEP3: ;将成绩转换对应评分。MOV AX,RESULTCMP AL,4JE NICECMP AL,3JE GOODCMP AL,2JE PASSFAIL: ;成绩小于2输出FAIL。MOV AH,0FHMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,1HMOV BUF2,AHMOV BUF3,AHJMP STEP

5、4PASS: ;成绩为2输出PASS。MOV AH,21HMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,5HMOV BUF2,AHMOV BUF3,AHJMP STEP4GOOD: ;成绩为3输出GOOD。MOV AH,6HMOV BUF0,AHMOV AH,22HMOV BUF1,AHMOV BUF2,AHMOV AH,0HMOV BUF3,AHJMP STEP4NICE: ;成绩为4输出NICE。MOV AH,10HMOV BUF0,AHMOV AH,1HMOV BUF1,AHMOV AH,0CHMOV BUF2,AHMOV AH,0EHMOV BUF3,A

6、HJMP STEP4STEP4:MOV CX,9000STP5:CALL FAR PTR DISPLAY ;显示评分。LOOP STP5 ;闪烁维持评分显示。MOV AH,4CHINT 21HCODE1 SEGMENTASSUME CS:CODE1RDNUM PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DI ;寄存器保护。DO1:MOV AH,2CH ;2CH号功能调用,取系统时间:DL存放毫秒INT 21HMOV AL,DL ;将毫秒值除以5,调整随机偏移量的取值在0-4之间。MOV AH,0MOV BL,5DIV BL ;AH是一个0-4的随机数去查询

7、伪随机表。RDNU MRET获取系统时间产生随机数随机数查表获得伪随机序列序列依次载入B UFLEA DI,TABLE3RDSCAN:MOV AL,DI ;将随机表内容放入AL。INC DIINC DI ;指向转换表下一个查找字节。CMP AL,AH ;比较AL,AH。JNZ RDSCAN ;不等则继续查找。MOV AL,DI-1 ;相等则开始查表对BUF赋值。MOV BUF0,ALMOV AL,DI+1MOV BUF1,AL MOV AL,SI+3 MOV BUF2,AL MOV AL,SI+5 MOV BUF3,ALPOP DIPOP DXPOP CXPOP BXPOP AXRET ;返回

8、。RDNUM ENDP CODE1 ENDSCODE2 SEGMENTASSUME CS:CODE2DISPLA Y PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIPUSH SI ;寄存器保护。MOV CX,4 ;循环显示4个数码管。LEA DI, BUF ;DI指向输入的数据。MOV AH,00001000B ;由左至右显示。DO2:MOV BL,DI ;将输入数据放入BL。LEA SI,TABLE2 ;SI指向由BUF到LED数码管的转换表。MOV DX,0EE00H ;DX指向A口地址。MOV AL,0FFH ;显示为空。OUT DX,AL ;将A

9、L内容显示。DO3:MOV BH,SI ;将转换表内容放入BH。MOV DH,0FFHINC SIINC SI ;指向转换表下一个查找字节。CMP BL,BH ;比较BL,BH。JNZ DO3 ;在转换表中查找对应值。MOV DX,0EE01H ;将DX指向B口。MOV AL,AH ;给AL赋值(应显示那个数码管。OUT DX,AL ;控制哪个管显示。MOV DX,0EE00H ;将DX指向A口。MOV AL,SI-1 ;查找到的数码管值写入AL。OUT DX,ALDELAY: ;维持显示,使数码管数据显示清晰。PUSH CXPUSH AXMOV AX,200REP1: ;用两个循环来控制时延

10、。MOV CX,1000REP2:CX=4随机数查表转换8255输出待显值时延,维持显示更新待显值和数码管CX=0?RETCX-1DISP LAYLOOP REP2DEC AXCMP AX,0JNZ REP1;AX不为0继续循环。POP AXPOP CXROR AH,1 ;循环左移。INC DI ;更换下一个显示数据。LOOP DO2 ;POP SIPOP DIPOP DXPOP CXPOP BXPOP AXRETDISPLA Y ENDP CODE2 ENDSCODE3 SEGMENTASSUME CS:CODE3SCANNUM1 PROC FARPUSH AXPUSH CXPUSH DXP

11、USH DIPUSH SI ;寄存器保护,将BX作为参数传递的方式,不压栈。MOV CX,SCANNUM ;控制扫描循环次数。SCANLOOP1:CALL FAR PTR DISPLAY ;调用DISPLAY 显示。MOV AL,00001111BMOV DX,0EE05HAND AL,LEDOUT DX,AL ;74L374口高位置零。MOV DX,0EE02H ;控制C口。IN AL,DX ;将C口内容读到AL。AND AL,00001111B;取出AL低四位。CMP AL,00001111B ;判断是否有键按下(无键按下时为全1。JE SCANLOOP3 ;无键值时跳转。MOV AH,1

12、1101111B ;扫描第一行。SCANLOOP2:MOV AL,AH ;有键按下则开始扫描。MOV DX,0EE05HOUT DX,ALMOV DX,0EE02HIN AL,DXAND AL,00001111B;取出AL低四位。CMP AL,00001111B ;判断是否有键按下(无键按下时为全1。JNE SCANLOOP4 ;有则译键码。ROL AH,1 ;AH左移读取下一行。CMP AH,11111110B ;循环四次,各行扫完结束?JNZ SCANLOOP2 ;没有则进行下一次扫描。SCANLOOP3:LOOP SCANLOOP1MOV BL,0FFH ;超时标记。JMP SCANLO

13、OP7 ;循环结束,跳出扫描。SCANLOOP4: ;键值查表。SCAN调用DISPLAY,显示行输出全0列输入值=1111?行输出初值AH=1110 1111行输出 AH列输入值=1111?AH左环移4行扫描完否?NNYNY调用DISPLAY,消抖读入列值列输入值=1111?调用DISPLAY,消抖获得键值将键值译码放入BLDECXYRETCX=0?BL=-1Y(CX-1CXNNAND AH,0F0H ;AH带有行号特征, AND后行特征位为0。MOV BL,ALOR BL,AH ;行列OR获得键值。MOV DI,OFFSET TABLE1 ;获取键值对应表的地址。SCANLOOP5: ;键

14、值和随机数映射。MOV BH,DIINC DIINC DICMP BL,BH ;键值和查表比较。JNZ SCANLOOP5MOV BL,DI-1 ;查到值放入BL。SCANLOOP6:CALL FAR PTR DISPLAY ;调用显示。IN AL,DXAND AL,00001111BCMP AL,00001111B ;判断按键是否松开。JNE SCANLOOP6 ;没有继续监听。SCANLOOP7:CALL FAR PTR DISPLAY ;消抖。POP SIPOP DIPOP DXPOP CXPOP AXRETSCANNUM1 ENDPCODE3 ENDSCODE4 SEGMENTASSU

15、ME CS:CODE4CMPNUM PROC FARPUSH CXPUSH DXPUSH SI ;寄存器压栈保护。MOV BH,DI ;BH装载随机数,BL装载键值。CHANGE1: ;键值映射范围调整。PUSH BXPUSH AXMOV AL,BLMOV AH,0 ;数值载入AX。MOV BL,4 ;除以4。DIV BLMOV DL,AH ;余数载入DL。POP AXPOP BXCHANGE2: ;随机数映射范围调整。PUSH BXPUSH AXMOV AL,BHSUB AL,10H ;将之前加上的10H减除。MOV AH,0 ;数值载入AX。MOV BL,4 ;除以4。DIV BLMOV

16、DH,AH ;余数载入DH。POP AXPOP BXCMP DL,DHJNZ WRONG1 ;不等则报错。MOV CX,RESULTINC CXMOV RESULT,CX ;正确则计数。JMP END1WRONG1:MOV DL,07H ;按键出错后主板上的蜂鸣器报警。MOV AH,02H ;调用系统报错。CMPN UMBX载入随机数和键值取余将值与四方向对应比较随机数与键值报错相等?成绩加1RET INT 21H END1: POP SI POP DXPOP CX RETCMPNUM ENDP CODE4 ENDS8255硬件原理及电路原理图 一 与CPU 连接部分8255能并行传送8位数据

17、,所以其数据线为8根D0D7。由于8255具有3个通道A 、B 、C ,所以只要两根地址线就能寻址A 、B 、C 口及控制寄存器,故地址线为两根A0A1。此外CPU 要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下:(1数据总线DB :编号为D0D7,用于8255与CPU 传送8位数据。(2地址总线AB :编号为A0A1,用于选择A 、B 、C 口与控制寄存器。(3控制总线CB :片选信号、复位信号RST 、写信号、读信号。当CPU 要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的

18、操作。二 与外设接口部分根据定义,8255有3个通道A 、B 、C 与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。各通道的引脚编号如下:(1A 口:编号为PA0PA7,用于8255向外设输入输出8位并行数据。 (2B 口:编号为PB0PB7,用于8255向外设输入输出8位并行数据。(3C 口:编号为PC0PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O 方式时,C 口用于应答信号的通信。三 控制器8255将3个通道分为两组,即PA0PA7与PC4PC7组成A 组,PB0PB7与PC0P

19、C3组成B 组。如图7.5所示,相应的控制器也分为A 组控制器与B 组控制器,各组控制器的作用如下:(1A 组控制器:控制A 口与上C 口的输入与输出。 (2B 组控制器:控制B 口与下C 口的输入与输出。当向A1=1,A0=1的端口寄存器(即控制寄存器发送D7=1的控制字时,其作用为方式控制字,各个位的含义如图所示 74LS374硬件原理及电路原理图74LS374的管脚图如图:74LS374作为八上升沿D 触发器,主要端口的含义: D0D7 数据输入端OE 三态允许控制端(低电平有效 CP 时钟输入端 O0-O7 输出端 电路接线如下:8255AP A 4P A 5P A 6P A 7P B

20、 7P B 6P B 5P B 4P B 3P A 3P A 2P A 1P A 0P C 7P C 6P C 5P C 4P C 3P C 2P C 1P C 0P B 0P B 1P B 2+5V 123456789def g DpC O M5a f bg C O MDpc d e 74LS374D 7D 6D 5D 4D 0D 1D 2D 3COM 4COMCOM 3COMCOM 2COMCOM 1COM COM 0COMP C 2P C 3P C 1P C 0D 4D 5D 6D 7ab c d e f gD pC O M 0C O M 1C O M 2C O M 3C O M 4C

21、O M 5三.其它技术要点LED 数码显示器扩展:字型和字型码对应:0,0C0H,01H,0F9H,05H,92H,06H,82H,0AH,88H,0CH,0C6H,0DH,0A1H,0EH,86H,0FH,84H,21H,8CH,22H,0A3H,10H,0C8H,11H,0F0H,12H,0C1H,13H,0C6H,14H,0F7H,15H,0CFH,16H,0FEH,17H,0F9H 。其中21H,22H 代表P 和O 。10H-17H表示,。 动态显示原理:建立显示缓冲区BUF:存放字形代码,由运算程序写入BUF 显示子程序DISPLAY 动态扫描显示: 关显示器:位选信号无效(全0

22、送字形代码 送位选信号当前位亮2ms 左右 重复亮下一位 显示子程序DISPLAY:调用一次扫描6位,约12ms 每秒调用24次左右 DISPLAY 可用作延时矩阵键盘的扩展:键盘采用行输入列输出的方式进行控制,输出不同的数值,让不同的行生效,通过列输入判断列数值,把输出数据和输入数据组合起来计算键值。完成按键的确认。 行输出值 列输入值 1110 1111 无键按下 1110 0 1101 1 1011 2 0111 3 1101 1111 无键按下 1110 41101 5 1011 6 0111 7 1011 键值转换:采用查询方式获得键值,建立了TABLE1存储对应键值和特征值:TAB

23、LE1 DB 11101110B,0,11101101B,01H,11101011B,02H,.键盘的消除抖动处理:当按键被按下时会引起抖动,抖动时间不超过15ms 。 ab cdef g DpCOM a f bg COM Dpc d e 引脚图.COMa b c d e f gDp.共阳极按键按下前沿抖动后沿抖动处理的方法是:(1当某按键被按下后,调用DISPLAY子程序,前沿消抖(2识别按键是否抬起(3按键抬起时也应消除抖动随机序列生成:系统调用产生随机时间值,在循环调用时数值有很大的相关性,随机性得不到保证。采用伪随机码列表查询的方式由随机时间值查询序列获得随机序列,保证了随机值的不重复

24、性。四.心得体会:通过本次设计,我们复习了微机原理与接口技术的相关知识,熟悉了8255, 74LS374的相关技术,加深了对于汇编的理解和运用,掌握矩阵键盘和显示接口的硬件的设计方法,掌握键盘扫描程序和显示程序的编程方法,无论是软件还是硬件的相关方面,都有所收获。由于设计的工作量比较大,代码较长,使得我们形成了工作规划的习惯与分治策略:将每个小功能模块独立以便于维护和可读性,同时还加深了团队协作能力和沟通技巧。实践出真知。我们虽然学习过微机原理与接口技术,但是时间久远,有点陌生了。通过本次设计,自己查询资料,自己写代码并维护,一个小小的失误都导致运行出错,由此每一个程序的错误都记忆深刻,在设计

25、过程中必须万分谨慎,牢记每个知识点,这比书本上告诉我们的要来的高效得多。最后,感谢在本次设计帮助过我们的老师,同学。补充:完整代码DA TA SEGMENTBUF DB 4 DUP(0 ;存储随机数。TABLE1 DB11101110B,0,11101101B,01H,11101011B,02H,11100111B,03H,11011110B,04H,11011101B,05H,11011011B,06H, 11010111B,07HDB10111110B,08H,10111101B,09H,10111011B,0AH,10110111B,0BH,01111110B,0CH,01111101B

26、,0DH,01111011B, 0EH,01110111B,0FH ;键值对应表。TABLE2 DB 0,0C0H,01H,0F9H,05H,92H,06H,82H,0AH,88H,0CH,0C6H,0DH,0A1H,0EH,86H,0FH,8EHDB21H,8CH,22H,0A3H,10H,0C8H,11H,0F0H,12H,0C1H,13H,0C6H,14H,0F7H,15H,0CFH,16H,0FEH,17H,0 F9H ;键值对应显示表。TABLE3 DB 0,17H,1,11H,2,13H,3,15H,4,10H,5,12H,6,14H,7,16H ;定义伪随机表SCANNUM DW

27、 9000 ;定义扫描次数。RESULT DW 0 ;定义成绩。LED DB 11111010BDA TA ENDSSTACK SEGMENT STACKDW 256 DUP(? ;定义堆栈,预留256个单元。TOP LABEL WORD ;标记栈顶。STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AX ;数据段段址送DS。MOV SS,AX ;堆栈段段址送SS。MOV SP,OFFSET TOP ;获取堆栈指针。MOV DX,0EE03H ;DX指向8255的D口。MOV AL,1000

28、1001B ;工作方式状态控制字,表示方式0,端口C输出。OUT DX,AL ;完成8255初始化。STEP1:CALL FAR PTR RDNUM ;调用RDNUM生成随机数,存储于BUF。LEA DI,BUF ;DI传递当前正在比较的随机数。MOV CX,4STEP2:CALL FAR PTR SCANNUM1 ;扫描键值,返回值存于BL。CALL FAR PTR CMPNUM ;比较数值。INC DI ;读取下一个随机数。LOOP STEP2;循环四次逐个键值扫描,比较。STEP3: ;将成绩转换对应评分。MOV AX,RESULTCMP AL,4JE NICECMP AL,3JE GO

29、ODCMP AL,2JE PASSFAIL: ;成绩小于2输出FAIL。MOV AH,0FHMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,1HMOV BUF2,AHMOV BUF3,AHJMP STEP4PASS: ;成绩为2输出PASS。MOV AH,21HMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,5HMOV BUF2,AHMOV BUF3,AHJMP STEP4GOOD: ;成绩为3输出GOOD。MOV AH,6HMOV BUF0,AHMOV AH,22HMOV BUF1,AHMOV BUF2,AHMOV AH,0HMOV

30、 BUF3,AHJMP STEP4NICE: ;成绩为4输出NICE。MOV AH,10HMOV BUF0,AHMOV AH,1HMOV BUF1,AHMOV AH,0CHMOV BUF2,AHMOV AH,0EHMOV BUF3,AHJMP STEP4STEP4:STP5:CALL FAR PTR DISPLAY ;显示评分。LOOP STP5 ;闪烁维持评分显示。MOV AH,4CHINT 21HCODE ENDSCODE1 SEGMENTASSUME CS:CODE1RDNUM PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DI ;寄存器保护。DO1:

31、MOV AH,2CH ;2CH号功能调用,取系统时间:DL存放毫秒INT 21HMOV AL,DL ;将毫秒值除以5,调整随机偏移量的取值在0-4之间。MOV AH,0MOV BL,5DIV BL ;AH是一个0-4的随机数去查询伪随机表。LEA DI,TABLE3RDSCAN:MOV AL,DI ;将随机表内容放入AL。INC DIINC DI ;指向转换表下一个查找字节。CMP AL,AH ;比较AL,AH。JNZ RDSCAN ;不等则继续查找。MOV AL,DI-1 ;相等则开始查表对BUF赋值。MOV BUF0,ALMOV AL,DI+1MOV BUF1,ALMOV AL,DI+3M

32、OV BUF2,ALMOV AL,DI+5MOV BUF3,ALPOP DIPOP DXPOP CXPOP BXPOP AXRET ;返回。RDNUM ENDPCODE1 ENDSCODE2 SEGMENTASSUME CS:CODE2DISPLA Y PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIPUSH SI ;寄存器保护。MOV CX,4 ;循环显示4个数码管。LEA DI, BUF ;DI指向输入的数据。MOV AH,00001000B ;(共阳管由左至右显示。DO2:MOV BL,DI ;将输入数据放入BL。LEA SI,TABLE2 ;SI指

33、向由BUF到LED数码管的转换表。MOV DX,0EE00H ;DX指向A口地址。MOV AL,0FFH ;显示为空。OUT DX,AL ;将AL内容显示。DO3:MOV BH,SI ;将转换表内容(每相邻两个字节的第一字节放入BH。MOV DH,0FFHINC SIINC SI ;指向转换表下一个查找字节。CMP BL,BH ;比较BL,BH。JNZ DO3 ;在转换表中查找对应值。MOV DX,0EE01H ;将DX指向B口。MOV AL,AH ;给AL赋值(应显示那个数码管。OUT DX,AL ;控制哪个管显示。MOV DX,0EE00H ;将DX指向A口。MOV AL,SI-1 ;查找

34、到的数码管值写入AL。OUT DX,ALDELAY: ;维持显示,使数码管数据显示清晰。PUSH CXPUSH AXMOV AX,200REP1: ;用两个循环来控制时延。MOV CX,1000REP2:LOOP REP2DEC AXCMP AX,0JNZ REP1;AX不为0继续循环。POP AXPOP CXROR AH,1 ;循环左移。INC DI ;更换下一个显示数据。LOOP DO2 ;POP SIPOP DIPOP DXPOP CXPOP BXPOP AXRETDISPLA Y ENDPCODE2 ENDSCODE3 SEGMENTASSUME CS:CODE3SCANNUM1 PR

35、OC FARPUSH AXPUSH CXPUSH DXPUSH DIPUSH SI ;寄存器保护,将BX作为参数传递的方式,不压栈。MOV CX,SCANNUM ;控制扫描循环次数。SCANLOOP1:CALL FAR PTR DISPLAY ;调用DISPLAY显示随机数。MOV AL,00001111BMOV DX,0EE05HAND AL,LEDOUT DX,AL ;74L374口高位置零。MOV DX,0EE02H ;控制C口。IN AL,DX ;将C口内容读到AL。AND AL,00001111B;取出AL低四位。CMP AL,00001111B ;判断是否有键按下(无键按下时为全1。JE SCANLOOP3 ;无键值时跳转。MOV AH,11101111B ;扫描第一行。SCANLOOP2:MOV AL,AH ;有键按下则开始扫描。MOV DX,0EE05HOUT DX,ALMOV DX,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论