欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機指紋程序 1602液晶顯示(移植)

[復制鏈接]
跳轉到指定樓層
樓主
指紋識別+1602



單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include"lcd1602.h"


  4. sbit relay =P1^4; //繼電器引腳
  5. sbit buzzer=P1^5; //蜂鳴器引腳
  6. sbit red=   P2^7;//錄入模式指示燈 在板子靠近單片機處
  7. sbit green= P2^0;//識別模式指示燈 在板子遠離單片機處

  8. sbit k2=P3^4; //錄入一次指紋
  9. sbit k1=P3^3; //模式識別轉換
  10. sbit k3=P3^2; //清除所有指紋(10個指紋清除)

  11. #define Max_User 10
  12. #define error 2
  13.    
  14. unsigned char         SaveNumber=0,searchnum=0;
  15. unsigned int          SearchNumber=0;               
  16. unsigned int         clk0=0;

  17. unsigned char str[3]={0,'\0','\0'};

  18. unsigned char code Identify[16]="Lock:   Idenfity";
  19. unsigned char code Input[16]   ="Lock:   Input   ";

  20. bit modeflag=0,clearallflag=0,changeflag=0;//默認為識別模式,如果為1為錄入指紋模式,每錄入一次SaveNumber++

  21. //////////////////////////////////////常用指令定義/////////////////////////////

  22. //Verify  Password   :驗證設備握手口令
  23. unsigned char code VPWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b};         //回送12個

  24. //設置設備握手口令
  25. unsigned char code STWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a};         //回送12個

  26. //GetImage           :探測手指并從傳感器上讀入圖像
  27. unsigned char code GIMG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05};        //回送12個

  28. //Gen Templet1        :根據原始圖像生成指紋特征1
  29. unsigned char code GENT1[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08};        //回送12個

  30. //Gen Templet2        :根據原始圖像生成指紋特征2
  31. unsigned char code GENT2[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09}; //回送12個       

  32.        
  33. //Search Finger      :以CharBufferA或CharBufferB中的特征文件搜索整個或部分指紋庫
  34. unsigned char code SEAT[18]={17,  0X01 ,0Xff,0xff,0xff,0xff, 0x01,   0,8, 4,1,0,0,    0,0x65,  0x00,0x73};        //回送16個


  35. //Merge Templet      ;將CharBufferA與CharBufferB中的特征文件合并生成模板,結果存于ModelBuffer。
  36. unsigned char code MERG[14]={12,  0X01 ,0Xff,0xff,0xff,0xff, 0x01,  0,3,5 , 0x00,0x09};//回送12個       

  37. //Store Templet      :將ModelBuffer中的文件儲存到flash指紋庫中
  38. unsigned char code STOR[16]={15,  0X01 ,0Xff,0xff,0xff,0xff, 0x01,  0,6,6,2,     0x00,0x00,     0x00,0x0f}; //回送12個

  39. //Read Note
  40. unsigned char code RDNT[14]={13,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,4,0x19,  0, 0x00,0x1e};

  41. //Clear Note
  42. unsigned char code DENT[46]={45,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,36,0x18,0,0,0,
  43. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x00,0x3d};

  44. //DEL one templet
  45. unsigned char code DELE_one[16]={16, 0X01 ,0Xff,0xff,0xff,0xff, 0x01,   0,7,  0x0c,    0x00,0x00, 0,1, 0x00,0x15};

  46. //DEL templet      ;清空指紋庫
  47. unsigned char code DELE_all[12]={12,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,  0x0d,0x00,0x11};

  48. //////////////////////////////////////常用指令定義-------結束///////////////////////////////////////////////////////////////////////////////////////


  49. //////////////////////////////////////宏定義////////////////////////////////////////////////////////////////////////
  50. #define FALSE 0
  51. #define TURE  1

  52. //狀態定義表
  53. #define on            1
  54. #define off           0

  55. #define MAX_NUMBER    63
  56. #define _Nop()  _nop_()


  57. //////////////////////////////////////宏定義------------結束////////////////////////////////////////////////////////

  58. unsigned char                   FifoNumber=0;
  59. xdata unsigned char   FIFO[MAX_NUMBER+1]={0};

  60. /*********1毫秒延時程序**********/
  61. void delay1ms(unsigned int t)
  62. {
  63.         unsigned int i,j;
  64.         for(i=0;i<t;i++)
  65.            for(j=0;j<120;j++)
  66.            ;
  67. }


  68. void TxdByte(unsigned char dat)//串口發送信息,通過查詢方式發送一個字符
  69. {
  70.     TI = 0;                 //讓TI=0
  71.     SBUF = dat;         //讀入數據
  72.     while(!TI);         //等待發送完畢
  73.     TI = 0;                 //清零
  74. }

  75. bit Command(unsigned char *p,unsigned char MaxTime) //命令解析,給模塊發送一個命令
  76. {
  77.           unsigned char count=0,tmpdat=0,temp=0,i=0,package=0,flag=0,checksum=0;
  78.                  
  79.         bit result=0, start=0,stop=0;

  80.           TxdByte(0xef);//數據包包頭識別碼
  81.            TxdByte(0x01);//數據包包頭識別碼
  82.           i=*p;         //數組的第“0”個元素、里面存放了本數組的長度,把這個長度給變量i,方便進行操作
  83.           p++;
  84.         p++;
  85.           for (count=i-1; count!=1;count--)  //Sent command String
  86.                   {
  87.                          temp=*p++;//取第個“1”個元素的內容,然后發送
  88.                     TxdByte(temp);//將數據發送出去
  89.                 }  
  90.           result=TURE;//發送完成,結果為真 (真為1)          
  91.           FifoNumber=0;
  92.           for (count=MAX_NUMBER+1; count!=0; count--)//清空所有FIFO[]數組里面的內容,寫入0X00
  93.                  FIFO[count-1]=0x00;  
  94.        
  95.           if (result)   
  96.            {               
  97.              result=FALSE;
  98.               start =FALSE;
  99.                    stop  =FALSE;
  100.                count=0;
  101.                clk0=0;        //清零CL0計數
  102.                
  103.                do /////////////////////////////do的內容////////////////////////////////
  104.                 {       
  105.                         restart0:                               
  106.                          if (RI==1)//如果接收到數據
  107.                               {                                
  108.                                           tmpdat=SBUF;//先把接收到的數據放到tmpdat中
  109.                             RI=0;
  110.                             if ((tmpdat==0xef)&&(start==FALSE))//這個數據為第一個傳回來的數據,也就是“指令應答”的第一個字節
  111.                                     {
  112.                                                         count=0;
  113.                                                     FIFO[0]=tmpdat;//讀入第一個應答字節(0XEF),存在第“0”個元素中   
  114.                                                         flag=1;       
  115.                                                         goto
  116.                                                                 restart0;//可以用中斷方式進行                       
  117.                                                
  118.                                      }
  119.                                         if(flag==1)//第一個字節已經回來,所以flag==1成立
  120.                                                 {  
  121.                                                         if(tmpdat!=0x01)  //接收數據錯誤,將重新從緩沖區接收數據
  122.                                                         {         
  123.                                                                 flag=0;//接收應答失敗
  124.                                                                 result=FALSE;
  125.                                                               start =FALSE;
  126.                                                                    stop=FALSE;
  127.                                                                count=0;
  128.                                                                 goto
  129.                                                                         restart0;                                       
  130.                                                        
  131.                                                         }
  132.                                                         //如果成功接收到0xef01,可以開始接收數據
  133.                                                         flag=2;//flag=2;表示應答成功,可以開始接收數據了
  134.                                                         count++;//現在count=1;
  135.                                                         FIFO[count]=tmpdat;//讀入第二個應答字節(0X01),存在第“1”個元素中   
  136.                                                         start=TURE;        //應答成功可以開始接收數據
  137.                                                             goto
  138.                                                                         restart0;       
  139.                                                 }                  
  140.                              if((flag==2)&&(start==TURE))//flag=2;表示應答成功,可以開始接收數據了
  141.                                      {                                                              
  142.                                                            count++; //數據元素下標++
  143.                                             FIFO[count]=tmpdat;//存入數據
  144.                                                         if(count>=6)
  145.                                                                 {
  146.                                                                         checksum=FIFO[count]+checksum; //計算校驗和
  147.                                                                 }
  148.                                                         if(count==8)
  149.                                                                 {
  150.                                                                         package=FIFO[7]*0X100+FIFO[8];        //計算包長度                                                       
  151.                                                                         stop= TURE;
  152.                                                                 }
  153.                                                         if(stop)
  154.                                                                 {                                               
  155.                                                                         if(count==package+8)
  156.                                                                         {
  157.                                                                                 checksum=checksum-FIFO[count-1];
  158.                                                                                 if(checksum!=FIFO[count]&0xff)
  159.                                                                                         result=FALSE; //校驗失敗,置結果標志為0                                                       
  160.                                                                                 else
  161.                                                                                         result=TURE;
  162.                                                                                 flag=0;
  163.                                                                                 break;
  164.                                                                         }
  165.                                                                 }
  166.                                      }
  167.                                 }
  168.           }/////////////////////////////do的內容----------------結束////////////////////////////////
  169.                   
  170.                 while ((clk0<=MaxTime)&&(count<=MAX_NUMBER)&& (changeflag==0) ); //由定時器以及最大接收數據來控制,保證不會在此一直循環
  171.                   
  172.         FifoNumber=count;        //保存接收到的數據個數
  173.          }
  174.    return (result);
  175. }

  176. bit VefPSW(void)//驗證設備握手口令,成功返回1     
  177. {
  178.         unsigned char  count=0;
  179.         while (1)
  180.            {
  181.              if(Command(VPWD,20) && (FifoNumber==11) && (FIFO[9]==0x00))  
  182.                         return(1);
  183.              count++;
  184.                      if (count>=2)//如果不成功,再驗證一次,如果兩次不成功,返回失敗
  185.                 {  
  186.                     return(0);   
  187.                       }
  188.         }
  189. }


  190. void Clear_All(void) //清空指紋庫   
  191. {                               
  192.       delay1ms(200);
  193.           Command(DELE_all,50); //清空指紋庫                 
  194. }

  195. unsigned char ImgProcess(unsigned char BUFID)  //發獲取圖像并生成特征文件,存入BUFID中//輸入參數為緩沖區號  
  196. {       
  197.     if(Command(GIMG,89) && (FifoNumber==11) && (FIFO[9]==0x00))  
  198.     {
  199.                 if(BUFID==1)      
  200.                 {                                  
  201.                       if(Command(GENT1,60) && (FifoNumber==11) && (FIFO[9]==0x00))  
  202.                 {                                                       
  203.                                 return 1;
  204.                         }  
  205.                 else
  206.                 {
  207.                                   return 0;
  208.                  }
  209.                  }
  210.                 else if(BUFID==2)
  211.                 {
  212.                           if(Command(GENT2,60) && (FifoNumber==11) && (FIFO[9]==0x00))  
  213.                 {                               
  214.                                 return 1;
  215.                         }  
  216.                 else
  217.                 {
  218.                                   return 0;
  219.                  }                       
  220.                 }
  221.     }
  222.     else
  223.     {
  224.       return 0;      
  225.     }
  226.         return 0;            
  227. }

  228. bit Searchfinger(void)//搜索指紋(發送搜索命令、以及根據返回值確定是否存在)        
  229. {               
  230.            if( Command(SEAT,60) && (FifoNumber==15) && (FIFO[9]==0x00) ) //搜索到指紋
  231.     {
  232.                 SearchNumber=FIFO[10]*0x100+FIFO[11];//搜索到的頁碼
  233.                 //MatchScore=FIFO[12]*0x100+FIFO[13]   可以在此計算得分,從而進行安全級別設定,本程序忽略
  234.                    return 1;
  235.         }     
  236.     else            
  237.     {
  238.                return 0;
  239.     }  
  240. }


  241. unsigned char search(void)//搜索用戶
  242. {
  243.         unsigned char SearchBuf=0,i=0;
  244.           while (i<20)
  245.     {
  246.              if (ImgProcess(1)==1)//首先讀入一次指紋  
  247.                {
  248.                        SearchBuf=Searchfinger();//進行指紋比對,如果搜索到,返回搜索到的指紋序號
  249.                        if(SearchBuf==1)
  250.                        {
  251.                                return SearchNumber;
  252.                        }
  253.                        else
  254.                         {
  255.                            return 255;//表示搜索到的指紋不正確
  256.                         }     
  257.                }
  258.                 i++;       
  259.     }
  260.    return 0;
  261. }

  262. bit savefingure(unsigned char ID)//保存指紋
  263. {
  264.          unsigned char i=0;
  265.          //現在開始進行存儲指紋模板的操作
  266.      for (i=0;i<16;i++)        //保存指紋信息
  267.                  {
  268.                         FIFO[i]=STOR[i];
  269.                 }  
  270.      FIFO[12]=ID; //把指紋模板存放的PAGE_ID也就是FLASH的位置
  271.      FIFO[14]=FIFO[14]+ID;        //校驗和
  272.      if (Command(FIFO,70)==1)//不成功返回0        //此處進行存放指紋模板的命
  273.                  {return(1);}
  274.      else
  275.                  {return(0);} //不成功返回0
  276. }



  277. //unsigned char enroll(void) //采集兩次指紋,生成1個 指紋模板
  278. //{
  279. //         unsigned char temp=0,count=0;
  280. //          while(1)
  281. //          {
  282. //                   temp=ImgProcess(1); //生成特征1   
  283. //                   if (temp==1)//生成特征文件成功            
  284. //              {                       
  285. //                break;
  286. //               }
  287. //             else                  
  288. //               {
  289. //                if (temp==0)//采集指紋沒有成功
  290. //                  {
  291. //                                count++;
  292. //                    if (count>=40)//如果采集了40次,還不成功,直接采集失敗,直接退出enroll函數----返回0  
  293. //                                        return(0);
  294. //            }
  295. //        }
  296. //           }
  297. //        //采集第一個特征成功
  298. //           count=0;  
  299. //          buzzer=0;
  300. //        delay1ms(100);
  301. //        buzzer=1;
  302. //        delay1ms(2000);//延時2S開始采集下一個特征
  303. //
  304. //        //開始采集第二個特征
  305. //         while(1)
  306. //          {
  307. //                   temp=ImgProcess(2); //生成特征2   
  308. //                   if (temp==1)//生成特征文件2成功
  309. //              {
  310. //                if (  (Command(MERG,40)&& (FifoNumber==11) && (FIFO[9]==0x00))==0  ) //合并不成功返回0,成功返回1
  311. //                        {
  312. //                                return 0;
  313. //                        }       
  314. //                        else//特征文件合并生成模板,結果存于ModelBuffer
  315. //                        {
  316. //                                 buzzer=0;
  317. //                     delay1ms(100);
  318. //                     buzzer=1;
  319. //                                 delay1ms(100);
  320. //                                 buzzer=0;
  321. //                     delay1ms(100);        //響兩聲,表示生成一個模板成功
  322. //                     buzzer=1;
  323. //                     return 1;
  324. //                        }       
  325. //        }
  326. //              else      
  327. //               {       
  328. //                if (temp==1)//采集指紋沒有成功
  329. //                {
  330. //                                count++;
  331. //                               
  332. //                                if (count>=25)
  333. //                               
  334. //                                return(0);
  335. //                       }
  336. //             }
  337. //           }
  338. //}



  339. unsigned char enroll(void) //采集兩次指紋,生成1個 指紋模板                /////////////////我修改=========================
  340. {
  341.         unsigned char temp=0,count=0;
  342.           while(1)
  343.           {
  344.                    temp=ImgProcess(1); //生成特征1   
  345.                    if (temp==1)//生成特征文件成功            
  346.               {                       
  347.                 //采集第一個特征成功
  348.                            count=0;  
  349.                           buzzer=0;
  350.                         delay1ms(100);
  351.                         buzzer=1;
  352.                         break;
  353.                }
  354.              else                  
  355.                {
  356.                 if (temp==0)//采集指紋沒有成功
  357.                   {
  358.                                 count++;
  359.                     if (count>=40)//如果采集了40次,還不成功,直接采集失敗,直接退出enroll函數----返回0  
  360.                                         return(0);
  361.             }
  362.         }
  363.            }

  364.         //采集第一個特征成功
  365.            count=0;  
  366.           buzzer=0;
  367.         delay1ms(100);
  368.         buzzer=1;
  369.         delay1ms(2000);//延時2S開始采集下一個特征

  370.         //開始采集第二個特征
  371.         while(1)
  372.           {
  373.                    temp=ImgProcess(2); //生成特征2   
  374.                    if (temp==1)//生成特征文件2成功
  375.               {
  376.                 if (  (Command(MERG,40)&& (FifoNumber==11) && (FIFO[9]==0x00))==1  ) //合并成功返回1
  377.                         {
  378.                              buzzer=0;
  379.                      delay1ms(100);
  380.                      buzzer=1;
  381.                                  delay1ms(100);
  382.                                  buzzer=0;
  383.                      delay1ms(100);        //響兩聲,表示生成一個模板成功
  384.                      buzzer=1;
  385.                                  return(1);
  386.                         }
  387.                         else
  388.                         {
  389.                            return(0);
  390.                         }               
  391.         }
  392.               else      
  393.                {       
  394.                 if (temp==0)//采集指紋沒有成功
  395.                 {
  396.                                 count++;
  397.                                
  398.                                 if (count>=25)
  399.                                
  400.                                 return(0);
  401.                        }
  402.              }
  403.            }
  404. }


  405. void shownum(unsigned char dat)
  406. {
  407.         unsigned char numdat=0;
  408.         numdat=dat;
  409.         GotoXY(0,1);//x,y
  410.         Print("Finger:");
  411.         GotoXY(0,8);//x,y
  412.         str[0]=0x30+numdat/10;
  413.         str[1]=0x30+numdat%10;
  414.         Print(str);
  415. }

  416. void mode(void)
  417. {
  418.          if(modeflag==0)
  419.          {
  420.                  GotoXY(0,0);//x,y
  421.                 Print(Identify);
  422.                 green=0;
  423.                 red=1;
  424.          }
  425.          else
  426.          {
  427.                  GotoXY(0,0);//x,y
  428.                 Print(Input);
  429.                 red=0;
  430.                 green=1;
  431.          }
  432.          shownum(0);
  433. }


  434. void main(void)//主函數
  435. {
  436.         unsigned char i=0;

  437.         ET0=1;     //定時器0開中斷
  438.         TL0=0x97;  //17ms的初值
  439.         TH0=0xBD;
  440.    delay1ms(5);
  441.    LcdRw=0;      //只對液晶進行寫操作,不進行讀操作
  442.    delay1ms(5);
  443.    LCD_Initial();//液晶初始化
  444.    delay1ms(5);
  445.    GotoXY(0,0);//x,y
  446.    Print(Identify);

  447.     //串口初始化
  448.     SCON=0x50;   //UART方式1:8位UART;   REN=1:允許接收
  449.     PCON=0x00;   //SMOD=0:波特率不加倍
  450.     TMOD=0x21;   //T1方式2,用于UART波特率
  451.     TH1=0xFD;
  452.     TL1=0xFD;   //UART波特率設置:9600
  453.     TR1=1;
  454.     TR0=1;// 開定時器0
  455.        
  456.         IT0=0;//中斷0低電平中斷
  457.         IT1=1;//中斷1低電平中斷
  458.         EX0=1;//開中斷0
  459.         EX1=1;//開中斷1
  460.     EA=1;


  461.         mode();//看當前是什么模式
  462.        

  463.         for(i=0;i<6;i++)//開始握手6次,如果沒有一次成功,表示模塊通信不正常。只要成功就跳出此循環
  464.         {
  465.                 if(VefPSW())//與模塊握手通過,綠燈亮起。進入識別模式
  466.                   {
  467.                                 green=0; //讀一次
  468.                                 buzzer=0;
  469.                                 shownum(0);
  470.                         delay1ms(300);
  471.                         buzzer=1;
  472.                                 break;       
  473.                   }
  474.             else
  475.                  {
  476.                         red=1;
  477.                         green=1;
  478.                         break;

  479.                  }
  480.         }

  481.     while(1)
  482.         {
  483.                 if(k2==0)//錄入一個指紋
  484.                 {
  485.                                   delay1ms(10);       
  486.                                   if(k2==0)//如果仍為低電平,表示按鍵有效
  487.                                           {
  488.                                             while(k2==0);//等待松手
  489.                                           if(VefPSW()==1&&modeflag==1&&SaveNumber<10)//與模塊握手通過
  490.                                                   {
  491.                                                             if(enroll()==1)//采集兩次,生成1個指紋模板成功
  492.                                                                   {
  493.                                                                    if(savefingure(SaveNumber+1)==1)//保存也成功
  494.                                                                            {
  495.                                                                                 SaveNumber++;//加一次
  496.                                                                                 shownum(SaveNumber);
  497.                                                                         }
  498.                        
  499.                                                                 }
  500.                                                   }
  501.                                                 else
  502.                                                 {
  503.                                                                 buzzer=0;
  504.                                                                 for(i=0;i<8;i++)
  505.                                                                 {
  506.                                                                   delay1ms(100);
  507.                                                                   red=~red;
  508.                                                                 }
  509.                                                                 red=0;
  510.                                                                 buzzer=1;
  511.                                                                        
  512.                                                 }         
  513.                                           }
  514.                                        
  515.                 }

  516.                

  517.                 if(modeflag==0)//為識別模式
  518.                 {
  519.                           searchnum=search();
  520.                           if(searchnum>=1&&searchnum<=162)//最多是162個指紋
  521.                           {
  522.                                     shownum(searchnum);
  523.                                //蜂鳴器響一聲
  524.                                    relay=0;
  525.                                buzzer=0;
  526.                                delay1ms(100);
  527.                                buzzer=1;
  528.                                    for(i=0;i<20;i++)
  529.                                    {
  530.                                     delay1ms(150);
  531.                                    }
  532.                                    relay=1;
  533.                           }
  534.                           if(searchnum==255)//不正確的指紋 蜂鳴器響三聲
  535.                           {
  536.                                      shownum(0);
  537.                                    buzzer=0;delay1ms(100); buzzer=1;delay1ms(100);
  538.                                buzzer=0;delay1ms(100); buzzer=1;delay1ms(100);
  539.                                buzzer=0;delay1ms(100); buzzer=1;delay1ms(100);
  540.                           }
  541.                 }

  542. ……………………

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

所有資料51hei提供下載:
01 1602液晶指紋程序 (移植).rar (55.34 KB, 下載次數: 106)



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

使用道具 舉報

沙發
ID:641226 發表于 2019-11-15 11:29 | 只看該作者
怎么用
回復

使用道具 舉報

板凳
ID:982686 發表于 2021-11-19 22:13 | 只看該作者
液晶的頭文件有嗎
回復

使用道具 舉報

地板
ID:262 發表于 2021-11-19 23:07 | 只看該作者
Kazuto 發表于 2021-11-19 22:13
液晶的頭文件有嗎

lcd1602.h在src目錄里面
回復

使用道具 舉報

5#
ID:985689 發表于 2021-11-28 20:24 | 只看該作者
誰能分享下原理圖嗎?或者告知怎么接線
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表