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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8196|回復(fù): 7
收起左側(cè)

單片機(jī)電子密碼鎖門禁系統(tǒng)設(shè)計(jì) AT24C02保存密碼

  [復(fù)制鏈接]
ID:347868 發(fā)表于 2019-1-8 10:21 | 顯示全部樓層 |閱讀模式
   該設(shè)計(jì)基于STC單片機(jī)設(shè)計(jì),電路主要由51單片機(jī)最小系統(tǒng)和按鍵部分、蜂鳴器報(bào)警部分、LCD液晶顯示部分等組成。該電路設(shè)計(jì)簡(jiǎn)單,單層板加上幾根跳線即可完成,適合電子初學(xué)者DIY制作。
電子密碼鎖具體功能介紹:
1、該電子密碼鎖默認(rèn)密碼為1234567890,密碼通過(guò)鍵盤輸入,若密碼正確,則將鎖打開(kāi)。
2、密碼可以由用戶自己修改設(shè)定(只支持6位密碼),鎖打開(kāi)后才能修改密碼。修改密碼之前必須再次輸入密碼,在輸入新密碼時(shí)候需要二次確認(rèn),以防止誤操作。
3、報(bào)警、鎖定鍵盤功能。密碼輸入錯(cuò)誤顯示器會(huì)出現(xiàn)錯(cuò)誤提示,若密碼輸入錯(cuò)誤次數(shù)超過(guò)3次,蜂鳴器報(bào)警并且鎖定鍵盤。
4、AT24C02保存密碼,支持復(fù)位保存,掉電保存功能。
附件內(nèi)容包括:
整個(gè)電子密碼鎖原理圖和PCB源文件,用AD軟件打開(kāi);
BOM表;
源代碼(有詳細(xì)的中文注釋);

文件內(nèi)含PCB原理圖,元件清單,源程序。

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png 0.png

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define        uchar unsigned char
  4. sbit l1=P1^0;        //LED指示
  5. sbit bump=P2^2;        //蜂鳴器控制
  6. sbit relay=P2^3;//繼電器輸出
  7. sbit lcden=P2^7;//LCD1602液晶控制端
  8. sbit lcdrs=P2^6;
  9. sbit sda=P2^0;        //AT24C02數(shù)據(jù)端口
  10. sbit scl=P2^1;        //時(shí)鐘端口
  11. /**********顯示內(nèi)容**************************/
  12. uchar code xianshi0[]="input  password:";
  13. uchar code xianshi1[]="please come in!";
  14. uchar code xianshi2[]="*";
  15. uchar code xianshi3[]=" you are thief!";
  16. uchar code xianshi4[]=" new  password:";
  17. uchar code xianshi5[]=" alter succeed!";
  18. uchar code xianshi6[]="  first error!";
  19. uchar code xianshi7[]="  second error!";
  20. uchar code xianshi8[]="  third error!";
  21. uchar code xianshi9[]="  alter fail!!";
  22. uchar table[8];                         //給按鍵輸入留取存儲(chǔ)空間
  23. uchar table1[8];                 //給密碼修改留取存儲(chǔ)空間
  24. uchar mima[8];                         //給從存儲(chǔ)中讀取密碼留取存儲(chǔ)空間
  25. uchar num,num1,num2,num3,etimes,fanhui,kai;
  26. bit alterflog,cpflog,suoflog;//定義各種標(biāo)志位 修改密碼鍵按下標(biāo)志   密碼比較正確標(biāo)志  上鎖標(biāo)志
  27. void keyscan();                                                  //聲明鍵盤掃描函數(shù)
  28. void init();
  29. void keydeal15();
  30. void keydeal16();                                                  //聲明初始化函數(shù)
  31. /********************延時(shí)一毫秒函數(shù)**************/        
  32. void delay_xs(uint x)
  33. {          uint i,j;
  34.         for(i=x;i>0;i--)         for(j=110;j>0;j--);}
  35. void writecom(uchar com)        //寫命令
  36. {
  37.         lcdrs=0;         P0=com;                 delay_xs(5);
  38.         lcden=1;          delay_xs(5);                 lcden=0;
  39. }
  40. /*********************液晶寫命令數(shù)據(jù)函數(shù)******************/
  41. void writedate(uchar date)        //寫命令
  42. {
  43.         lcdrs=1;         P0=date;        delay_xs(5);
  44.         lcden=1;         delay_xs(5);        lcden=0;
  45. }
  46. /***************24c02讀取寫入數(shù)據(jù)初始化****************/
  47. void delay()  //微妙級(jí)延時(shí)函數(shù)
  48. { ;; }
  49. void start()  //開(kāi)始信號(hào)
  50. {        
  51.         sda=1;         delay(); scl=1;        delay(); sda=0;        delay();
  52. }

  53. void stop()   //停止
  54. {
  55.         sda=0;delay();scl=1;delay();sda=1;delay();
  56. }
  57. void respons()  //應(yīng)答
  58. {
  59.         uchar i;
  60.         scl=1;        delay();
  61.         while((sda==1)&&(i<250)) i++;
  62.         scl=0;         delay();
  63. }
  64. void write_byte(uchar date)                //寫一位數(shù)據(jù)
  65. {
  66.         uchar i,temp;
  67.         temp=date;


  68.         for(i=0;i<8;i++)
  69.         {
  70.                 temp=temp<<1;
  71.                 scl=0; delay();        sda=CY;        delay();
  72.                 scl=1; delay();
  73.         }
  74.         scl=0;         delay();
  75.         sda=1;         delay();
  76. }

  77. uchar read_byte()                           //讀一位數(shù)據(jù)
  78. {
  79.         uchar i,k;
  80.         scl=0;         delay();
  81.         sda=1;        delay();
  82.         for(i=0;i<8;i++)
  83.         {
  84.                 scl=1;        delay();        
  85.                 k=(k<<1)|sda;
  86.                 scl=0;        delay();        
  87.         }
  88.         return k;
  89. }
  90. void write24c02(uchar address,uchar date) //寫一字節(jié)函數(shù)
  91. {
  92.         start();
  93.         write_byte(0xa0);
  94.         respons();
  95.         write_byte(address);
  96.         respons();
  97.         write_byte(date);
  98.         respons();
  99.         stop();
  100. }

  101. uchar read24c02(uchar address)                //讀一字節(jié)函數(shù)
  102. {
  103.         uchar date;
  104.         start();
  105.         write_byte(0xa0);
  106.         respons();
  107.         write_byte(address);
  108.         respons();
  109.         start();
  110.         write_byte(0xa1);
  111.         respons();
  112.         date=read_byte();
  113.         stop();
  114.         return date;
  115. }
  116. /************各按鍵對(duì)應(yīng)處理函數(shù)***************/
  117. /*************各按鍵功能********************
  118. 1-2-3-4-5-6-7-8-9-0-確認(rèn)-重新輸入-未定義-上鎖-密碼修改
  119. -密碼修改確認(rèn)-未定義*************************/
  120. void keydeal1()                                 //按鍵1
  121. {
  122.         table[num]=1;
  123.         num++;
  124.         if(alterflog==1){table1[num1]=1;num1++;        }
  125. }
  126. void keydeal2()                                //按鍵2
  127. {
  128.         table[num]=2;
  129.         num++;
  130.         if(alterflog==1){table1[num1]=2;num1++;        }
  131. }
  132. void keydeal3()                               //按鍵3
  133. {
  134.         table[num]=3;
  135.         num++;
  136.         if(alterflog==1){table1[num1]=3;num1++;        }
  137. }
  138. void keydeal4()                               //按鍵4
  139. {
  140.         table[num]=4;
  141.         num++;
  142.         if(alterflog==1){table1[num1]=4;num1++;        }
  143. }
  144. void keydeal5()                               //按鍵5
  145. {
  146.         table[num]=5;
  147.         num++;
  148.         if(alterflog==1) {table1[num1]=5;num1++;}
  149. }
  150. void keydeal6()                                        //按鍵6
  151. {
  152.         table[num]=6;
  153.         num++;
  154.         if(alterflog==1){table1[num1]=6;num1++;        }
  155. }
  156. void keydeal7()                                        //按鍵7
  157. {
  158.         table[num]=7;
  159.         num++;
  160.         if(alterflog==1){table1[num1]=7;num1++;        }
  161. }
  162. void keydeal8()                                          //按鍵8
  163. {
  164.         table[num]=8;
  165.         num++;
  166.         if(alterflog==1){table1[num1]=8;num1++;        }
  167. }
  168. void keydeal9()                                           //按鍵9
  169. {
  170.         table[num]=9;
  171.         num++;
  172.         if(alterflog==1){table1[num1]=9; num1++;        }
  173. }
  174. void keydeal10()                                   //按鍵10
  175. {
  176.         table[num]=0;          num++;
  177.         if(alterflog==1){table1[num1]=0;num1++;        }
  178. }
  179. void compare()                         //比較密碼正確與否函數(shù)
  180. {
  181.         uchar j;
  182.                 for(j=0;j<8;j++)
  183.                 {
  184.                         if(table[j]==mima[j]){cpflog=1;l1=0;}
  185.                         else        cpflog=0;
  186.                         l1=1;
  187.                 }         
  188. }
  189. void keydeal11()                                  //確認(rèn)鍵
  190. {
  191.         uchar j;
  192.         if(alterflog==1)
  193.         goto n;                                        //如果密碼修改鍵按下再按此鍵無(wú)效
  194.         if(num==8)                                 //判斷是否輸入八個(gè)數(shù)字
  195.         {
  196.                 num=0;                                 //將輸入數(shù)字個(gè)數(shù)清零
  197.                 compare();                         //進(jìn)行密碼比較
  198.                 for(j=0;j<8;j++)                 //用FFFFFFFF將輸入的數(shù)據(jù)清空
  199.                 {
  200.                         table[j]=0x0f;
  201.                 }
  202.         }
  203.         if(cpflog==1)                                 //如果密碼正確,標(biāo)志位為1
  204.         {
  205.                 l1=0;                                         //點(diǎn)亮開(kāi)鎖燈
  206.                 cpflog=0;                                 //使比較密碼標(biāo)志位歸零
  207.                 etimes=0;                                 //使記錯(cuò)次數(shù)歸零
  208.                 kai=1;                                         //使打開(kāi)鎖標(biāo)志位置1
  209.                 writecom(0x01);                         //液晶屏清空顯示
  210.                 writecom(0x80);                         //讓液晶顯示“please come in!”
  211.                 for(j=0;j<15;j++)
  212.                 {
  213.                         writedate(xianshi1[j]);                delay_xs(3);
  214.                 }
  215.                 for(j=0;j<2;j++)                  //蜂鳴器響兩聲提示開(kāi)鎖成功
  216.                 {
  217.                         bump=0;        delay_xs(200);
  218.                         bump=1;        delay_xs(200);
  219.                         bump=0;        delay_xs(200);
  220.                         bump=1;        delay_xs(200);
  221.                 }
  222.          /*********等待按下上鎖鍵或者密碼修改鍵**********/
  223.                 while((suoflog!=1)&(alterflog!=1))
  224.                 {
  225.                         P3=0xf7;
  226.                         if(P3==0xe7)  suoflog=1;  //上鎖鍵按下上鎖標(biāo)志位置1                                
  227.                         if(P3==0xd7) alterflog=1;  //密碼修改鍵按下標(biāo)志位置1               
  228.                         if(suoflog==1)          //上鎖后進(jìn)行初始化
  229.                         {
  230.                                 init();
  231.                         }
  232.                 n:        if(alterflog==1) //密碼修改鍵按下顯示new passsword
  233.                         {
  234.                                 writecom(0x01);                writecom(0x38);
  235.                                 for(j=0;j<15;j++){writedate(xianshi4[j]); }
  236.                         }
  237.                 }
  238.                 suoflog=0;           //上鎖標(biāo)志位清零
  239.         }
  240.         else                        //否則密碼錯(cuò)誤,執(zhí)行密碼錯(cuò)誤指令
  241.         {
  242.                 num=0;                //將輸入數(shù)據(jù)個(gè)數(shù)清零
  243.                 num1=0;                //將修改密碼輸入數(shù)字個(gè)數(shù)清零
  244.                 etimes++;        //記錄錯(cuò)誤次數(shù)加1
  245.                 bump=0;                              //報(bào)警一聲
  246.                 delay_xs(500);        bump=1;
  247.                 for(j=0;j<8;j++)                  //清空修改密碼輸入數(shù)據(jù)
  248.                 { table1[j]=0x0f;                }
  249.                 if(etimes==1)                          //如果輸錯(cuò)一次
  250.                 {
  251.                         writecom(0x01);                   //清屏
  252.                         writecom(0x80);
  253.                         for(j=0;j<14;j++)           //顯示first error
  254.                         { writedate(xianshi6[j]);        }
  255.                         delay_xs(2000);                   //延時(shí)兩秒
  256.                         writecom(0xc);
  257.                         writecom(0x80);
  258.                         for(j=0;j<16;j++)           //第一行顯示input passsword
  259.                         {
  260.                                 writedate(xianshi0[j]);                delay_xs(5);
  261.                         }                                          
  262.                         writecom(0x80+0x40+4);         //第二行顯示--------
  263.                         for(j=0;j<8;j++) {writedate('-');                         }
  264.                 }
  265.                 if(etimes==2)                           //如果輸錯(cuò)兩次
  266.                 {
  267.                         writecom(0x01);        writecom(0x80);
  268.                         for(j=0;j<15;j++)           //顯示second error
  269.                         {
  270.                                 writedate(xianshi7[j]);
  271.                         }
  272.                         delay_xs(2000);                   //延時(shí)兩秒
  273.                         writecom(0xc);
  274.                         writecom(0x80);
  275.                         for(j=0;j<16;j++)                //第一行顯示input passsword
  276.                         {
  277.                                 writedate(xianshi0[j]);        delay_xs(5);
  278.                         }
  279.                         writecom(0x80+0x40+4);
  280.                         for(j=0;j<8;j++)                //第二行顯示--------
  281.                         {
  282.                                 writedate('-');
  283.                         }
  284.                 }
  285.                 if(etimes==3)                                //如果輸錯(cuò)三次
  286.                 {
  287.                         writecom(0x01);
  288.                         writecom(0x80);
  289.                         for(j=0;j<15;j++)                //顯示you are thief!
  290.                         {
  291.                                 writedate(xianshi3[j]);
  292.                         }
  293.                         for(j=0;j<10;j++)                //報(bào)警十秒鐘
  294.                         {
  295.                                 bump=0;                delay_xs(500);
  296.                                 bump=1;                delay_xs(500);
  297.                         }
  298.                         init();                                        //初始化
  299.                 }
  300.         }
  301. }
  302. void keydeal12()                                        //重新輸入鍵
  303. {
  304.         uint i;
  305.         if(kai==0)                                        //如果所沒(méi)被打開(kāi)
  306.         {                                                        //初始化回到輸入密碼狀態(tài)
  307.                 init();
  308.         }
  309.         else                                //如果鎖被打開(kāi),則顯示new password:
  310.         {
  311.                 if(alterflog==1)
  312.                 {
  313.                         num=0;         num1=0;
  314.                         writecom(0x01);                writecom(0x80);//清屏
  315.                         for(i=0;i<15;i++){writedate(xianshi4[i]);        }
  316.                 }
  317.         }
  318. }
  319. void keydeal15()                   //確認(rèn)密碼修改鍵
  320. {
  321.         uchar i;
  322.         alterflog=0;                        //修改標(biāo)志位歸零
  323.         num=0;                                        //數(shù)據(jù)輸入個(gè)數(shù)清零
  324.         for(i=0;i<8;i++)                //輸入數(shù)據(jù)清空
  325.         {
  326.                 table[i]=0x0f;        
  327.         }
  328.         if(num1==8)                                //如果輸入修改數(shù)字夠八個(gè)進(jìn)入
  329.         {
  330.                 num1=0;                                //將輸入修改數(shù)字個(gè)數(shù)清零
  331.                 for(i=0;i<8;i++)        //將修改后八個(gè)數(shù)字寫入存儲(chǔ)器中
  332.                 {
  333.                         write24c02(i+1,table1[i]);         delay_xs(5);
  334.                 }
  335.                 writecom(0x01);                  //清屏
  336.                 writecom(0x80);
  337.                 for(i=0;i<15;i++)           //顯示alter succeed!!
  338.                 {
  339.                         writedate(xianshi5[i]);
  340.                 }
  341.                 delay_xs(2000);
  342.         }
  343.         else                                          //如果輸入數(shù)字不夠八個(gè)進(jìn)入
  344.         {
  345.                 num1=0;                                  //將輸入修改數(shù)字個(gè)數(shù)清零
  346.                 writecom(0x01);                 //清屏
  347.                 writecom(0x80);
  348.                 for(i=0;i<14;i++)          //顯示alter error!
  349.                 {
  350.                         writedate(xianshi9[i]);
  351.                 }
  352.         }
  353.         /**************修改后將鍵入返回程序************/
  354.         if(kai==1)                         //如果鎖被打開(kāi)
  355.         {
  356.                 num=0;                         //輸入數(shù)字個(gè)數(shù)清零
  357.                 delay_xs(2000);           //延時(shí)兩秒鐘
  358.                 writecom(0x01);                //清屏
  359.                 writecom(0x80);
  360.                 for(i=0;i<15;i++)                //顯示please come in!
  361.                 {
  362.                         writedate(xianshi1[i]);
  363.                         delay_xs(3);
  364.                 }                                                //繼續(xù)等待上鎖或修改密碼
  365.                 while((suoflog!=1)&(alterflog!=1))
  366.                 {
  367.                         P3=0xf7;
  368.                         if(P3==0xe7)        suoflog=1;
  369.                         if(P3==0xd7)        alterflog=1;
  370.                         if(suoflog==1)        {         init();                }
  371.                         if(alterflog==1)
  372.                         {
  373.                                 writecom(0x01);        writecom(0x80);//清屏
  374.                                 for(i=0;i<15;i++){ writedate(xianshi4[i]);        }
  375.                         }
  376.                  }
  377.         }
  378.         else                 //如果所沒(méi)被打開(kāi),顯示alter error兩秒后
  379.         {                                 //進(jìn)行初始化
  380.                 delay_xs(2000);         init();
  381.         }
  382. }
  383. void keydeal16()           //鍵16未定義
  384. {
  385.         
  386. }
  387. /******************鍵盤掃描函數(shù)**************************/
  388. void keyscan()
  389. {
  390.         uchar temp;
  391. /**************第一行掃描********************/
  392.         P3=0xfe;
  393.         temp=P3&0xf0;
  394.         if(temp!=0xf0)
  395.         {
  396.                 delay_xs(10);
  397.                 if(temp!=0xf0)        temp=P3;
  398.                 switch(temp)
  399.                 {
  400.                         case 0xee:        keydeal1();        break;
  401.                         case 0xde:        keydeal2();        break;
  402.                         case 0xbe:        keydeal3();        break;
  403.                         case 0x7e:         keydeal4();        break;

  404.                 }
  405.                 while((P3&0xf0)!=0xf0);        //松手檢測(cè)

  406.         }
  407. /******************第二行掃描**********************/
  408.         P3=0xfd;
  409.         temp=P3&0xf0;
  410.         if(temp!=0xf0)
  411.         {
  412.                 delay_xs(10);
  413.                 if(temp!=0xf0)         temp=P3;
  414.                 switch(temp)
  415.                 {
  416.                         case 0xed:        keydeal5();                break;
  417.                         case 0xdd:         keydeal6();                break;
  418.                         case 0xbd:        keydeal7();                break;
  419.                         case 0x7d:        keydeal8();                break;

  420.                 }
  421.                 while((P3&0xf0)!=0xf0);           //松手檢測(cè)

  422.         }
  423. /*****************第三行掃描*********************/
  424.         P3=0xfb;
  425.         temp=P3&0xf0;
  426.         if(temp!=0xf0)
  427.         {
  428.                 delay_xs(10);
  429.                 if(temp!=0xf0)        temp=P3;
  430.                 switch(temp)
  431.                 {
  432.                         case 0xeb:         keydeal9();                break;
  433.                         case 0xdb:        keydeal10();        break;
  434.                         case 0xbb:        keydeal11();        break;
  435.                         case 0x7b:        keydeal12();         break;

  436.                 }
  437.                 while((P3&0xf0)!=0xf0);

  438.         }
  439. /********************第四行掃描********************/
  440.         P3=0xf7;
  441.         temp=P3&0xf0;
  442.         if(temp!=0xf0)
  443.         {
  444.                 delay_xs(10);
  445.                 if(temp!=0xf0)        temp=P3;
  446.                 switch(temp)
  447.                 {
  448.                         case 0xe7:                 //        keydeal13();
  449.                                         break;
  450.                         case 0xd7:                //        keydeal14();
  451.                                         break;
  452.                         case 0xb7:         keydeal15(); break;
  453.                         case 0x77:        keydeal16(); break;
  454.                 }
  455.                 while((P3&0xf0)!=0xf0);

  456.         }
  457. }
  458. /****************顯示函數(shù)*************/
  459. void display()
  460. {
  461.         uint c;
  462.         writecom(0x80+0x40+4);
  463.         if(alterflog==0)        //如果不處于修改密碼狀態(tài),顯示num個(gè)*
  464.         {
  465.                 for(c=0;c<num;c++){        writedate('*');        delay_xs(5);        }
  466.         }
  467.         else                  //如果處于密碼修改顯示num1個(gè)*
  468.         {
  469.                 for(c=0;c<num1;c++){ writedate('*'); delay_xs(5);}
  470.         }

  471. }
  472. /*******************初始化函數(shù)***********/
  473. void init()
  474. {
  475.         uint i,a,b;
  476.         num=0;                  //輸入數(shù)據(jù)個(gè)數(shù)清零
  477.         num1=0;
  478.         kai=0;                   //開(kāi)鎖標(biāo)志位清零
  479.         l1=1;                   //關(guān)閉開(kāi)鎖燈
  480.         alterflog=0;   //修改密碼標(biāo)志位清零
  481.         sda=1;                   //24c02進(jìn)行釋放總線
  482.         delay();        scl=1;         delay();
  483.         writecom(0x38);           //液晶初始化
  484.         writecom(0x0c);
  485.         writecom(0x06);
  486.         writecom(0x01);
  487.         for(i=0;i<8;i++)        //讀取存儲(chǔ)器中密碼,并存放于mima[]中
  488.         {
  489.                 mima[i]=read24c02(i+1);
  490.         }
  491.         writecom(0x01);                //清屏
  492.         writecom(0x80);
  493.         for(a=0;a<16;a++)                //顯示input password:
  494.         {
  495.                 writedate(xianshi0[a]);                delay_xs(5);
  496.         }
  497.         writecom(0x80+0x40+4);        //第二行顯示--------
  498.         for(b=0;b<8;b++){        writedate('-');        }
  499. }
  500. /*****************主函數(shù)******************/
  501. void main()
  502. {
  503.         init();          //初始化
  504.         while(1)        //不停地對(duì)鍵盤和顯示進(jìn)行掃描
  505.         {
  506.                 keyscan(); //鍵盤掃描和密碼輸入處理
  507.                 display(); //LCD顯示
  508.         }
  509. }
復(fù)制代碼

附件里面只有代碼下載,其他還沒(méi)完成,求大佬指點(diǎn):
電子密碼鎖.rar (1.47 MB, 下載次數(shù): 179)
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-1-14 03:51 | 顯示全部樓層
本帖存在大量重復(fù)
回復(fù)

使用道具 舉報(bào)

ID:653895 發(fā)表于 2019-12-1 23:58 | 顯示全部樓層
admin 發(fā)表于 2019-1-14 03:51
本帖存在大量重復(fù)

值得學(xué)習(xí)。收藏了。非常好
回復(fù)

使用道具 舉報(bào)

ID:654087 發(fā)表于 2019-12-2 10:55 來(lái)自手機(jī) | 顯示全部樓層
值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:715507 發(fā)表于 2020-4-2 18:08 | 顯示全部樓層
顯示屏是用的LCD1206型號(hào)的嗎
回復(fù)

使用道具 舉報(bào)

ID:903548 發(fā)表于 2021-4-11 12:55 | 顯示全部樓層
本帖最后由 _xwh 于 2021-4-15 21:09 編輯

資源挺不錯(cuò)的
回復(fù)

使用道具 舉報(bào)

ID:65237 發(fā)表于 2021-4-25 20:10 | 顯示全部樓層
先收藏 后學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:836575 發(fā)表于 2021-5-6 18:06 | 顯示全部樓層
header 是封裝嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产视频2021 | 国产精品美女久久久久久久久久久 | 国产精品不卡 | 国产欧美精品一区二区 | 一区二区免费在线观看 | 成人在线观看免费 | 在线视频一区二区 | 国产成人精品一区二三区在线观看 | 日韩三级 | 91麻豆精品国产91久久久更新资源速度超快 | 玖玖玖在线 | 日韩成人| 看羞羞视频免费 | 久久久久网站 | 色妹子综合网 | 精精久久| 日韩三 | 国产免费一区二区三区 | 国产网站久久 | 国产免费人成xvideos视频 | 成人午夜在线视频 | 久久一视频 | 99久久精品国产一区二区三区 | 欧美一区二区三区高清视频 | 国产精品178页 | 日韩中文字幕 | 黄色亚洲网站 | 午夜久久久久久久久久一区二区 | 国产一区精品在线 | 日本三级电影免费 | 国产精品国产三级国产aⅴ无密码 | av毛片在线免费观看 | 亚洲精品欧美一区二区三区 | 中文字幕 国产精品 | 91丨国产| 男人天堂国产 | 在线国产一区 | 欧美vide | 热久久久 | 自拍偷拍欧美 | 荷兰欧美一级毛片 |