首先感謝開源大神蘿莉,感謝開源精神,感謝大學(xué)。
友情提示,本教程必須有單片機基礎(chǔ),2.4G遙控基礎(chǔ)(至少用過這類遙控)才可以操作。
7個模擬通道,5個開關(guān)通道
1-)準備材料
keil編譯軟件
stc-isp燒錄軟件
接收機的源碼鏈接: https://pan.baidu.com/s/1pKPC9nX 密碼: eaz2
usb轉(zhuǎn)ttl下載器(那個寶上面隨便搜的)
2-)電路制作材料
材料清單:
10*10cm孔洞洞板;
STC12C5608AD 單片機;
12M晶振,30P電容*2;
電源電容470uf,無線模塊電容大于等于47uf,104電容;
發(fā)光二極管,1K歐電阻;
NRF24L01模塊;
3.3V穩(wěn)壓芯片;
下面那塊是從這里裁剪出來的
3-)電路圖
鏈接: https://pan.baidu.com/s/1bC5NtW 密碼: u3mn
4-)做好的樣子(有條件的話可以去打印pcb板)
5-)下載程序 (下載程序可以焊好晶振后就燒寫,這樣避免后面焊好下載不了程序的尷尬)
使用keil編譯器編譯出hex文件
用usb轉(zhuǎn)ttl下載器連接做好的板子
用stc-isp軟件燒寫hex文件到板子
注意下載的時候不要選擇使用內(nèi)部晶振時鐘
6-)注意事項
這樣子裝無線模塊是錯誤的,因為天線下面就是電路,干擾很強,可以使用外置天線解決
如果是新制作的接收機,那么第一次開機就是等待對頻狀態(tài);
使用金屬物品,將接收機5/6通道相互連通在一起(就是把單片機5/6通的引腳短接),然后通電,也可以重新對頻;
*如何判斷等待對頻狀態(tài):上電后LED直接高亮;
*如何判斷已經(jīng)對過頻:上電時LED燈會閃一下再熄滅。如果此時遙控沒有開機,2秒后會再亮;
*如何判斷故障狀態(tài):上電時LED燈會快速閃爍。可能是無線模塊接線不良或電源不穩(wěn);
*確認進入等待對頻狀態(tài),遙控器選擇對頻,屏幕會顯示通信成功。
*如果很長時間不能成功,那么不要折騰怎么對頻了、對頻怎么這么麻煩、到底怎么對頻……(*>﹏<*),這是電路出現(xiàn)問題,檢查電路吧。
單片機源程序如下:
- #include
- #define u8 unsigned char
- #define u16 unsigned int
- //15系列新增寄存器
- sfr IAP_DATA=0xc2;
- sfr IAP_ADDRH=0xc3;
- sfr IAP_ADDRL=0xc4;
- sfr IAP_CMD=0xc5;
- sfr IAP_TRIG=0xc6;
- sfr IAP_CONTR=0xc7;
- sfr AUXR=0x8e;
- sfr T2H=0xd6;
- sfr T2L=0xd7;
- sfr IE2=0xaf;
- sfr P1ASF=0x9d;
- sfr ADC_CONTR=0xbc;
- sfr ADC_RES=0xbd;
- sfr ADC_RESL=0xbe;
- sfr P5=0xc8;
- sfr P0M0=0x94;
- sfr P1M0=0x92;
- sfr P2M0=0x96;
- sfr P3M0=0xb2;
- sfr P4M0=0xb4;
- sfr P1M1=0x91;
- sfr P_SW1 = 0xA2; //外設(shè)功能切換寄存器1
- sfr CMOD=0xd9;
- sfr CCON=0xd8;
- sfr CCAPM1=0xdb;
- sfr CCAPM2=0xdc;
- sfr CCAP1L=0xeb;
- sfr CCAP2L=0xec;
- sfr CCAP1H=0xfb;
- sfr CCAP2H=0xfc;
- sfr CL=0xe9;
- sfr CH=0xf9;
- sfr PCA_PWM1=0xf3;
- sfr PCA_PWM2=0xf4;
- /**************************************************************************/
- //引腳定義
- sbit LED=P1^0; //定義指示燈
- sbit CH1=P3^7; //定義6個通道輸出
- sbit CH2=P3^6;
- sbit CH3=P3^3;
- sbit CH4=P3^2;
- sbit CH5=P3^1;
- sbit CH6=P3^0;
- sbit MDO=P1^5; //定義無線模塊的管腳
- sbit SCK=P5^4;
- sbit CE=P5^5;
- sbit IRQ=P1^4;
- sbit MDI=P1^3;
- sbit CSN=P1^2;
- /**************************************************************************/
- u8 code random[100]={4,1,3,2,2,1,0,0,2,2,2,3,4,1,2,1,4,3,3,4,//隨機跳頻序列
- 2,0,2,2,3,1,2,3,2,2,2,4,2,4,0,3,4,2,3,1,
- 0,3,1,3,3,0,2,0,4,3,3,3,3,3,4,1,1,4,3,0,
- 1,0,3,2,3,2,3,3,4,4,1,3,0,0,3,1,3,3,3,0,
- 3,3,4,1,2,4,1,3,0,1,3,4,4,3,2,3,1,2,3,3};
-
- //無線通信
- u8 rx[11]; //接收的11字節(jié)數(shù)據(jù)
- u8 tx[11];
- u8 m;
- u8 hopping_turn,hopping_num,hopping_count;
- u8 address[5]={0xe7,0xe7,0xe7,0xe7,0xe7};
- u8 code address_0[5]={'L','O','V','E','!'};//使用LOVE作為對頻暗語
- u8 hopping[5]={10,35,60,85,110};
- bit first,restar;
- bit connecting,lose;
- bit jump_1,jump_2,jump_mode;
- u8 NRF_error;
- u8 TX_power=3;
- //通道輸出
- u16 timer1,timer2,timer3;
- u8 rx_num,receive;
- bit LED_flash;
- bit out_control_change;
- u16 idata out_control_data[8];
- u16 CH_data[8]={0,1024,0,1024,0,1024};
- u16 data buff[8];
- u16 temp1,temp2;
- u8 t_output;
- //電壓檢測
- u8 t_adc;
- u16 adc1,adc2;
- u16 voltage_bec,voltage_total;
- /**************************************************************************/
- //延時函數(shù)
- void Delay1ms() //@12.000MHz
- {
- unsigned char i, j;
- i = 12;
- j = 168;
- do
- {
- while (--j);
- } while (--i);
- }
- void delay_ms(u8 i)
- {
- while(i--)
- Delay1ms();
- }
- /**************************************************************************/
- //ROM存儲
- u8 EEPROM_read(u8 address)
- {
- IAP_CMD=0x01;
- IAP_ADDRH=0;
- IAP_ADDRL=address;
- IAP_TRIG=0x5a;
- IAP_TRIG=0xa5;
- return IAP_DATA;
- }
- void EEPROM_write(u8 address,u8 byte)
- {
- IAP_CMD=0x02;
- IAP_DATA=byte;
- IAP_ADDRH=0;
- IAP_ADDRL=address;
- IAP_TRIG=0x5a;
- IAP_TRIG=0xa5;
-
- }
- void EEPROM_clean(u8 address)
- {
- IAP_CMD=0x03;
- IAP_ADDRH=0;
- IAP_ADDRL=address;
- IAP_TRIG=0x5a;
- IAP_TRIG=0xa5;
- }
- void DATA_read()
- {
- IAP_CONTR=0x82;
- if((EEPROM_read(0)!=0xe4)||(EEPROM_read(1)!=0xa5))
- {
- first=1;
- }
- else
- {
- hopping[0]=EEPROM_read(2);
- hopping[1]=EEPROM_read(3);
- hopping[2]=EEPROM_read(4);
- hopping[3]=EEPROM_read(5);
- hopping[4]=EEPROM_read(6);
- address[0]=EEPROM_read(7);
- address[1]=EEPROM_read(8);
- address[2]=EEPROM_read(9);
- address[3]=EEPROM_read(10);
- address[4]=EEPROM_read(11);
- }
-
- if((EEPROM_read(12)!=0xe4)||(EEPROM_read(13)!=0xa5))
- {
- out_control_data[0]=512;
- out_control_data[1]=512;
- out_control_data[2]=80;
- out_control_data[3]=512;
- out_control_data[4]=512;
- out_control_data[5]=512;
- out_control_data[6]=512;
- out_control_data[7]=512;
- }
- else
- {
-
- out_control_data[0]=EEPROM_read(14);
- out_control_data[0]<<=8;
- out_control_data[0]+=EEPROM_read(15);
- out_control_data[1]=EEPROM_read(16);
- out_control_data[1]<<=8;
- out_control_data[1]+=EEPROM_read(17);
- out_control_data[2]=EEPROM_read(18);
- out_control_data[2]<<=8;
- out_control_data[2]+=EEPROM_read(19);
- out_control_data[3]=EEPROM_read(20);
- out_control_data[3]<<=8;
- out_control_data[3]+=EEPROM_read(21);
- out_control_data[4]=EEPROM_read(22);
- out_control_data[4]<<=8;
- out_control_data[4]+=EEPROM_read(23);
- out_control_data[5]=EEPROM_read(24);
- out_control_data[5]<<=8;
- out_control_data[5]+=EEPROM_read(25);
- out_control_data[6]=EEPROM_read(26);
- out_control_data[6]<<=8;
- out_control_data[6]+=EEPROM_read(27);
- out_control_data[7]=EEPROM_read(28);
- out_control_data[7]<<=8;
- out_control_data[7]+=EEPROM_read(29);
- }
-
-
- IAP_CONTR=0;
- }
- void DATA_save()
- {
- IAP_CONTR=0x82;
- EEPROM_clean(0);
- EEPROM_write(0,0xe4);
- EEPROM_write(1,0xa5);
- EEPROM_write(2,hopping[0]);
- EEPROM_write(3,hopping[1]);
- EEPROM_write(4,hopping[2]);
- EEPROM_write(5,hopping[3]);
- EEPROM_write(6,hopping[4]);
- EEPROM_write(7,address[0]);
- EEPROM_write(8,address[1]);
- EEPROM_write(9,address[2]);
- EEPROM_write(10,address[3]);
- EEPROM_write(11,address[4]);
-
- if(out_control_change)
- {
- EEPROM_write(12,0xe4);
- EEPROM_write(13,0xa5);
-
- EEPROM_write(14,out_control_data[0]>>8);
- EEPROM_write(15,out_control_data[0]);
- EEPROM_write(16,out_control_data[1]>>8);
- EEPROM_write(17,out_control_data[1]);
- EEPROM_write(18,out_control_data[2]>>8);
- EEPROM_write(19,out_control_data[2]);
- EEPROM_write(20,out_control_data[3]>>8);
- EEPROM_write(21,out_control_data[3]);
- EEPROM_write(22,out_control_data[4]>>8);
- EEPROM_write(23,out_control_data[4]);
- EEPROM_write(24,out_control_data[5]>>8);
- EEPROM_write(25,out_control_data[5]);
- EEPROM_write(26,out_control_data[6]>>8);
- EEPROM_write(27,out_control_data[6]);
- EEPROM_write(28,out_control_data[7]>>8);
- EEPROM_write(29,out_control_data[7]);
- }
-
-
-
-
-
-
- IAP_CONTR=0;
- }
- /**************************************************************************/
- //NRF24L01
- u8 SPI(u8 byte)
- {
- u8 i;
- for(i=0;i<8;i++)
- {
- MDI=(byte&0x80);
- SCK=1;
- byte<<=1;
- byte|=MDO;
- SCK=0;
- }
- return byte;
- }
- void REG_write(u8 address,u8 command)
- {
- CSN=0;
- SPI(0x20+address);
- SPI(command);
- CSN=1;
- }
- void FIFO_write(u8 DATA_OUT[],u8 lengh)
- {
- u8 i;
- CSN=0;
- SPI(0xa0);
- for(i=0;i<lengh;i++)
- SPI(DATA_OUT[i]);
- CSN=1;
- }
- void FIFO_read(u8 DATA_IN[],u8 lengh) //讀取接收數(shù)據(jù)緩沖區(qū)
- {
- u8 i;
- CSN=0;
- SPI(0x61); //讀取命令
- for(i=0;i<lengh;i++)
- DATA_IN[i]=SPI(0);
- CSN=1;
- }
- void TX_address(u8 DATA_IN[])
- {
- CSN=0;
- SPI(0x20+0x10);
- SPI(DATA_IN[0]);
- SPI(DATA_IN[1]);
- SPI(DATA_IN[2]);
- SPI(DATA_IN[3]);
- SPI(DATA_IN[4]);
- CSN=1;
- }
- void RX_address(u8 DATA_IN[])
- {
- CSN=0;
- SPI(0x20+0x0a);
- SPI(DATA_IN[0]);
- SPI(DATA_IN[1]);
- SPI(DATA_IN[2]);
- SPI(DATA_IN[3]);
- SPI(DATA_IN[4]);
- CSN=1;
- }
- void RX_mode()
- {
- CE=0;
- REG_write(0x00,0x3b); //CRC,8 bit,Power on,RX
- CE=1;
- }
-
- void TX_mode()
- {
- CE=0;
- REG_write(0x00,0x0a);
- CE=1;
- }
- void NRF_power(u8 P) //發(fā)射功率設(shè)置 250k
- {
- CE=0;
- if(P==3)REG_write(0x06,0x27); //0db 修正之前注釋錯誤
- else if(P==2)REG_write(0x06,0x25); //-6db
- else if(P==1)REG_write(0x06,0x23); //-12db
- else if(P==0)REG_write(0x06,0x21); //-18db
- CE=1;
- }
- void NRF_size(u8 l)
- {
- CE=0;
- REG_write(0x11,l);
- CE=1;
- }
- void NRF_channel(u8 c)
- {
- CE=0;
- REG_write(0x05,c);
- CE=1;
- }
- void NRF_init()
- {
- CE=0;
- SCK=0;
- REG_write(0x01,0x00); //禁止 自動應(yīng)答
- REG_write(0x02,0x01); //允許 P0信道
- REG_write(0x04,0x00); //禁止 自動重發(fā)
- RX_mode();
- NRF_channel(66);
- NRF_power(TX_power);
- NRF_size(11);
- RX_address(address);
- TX_address(address);
- }
- void NRF_test() //無線模塊終極測試
- {
- u8 reset_err=0;
- CE=0;
- SCK=0;
- CSN=0;
-
- if(SPI(0x20)!=0x0e){reset_err=1;}
- SPI(0x0a);
- CSN=1;
- CSN=0;
- SPI(0x00);
- if(SPI(0x00)!=0x0a){NRF_error|=0x02;}//MOSI bad
- CSN=1;
- REG_write(0x01,0x00);
- REG_write(0x04,0x00);
- REG_write(0x11,1);
-
- FIFO_write(tx,1);
- CE=1;
- delay_ms(2);
-
- CSN=0;
- if(SPI(0x00)!=0x2e){NRF_error|=0x04;}//CE bad
- CSN=1;
-
- if(IRQ)NRF_error|=0x18; //IRQ bad
- else
- {
- if(NRF_error&0x04==0)NRF_error|=0x10; //MISO bad
- }
- CE=1;
-
- if(reset_err&&NRF_error>1)NRF_error|=0x01;//CSN,CLK bad
-
- REG_write(0x07,0x20); //清除TX中斷信號
- }
- /**************************************************************************/
- void data_check(int x,int max,int min)
- {
-
- if(x>max)x=max;
- if(x<min)x=min;
- }
- void initial()
- {
- u8 t;
-
- CH5=0; //如果CH5與CH6被短接,重新對碼
- Delay1ms();
- if(CH6==0) //修正通道6插上舵機不能用
- {
- P3M0=0x02; //插上舵機也會使CH6為0,所以將CH5設(shè)為推挽
- CH5=1;
- Delay1ms();
- if(CH6)restar=1; //如果CH6被拉高,說明5/6通道短接,啟動重新對碼
- }
-
- LED=0; //點亮指示燈再關(guān)閉,表示單片機正常工作
- delay_ms(100);
- P3M0=0xcf; //四通接收機實際上是6通。
- P1M1=0x02; //將6通道輸出IO口配置為大電流推挽模式,保證正常驅(qū)動電調(diào)與舵機
- TMOD=0x01; //允許兩個定時器中斷
-
- if(restar)first=1;
- DATA_read();
- data_check(out_control_data[0],1023,0);
- data_check(out_control_data[1],1023,0);
- data_check(out_control_data[2],1023,0);
- data_check(out_control_data[3],1023,0);
- data_check(out_control_data[4],1023,0);
- data_check(out_control_data[5],1023,0);
- data_check(out_control_data[6],1023,0);
- data_check(out_control_data[7],1023,0);
-
- NRF_test();
- if(NRF_error)
- {
- t=10;
- while(t)
- {
- LED=0; //模塊錯誤閃燈
- delay_ms(50);
- LED=1; //模塊錯誤閃燈
- delay_ms(50);
- t--;
- }
- }
-
- NRF_init();
-
-
- if(first)
- {
- NRF_power(0);
- NRF_channel(33);
- TX_address(address_0);
- RX_address(address_0);
- while(IRQ);
- FIFO_read(rx,11); //讀取接收數(shù)據(jù)
- CE=0;
- REG_write(0x07,0x40); //清除無線模塊中斷信號
- CE=1;
- if(rx[0]==0xa0)
- {
- hopping[0]=rx[1];
- hopping[1]=rx[2];
- hopping[2]=rx[3];
- hopping[3]=rx[4];
- hopping[4]=rx[5];
- address[0]=rx[6];
- address[1]=rx[7];
- address[2]=rx[8];
- address[3]=rx[9];
- address[4]=rx[10];
- }
-
- tx[0]='O',tx[1]='K';
- connecting=1;
- while(connecting)
- {
- TX_mode();
- NRF_channel(33);
- TX_address(address_0);
- RX_address(address_0);
- FIFO_write(tx,11);
- Delay1ms();
-
- RX_mode();
- NRF_channel(hopping[0]);
- TX_address(address);
- RX_address(address);
- while(1)
- {
- Delay1ms();
- if(IRQ==0)
- {
- FIFO_read(rx,11); //讀取接收數(shù)據(jù)
- CE=0;
- REG_write(0x07,0x40); //清除無線模塊中斷信號
- CE=1;
- connecting=0;break;
- }
- t++;if(t>100){t=0;break;}
- }
- }
- DATA_save();
- RX_address(address);
- TX_address(address);
- NRF_power(3);
- }
-
- }
-
- main()
- {
- delay_ms(200);delay_ms(200);//開機延時以避過電源波動
-
- initial();
- ADC_CONTR=0x80; //ADC配置
-
- IP=0x02;
- IE=0x82;
- IE2=0x04;
-
- T2L=0x47,T2H=0xf4;
- AUXR=0x10; //打開定時器2,開始統(tǒng)計信號
-
- NRF_channel(hopping[0]);
-
-
- while(IRQ);
- TR0=1;
- lose=1;
- LED=1;
- while(1)
- {
- while(IRQ&lose);
- if(lose)
- {
- jump_1=0;jump_2=0;hopping_count=0;//收到有效信號后刷新跳頻器
- receive++;timer1=0;timer3=0;m=0;
-
- FIFO_read(rx,11); //讀取接收數(shù)據(jù)
- CE=0;
- REG_write(0x07,0x40); //清除無線模塊中斷信號
- CE=1;
-
- TX_mode();
- tx[0]=rx_num;
- voltage_bec=32385/adc1;
- tx[1]=voltage_bec>>8;
- tx[2]=voltage_bec;
- voltage_total=(long)adc2*voltage_bec*3/1024;
- tx[3]=voltage_total>>8;
- tx[4]=voltage_total;
-
- FIFO_write(tx,11);
- Delay1ms();
- RX_mode();
-
- if(jump_mode)
- {
- jump_mode=0;
- hopping_turn=random[hopping_num];
- }
- hopping_turn++;
- if(hopping_turn>4)hopping_turn=0;
- NRF_channel(hopping[hopping_turn]);
-
- if(rx[0]==0xa0)
- {
- LED_flash=1,LED=0;
- buff[0]=rx[1];
- buff[0]<<=2;
- buff[0]+=rx[2]>>6;
- buff[1]=rx[2]&0x3f;
- buff[1]<<=4;
- buff[1]+=rx[3]>>4;
- buff[2]=rx[3]&0x0f;
- buff[2]<<=6;
- buff[2]+=rx[4]>>2;
- buff[3]=rx[4]&0x03;
- buff[3]<<=8;
- buff[3]+=rx[5];
- buff[4]=rx[6];
- buff[4]<<=2;
- buff[4]+=rx[7]>>6;
- buff[5]=rx[7]&0x3f;
- buff[5]<<=4;
- buff[5]+=rx[8]>>4;
- buff[6]=rx[8]&0x0f;
- buff[6]<<=6;
- buff[6]+=rx[9]>>2;
- buff[7]=rx[9]&0x03;
- buff[7]<<=8;
- buff[7]+=rx[10];
-
-
- data_check(buff[0],1023,0);
- data_check(buff[1],1023,0);
- data_check(buff[2],1023,0);
- data_check(buff[3],1023,0);
- data_check(buff[4],1023,0);
- data_check(buff[5],1023,0);
- data_check(buff[6],1023,0);
- data_check(buff[7],1023,0);
-
- out_control_data[0]=buff[0];
- out_control_data[1]=buff[1];
- out_control_data[2]=buff[2];
- out_control_data[3]=buff[3];
- out_control_data[4]=buff[4];
- out_control_data[5]=buff[5];
- out_control_data[6]=buff[6];
- out_control_data[7]=buff[7];
-
- out_control_change=1;
- DATA_save();
- out_control_change=0;
-
- }
- else if(rx[0]==0xa1)
- {
- buff[0]=rx[1];
- buff[0]<<=2;
- buff[0]+=rx[2]>>6;
- buff[1]=rx[2]&0x3f;
- buff[1]<<=4;
- buff[1]+=rx[3]>>4;
- buff[2]=rx[3]&0x0f;
- buff[2]<<=6;
- buff[2]+=rx[4]>>2;
- buff[3]=rx[4]&0x03;
- buff[3]<<=8;
- buff[3]+=rx[5];
- buff[4]=rx[6];
- buff[4]<<=2;
- buff[4]+=rx[7]>>6;
- buff[5]=rx[7]&0x3f;
- buff[5]<<=4;
- buff[5]+=rx[8]>>4;
- buff[6]=rx[8]&0x0f;
- buff[6]<<=6;
- buff[6]+=rx[9]>>2;
- buff[7]=rx[9]&0x03;
- buff[7]<<=8;
- buff[7]+=rx[10];
-
-
- data_check(buff[0],1023,0);
- data_check(buff[1],1023,0);
- data_check(buff[2],1023,0);
- data_check(buff[3],1023,0);
- data_check(buff[4],1023,0);
- data_check(buff[5],1023,0);
- data_check(buff[6],1023,0);
- data_check(buff[7],1023,0);
-
- CH_data[0]=buff[0];
- CH_data[1]=buff[1];
- CH_data[2]=buff[2];
- CH_data[3]=buff[3];
- CH_data[4]=buff[4];
- CH_data[5]=buff[5];
- CH_data[6]=buff[6];
- CH_data[7]=buff[7];
- }
-
-
- }
- else
- {
- hopping_count++;
- if(hopping_count>5)jump_mode=1;
-
- if(jump_mode)
- {
- hopping_num++;
- if(hopping_num>99)hopping_num=0;
- NRF_channel(hopping[random[hopping_num]]);
- lose=1;
- }
- else
- {
- hopping_turn++;
- if(hopping_turn>4)hopping_turn=0;
- NRF_channel(hopping[hopping_turn]);
- lose=1;
- }
-
- }
-
- }
-
- }
- void et0()interrupt 1 //定時器0用作信號輸出
- {
- TR0=0;
- t_output++;
- switch(t_output)
- {
-
- case 1:CH1=1;temp1=64750-CH_data[0]*27/20;
- TL0=temp1,TH0=temp1>>8;break;
-
-
- case 2:CH1=0;temp2=128500-temp1;
- TL0=temp2,TH0=temp2>>8;break;
- case 3:CH2=1;temp1=64750-CH_data[1]*27/20;
- TL0=temp1,TH0=temp1>>8;break;
-
-
- case 4:CH2=0;temp2=128500-temp1;
- TL0=temp2,TH0=temp2>>8;break;
- case 5:CH3=1;temp1=64750-CH_data[2]*27/20;
- TL0=temp1,TH0=temp1>>8;break;
- case 6:CH3=0;temp2=128500-temp1;
- TL0=temp2,TH0=temp2>>8;break;
- case 7:CH4=1;temp1=64750-CH_data[3]*27/20;
- TL0=temp1,TH0=temp1>>8;break;
- case 8:CH4=0;temp2=128500-temp1;
- TL0=temp2,TH0=temp2>>8;break;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有程序51hei提供下載:
蘿麗新版6通接收機A版程序.rar
(4.53 KB, 下載次數(shù): 191)
2017-5-21 21:00 上傳
點擊文件名下載附件
|