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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 935|回復: 3
打印 上一主題 下一主題
收起左側

基于stm32單片機智能衣柜程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:1142615 發表于 2025-1-7 00:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
①通過WIFI模塊在手機APP實時監測室內環境;
②室內的溫濕度數據;
③室內的空氣質量數據;
④室內的煙霧數據;
⑤超過設定閾值自動警示;
⑥在系統LCD屏顯示各項數據。

單片機源程序如下:
  1. #include "sys.h"
  2. #include "usart.h"
  3. #include "led.h"
  4. #include "delay.h"
  5. #include "timer.h"
  6. #include "ADC.h"
  7. #include "usart3.h"
  8. #include "key.h"
  9. #include "oled.h"
  10. #include "math.h"
  11. #include "dht11.h"
  12. #include "bmp280.h"
  13. #include "gizwits_product.h"

  14. u32 STM32_xx0=0X4E4C4A;
  15. u32 STM32_xx1=0X364B1322;
  16. u32 STM32_xx2=0X132D13  ;

  17. #define FLASH_SAVE_ADDR 0x08010000

  18. u8 buff[30];//參數顯示緩存數組
  19. u8 count;
  20. dataPoint_t currentDataPoint;//云端數據點
  21. u8 wifi_sta;//wifi連接狀態標志
  22. u8 mode=0;//模式控制自動和手動
  23. u8 NTP_sta=0;//網諾時間獲取狀態
  24. u8 display_contrl=0;
  25. u8 curtain_flag=0;
  26. u8 last_curtain_flag=0;

  27. extern u8 DHT11_Temp,DHT11_Hum;                //溫濕度
  28. u16 Pre;                                                        //氣壓檢測值
  29. u16 gz_value;                                                //光照檢測值                        
  30. u16 m2_value;                                                //煙霧檢測值
  31. u16 m7_value;                                                //一氧化碳檢測值
  32. u16 m135_value;                                                //空氣質量檢測值

  33. u16 A_DHT11_Temp=35;                                //溫度閾值
  34. u16 A_DHT11_Hum=20;                                        //濕度閾值
  35. u16 A_pre=1500;                                                //氣壓閾值
  36. u16 A_gz_value=1000;                                //光照強度閾值
  37. u16 A_m2_value=3500;                                //煙霧閾值
  38. u16 A_m7_value=3500;                                //一氧化碳閾值
  39. u16 A_m135_value=500;                                //空氣質量閾值
  40. /************************************************


  41. ************************************************/
  42. //協議初始化
  43. void Gizwits_Init(void)
  44. {        
  45.         TIM3_Int_Init(9,7199);//1MS系統定時
  46.     usart3_init(9600);//WIFI初始化
  47.         memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));//設備狀態結構體初始化
  48.         gizwitsInit();//緩沖區初始化
  49. }

  50. //數據采集
  51. void userHandle(void)
  52. {
  53.         currentDataPoint.valueLED=!LED0;
  54.         currentDataPoint.valueCurtain=curtain_flag;
  55.         currentDataPoint.valueTemp=DHT11_Temp;
  56.         currentDataPoint.valueHum=DHT11_Hum;
  57.         currentDataPoint.valuePre=Pre;
  58.         currentDataPoint.valueGZ_Value=gz_value;
  59.         currentDataPoint.valueMQ2_Value=m2_value;
  60.         currentDataPoint.valueMQ7_Value=m7_value;
  61.         currentDataPoint.valueMQ135_Value=m135_value;
  62. }

  63. void Get_Data(u16 count);//獲取傳感器數據
  64. void WIFI_Contection(u8 key);//WiFi連接控制
  65. void Canshu_Change(u8 key);//系統參數調節
  66. void Mode_Change(u8 key);//模式切換
  67. void BUJING_Cotrol(u8 mode,u16 time,u16 count);

  68. int main(void)
  69. {        
  70.         u8 t=0;
  71.         int key_value;                //按鍵值
  72.         uart_init(115200);                         //串口初始化為115200
  73.         delay_init();            //延時函數初始化
  74.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  75.         Adc1_Channe_Init();                        //ADC通道初始化
  76.         KEY_Init();                                        //按鍵引腳初始化
  77.         bmp280Init();
  78.         //while(DHT11_Init());        
  79.         LED_Init();                                          //初始化與LED連接的硬件接口
  80.         OLED_Init();                                //OLED初始化
  81.         OLED_Clear();                                //OLED清屏
  82.         Gizwits_Init();               
  83.         
  84. //        STMFLASH_Write(FLASH_SAVE_ADDR+10,&A_DHT11_Temp,2);        //開機讀取溫度閾值
  85. //        STMFLASH_Write(FLASH_SAVE_ADDR+12,&A_DHT11_Hum,2);        //開機讀取濕度閾值
  86. //        STMFLASH_Write(FLASH_SAVE_ADDR+14,&A_pre,2);                        //開機讀取氣壓閾值
  87. //        STMFLASH_Write(FLASH_SAVE_ADDR+18,&A_gz_value,2);        //開機讀取光照強度閾值
  88. //        STMFLASH_Write(FLASH_SAVE_ADDR+20,&A_m2_value,2);        //開機讀取煙霧閾值
  89. //        STMFLASH_Write(FLASH_SAVE_ADDR+22,&A_m7_value,2);        //開機讀取一氧化碳閾值
  90. //        STMFLASH_Write(FLASH_SAVE_ADDR+24,&A_m135_value,2);        //開機讀取空氣質量閾值
  91.         
  92. //        STMFLASH_Read(FLASH_SAVE_ADDR+10,&A_DHT11_Temp,2);        //開機讀取溫度閾值
  93. //        STMFLASH_Read(FLASH_SAVE_ADDR+12,&A_DHT11_Hum,2);        //開機讀取濕度閾值
  94. //        STMFLASH_Read(FLASH_SAVE_ADDR+14,&A_pre,2);                        //開機讀取氣壓閾值
  95. //        STMFLASH_Read(FLASH_SAVE_ADDR+18,&A_gz_value,2);        //開機讀取光照強度閾值
  96. //        STMFLASH_Read(FLASH_SAVE_ADDR+20,&A_m2_value,2);        //開機讀取煙霧閾值
  97. //        STMFLASH_Read(FLASH_SAVE_ADDR+22,&A_m7_value,2);        //開機讀取一氧化碳閾值
  98. //        STMFLASH_Read(FLASH_SAVE_ADDR+24,&A_m135_value,2);        //開機讀取空氣質量閾值

  99.         while(1)
  100.         {
  101.                 Get_Data(0);
  102.                 if(gz_value<=A_gz_value&&mode==0)
  103.                 {
  104.                         LED0=0;
  105.                         curtain_flag=0;
  106.                 }else if(gz_value>A_gz_value&&mode==0){
  107.                         LED0=1;
  108.                         curtain_flag=1;
  109.                 }
  110.                 if(last_curtain_flag!=curtain_flag&&mode==0)
  111.                 {
  112.                         BUJING_Cotrol(curtain_flag,3,270);
  113.                         last_curtain_flag = curtain_flag;
  114.                 }
  115.                 if(last_curtain_flag!=currentDataPoint.valueCurtain&&mode==1)
  116.                 {
  117.                         BUJING_Cotrol(currentDataPoint.valueCurtain,3,270);
  118.                         curtain_flag = currentDataPoint.valueCurtain;
  119.                         last_curtain_flag = currentDataPoint.valueCurtain;
  120.                 }        
  121.                 if(mode==1)
  122.                 {
  123.                         LED0=!currentDataPoint.valueLED;
  124.                 }
  125.                 if(DHT11_Temp>=A_DHT11_Temp||DHT11_Hum<=A_DHT11_Hum||Pre>=A_pre||m135_value<=A_m135_value||m2_value>=A_m2_value||m7_value>=A_m7_value)
  126.                 {
  127.                         BEEP=!BEEP;
  128.                 }else BEEP = 0;

  129.                 key_value = KEY_Scan(0);
  130.                 if(key_value==2)
  131.                 {
  132.                         display_contrl++;
  133.                 }
  134.                 if(display_contrl%2==0&&t>=10)
  135.                 {
  136.                         OLED_ShowCHinese(0,0,0);
  137.                         OLED_ShowCHinese(16,0,2);
  138.                         sprintf((char*)buff,":%2dC",DHT11_Temp);
  139.                         OLED_ShowString(32,0,buff,16);        //顯示溫度
  140.                         OLED_ShowCHinese(64,0,1);
  141.                         OLED_ShowCHinese(82,0,2);
  142.                         sprintf((char*)buff,":%2d%%",DHT11_Hum);
  143.                         OLED_ShowString(96,0,buff,16);//顯示濕度        
  144.                         
  145.                         OLED_ShowCHinese(0,2,3);
  146.                         OLED_ShowCHinese(16,2,4);
  147.                         sprintf((char*)buff,":%2dhpa     ",Pre);
  148.                         OLED_ShowString(32,2,buff,16);//顯示氣壓
  149.                         
  150.                         OLED_ShowCHinese(0,4,5);
  151.                         OLED_ShowCHinese(16,4,6);
  152.                         OLED_ShowCHinese(32,4,7);
  153.                         OLED_ShowCHinese(48,4,8);
  154.                         sprintf((char*)buff,":%4dppm",gz_value);
  155.                         OLED_ShowString(64,4,buff,16);//顯示光照強度
  156.                         
  157.                         OLED_ShowCHinese(0,6,9);
  158.                         OLED_ShowCHinese(16,6,10);
  159.                         OLED_ShowCHinese(32,6,11);
  160.                         OLED_ShowCHinese(48,6,12);
  161.                         sprintf((char*)buff,":%4dppm",m135_value);
  162.                         OLED_ShowString(64,6,buff,16);//顯示空氣質量
  163.                 }else if(display_contrl%2==1&&t>=10)
  164.                 {
  165.                         OLED_ShowCHinese(0,0,13);
  166.                         OLED_ShowCHinese(16,0,14);
  167.                         OLED_ShowCHinese(32,0,15);
  168.                         OLED_ShowCHinese(48,0,16);
  169.                         sprintf((char*)buff,":%4dppm",m2_value);
  170.                         OLED_ShowString(64,0,buff,16);//顯示M2數據
  171.                         
  172.                         OLED_ShowCHinese(0,2,17);
  173.                         OLED_ShowCHinese(16,2,18);
  174.                         OLED_ShowCHinese(32,2,19);
  175.                         OLED_ShowCHinese(48,2,20);
  176.                         sprintf((char*)buff,":%4dppm",m7_value);
  177.                         OLED_ShowString(64,2,buff,16);//顯示M7數據
  178.                         
  179.                         OLED_ShowCHinese(0,4,5);
  180.                         OLED_ShowCHinese(16,4,6);
  181.                         OLED_ShowCHinese(32,4,7);
  182.                         OLED_ShowCHinese(48,4,8);
  183.                         sprintf((char*)buff,":%4dppm",gz_value);
  184.                         OLED_ShowString(64,4,buff,16);//顯示光照強度
  185.                         
  186.                         OLED_ShowCHinese(0,6,9);
  187.                         OLED_ShowCHinese(16,6,10);
  188.                         OLED_ShowCHinese(32,6,11);
  189.                         OLED_ShowCHinese(48,6,12);
  190.                         sprintf((char*)buff,":%4dppm",m135_value);
  191.                         OLED_ShowString(64,6,buff,16);//顯示M135數據
  192.                 }

  193.                 userHandle();                //用戶數據采集
  194.                 WIFI_Contection(key_value);//WiFi連接控制
  195.                 gizwitsHandle((dataPoint_t *)¤tDataPoint);//機智云協議處理
  196.                
  197.                 Canshu_Change(key_value);
  198.                
  199.                 t++;
  200.                 delay_ms(100);
  201.         }
  202. }

  203. void WIFI_Contection(u8 key)//WiFi連接控制
  204. {
  205.         if(key==4)
  206.         {
  207.                 printf("WIFI進入AirLink連接模式\r\n");
  208.                 gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
  209.         }                        
  210.         if(key==3)
  211.         {  
  212.                
  213.                 printf("WIFI復位,請重新配置連接\r\n");
  214.                 gizwitsSetMode(WIFI_RESET_MODE);//WIFI復位
  215.         }
  216. }

  217. void Canshu_Change(u8 key)
  218. {
  219.         u8 obj=7;
  220.         if(key==1)
  221.         {
  222.                 BEEP=0;
  223.                 OLED_Clear();
  224.                 while(1)
  225.                 {
  226.                         key = KEY_Scan(0);
  227.                         if(key==1)
  228.                         {
  229.                                 obj++;
  230.                                 if(obj>=8)
  231.                                 {
  232.                                         obj=0;
  233.                                 }
  234.                         }
  235.                         sprintf((char *)buff,"Working md:%4d",mode);
  236.                         OLED_ShowString(8,0,buff,12);
  237.                         sprintf((char *)buff,"A_Temp    :%4d",A_DHT11_Temp);
  238.                         OLED_ShowString(8,1,buff,12);
  239.                         sprintf((char *)buff,"A_Hum     :%4d",A_DHT11_Hum);
  240.                         OLED_ShowString(8,2,buff,12);
  241.                         sprintf((char *)buff,"A_pre     :%4d",A_pre);
  242.                         OLED_ShowString(8,3,buff,12);
  243.                         sprintf((char *)buff,"A_gz_val  :%4d",A_gz_value);
  244.                         OLED_ShowString(8,4,buff,12);
  245.                         sprintf((char *)buff,"A_m2_val  :%4d",A_m2_value);
  246.                         OLED_ShowString(8,5,buff,12);
  247.                         sprintf((char *)buff,"A_m7_val  :%4d",A_m7_value);
  248.                         OLED_ShowString(8,6,buff,12);
  249.                         sprintf((char *)buff,"A_m135_val:%4d",A_m135_value);
  250.                         OLED_ShowString(8,7,buff,12);
  251.                         if(obj==0)
  252.                         {
  253.                                 OLED_ShowString(0,0," ",12);
  254.                                 OLED_ShowString(0,1,">",12);
  255.                                 OLED_ShowString(0,2," ",12);
  256.                                 OLED_ShowString(0,3," ",12);
  257.                                 OLED_ShowString(0,4," ",12);
  258.                                 OLED_ShowString(0,5," ",12);
  259.                                 OLED_ShowString(0,6," ",12);
  260.                                 OLED_ShowString(0,7," ",12);
  261.                         }
  262.                         if(obj==1)
  263.                         {
  264.                                 OLED_ShowString(0,0," ",12);
  265.                                 OLED_ShowString(0,1," ",12);
  266.                                 OLED_ShowString(0,2,">",12);
  267.                                 OLED_ShowString(0,3," ",12);
  268.                                 OLED_ShowString(0,4," ",12);
  269.                                 OLED_ShowString(0,5," ",12);
  270.                                 OLED_ShowString(0,6," ",12);
  271.                                 OLED_ShowString(0,7," ",12);
  272.                         }
  273.                         if(obj==2)
  274.                         {
  275.                                 OLED_ShowString(0,0," ",12);
  276.                                 OLED_ShowString(0,1," ",12);
  277.                                 OLED_ShowString(0,2," ",12);
  278.                                 OLED_ShowString(0,3,">",12);
  279.                                 OLED_ShowString(0,4," ",12);
  280.                                 OLED_ShowString(0,5," ",12);
  281.                                 OLED_ShowString(0,6," ",12);
  282.                                 OLED_ShowString(0,7," ",12);
  283.                         }
  284.                         if(obj==3)
  285.                         {
  286.                                 OLED_ShowString(0,0," ",12);
  287.                                 OLED_ShowString(0,1," ",12);
  288.                                 OLED_ShowString(0,2," ",12);
  289.                                 OLED_ShowString(0,3," ",12);
  290.                                 OLED_ShowString(0,4,">",12);
  291.                                 OLED_ShowString(0,5," ",12);
  292.                                 OLED_ShowString(0,6," ",12);
  293.                                 OLED_ShowString(0,7," ",12);
  294.                         }
  295.                         if(obj==4)
  296.                         {
  297.                                 OLED_ShowString(0,0," ",12);
  298.                                 OLED_ShowString(0,1," ",12);
  299.                                 OLED_ShowString(0,2," ",12);
  300.                                 OLED_ShowString(0,3," ",12);
  301.                                 OLED_ShowString(0,4," ",12);
  302.                                 OLED_ShowString(0,5,">",12);
  303.                                 OLED_ShowString(0,6," ",12);
  304.                                 OLED_ShowString(0,7," ",12);
  305.                         }
  306.                         if(obj==5)
  307.                         {
  308.                                 OLED_ShowString(0,0," ",12);
  309.                                 OLED_ShowString(0,1," ",12);
  310.                                 OLED_ShowString(0,2," ",12);
  311.                                 OLED_ShowString(0,3," ",12);
  312.                                 OLED_ShowString(0,4," ",12);
  313.                                 OLED_ShowString(0,5," ",12);
  314.                                 OLED_ShowString(0,6,">",12);
  315.                                 OLED_ShowString(0,7," ",12);
  316.                         }
  317.                         if(obj==6)
  318.                         {
  319.                                 OLED_ShowString(0,0," ",12);
  320.                                 OLED_ShowString(0,1," ",12);
  321.                                 OLED_ShowString(0,2," ",12);
  322.                                 OLED_ShowString(0,3," ",12);
  323.                                 OLED_ShowString(0,4," ",12);
  324.                                 OLED_ShowString(0,5," ",12);
  325.                                 OLED_ShowString(0,6," ",12);
  326.                                 OLED_ShowString(0,7,">",12);
  327.                         }
  328.                         if(obj==7)
  329.                         {
  330.                                 OLED_ShowString(0,0,">",12);
  331.                                 OLED_ShowString(0,1," ",12);
  332.                                 OLED_ShowString(0,2," ",12);
  333.                                 OLED_ShowString(0,3," ",12);
  334.                                 OLED_ShowString(0,4," ",12);
  335.                                 OLED_ShowString(0,5," ",12);
  336.                                 OLED_ShowString(0,6," ",12);
  337.                                 OLED_ShowString(0,7," ",12);
  338.                         }
  339.                         if(obj==0)
  340.                         {
  341.                                 if(key==3)
  342.                                 {
  343.                                         A_DHT11_Temp+=1;
  344.                                 }
  345.                                 if(key==4)
  346.                                 {
  347.                                         A_DHT11_Temp-=1;
  348.                                 }
  349.                         }
  350.                         if(obj==1)
  351.                         {
  352.                                 if(key==3)
  353.                                 {
  354.                                         A_DHT11_Hum+=1;
  355.                                 }
  356.                                 if(key==4)
  357.                                 {
  358.                                         A_DHT11_Hum-=1;
  359.                                 }
  360.                         }
  361.                         if(obj==2)
  362.                         {
  363.                                 if(key==3)
  364.                                 {
  365.                                         A_pre+=20;
  366.                                 }
  367.                                 if(key==4)
  368.                                 {
  369.                                         A_pre-=20;
  370.                                 }
  371.                         }
  372.                         if(obj==3)
  373.                         {
  374.                                 if(key==3)
  375.                                 {
  376.                                         A_gz_value+=50;
  377.                                 }
  378.                                 if(key==4)
  379.                                 {
  380.                                         A_gz_value-=50;
  381.                                 }
  382.                         }
  383.                         if(obj==4)
  384.                         {
  385.                                 if(key==3)
  386.                                 {
  387.                                         A_m2_value+=50;
  388.                                 }
  389.                                 if(key==4)
  390.                                 {
  391.                                         A_m2_value-=50;
  392.                                 }
  393.                         }
  394.                         if(obj==5)
  395.                         {
  396.                                 if(key==3)
  397.                                 {
  398.                                         A_m7_value+=50;
  399.                                 }
  400.                                 if(key==4)
  401.                                 {
  402.                                         A_m7_value-=50;
  403.                                 }
  404.                         }
  405.                         if(obj==6)
  406.                         {
  407.                                 if(key==3)
  408.                                 {
  409.                                         A_m135_value+=50;
  410.                                 }
  411.                                 if(key==4)
  412.                                 {
  413.                                         A_m135_value-=50;
  414.                                 }
  415.                         }
  416.                         if(obj==7)
  417.                         {
  418.                                 if(key==3)
  419.                                 {
  420.                                         mode+=1;
  421.                                 }
  422.                                 if(key==4)
  423.                                 {
  424.                                         mode-=1;
  425.                                 }
  426.                                 if(mode >= 2) mode = 0;
  427.                         }
  428.                         if(key==2)
  429.                         {
  430. //                                STMFLASH_Write(FLASH_SAVE_ADDR+10,&A_DHT11_Temp,2);        //開機讀取溫度閾值
  431. //                                STMFLASH_Write(FLASH_SAVE_ADDR+12,&A_DHT11_Hum,2);        //開機讀取濕度閾值
  432. //                                STMFLASH_Write(FLASH_SAVE_ADDR+14,&A_pre,2);                        //開機讀取氣壓閾值
  433. //                                STMFLASH_Write(FLASH_SAVE_ADDR+18,&A_gz_value,2);        //開機讀取光照強度閾值
  434. //                                STMFLASH_Write(FLASH_SAVE_ADDR+20,&A_m2_value,2);        //開機讀取煙霧閾值
  435. //                                STMFLASH_Write(FLASH_SAVE_ADDR+22,&A_m7_value,2);        //開機讀取一氧化碳閾值
  436. //                                STMFLASH_Write(FLASH_SAVE_ADDR+24,&A_m135_value,2);        //開機讀取空氣質量閾值
  437.                                 OLED_Clear();
  438.                                 break;
  439.                         }
  440.                
  441.                 }
  442.         }
  443. }

  444. void Get_Data(u16 count)//獲取傳感器數據
  445. {
  446.         static float bmp280_press,bmp280;                                //氣壓
  447.         
  448.         DHT11_Read_Data(&DHT11_Temp,&DHT11_Hum);
  449.         
  450.         bmp280GetData(&bmp280_press,&bmp280,&bmp280);
  451.         Pre = bmp280_press;
  452.         
  453.         gz_value   = 4096 - get_Adc_Value(0x04);
  454.         
  455.         m2_value   = get_Adc_Value(0x07);
  456.         
  457.         m7_value   = get_Adc_Value(0x05);
  458.         
  459.         m135_value = 4096 - get_Adc_Value(0x06);
  460. }
  461. //void Mode_Change(u8 key)
  462. //{
  463. //        if(key==2)
  464. //        {
  465. //                mode++;
  466. //                if(mode>=2) mode = 0;
  467. //        }
  468. //        if(mode==0) OLED_ShowString(0,0,"MODE:Auto",12); //HM
  469. //        if(mode==1) OLED_ShowString(0,0,"MODE:H_M_",12); //HM
  470. //}

  471. void BUJING_Cotrol(u8 mode,u16 time,u16 count)
  472. {
  473.         if(mode==0)
  474.         {
  475.                 while(count--)
  476.                 {
  477.                         BUJ1=1; BUJ2=0; BUJ3=0;BUJ4=0;
  478.                         delay_ms(time);
  479.                         BUJ1=0; BUJ2=1; BUJ3=0;BUJ4=0;
  480.                         delay_ms(time);
  481.                         BUJ1=0; BUJ2=0; BUJ3=1;BUJ4=0;
  482.                         delay_ms(time);
  483.                         BUJ1=0; BUJ2=0; BUJ3=0;BUJ4=1;
  484.                         delay_ms(time);
  485.                 }
  486.         }
  487.         if(mode==1)
  488.         {
  489.                 while(count--)
  490.                 {
  491.                         BUJ1=0; BUJ2=0; BUJ3=0;BUJ4=1;
  492.                         delay_ms(time);
  493.                         BUJ1=0; BUJ2=0; BUJ3=1;BUJ4=0;
  494.                         delay_ms(time);
  495.                         BUJ1=0; BUJ2=1; BUJ3=0;BUJ4=0;
  496.                         delay_ms(time);
  497.                         BUJ1=1; BUJ2=0; BUJ3=0;BUJ4=0;
  498.                         delay_ms(time);
  499.                 }
  500.         }
  501. }
復制代碼

原理圖: 無
仿真: 無
代碼: (8)程序源碼.7z (566.74 KB, 下載次數: 0)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1142265 發表于 2025-1-7 15:52 | 只看該作者
看起來不錯哦
回復

使用道具 舉報

板凳
ID:336378 發表于 2025-1-10 18:35 | 只看該作者
  這么高檔的衣柜???
回復

使用道具 舉報

地板
ID:830831 發表于 2025-1-11 09:04 | 只看該作者
這是閉門造牛呀,無病呻吟,
很多學生寫文檔就是,脫離了實際
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清在线观看 | 91麻豆产精品久久久久久夏晴子 | 韩日在线 | 一区二区av | 亚洲+变态+欧美+另类+精品 | 国产免费又黄又爽又刺激蜜月al | 少妇精品亚洲一区二区成人 | 久久精品国产一区二区电影 | 欧美精品日韩精品 | 亚洲精品电影网在线观看 | 国产精品久久久久久久免费观看 | 天天操 夜夜操 | 中文字幕精品一区二区三区在线 | 精品中文字幕在线观看 | 男女激情网站免费 | 成人久久 | 久久国产美女视频 | 一区二区三区视频免费看 | 亚洲成人播放器 | 麻豆久久久久久 | 国产激情在线播放 | 日本精品一区二区三区在线观看 | 成人深夜小视频 | 久久久99精品免费观看 | 亚洲三区在线观看 | 亚洲在线一区 | 日韩精品中文字幕在线 | 日韩午夜| 色综合久久伊人 | 五月激情六月婷婷 | 久久成人精品一区二区三区 | 麻豆国产精品777777在线 | 欧美日韩中文字幕 | 久久这里只有 | 中文成人无字幕乱码精品 | 福利av在线 | 美国十次成人欧美色导视频 | 在线免费观看色 | 久久精品国产亚洲一区二区三区 | 亚洲精品视频观看 | 91精品国产综合久久久久 |