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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機LCD1602顯示的溫度控制系統設計 包括時間顯示 校時、設置最值溫度報警功能

[復制鏈接]
跳轉到指定樓層
樓主
1、將DS18B20溫度傳感器的溫度讀出來,并在LCD1602上顯示出來。
2、在LCD上分別切換顯示,軟件設計時鐘(時、分、秒),和當前溫度值,和溫度上下控制值。并可以通過按鍵進行修改設置,溫度高于上限,或下線都由蜂鳴器發出報警聲。 T-LCD - 副本.rar (225.17 KB, 下載次數: 108)

3、實現校時、校分、校秒功能。
附件里附帶所有程序、工程以及仿真圖,仿真圖為T-LCD2,程序工程為T-LCD,主程序是main.c
實驗原理圖:

單片機效果圖:
模式0為顯示溫度 時間 模式123分別為調個位、十位、十分位 按對應的按鍵就能實現調最高或最低 模式45顯示最高、最低溫度

程序部分:
570行主程序+100溫度傳感器+70行1602顯示 實現單片機溫度時間顯示 精確到十分位 并且有校時、設置最值溫度報警功能 精確到十分位

具體的代碼功能在附件程序里都有標注
  1. #include<reg52.h>  //調用52單片機庫
  2. #include"1602.h"   //調用LCD1602庫
  3. #include"ds18b20.h"   //調用ds18b20溫度傳感器
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uchar hour,min,sec,count,hour1,hour2,  //定義小時 分鐘 秒 對應的十位個位 以及 count計數
  7. sec1,sec2,min1,min2;

  8. sbit speaker=P2^1;                  //定義蜂鳴器
  9. sbit key1=P1^0;                          //最低溫度設置
  10. sbit key2=P1^1;              //最高溫度設置
  11. sbit key3=P1^2;       //連接切換模式的備用開關 P33和P12口短接 用于切換模式和退出報警中斷


  12. sbit keyh=P1^5;  //校時
  13. sbit keym=P1^6;  //校分
  14. sbit keys=P1^7;  //校秒
  15. //定義時間按鍵

  16. uint  tem;                                  //定義采集溫度
  17. int htem,htem2,time,time2,x,y,z,dot,dot2,maxtem,mintem;                          //定義溫度十位數、個位數、小數,以及其三種模式的標記值
  18. int cnt1=1,cnt2=1,cnt3=1,cnt4=1,cnt5=1,cnt6=1,cnt7=1;                  //定義計數變量
  19. int i;
  20. uchar mode=0;                          //定義模式變量
  21. uchar code t3[]={"  H/L=0/1:     C"};    //顯示調最值溫度的十位
  22. uchar code t4[]={"O/D:           C"};    //顯示調最值溫度的個位/小數位字模
  23. uchar code table2[]={  
  24. '0','1','2','3','4','5','6','7','8','9',':'};   //顯示時間的字模
  25. uchar code t5[]={"Max         . CD"};         //顯示最高溫度的字模
  26. uchar code t6[]={"Min         . CD"};         //顯示最低溫度的字模


  27. //延時函數
  28. void delay1(uint i)
  29. {
  30.         while(i--);        
  31. }



  32. //顯示函數1  初始顯示
  33. void display(uint dat,uchar add)
  34. {
  35. uchar bai,shi ,ge;
  36. bai=dat/100;
  37. shi=dat%100/10;
  38. ge=dat%10;                                                                                   
  39. writelcd_cmd(add);
  40. writelcd_dat(bai+0x30);
  41. writelcd_dat(shi+0x30);
  42. writelcd_cmd(add+3);
  43. writelcd_dat(ge+0x30);
  44. }

  45. void lcd_min()   //定義最小溫度顯示
  46. {
  47.         uchar l;
  48.         
  49. writelcd_cmd(0x38);   //初始化屏那迤粱
  50. delay(5);
  51. writelcd_cmd(0x38);
  52. delay(5);
  53. writelcd_cmd(0x38);
  54. writelcd_cmd(0x08);
  55. writelcd_cmd(0x01);
  56. writelcd_cmd(0x06);
  57. writelcd_cmd(0x0c);
  58. writelcd_cmd(0x80);
  59.         
  60.                 writelcd_cmd(0xc0);
  61.                                                 for(l=0;l<16;l++)                  //依次讀取t6并顯示
  62.                                                 {
  63.                                         writelcd_dat(t6[l]);
  64.                                                 }
  65.                                                 
  66.                                                 display(mintem,0xca);
  67.                                                 delay1(5000000000);   //延時顯示
  68. }

  69. void lcd_max()  //定義最大溫度顯示
  70. {
  71.         uchar k;
  72.         writelcd_cmd(0x38);   //初始化屏幕清屏
  73. delay(5);
  74. writelcd_cmd(0x38);
  75. delay(5);
  76. writelcd_cmd(0x38);
  77. writelcd_cmd(0x08);
  78. writelcd_cmd(0x01);
  79. writelcd_cmd(0x06);
  80. writelcd_cmd(0x0c);
  81. writelcd_cmd(0x80);
  82.         writelcd_cmd(0xc0);
  83.                                                 for(k=0;k<16;k++)                  //依次讀取t5并顯示
  84.                                                 {
  85.                                         writelcd_dat(t5[k]);
  86.                                                 }
  87.                                                 display(maxtem,0xca);
  88.                                                 delay1(5000000000);
  89. }

  90. void write_Char(unsigned char a,unsigned char b,unsigned char dat) //顯示時間程序母程序 定位
  91. {      
  92. if (b == 0)   
  93.     {      
  94.     writelcd_cmd(0x80 + a);      
  95.     }      
  96. else   
  97.     {      
  98.     writelcd_cmd(0xC0 + a);      
  99.     }         
  100. writelcd_dat(dat);   
  101. }   

  102. void display4(uchar hour1,uchar hour2,uchar min1,uchar min2,uchar sec1,uchar sec2)    //顯示時間子程序  取值
  103. {     

  104.    
  105.     write_Char(4,0,table2[hour1]);                    //顯示小時
  106.     write_Char(5,0,table2[hour2]);  
  107.     write_Char(6,0,table2[0x0a]);                   //顯示冒號
  108.     write_Char(7,0,table2[min1]);                    //分鐘
  109.     write_Char(8,0,table2[min2]);  
  110.     write_Char(9,0,table2[0x0a]);                    //顯示冒號
  111.     write_Char(10,0,table2[sec1]);                    //秒
  112.     write_Char(11,0,table2[sec2]);
  113.         
  114.   
  115. }  


  116. //顯示函數2  調最值溫度低十位 在LCD上排顯示
  117. void display2(uint dat,uchar add)
  118. {
  119. uchar bai,shi ;
  120. bai=dat/100;
  121. shi=dat%100/10;
  122. //ge=dat%10;                                                                                   
  123. writelcd_cmd(add);
  124. writelcd_dat(shi+0x30);
  125. writelcd_dat(bai+0x30);
  126. writelcd_cmd(add+3);
  127. //writelcd_dat(ge+0x30);
  128. }


  129. //顯示函數3  調最值溫度的個位/小數 在LCD下排顯示
  130. void display3(uint dat,uchar add)
  131. {
  132. uchar ge;
  133. //bai=dat/100;
  134. //shi=dat%100/10;
  135. ge=dat%10;                                                                                   
  136. writelcd_cmd(add);
  137. //writelcd_dat(shi+0x30);
  138. //writelcd_dat(bai+0x30);
  139. //writelcd_cmd(add+3);
  140. writelcd_dat(ge+0x30);
  141. }


  142. //按鍵掃描函數
  143. void keyscan()
  144. {  uchar i,j;  //定義i/j
  145.    writelcd_cmd(0x80);  //顯示函數表示以此顯示t3字模里面的字符
  146.    for(i=0;i<16;i++)
  147.    {writelcd_dat(t3[i]);}
  148.    writelcd_cmd(0xc0);
  149.    for(j=0;j<16;j++)   //顯示函數表示以此顯示t4字模里面的字符
  150.    {writelcd_dat(t4[j]);}
  151.   
  152.    while(mode!=0)  //當mode不為0時
  153.    {
  154. display2(htem,0x8b);  //顯示調十位        
  155. display3(time,0xca);   //顯示調個位小數位
  156.                  
  157.    while(mode!=0)
  158.    {
  159.            switch(mode)  //切換模式case語句循環 5個模式 5個循環 6個變量 初始模式為0 切換后對應地方的光標閃爍
  160.            {
  161.                         
  162.            case 1:writelcd_cmd(0xc0+10);writelcd_cmd(0x0f);break;  //調個位
  163.            case 2:writelcd_cmd(0x80+11);writelcd_cmd(0x0f);break;  //調十位
  164.                  case 3:writelcd_cmd(0xc0+10);writelcd_cmd(0x0f);break;  //調小數位                                 
  165.                  case 4:lcd_max();break;                                  //顯示最大溫度
  166.                  case 5:lcd_min();break;  //顯示最小溫度
  167.            default:mode=0;break;
  168.            }
  169.                  
  170.           if(key2==0&&mode==1)  //模式為1 key2為0時 調最高位的個位
  171.           {
  172.                         delay(50);  //按鍵消抖
  173.             y=0;display3(y,0x80);writelcd_cmd(0xca+11);   //max one 在左上角顯示0 表示調最高溫度
  174.                   
  175.                   if(key2==0)
  176.                 {  
  177.                         delay(10);  //十個循環 對應0-9數字
  178.                    cnt1++;  //計數+1
  179.                    while(key2==0);
  180.                    switch(cnt1%11)  //按鍵到10以后清零
  181.                    {
  182.                         case 1:time=0;display3(time,0xca);writelcd_cmd(0xca+11);break;                           //在0xca的地方顯示個位值 光標閃爍
  183.                   case 2:time=1;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  184.             case 3:time=2;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  185.             case 4:time=3;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  186.                         case 5:time=4;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  187.                         case 6:time=5;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  188.                         case 7:time=6;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  189.                         case 8:time=7;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  190.                         case 9:time=8;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  191.                         case 10:time=9;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  192.                         
  193.                         default:break;        
  194.                    }        
  195.                 }
  196.           }
  197.                 if(key1==0&&mode==1)  //類似 最低個位
  198.           {
  199.                         delay(50);
  200.             y=1;display3(y,0x80);writelcd_cmd(0xca+11);  //min one 在左上角顯示1 表示調最低溫度
  201.                   
  202.                   if(key1==0)
  203.                 {  
  204.                         delay(10);
  205.                    cnt4++;
  206.                    while(key1==0);
  207.                    switch(cnt4%11)
  208.                    {
  209.                         case 1:time2=0;display3(time2,0xca);writelcd_cmd(0xca+11);break;         
  210.                   case 2:time2=1;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  211.             case 3:time2=2;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  212.             case 4:time2=3;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  213.                         case 5:time2=4;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  214.                         case 6:time2=5;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  215.                         case 7:time2=6;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  216.                         case 8:time2=7;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  217.                         case 9:time2=8;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  218.                         case 10:time2=9;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  219.                         
  220.                         default:break;        
  221.                    }        
  222.                 }
  223.           }
  224.           if(key2==0&&mode==2)  //最高十位
  225.           {
  226.           delay(10);
  227.                         x=00;display2(x,0x80);writelcd_cmd(0x80+11);  //max ten 在左上角顯示00 表示調最高
  228.           if(key2==0)
  229.                   {
  230.                    cnt2++;
  231.                    while(key2==0);
  232.                    switch(cnt2%11)
  233.                    {
  234.                                 
  235.                     case 1:htem=00;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  236.                     case 2:htem=10;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  237.                     case 3:htem=20;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  238.                           case 4:htem=30;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  239.                     case 5:htem=40;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  240.                     case 6:htem=50;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  241.                     case 7:htem=60;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  242.                     case 8:htem=70;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  243.                     case 9:htem=80;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  244.                     case 10:htem=90;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  245.                                  
  246.         
  247.                                 
  248.                     default:break;
  249.                    }
  250.                   }
  251.                         

  252.           }
  253.                 if(key1==0&&mode==2)
  254.           {
  255.           delay(10);
  256.                         x=10;display2(x,0x80);writelcd_cmd(0x80+11); //min ten 在左上角顯示10表示 調最低
  257.           if(key1==0)
  258.                   {
  259.                    cnt3++;
  260.                    while(key1==0);
  261.                    switch(cnt3%11)
  262.                    {
  263.                                 
  264.                     case 1:htem2=00;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  265.                     case 2:htem2=10;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  266.                     case 3:htem2=20;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  267.                           case 4:htem2=30;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  268.                     case 5:htem2=40;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  269.                     case 6:htem2=50;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  270.                     case 7:htem2=60;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                 
  271.                     case 8:htem2=70;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  272.                     case 9:htem2=80;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                 
  273.                     case 10:htem2=90;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                 
  274.                         
  275.                                 
  276.                     default:break;
  277.                    }
  278.                   }
  279.                         

  280.           }
  281.                 if(key2==0&&mode==3)  //最高小數
  282.           {
  283.                         delay(50);
  284.                           z=00;display2(z,0x80);writelcd_cmd(0xca+11); //max dot
  285.                   
  286.                   if(key2==0)
  287.                 {  
  288.                         delay(10);
  289.                    cnt5++;
  290.                    while(key2==0);
  291.                    switch(cnt5%11)
  292.                    {
  293.                         case 1:dot=0;display3(dot,0xca);writelcd_cmd(0xca+11);break;         
  294.                   case 2:dot=1;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  295.             case 3:dot=2;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  296.             case 4:dot=3;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  297.                         case 5:dot=4;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  298.                         case 6:dot=5;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  299.                         case 7:dot=6;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  300.                         case 8:dot=7;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  301.                         case 9:dot=8;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  302.                         case 10:dot=9;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  303.                         
  304.                         default:break;        
  305.                    }        
  306.                 }
  307.           }
  308.                 if(key1==0&&mode==3)  //最低小數
  309.           {
  310.                         delay(50);
  311.                            z=10;display2(z,0x80);writelcd_cmd(0xca+11);   //min dot
  312.                   
  313.                   if(key1==0)
  314.                 {  
  315.                         delay(10);
  316.                    cnt6++;
  317.                    while(key1==0);
  318.                    switch(cnt6%11)
  319.                    {
  320.                         case 1:dot2=0;display3(dot2,0xca);writelcd_cmd(0xca+11);break;         
  321.                   case 2:dot2=1;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  322.             case 3:dot2=2;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  323.             case 4:dot2=3;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  324.                         case 5:dot2=4;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  325.                         case 6:dot2=5;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  326.                         case 7:dot2=6;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  327.                         case 8:dot2=7;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  328.                         case 9:dot2=8;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  329.                         case 10:dot2=9;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  330.                         
  331.                         default:break;        
  332.                    }        
  333.                 }
  334.           }
  335.                
  336.                 if(mode==4)  //模式4 顯示最大溫度
  337.           {
  338.                         maxtem=htem*10+time*10+dot;
  339.                         lcd_max();                        
  340.           }
  341.                
  342.                 if(mode==5)  //最低溫度
  343.           {
  344.                         mintem=htem2*10+time2*10+dot2;
  345.                         lcd_min();                    
  346.           }
  347.                
  348.    }
  349.   }
  350.   lcd_init();  //模式為0時執行LCD初始化函數
  351. }




  352. //中斷初始化函數
  353. void init()
  354. {
  355.   lcd_init();                   //lcd初始化
  356.    speaker=1;  //蜂鳴器口默認高電平
  357.    mode=0;  //模式默認0
  358.    htem=80;  //最高溫度默認80
  359.    time=0;
  360.         htem2=10;  //最低溫度默認10
  361.         time2=0;
  362.         dot=0;
  363.         dot2=0;
  364.         EA=1;                                //總中斷開啟
  365.    EX1=1;                                //外部中斷1允許
  366.    ET1=1;                                //定時器1允許
  367.    TMOD=0X01;                        //定時中斷1,模式1
  368.    IT1=1;                                //中斷1 下降沿觸發
  369.    TH1=0Xee;                        //定時中斷1 0.5us
  370.    TL1=0X00;
  371.          TR1=0;  //定時中斷1默認關閉
  372.         
  373.           count=0;    //時間計數默認為0
  374.     hour=00;    //小時00
  375.     min=00;    //分鐘00
  376.     sec=00;    //秒00
  377.      
  378.     TH0=(65536-50000)/256;    //內部中斷T0初始化
  379.     TL0=(65536-50000)%256;   
  380.     TR0=1;    //內部中斷T0開啟
  381.     ET0=1;  
  382.         
  383. }



  384. //主函數
  385. void main()
  386. {  
  387.   P1=0xe7;     //初始P1口,P14,P13為低電平 使S1 S5 S9 S14 S15 S16變為接地的普通開關 S9與P33短接 用于切換模式和退出報警中斷
  388.          init();                  //中斷初始化
  389.         
  390.         

  391.         while(1)
  392.         {  
  393.                 if(mode!=0)                  //當模式不為0
  394.                 {keyscan();}                  //執行按鍵掃描 以及調溫度的程序

  395.              else if(mode==0)                  //模式為0時
  396.                 {
  397.                                 delay(100);
  398.                     tmpchange();                  //在ds18b20取數據
  399.                         tem=tmp();                         //溫度值獲取 為整數 且小數位實際上是個位 如35.5攝氏度對應的值是355
  400.                         
  401.         if(keyh==0)                 //當S14閉合時 實現小時加一  
  402.         {  
  403.             delay(5);  
  404.             if(keyh==0)  
  405.             {     
  406.                 if(hour!=23)    hour++;                    //hour=23后清零
  407.                 else            hour=0;  
  408.             }  
  409.             while(!keyh);                       //檢測松手      
  410.               
  411.         }  
  412.   
  413.         if(keym==0)              //實現分鐘加一  
  414.         {  
  415.             delay(5);  
  416.             if(keym==0)  
  417.             {     
  418.                 if(min!=59)                    //59后清零
  419.                 {  
  420.                     min++;  
  421.                 }  
  422.                 else   
  423.                 {  
  424.                     min=0;  
  425.                 }  
  426.             }  
  427.             while(!keym);       //松手檢測  
  428.               
  429.         }  
  430.   
  431.         if(keys==0)             //實現秒加一  
  432.         {  
  433.             delay(5);  
  434.             if(keys==0)  
  435.             {     
  436.                 if(sec!=59)                    //59后清零
  437.                 {  
  438.                     sec++;  
  439.                 }  
  440.                 else   
  441.                 {  
  442.                     sec=0;  
  443.                 }  
  444.             }  
  445.             while(!keys);  
  446.             
  447.         }  
  448.   
  449.         hour1=hour/10;                    //小時十位
  450.         hour2=hour%10;                    //小時個位
  451.         min1=min/10;                    //分鐘十位
  452.         min2=min%10;                    //分鐘個位
  453.         sec1=sec/10;                    //秒十位
  454.         sec2=sec%10;                    //秒個位
  455.   
  456.               
  457.                 maxtem=htem*10+time*10+dot;
  458.                 mintem=htem2*10+time2*10+dot2;
  459.                     

  460.                         if(tem>=maxtem)                //高于最高
  461.                         {
  462.                           TR1=1;                                //T1中斷開啟
  463.                                                                     
  464.                         }
  465.                         else if(tem<=mintem)                //低于最低
  466.                         {
  467.                           TR1=1;                                //T1中斷開啟
  468.                                                                      
  469.                         }
  470.                         else                                     //處于中間
  471.                         {
  472.                         TR1=0;                                        //T1中斷關閉
  473.                                            //報警燈滅
  474.                         }
  475.                         
  476.                         delay(10);
  477.                     display(tem,0xca);                  //一直顯示溫度
  478.                           display4(hour1,hour2,min1,min2,sec1,sec2);  //一直顯示時鐘  

  479.                     delay(100);
  480.                         
  481.                         
  482. ……………………

  483. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:440028 發表于 2022-1-11 14:54 | 只看該作者
lidianxiaofang.c(48): warning C206: 'writelcd_cmd': missing function-prototype
程序編譯沒有通過
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看中文字幕视频 | 精品免费视频 | 在线亚洲免费视频 | 亚洲精品电影网在线观看 | 亚洲不卡在线视频 | 91麻豆精品国产91久久久更新资源速度超快 | 中文字幕亚洲专区 | 欧美伊人 | 色综合视频 | 男人视频网站 | 日韩欧美1区2区 | 操人网| 久久久久久亚洲精品 | 亚洲色欲色欲www | 欧美 日韩 在线播放 | 午夜久久久 | 亚洲高清在线 | 亚洲综合色站 | 日韩精品一区二区三区在线观看 | 国产精品一区二区不卡 | 欧美日韩在线高清 | 中文字幕在线观看一区二区 | 日韩精品1区2区 | 精品视频www | 国产aa | 日本成人免费网站 | 亚洲精品一区av在线播放 | 一区二区三区高清不卡 | 欧美精品成人 | 日本国产一区二区 | 99久久国产综合精品麻豆 | 免费美女网站 | 国产一级一级国产 | 成人国产精品色哟哟 | 国产高清一区二区三区 | 久久久黑人 | 亚洲欧美日韩在线 | 一区二区三区久久久 | 中文字幕日韩欧美 | 特级做a爰片毛片免费看108 | 少妇一级淫片免费放播放 |