红外遥控器解码程序_第1页
红外遥控器解码程序_第2页
红外遥控器解码程序_第3页
红外遥控器解码程序_第4页
红外遥控器解码程序_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。1红外遥控系统通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。2遥控发射器及其编码遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们

2、以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示。UPD6121G产生的

3、遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms之间,图4为发射波形图。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms18ms),高

4、8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据的反码(9ms18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。代码格式(以接收代码为准,接收代码与发射代码反向)位定义单发代码格式连发代码格式注:代码宽度算法:16位地址码的最短宽度:1.1216=18ms16位地址码的最长宽度:2.24ms16=36ms易知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms)8=27ms32位代码的宽度为(18ms+27ms)(36ms+27ms)1解码的关键是如何识别“0”和“1”,从位的定

5、义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。2根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。如果邮购我们开发的51单片机试验板和

6、扩展元件的网友,可以获得如上图所示的红外遥控手柄,这种遥控器的编码格式符合上面的描述规律,而且价格低廉,有32个按键,按键外形比较统一,如果用于批量开发,可以把遥控器上贴膜换成你需要的字符,这为开发产品提供了便利。接收器及解码一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。下面是一个对51实验板配套的红外线遥控器的解码程序,它可以把上图32键的红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能

7、发出“嘀嘀嘀”的提示音。红外遥控器软件解码原理及程序红外一开始发送一段13.5ms的引导码,引导码由9ms的高电平和4.5ms的低电平组成,跟着引导码是系统码,系统反码,按键码,按键反码,如果按着键不放,则遥控器则发送一段重复码,重复码由9ms的高电平,2.25ms的低电平,跟着是一个短脉冲红外遥控解码实验一 实验目的1. 了解红外遥控编码并用单片机捕捉信号及解码2. 熟悉LCD1602的驱动二.红外遥控器编码遥控器编码分好几种,常见的32位编码码和42位编码码,目前我手中遥控器就是42位编码,如图1所示,当有按键时就会产一个9.12ms低电平和4.5ms高电平的起始码,紧接着是26位系统码,

8、此系统码能区别不同的电器设备,防止不同机种遥控码互相干扰,接下来是8位数据码和8位数据反码,间隔23ms的高电平后,再发一个与启始码完全一样的结束码 本文来自电子工程师之家:/read.php?tid=5893 以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。 图2 再回头看图1,大家不难看出,图1是遥控器按键1的一串编码三 硬件连接接收电咱我们使用一化红外接红外接收管1838,不需要任何外接无件,就能完成从红外

9、线接收到输出与TTL电平信号兼容的所有工作,实物如图所示 电路图如下: 四 解码以上我们了解了红外遥控的编码及硬件连接,现在就对其进行解码,所谓解码就是能用单片机把以不同宽度的脉冲区别开来,一种比较好思路就是计算两次下降沿间隔时间,当单片机外部中断1口有下降沿时中断一次,并启动定时器,定时器定50us,当下次下降沿到来时我们计算定时器中断的次数,这样我们就能很好的区分不同宽度的脉冲了。大家可能已经迫不急待的要开始解码了,别急,我们先把注意事项先讲一下,实际上,我们红外接收头收到的信号的是有毛刺的,放大后就如下图,所以在下降沿中断触发后,要做延时去抖处理 *以下是完整解码程序*/*项目: 红外遥

10、控解码(EE01学习板演示程序)*作者:一线工人*网站:电子工程师之家 *本程序适合42位码遥控器,即26位系统码,16位数据码,如:57L5,55K2,54B4,KD-29,55K8,5Z26A,等型号的遥控器,转贴请保持代码的完整性*/#include#define uint unsigned int#define uchar unsigned charsbit ir=P33;/红外端口sbit dm=P14;/数码管段码控制位sbit wm=P15;/数码管位码控制位sbit led_cs=P16;/LED控制位sbit rs=P35;/1602数据命令选择端s

11、bit en=P34;/1602使能信号uchar num;uchar key_code=0;/遥控键值uchar new_code=0;/有无新按键uint buf_key_code=0;/键值暂存uchar key_bit_count=0;/键编码脉冲计数uint count=0;/定时中断次数计数uint buf_count=0;/定时中断计数暂存uchar common_code_count=0;/前导码脉冲计数uchar ir_status=0;/脉冲接收器所处的状态,0:无信号,1:系统码接收区,2:数据编码接收区uchar code table=EE01 DEMO:IR;ucha

12、r code table1=code:;uchar code table2=0,1,2,3,4,5,6,7,8,9,;void delay_10us(unsigned char y)/延时子程序10us unsigned char x; for(x=y;x0;x-); void delay_ms(uint z)/延时子程序1ms uint x,y; for(x=z;x0;x-) for(y=113;y0;y-); void init(void)/初始化 ir=1; /红外端口写1 led_cs=0; /关闭LED EA=1; /开总中断 TMOD=0x02; /定时器0,模式2,8位自动装载模

13、式 TH0=0Xd1; /定时50us TL0=0Xd1; IT1=1; /INT1下降沿触发 ET0=1; /允许定时器中断 EX1=1; /允许外部中断 /* 定时器中断*/void time0() interrupt 1/定时器中断 count+;/定时器中断次数累加/* 外部中断,红外解码程序*/void int1() interrupt 2/外部中断 TR0=1;/开定时器中断 if(count12&count12&buf_count210&buf_count=25)/若收完26个脉冲 ir_status=2;/数据解码标记 common_code_count=0;/系统码计算清零

14、buf_count=0;/中断计数暂存清0 else if(buf_count40&buf_count12&buf_count32) buf_count=0; common_code_count+;/每收到一个信号自加1 else if(ir_status=2)/进入数据编码接收 if(key_bit_count40&buf_count=1; buf_key_code|=0x80;/收到1 key_bit_count+;/数据脉冲累加 else if(buf_count12&buf_count=1;/收到0 key_bit_count+; else /若收完8位数据则做以下处理 ir_stat

15、us=0;/接收状态返回到空闲 key_code=buf_key_code; key_bit_count=0; buf_key_code=0; buf_count=0; TR0=0; new_code=1; /*1062驱动程序*/void wirte_cmd(uchar cmd)/写命令 rs=0; P0=cmd; en=1; delay_ms(5); en=0;void wirte_data(uchar dat)/写数据 rs=1; P0=dat; en=1; delay_ms(5); en=0;void wirte_string(const unsigned char *s)/在第二行第

16、5个字开始写字符串 wirte_cmd(0x80+0x40+0x05); while(*s) wirte_data(*s); s+; void init_1602()/1602初始化 dm=0; wm=0; led_cs=0; wirte_cmd(0x38); delay_ms(5); wirte_cmd(0x0c); delay_ms(5); wirte_cmd(0x06);/* 主程序*/void main() init(); /初始化 init_1602(); /1602初始化 while(!new_code);/判断是否有新按键,如果有则执行下面程序,没有则一直循环 wirte_cmd

17、(0x01);/1602清屏 delay_ms(5); wirte_cmd(0x80);/在第一行写入EE01 DEMO:IR for(num=0;num12;num+) wirte_data(tablenum); delay_ms(1); wirte_cmd(0x80+0x40);/在第二行写入code: for(num=0;num5;num+) wirte_data(table1num); delay_ms(1); if(key_code10)/如果按鍵小于10则写入相应的数字 wirte_data(table2key_code); delay_ms(2); else if(key_cod

18、e50)/大于10则写入字符,与遥控器对应 switch(key_code) case 21:wirte_string(mute);break; case 28:wirte_string(power);break; case 10:wirte_string(-/-);break; case 14:wirte_cmd(0x80+0x40+0x05);wirte_data(0x7f);wirte_data(0x7e);break;/先写字符位置,然后写字符, case 25:wirte_string(SLEEP);break; case 19:wirte_string(P.P);break; ca

19、se 15:wirte_string(TV/AV);break; case 30:wirte_string(VOL-);break; case 31:wirte_string(VOL+);break; case 27:wirte_string(P+);break; case 26:wirte_string(P-);break; case 16:wirte_string(MENU);break; case 24:wirte_string(A-MODE);break; case 13:wirte_string(SYS);break; case 12:wirte_string(GAME);break

20、; case 20:wirte_string(DISP);break; delay_ms(2); new_code=0; 本文来自电子工程师之家:/read.php?tid=5893红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。现在工业设备中,也已经广泛在使用。 1 红外遥控系统通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵

21、、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。2 遥控发射器及其编码遥控发射器专用芯片很多,根据编码格式可以分成脉冲宽度调制和脉冲相位调制两大类,这里我们以运用比较广泛,解码比较容易的脉冲宽度调制来加以说明,现以3310组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”上述“0”和“1”组成的42位二进制

22、码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射。3310产生的遥控编码是连续的42位二进制码组,其中前26位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码用于核对数据是否接收准确。目前使用的遥控器有大部分采用32位编码方式,其中前16位为用户识别码,后16位为8位的操作码及其反码。当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程

23、序知道从这个同步码头以后可以开始接收数据。连续发完42位(或32位)编码后,如果该键仍然被按下,则每隔110ms发射一个重复码,对于接收端而言就是一个9ms低电平+2.25ms高电平+0.56ms低电平,而不再发射操作码。解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超

24、过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右即可。 根据红外编码的格式,程序应该等待引导码(9ms低电平+4.5ms的高电平)完成后才能读码。/=/ 红外遥控解码程序 / 硬件连接: P3.0、P3.1接串口便于调试; / P3.2接红外接收管的数据线/ 适用于32位码字红外接收头及宏科万能遥控器/ =本程序引自:谷雨工作室=/=#include /STC单片机头文件 #define uint unsigned int#define uchar unsigned charuint time

25、=0,flag=0;uint First_INT=0,Star_Flag=0,CodeNum=0,Code33=0; void init_serial();void Tranfer(char Data);uint getkey(void);/=/函数名称:int main(void)/函数功能:系统主函数,主要包括一个用串口做的测试部分/入口参数:无/出口参数:无/=int main()uint keyvalue;TMOD=0x22; /设置定时器0为工作方式2TH0=0xd1; /定时0.05msTL0=0xd1;TR0=1; IT0=1; /设置INTR0为边沿触发,负跳变产生中断EX0=

26、1; /外中断0允许ET0=1; /定时中断允许EA=1; /开总中断 init_serial();while(1) keyvalue=getkey(); switch(keyvalue) case 0x01: Tranfer(1);break; case 0x02:Tranfer(2);break; case 0x03:Tranfer(3);break; case 0x04:Tranfer(4);break; case 0x05:Tranfer(5);break; case 0x06:Tranfer(6);break; case 0x07:Tranfer(7);break; case 0x0

27、8:Tranfer(8);break; case 0x10:Tranfer(J);Tranfer(Y);break;/静音 case 0x12:Tranfer(K);Tranfer(G);break;/开关 case 0x0b:Tranfer(-);Tranfer(-);break;/ -/- case 0x52:Tranfer( );break;/转圈的那个 case 0x51:Tranfer(H);Tranfer(Z);Tranfer(H);break;/画中画 case 0x58:Tranfer(Z);Tranfer(S);break;/制式 case 0x16:Tranfer(P);T

28、ranfer(X);break;/屏显 case 0x0e:Tranfer(S);Tranfer(M);break;/左 case 0x1b:Tranfer(P);Tranfer(1);break;/频道(上) case 0x1e:Tranfer(Y);Tranfer(1);break;/音量(左) case 0x1f:Tranfer(P);Tranfer(2);break;/频道(下) case 0x1a:Tranfer(Y);Tranfer(2);break;/音量(右) case 0x0f:Tranfer(S);Tranfer(P);break;/视频 case 0x1d:Tranfer

29、(B);Tranfer(Y);break;/伴音 case 0x13:Tranfer(L);Tranfer(Y);break;/丽音 case 0x56:Tranfer(U);Tranfer(P);break;/上 case 0x57:Tranfer(D);Tranfer(N);break;/下 case 0x5b:Tranfer(L);break;/左 case 0x5f:Tranfer(R);break;/右 case 0x5c:Tranfer(M);break;/菜单 default:break; /=/函数名称:uint getkey(void)/函数功能:获得红外遥控器键值/入口参数

30、:无/出口参数:无/说明:适用于32位码字红外接收头及宏科万能遥控器/=uint getkey(void) uint j=0; uint DateCode=0,key=0; if(flag=1) /判断头部是否是5;防止误接收 for(j=8;j=10;j+) if(Codej=1&Codej+1=1&Codej+2=1&Codej+3=1&Codej+4=1&Codej+5=1&Codej+6=0&Codej+7=1) /判断用户识别码是不是1111 1101 for(DateCode=0;DateCode8;DateCode+)/若是,则开始接收八位数据码 Codej+8+DateCode

31、250&time=15)&(time=35)&(time=32) /脉冲个数判断,共32个 CodeNum=0; Star_Flag=0; First_INT=0; flag=1; 红外线遥控器在家用电器和工业控制系统中已得到广泛应用,了解他们的工作原理和性能、进一步自制红外遥控系统,也并非难事。 1.红外线的特点 人的眼睛能看到的可见光,若按波长排列,依次(从长到短)为红、橙、黄、绿、青、蓝、紫,如图1所示。 由图可见,红光的波长范围为0.62m0.76m,比红光波长还长的光叫红外线。红外线遥控器就是利用波长0.76m1.5m之间的近红外线来传送控制信号的。 红外线的特点是不干扰其他电器设备

32、工作,也不会影响周边环境。电路调试简单,若对发射信号进行编码,可实现多路红外遥控功能。2.红外线发射和接收 人们见到的红外遥控系统分为发射和接收两部分。发射部分的发射元件为红外发光二极管,它发出的是红外线而不是可见光,如图2所示。 常用的红外发光二极管发出的红外线波长为940nm左右,外形与普通5mm发光二极管相同,只是颜色不同。一般有透明、黑色和深蓝色等三种。判断红外发光二极管的好坏与判断普通二极管一样的方法。单只红外发光二极管的发射功率约100mW。红外发光二极管的发光效率需用专用仪器测定,而业余条件下,只能凭经验用拉距法进行粗略判定。 接收电路的红外接收管是一种光敏二极管,使用时要给红外

33、接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。红外接收二极管一般有圆形和方形两种。由于红外发光二极管的发射功率较小,红外接收二极管收到的信号较弱,所以接收端就要增加高增益放大电路。然而现在不论是业余制作或正式的产品,大都采用成品的一体化接收头,如图3所示。红外线一体化接收头是集红外接收、放大、滤波和比较器输出等的模块,性能稳定、可靠。所以,有了一体化接收头,人们不再制作接收放大电路,这样红外接收电路不仅简单而且可靠性大大提高。图3是常用两种红外接收头的外形,均有三只引脚,即电源正VDD、电源负(GND)和数据输出(Out)。接收头的引脚排列因型号不同而不尽相同,图3列出了因接收头的外形

34、不同而引脚的区别。 红外接收头的主要参数如下: 工作电压:4.85.3V 工作电流:1.72.7mA 接收频率:38kHz 峰值波长:980nm 静态输出:高电平 输出低电平:0.4V 输出高电平:接近工作电压红外遥控系统 通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。screen.width-333) this.width=screen.width-333;this.alt=Click Here to Open New Window; borde

35、r=0 onmouseover=if(this.alt) this.style.cursor=hand; onclick=if(this.alt) window.open(/21a.gif);3遥控发射器及其编码遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组

36、合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。screen.width-333) this.width=screen.width-333;this.alt=Click Here to Open New Window; border=0 onmouseover=if(this.alt) this.style.cursor=hand; onclick=if(this.alt) window.open(/21b.gif);上述“0”和“1”组成的32位二进制码经38kHz的载

37、频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示。screen.width-333) this.width=screen.width-333;this.alt=Click Here to Open New Window; border=0 onmouseover=if(this.alt) this.style.cursor=hand; onclick=if(this.alt) window.open(/21c.gif);UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为

38、用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多额128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms之间,图4为发射波形图。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms18ms),高8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据的反码(9ms18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成很多电器都采用红外遥控,那么红外遥控的工作原理是什么呢?首先我们来看看什么是红外线。 人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.620.76m;紫光的波长范围为0.380.46m。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。 红外线遥控就是利用波长为0.761.5m之间的近红外线来传送控制信号的。 、 常用的红外遥控系统一般分发射和接收两个部分。 发

温馨提示

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

评论

0/150

提交评论