久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2730|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

USB無線串口轉(zhuǎn)NRF24L01數(shù)傳通信,DS18B20采集溫度,并通過串口助手顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:808304 發(fā)表于 2020-11-17 19:16 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
最近做了一個用USB無線串口模塊,串口轉(zhuǎn)NRF24L01 數(shù)傳通信,通過DS18B20采集外界溫度,并通過傳口助手顯示采集的溫度用到的模塊用到的器材
USB無線串口模塊,串口轉(zhuǎn)NRF24L01 數(shù)傳通信
溫度采集模塊,DS18B20
2塊NRF24L01
51單片機(jī)
軟件:串口助手


具體程序如下
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int


  5. /**********  NRF24L01寄存器操作命令  ***********/
  6. #define READ_REG        0x00  //讀配置寄存器,低5位為寄存器地址
  7. #define WRITE_REG       0x20  //寫配置寄存器,低5位為寄存器地址
  8. #define RD_RX_PLOAD     0x61  //讀RX有效數(shù)據(jù),1~32字節(jié)
  9. #define WR_TX_PLOAD     0xA0  //寫TX有效數(shù)據(jù),1~32字節(jié)
  10. #define FLUSH_TX        0xE1  //清除TX FIFO寄存器.發(fā)射模式下用
  11. #define FLUSH_RX        0xE2  //清除RX FIFO寄存器.接收模式下用
  12. #define REUSE_TX_PL     0xE3  //重新使用上一包數(shù)據(jù),CE為高,數(shù)據(jù)包被不斷發(fā)送.
  13. #define NOP             0xFF  //空操作,可以用來讀狀態(tài)寄存器         
  14. /**********  NRF24L01寄存器地址   *************/
  15. #define CONFIG          0x00  //配置寄存器地址                             
  16. #define EN_AA           0x01  //使能自動應(yīng)答功能
  17. #define EN_RXADDR       0x02  //接收地址允許
  18. #define SETUP_AW        0x03  //設(shè)置地址寬度(所有數(shù)據(jù)通道)
  19. #define SETUP_RETR      0x04  //建立自動重發(fā)
  20. #define RF_CH           0x05  //RF通道
  21. #define RF_SETUP        0x06  //RF寄存器
  22. #define STATUS          0x07  //狀態(tài)寄存器
  23. #define OBSERVE_TX      0x08  // 發(fā)送檢測寄存器
  24. #define CD              0x09  // 載波檢測寄存器
  25. #define RX_ADDR_P0      0x0A  // 數(shù)據(jù)通道0接收地址
  26. #define RX_ADDR_P1      0x0B  // 數(shù)據(jù)通道1接收地址
  27. #define RX_ADDR_P2      0x0C  // 數(shù)據(jù)通道2接收地址
  28. #define RX_ADDR_P3      0x0D  // 數(shù)據(jù)通道3接收地址
  29. #define RX_ADDR_P4      0x0E  // 數(shù)據(jù)通道4接收地址
  30. #define RX_ADDR_P5      0x0F  // 數(shù)據(jù)通道5接收地址
  31. #define TX_ADDR         0x10  // 發(fā)送地址寄存器
  32. #define RX_PW_P0        0x11  // 接收數(shù)據(jù)通道0有效數(shù)據(jù)寬度(1~32字節(jié))
  33. #define RX_PW_P1        0x12  // 接收數(shù)據(jù)通道1有效數(shù)據(jù)寬度(1~32字節(jié))
  34. #define RX_PW_P2        0x13  // 接收數(shù)據(jù)通道2有效數(shù)據(jù)寬度(1~32字節(jié))
  35. #define RX_PW_P3        0x14  // 接收數(shù)據(jù)通道3有效數(shù)據(jù)寬度(1~32字節(jié))
  36. #define RX_PW_P4        0x15  // 接收數(shù)據(jù)通道4有效數(shù)據(jù)寬度(1~32字節(jié))
  37. #define RX_PW_P5        0x16  // 接收數(shù)據(jù)通道5有效數(shù)據(jù)寬度(1~32字節(jié))
  38. #define FIFO_STATUS     0x17  // FIFO狀態(tài)寄存器
  39. /*————————————————————————————————————————————————————————————————————*/

  40. /******   STATUS寄存器bit位定義      *******/
  41. #define MAX_TX          0x10            //達(dá)到最大發(fā)送次數(shù)中斷
  42. #define TX_OK           0x20            //TX發(fā)送完成中斷
  43. #define RX_OK           0x40            //接收到數(shù)據(jù)中斷
  44. /*——————————————————————————————————————————————————*/

  45. /*********     24L01發(fā)送接收數(shù)據(jù)寬度定義          ***********/
  46. #define TX_ADR_WIDTH    5     //5字節(jié)地址寬度
  47. #define RX_ADR_WIDTH    5     //5字節(jié)地址寬度
  48. #define TX_PLOAD_WIDTH  32    //32字節(jié)有效數(shù)據(jù)寬度
  49. #define RX_PLOAD_WIDTH  32    //32字節(jié)有效數(shù)據(jù)寬度

  50. const uchar TX_ADDRESS[TX_ADR_WIDTH]={0xFF,0xFF,0xFF,0xFF,0xFF}; //發(fā)送地址
  51. const uchar RX_ADDRESS[RX_ADR_WIDTH]={0xFF,0xFF,0xFF,0xFF,0xFF}; //發(fā)送地址

  52. sbit NRF_CE   = P0^7;
  53. sbit NRF_CSN  = P0^6;
  54. sbit NRF_MISO = P0^3;
  55. sbit NRF_MOSI = P0^4;
  56. sbit NRF_SCK  = P0^5;
  57. sbit NRF_IRQ  = P0^2;
  58. sbit LED=P1^0;
  59. sbit DQ=P3^7; //ds18b20 與單片機(jī)連接口
  60. //sbit S1=P3^0;
  61. //sbit S2=P3^1;
  62. //sbit S3=P3^2;
  63. uchar rece_buf[32];
  64. uchar data disdata[6];// 百、十、個、小數(shù)位1、小數(shù)位2、        小數(shù)位3、
  65. uint tvalue; // 溫度值
  66. uchar tflag; // 溫度正負(fù)標(biāo)志

  67. void delay_us(uchar num)
  68. {
  69.         uchar i;
  70.         for(i=0;i>num;i++)
  71.         _nop_();
  72. }
  73. void delay_150us()
  74. {
  75.         uint i;

  76.         for(i=0;i>150;i++);
  77. }
  78. void delay(uint t)
  79. {
  80.         uchar k;
  81.         while(t--)
  82.         for(k=0;k<200;k++);
  83. }
  84. /***************************************************************/

  85. /*******************************************************************/
  86. uchar SPI_RW(uchar byte)
  87. {
  88.         uchar bit_ctr;
  89.         for(bit_ctr=0;bit_ctr<8;bit_ctr++)  // 輸出8位
  90.         {
  91.                 NRF_MOSI=(byte&0x80);                         // MSB TO MOSI
  92.                 byte=(byte<<1);                                        // shift next bit to MSB
  93.                 NRF_SCK=1;
  94.                 byte|=NRF_MISO;                                // capture current MISO bit
  95.                 NRF_SCK=0;
  96.         }
  97.         return byte;
  98. }

  99. /*********************************************/
  100. /* 函數(shù)功能:給24L01的寄存器寫值(一個字節(jié)) */
  101. /* 入口參數(shù):reg   要寫的寄存器地址          */
  102. /*           value 給寄存器寫的值            */
  103. /* 出口參數(shù):status 狀態(tài)值                   */
  104. /*********************************************/
  105. uchar NRF24L01_Write_Reg(uchar reg,uchar value)
  106. {
  107.         uchar status;

  108.         NRF_CSN=0;                  //CSN=0;   
  109.           status = SPI_RW(reg);                //發(fā)送寄存器地址,并讀取狀態(tài)值
  110.         SPI_RW(value);
  111.         NRF_CSN=1;                  //CSN=1;

  112.         return status;
  113. }
  114. /*************************************************/
  115. /* 函數(shù)功能:讀24L01的寄存器值 (一個字節(jié))      */
  116. /* 入口參數(shù):reg  要讀的寄存器地址               */
  117. /* 出口參數(shù):value 讀出寄存器的值                */
  118. /*************************************************/
  119. uchar NRF24L01_Read_Reg(uchar reg)
  120. {
  121.         uchar value;

  122.         NRF_CSN=0;              //CSN=0;   
  123.           SPI_RW(reg);                        //發(fā)送寄存器值(位置),并讀取狀態(tài)值
  124.         value = SPI_RW(NOP);
  125.         NRF_CSN=1;                     //CSN=1;

  126.         return value;
  127. }
  128. /*********************************************/
  129. /* 函數(shù)功能:讀24L01的寄存器值(多個字節(jié))   */
  130. /* 入口參數(shù):reg   寄存器地址                */
  131. /*           *pBuf 讀出寄存器值的存放數(shù)組    */
  132. /*           len   數(shù)組字節(jié)長度              */
  133. /* 出口參數(shù):status 狀態(tài)值                   */
  134. /*********************************************/
  135. uchar NRF24L01_Read_Buf(uchar reg,uchar *pBuf,uchar len)
  136. {
  137.         uchar status,u8_ctr;
  138.         NRF_CSN=0;                           //CSN=0      
  139.           status=SPI_RW(reg);                                //發(fā)送寄存器地址,并讀取狀態(tài)值             
  140.         for(u8_ctr=0;u8_ctr<len;u8_ctr++)
  141.         pBuf[u8_ctr]=SPI_RW(0XFF);                //讀出數(shù)據(jù)
  142.         NRF_CSN=1;                                 //CSN=1
  143.           return status;                                //返回讀到的狀態(tài)值
  144. }
  145. /**********************************************/
  146. /* 函數(shù)功能:給24L01的寄存器寫值(多個字節(jié))  */
  147. /* 入口參數(shù):reg  要寫的寄存器地址            */
  148. /*           *pBuf 值的存放數(shù)組               */
  149. /*           len   數(shù)組字節(jié)長度               */
  150. /**********************************************/
  151. uchar NRF24L01_Write_Buf(uchar reg, uchar *pBuf, uchar len)
  152. {
  153.         uchar status,u8_ctr;
  154.         NRF_CSN=0;
  155.           status = SPI_RW(reg);                        //發(fā)送寄存器值(位置),并讀取狀態(tài)值
  156.           for(u8_ctr=0; u8_ctr<len; u8_ctr++)
  157.         SPI_RW(*pBuf++);                                 //寫入數(shù)據(jù)
  158.         NRF_CSN=1;
  159.           return status;                          //返回讀到的狀態(tài)值
  160. }                                                                                                    

  161. /*********************************************/
  162. /* 函數(shù)功能:24L01接收數(shù)據(jù)                   */
  163. /* 入口參數(shù):rxbuf 接收數(shù)據(jù)數(shù)組              */
  164. /* 返回值: 0   成功收到數(shù)據(jù)                 */
  165. /*          1   沒有收到數(shù)據(jù)                 */
  166. /*********************************************/
  167. uchar NRF24L01_RxPacket(uchar *rxbuf)
  168. {
  169.         uchar state;
  170.          
  171.         state=NRF24L01_Read_Reg(STATUS);                          //讀取狀態(tài)寄存器的值             
  172.         NRF24L01_Write_Reg(WRITE_REG+STATUS,state); //清除TX_DS或MAX_RT中斷標(biāo)志
  173.         if(state&RX_OK)                                                                //接收到數(shù)據(jù)
  174.         {
  175.                 NRF_CE = 0;
  176.                 NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//讀取數(shù)據(jù)
  177.                 NRF24L01_Write_Reg(FLUSH_RX,0xff);                                        //清除RX FIFO寄存器
  178.                 NRF_CE = 1;
  179.                 delay_150us();
  180.                 return 0;
  181.         }          
  182.         return 1;//沒收到任何數(shù)據(jù)
  183. }
  184. /**********************************************/
  185. /* 函數(shù)功能:設(shè)置24L01為發(fā)送模式              */
  186. /* 入口參數(shù):txbuf  發(fā)送數(shù)據(jù)數(shù)組              */
  187. /* 返回值; 0x10    達(dá)到最大重發(fā)次數(shù),發(fā)送失敗*/
  188. /*          0x20    成功發(fā)送完成              */
  189. /*          0xff    發(fā)送失敗                  */
  190. /**********************************************/
  191. uchar NRF24L01_TxPacket(uchar *txbuf)
  192. {
  193.         uchar state;
  194.    
  195.         NRF_CE=0;                                                                                                //CE拉低,使能24L01配置
  196.           NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);        //寫數(shù)據(jù)到TX BUF  32個字節(jié)
  197.         NRF_CE=1;                                                                                                //CE置高,使能發(fā)送          
  198.         while(NRF_IRQ==1);                                                                                //等待發(fā)送完成
  199.         state=NRF24L01_Read_Reg(STATUS);                                                  //讀取狀態(tài)寄存器的值          
  200.         NRF24L01_Write_Reg(WRITE_REG+STATUS,state);                         //清除TX_DS或MAX_RT中斷標(biāo)志
  201.         if(state&MAX_TX)                                                                                //達(dá)到最大重發(fā)次數(shù)
  202.         {
  203.                 NRF24L01_Write_Reg(FLUSH_TX,0xff);                                        //清除TX FIFO寄存器
  204.                 return MAX_TX;
  205.         }
  206.         if(state&TX_OK)                                                                                        //發(fā)送完成
  207.         {
  208.                 return TX_OK;
  209.         }
  210.         return 0xff;                                                                                        //發(fā)送失敗
  211. }

  212. /********************************************/
  213. /* 函數(shù)功能:檢測24L01是否存在              */
  214. /* 返回值;  0  存在                        */
  215. /*           1  不存在                      */
  216. /********************************************/           
  217. uchar NRF24L01_Check(void)
  218. {
  219.         uchar check_in_buf[5]={0x11,0x22,0x33,0x44,0x55};
  220.         uchar check_out_buf[5]={0x00};

  221.         NRF_SCK=0;
  222.         NRF_CSN=1;   
  223.         NRF_CE=0;

  224.         NRF24L01_Write_Buf(WRITE_REG+TX_ADDR, check_in_buf, 5);

  225.         NRF24L01_Read_Buf(READ_REG+TX_ADDR, check_out_buf, 5);

  226.         if((check_out_buf[0] == 0x11)&&\
  227.            (check_out_buf[1] == 0x22)&&\
  228.            (check_out_buf[2] == 0x33)&&\
  229.            (check_out_buf[3] == 0x44)&&\
  230.            (check_out_buf[4] == 0x55))return 0;
  231.         else return 1;
  232. }                       


  233. void NRF24L01_RT_Init(void)
  234. {       
  235.         NRF_CE=0;                  
  236.           NRF24L01_Write_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//選擇通道0的有效數(shù)據(jù)寬度
  237.         NRF24L01_Write_Reg(FLUSH_RX,0xff);                                                                        //清除RX FIFO寄存器   
  238.           NRF24L01_Write_Buf(WRITE_REG+TX_ADDR,(uchar*)TX_ADDRESS,TX_ADR_WIDTH);//寫TX節(jié)點地址
  239.           NRF24L01_Write_Buf(WRITE_REG+RX_ADDR_P0,(uchar*)RX_ADDRESS,RX_ADR_WIDTH); //設(shè)置TX節(jié)點地址,主要為了使能ACK          
  240.           NRF24L01_Write_Reg(WRITE_REG+EN_AA,0x01);     //使能通道0的自動應(yīng)答   
  241.           NRF24L01_Write_Reg(WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址  
  242.           NRF24L01_Write_Reg(WRITE_REG+SETUP_RETR,0x1a);//設(shè)置自動重發(fā)間隔時間:500us + 86us;最大自動重發(fā)次數(shù):10次
  243.           NRF24L01_Write_Reg(WRITE_REG+RF_CH,0);        //設(shè)置RF通道為2.400GHz  頻率=2.4+0GHz
  244.           NRF24L01_Write_Reg(WRITE_REG+RF_SETUP,0x0F);  //設(shè)置TX發(fā)射參數(shù),0db增益,2Mbps,低噪聲增益開啟   
  245.           NRF24L01_Write_Reg(WRITE_REG+CONFIG,0x0f);    //配置基本工作模式的參數(shù);PWR_UP,EN_CRC,16BIT_CRC,接收模式,開啟所有中斷
  246.         NRF_CE=1;                                                                          //CE置高,使能發(fā)送
  247. }

  248. void SEND_BUF(uchar *buf)
  249. {
  250.         NRF_CE=0;
  251.         NRF24L01_Write_Reg(WRITE_REG+CONFIG,0x0e);
  252.         NRF_CE=1;
  253.         delay_us(15);
  254.         NRF24L01_TxPacket(buf);
  255.         NRF_CE=0;
  256.         NRF24L01_Write_Reg(WRITE_REG+CONFIG, 0x0f);
  257.         NRF_CE=1;       
  258. }
  259. /******************************ds18b20 程序 ******************************************************************/
  260. void delay_18b20(uint i) // 延時 1 微秒
  261. {
  262. while(i--);
  263. }
  264. void ds18b20rst() //ds18b20 初始化子函數(shù)
  265. // 要求"數(shù)據(jù)線拉高 - 延時 - 數(shù)據(jù)線拉低 - 延時大于 480 微妙 -數(shù)據(jù)線拉高 - 延時等待 "
  266. {
  267. uchar x=0;
  268. DQ = 1; // 信號線 DQ復(fù)位
  269. delay_18b20(4); // 延時
  270. DQ = 0; //DQ 拉低
  271. delay_18b20(100); // 精確延時大于 480us
  272. DQ = 1; // 拉高
  273. delay_18b20(40);
  274. }
  275. void ds18b20wr(uchar wdata) /* 寫數(shù)據(jù)子函數(shù) , 無返回值,含參數(shù) */
  276. {
  277. uchar i=0;
  278. for (i=8; i>0; i--)// 要寫完一個字節(jié),故需要重復(fù) 8 次以下操作
  279. {
  280. DQ = 0; // 數(shù)據(jù)線拉低
  281. DQ = wdata&0x01;//wdata 是一個形參,將其與 0000 0001 進(jìn)行按位與
  282. // 按從低到高的順序發(fā)送數(shù)據(jù)(一次發(fā)送一位 )
  283. delay_18b20(10);
  284. DQ = 1; // 最后將數(shù)據(jù)線拉高
  285. wdata>>=1; // 將 wdata 右移 1 位
  286. }
  287. }
  288. uchar ds18b20rd() // 讀數(shù)據(jù)子函數(shù) , 是有返回值 dat
  289. {
  290. uchar i=0;
  291. uchar dat = 0;
  292. for (i=8;i>0;i--)// 要讀完一個字節(jié),故需要重復(fù) 8 次以下操作
  293. {
  294. DQ = 0; // 給脈沖信號
  295. dat>>=1;
  296. DQ = 1; // 給脈沖信號
  297. if(DQ)
  298. dat|=0x80;
  299. delay_18b20(10);
  300. }
  301. return(dat); // 返回 dat
  302. }
  303. read_temp() // 讀取溫度值并轉(zhuǎn)換的子函數(shù),有返回值溫度值 tvalue
  304. {
  305. uchar a,b;
  306. ds18b20rst(); // 調(diào)用 ds18b20 初始化子函數(shù)
  307. ds18b20wr(0xcc);// 調(diào)用寫數(shù)據(jù)子函數(shù),向 ds18b20 寫命令 0xcc
  308. //ccH 表示跳過 ROM讀序列號,適用于單機(jī)工作,直接向 18b20 發(fā)送溫度變換命令
  309. ds18b20wr(0x44);// 調(diào)用寫數(shù)據(jù)子函數(shù),向 ds18b20 寫命令 0x44
  310. //44H 表示啟動 ds18b20 溫度轉(zhuǎn)換 , 結(jié)果自行存入 9 字節(jié)的 RAM中
  311. ds18b20rst(); // 調(diào)用 ds18b20 初始化子函數(shù)
  312. ds18b20wr(0xcc);// 同上
  313. ds18b20wr(0xbe);// 調(diào)用寫數(shù)據(jù)子函數(shù),向 ds18b20 寫命令 0xbe
  314. //beH 表示讀取 RAM中 9 字節(jié)的溫度數(shù)據(jù)
  315. a=ds18b20rd(); // 調(diào)用讀數(shù)據(jù)子函數(shù),并將所得數(shù)據(jù)給 a
  316. b=ds18b20rd(); //
  317. tvalue=b; // 把 b 的值給 tvalue
  318. tvalue<<=8; //tvalue 左移 8 位
  319. tvalue=tvalue|a;//tvalue 與 a 進(jìn)行按位或
  320. if(tvalue<0x0fff)//
  321. tflag=0; // 前五位為 0 時,讀取的溫度為正,標(biāo)志位為 0,此時只要
  322. // 將測得數(shù)值乘以 0.0625 即可得到實際溫度
  323. else // 前五位為 1 時,讀取的溫度為負(fù),標(biāo)志位為 1,此時需要
  324. { // 將測得數(shù)值取反后再加 1,再乘以 0.0625 即可得到實際溫度
  325. tvalue=~tvalue+1;
  326. tflag=1; // 此時表示負(fù)溫度
  327. }
  328. tvalue=tvalue*(0.625);// 溫度值擴(kuò)大 10 倍,精確到 1 位小數(shù)
  329. return(tvalue); // 返回溫度值
  330. }
  331. /**********************************************/


  332. void main()
  333. {uchar flagdat;
  334.         while(NRF24L01_Check()); // 等待檢測到NRF24L01,程序才會向下執(zhí)行
  335.         NRF24L01_RT_Init();               

  336.         while(1)
  337.         {
  338.                 if(NRF_IRQ==0)                 // 如果無線模塊接收到數(shù)據(jù)
  339.                 {               
  340.                         if(NRF24L01_RxPacket(rece_buf)==0)
  341.                         {                          
  342.                                 if(        rece_buf[1]=='1')                           //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
  343.                                         LED=0;
  344.                                 if(        rece_buf[1]=='2')                         //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
  345.                                         LED=1;               
  346.                         }
  347.                 }
  348.                 read_temp(); // 調(diào)用 ds18b20 讀取溫度       
  349.        

  350.                   rece_buf[1]='T';
  351.                   rece_buf[2]='=';
  352.       
  353.                  rece_buf[3]='+'; // 百位數(shù);
  354.                         rece_buf[4]=tvalue%1000/100+0x30;// 十位數(shù);
  355.                         rece_buf[5]=tvalue%100/10+0x30; // 個位數(shù);
  356.       rece_buf[6] ='.';
  357.                   rece_buf[7] =tvalue%10+0x30; // 小數(shù)位
  358.      rece_buf[8]='C';
  359.                  rece_buf[9]=0x0d;
  360.                  rece_buf[10]=0x0a;//串口助手換行
  361.                         rece_buf[0]=10;                                                  //一共要發(fā)送10個字節(jié),rece_buf[0]必須是10!!!!!!
  362.                         SEND_BUF(rece_buf);
  363.                

  364.                 delay(1000);
  365.         }
  366. }
復(fù)制代碼

全部資料51hei下載地址:
DS18B20采集溫度,并通過串口助手顯示采集的溫度.zip (43.69 KB, 下載次數(shù): 49) 圖片.zip (4.84 MB, 下載次數(shù): 25)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:858367 發(fā)表于 2021-1-8 09:17 | 只看該作者
樓主辛苦,資料不錯
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲免费在线视频 | av在线播放不卡 | 午夜免费影视 | 一级做a爰片久久毛片 | 精品中文字幕在线 | 日韩在线观看中文字幕 | 国产精品一区二区三区四区 | 欧美在线观看一区 | 97色免费视频| 国产一级片免费在线观看 | 偷拍自拍第一页 | 欧美精品首页 | 亚洲精品欧美一区二区三区 | 久久久精品国产 | 精产国产伦理一二三区 | 欧美三级在线 | 国产精品视频免费看 | 中国黄色毛片视频 | 日韩高清一区 | av在线播放网址 | 亚洲国产成人一区二区 | 亚洲 欧美 日韩 精品 | 亚洲天堂中文字幕 | 在线视频一区二区 | 99视频在线 | 凹凸日日摸日日碰夜夜 | 狠狠ri | 黄视频网址 | 成年人免费看 | 欧美日韩国产在线观看 | 视频第一区 | 国产一区二区视频免费在线观看 | 国产精品久久久 | 午夜精品久久久久久久久久久久久 | 国产精品美女久久久久久免费 | 国产精品一级 | 一片毛片 | 男女羞羞视频在线 | 中文字字幕一区二区三区四区五区 | 麻豆精品一区二区三区在线观看 | 日韩中文字幕一区 |