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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

六腳的指紋識別模塊,有誰做過這個模塊的開發?

  [復制鏈接]
跳轉到指定樓層
樓主
ID:103094 發表于 2016-4-2 20:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有誰做過這個模塊的開發?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2016-4-2 22:34 來自手機 | 只看該作者
你遇到的問題,可以提出來大家一起討論
回復

使用道具 舉報

板凳
ID:103094 發表于 2016-4-3 16:37 | 只看該作者

這是我修改的程序,但是握手口令無法通過,我不知道是什么原因

本帖最后由 45555mkkl 于 2016-4-3 16:38 編輯
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar SaveNumber=0,searchnum=0;
  6. uint SearchNumber=0;
  7. uint clk0=0;
  8. //sbit relay=P1^4;
  9. sbit buzzer=P2^0;
  10. sbit red=P1^0;
  11. sbit green=P1^1;
  12. sbit k1=P3^3;  //zhuanhuan
  13. sbit k2=P3^4;
  14. sbit k3=P3^2;//qing
  15. bit changeflag=0,modeflag=0,clearalflag=0;
  16. //驗證手握指令
  17. uchar code VPWD[16]={16,0x01,0xff,0xff,0xff,0xff,0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b};
  18. // 設置設備握口令
  19. uchar code STWD[16]={16,0X01,0Xff,0xff,0xff,0xff,0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a};
  20. //從傳感器讀入圖片
  21. uchar code GIMG[14]={12,0X01,0Xff,0xff,0xff,0xff,0x01,0,3,1,0x00,0x05};
  22. //根據原始圖像生成指紋特征1/2
  23. uchar code GENT1[14]={13,0X01,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08};
  24. uchar code GENT2[14]={13,0X01,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09};
  25. //由特征文件搜索指紋庫
  26. uchar code SEAT[18]={17,0x01,0xff,0xff,0xff,0xff,0x01,0,8,4,1,0,0,0,0x65,0x00,0x73};
  27. //特征文件合成模板
  28. uchar code MERG[14]={12,0x01,0xff,0xff,0xff,0xff,0x01,0,3,5,0x00,0x09};
  29. //文保保存
  30. uchar code STOR[16]={15,0x01,0xff,0xff,0xff,0xff,0x01,0,6,6,2,0x00,0x00,0x00,0x0f};
  31. //讀取記事本
  32. uchar code RDNT[14]={13,0x01,0xff,0xff,0xff,0xff,0x01,0,4,0x19,0,0x00,0x1e};
  33. //清除記事本
  34. uchar code DENT[46]={45,0X01,0Xff,0xff,0xff,0xff, 0x01, 0,36,0x18,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,0,0,0,0x00,0x3d};
  35. //刪除一個指紋
  36. uchar code DELE_one[16]={16,0X01,0Xff,0xff,0xff,0xff, 0x01, 0,7,0x0c,0x00,0x00, 0,1, 0x00,0x15};
  37. //清空所有指紋
  38. uchar code DELE_all[12]={12,0X01,0Xff,0xff,0xff,0xff, 0x01, 0,3, 0x0d,0x00,0x11};
  39. #define FALSE 0
  40. #define TURE  1
  41. #define on 1
  42. #define off 0
  43. #define MAX_NUMBER 63
  44. #define _Nop() _nop_()
  45. uchar FifoNumber=0;
  46. uchar FIFO[MAX_NUMBER+1]={0};
  47. ////////12864
  48. #define com 0
  49. #define dat 1
  50. sbit cs =P3^7;
  51. sbit sid=P3^6;
  52. sbit sck=P3^5;
  53. sbit beef=P2^0;
  54. uchar com_data,untemp,temp;
  55. uchar bdata datbyte;
  56. sbit datbyte0=datbyte^0;
  57. sbit datbyte7=datbyte^7;  
  58. void delay1ms(uint x)
  59. {
  60.         uint i,j;
  61.         for(i=0;i<x;i++)
  62.         for(j=0;j<120;j++);
  63. }
  64. void w_12864byte(uchar byte)
  65. {
  66.         uchar i;
  67.         for(i=0;i<8;i++)
  68.         {
  69.                 sck=0;
  70.                 byte<<=1;
  71.                 sid=CY;
  72.                 sck=1;
  73.         }
  74. }
  75. uchar r_12864byte(void)
  76. {
  77.         uchar i,temp1,temp2;
  78.         temp1 = 0;
  79.         temp2 = 0;
  80.         for(i=0;i<8;i++)
  81.         {
  82.                 temp1=temp1<<1;
  83.                 sck = 0;
  84.                 sck = 1;
  85.                 sck = 0;
  86.                 if(sid) temp1++;
  87.         }
  88.         for(i=0;i<8;i++)
  89.         {
  90.                 temp2=temp2<<1;
  91.                 sck = 0;
  92.                 sck = 1;
  93.                 sck = 0;
  94.                 if(sid) temp2++;
  95.         }
  96.         return ((0xf0&temp1)+(0x0f&temp2));
  97. }
  98. void c_12864busy( void )
  99. {
  100.         do
  101.         w_12864byte(0xfc);
  102.         while(0x80&r_12864byte());
  103. }
  104. void w_12864(bit dat_com,uchar byt)
  105. {
  106.         uchar temp;
  107.         if(dat_com==0)
  108.         temp=0xf8;
  109.         else
  110.         temp=0xfa;
  111.         cs=1;
  112.         c_12864busy();
  113.         w_12864byte(temp);
  114.         w_12864byte(byt&0xf0);
  115.         w_12864byte(byt<<4);
  116.         cs=0;
  117. }
  118. void init_12864(void)
  119. {
  120.         w_12864(com,0x30);
  121.         w_12864(com,0x0c);
  122.         w_12864(com,0x01);
  123.         w_12864(com,0x06);
  124. }
  125. /////////////////////////////////////////////
  126. void TxdByte(uchar dat1)
  127. {
  128.   TI=0;
  129.   SBUF=dat1;  //讀入數據
  130.   while(!TI);        //等待發送完畢
  131.   TI=0;
  132. }

  133. bit Command(uchar *p,uchar MaxTime)         //發送一個命令
  134. {
  135.         uchar count=0,tmpdat=0,        temp=0,i=0,package=0,flag=0,checksum=0;
  136.         bit result=0,start=0,stop=0;
  137.         TxdByte(0xef);        //數據包包頭識別碼
  138.          TxdByte(0x01);
  139.          i=*p; ///
  140.          p++;p++;
  141.          for(count=i-1;count!=1;count--)
  142.          {
  143.                  temp=*p++;          //取第1個元素的內容,然后發送
  144.                  TxdByte(temp);         //將數據發送
  145.          }
  146.          result=TURE;          //發送完成,結果為真(1)
  147.          FifoNumber=0;
  148.          for(count=MAX_NUMBER+1;count!=0;count--) //清空FIFO數組里面的內容寫入0x00
  149.          FIFO[count-1]=0x00;
  150.          if(result)
  151.          {
  152.                  result=FALSE;
  153.                  start=FALSE;
  154.                  stop=FALSE;
  155.                  count=0;
  156.                  clk0=0;          //清零計數
  157.                  do
  158.                  {

  159.                          r:if(RI==1)           //如果接受到數據
  160.                          {
  161.                                  tmpdat=SBUF;//先把接收到的數據放到tmdat中
  162.                                  RI=0;
  163.                                  if((tmpdat==0xef)&&(start==FALSE))         //        第一個傳回來的數據,指令應答的第一個字節
  164.                                  {
  165.                                          count=0;
  166.                                          FIFO[0]=tmpdat; //讀入第一個應答字節
  167.                                          flag =1;
  168.                                          goto r;
  169.                                  }
  170.                                  if(flag==1)//第一個字節已經回來
  171.                                  {
  172.                                          if(tmpdat!=0x01) //接收數據錯誤,將重新從緩沖區接收數據
  173.                                           {
  174.                                           flag=0;  //接收應答失敗
  175.                                           result=FALSE;
  176.                                           start=FALSE;
  177.                                           stop=FALSE;
  178.                                           count=0;
  179.                                           goto r;        
  180.                                           }
  181.                                         //如果成功接收到0xef01,可以開始接收數據
  182.                                           flag=2;        //應答成功,可以接收數據了
  183.                                           count++;
  184.                                           FIFO[count]=tmpdat;
  185.                                           start=TURE;
  186.                                           goto  r;
  187.                                  }
  188.                          if((flag==2)&&(start==TURE))
  189.                          {
  190.                                  count++;   //數據元素下表++
  191.                                  FIFO[count]=tmpdat;//存入數據
  192.                                  if(count>=6)
  193.                                  {
  194.                                          checksum=FIFO[count]+checksum; //計算校驗和
  195.                                  }
  196.                                  if(count==8)
  197.                                  {
  198.                                          package=FIFO[7]*0x100+FIFO[8];        //計算包長
  199.                                          stop=TURE;
  200.                                   }
  201.                                  if(stop)
  202.                                  {
  203.                                          if(count==package+8)
  204.                                          {
  205.                                                  checksum=checksum-FIFO[count-1]-FIFO[count];
  206.                                                  if(checksum!=(FIFO[count]&0xff))
  207.                                                          result=FALSE; //校驗失敗,置結果標志為0
  208.                                                  else
  209.                                                         result=TURE;
  210.                                                  flag=0;
  211.                                                  break;
  212.                                           }
  213.                                   }

  214.                           }
  215.                  }
  216.          }
  217. while((clk0<=MaxTime)&&(count<=MAX_NUMBER)&&(changeflag==0));//由定時器以及最大接收數據來控制,保證不會在此一直循環
  218.          FifoNumber=count;  //保存接收到的數據個樹
  219. }
  220. return result;
  221. }
  222. bit VefPSW(void) //驗證設備握手口令,成功返回1
  223. {
  224.         uchar count=0;
  225.         while(1)
  226.         {
  227.                 if(Command(VPWD,20)&&(FifoNumber==11)&&(FIFO[9]=0x00))
  228.                 return 1;
  229.                 count++;
  230.                 if(count>=2)  //如果不成功,再次驗證,如果兩次不成功,返回失敗
  231.                         return 0;
  232.         }
  233. }
  234. void Clear_All(void) //清空指紋庫
  235. {
  236.         delay1ms(200);
  237.         Command(DELE_all,50);//清空指紋庫
  238. }
  239. uchar ImgProcess(uchar BUFID)//發獲取圖像并生成特征文件,存入BUFID中。輸入參數為緩存區號
  240. {
  241.                 if(Command(GIMG,89)&&(FifoNumber==11)&&(FIFO[9]==0x00))
  242.                 {
  243.                         if(BUFID==1)
  244.                         {
  245.                                 if(Command(GENT1,60)&&(FifoNumber==11)&&(FIFO[9]==0x00))
  246.                                 {
  247.                                         return 1;
  248.                                 }
  249.                                 else
  250.                                  {
  251.                                  return 0;
  252.                                  }
  253.                         }
  254.                         else if(BUFID==2)
  255.                         {
  256.                                 if(Command(GENT2,60)&&(FifoNumber==11)&&FIFO[9]==0x00)
  257.                                 return 1;
  258.                                 else
  259.                                 return 0;
  260.                         }
  261.                 }
  262.                 else return 0;
  263.                 return         0;
  264. }
  265. bit Searchfinger() //搜搜指紋(發送搜索命令,以及根據返回值確定是否存在)
  266. {
  267.         if(Command(SEAT,60)&&(FifoNumber==15)&&(FIFO[9]==0x00))
  268.         {
  269.                 SearchNumber=FIFO[10]*0x100+FIFO[11]; //搜索到的頁碼值
  270.                 //MatchScore=FIFO[12]*0x100+FIFO[13];
  271.                 return 1;
  272.         }
  273.         else
  274.         {
  275.         return 0;
  276.         }
  277. }
  278. uchar search()          //搜索指紋
  279. {
  280.         uchar SearchBuf=0,i=0;
  281.         while(i<20)
  282.         {
  283.                 if(ImgProcess(1)==1)  //首先讀入一次指紋
  284.                 {
  285.                         SearchBuf=Searchfinger();  //進行指紋比對,如果搜索到,返回搜索到的指紋序號
  286.                         if(SearchBuf==1)
  287.                         {
  288.                                 return SearchNumber;
  289.                         }
  290.                         else
  291.                                 return 255;        //表示搜索到的指紋不正確
  292.                 }
  293.                 i++;
  294.         }
  295.         return 0;
  296. }
  297. bit savefingure(uchar ID) //保存指紋
  298. {
  299.         uchar i=0;         //開始進行儲存指紋模塊的操作
  300.         for(i=0;i<16;i++)//保存指紋信息
  301.         {
  302.                 FIFO[i]=STOR[i];
  303.         }
  304.         FIFO[12]=ID; //校驗和
  305.         FIFO[14]=FIFO[14]+ID;
  306.         if(Command(FIFO,70)==1)//進行存放指紋模板的命令
  307.         {
  308.                 return 1;
  309.         }
  310.         else
  311.                 return 0;        //不成功
  312. }
  313. uchar enroll() //采集兩次指紋,生成一個指紋模板
  314. {
  315.         uchar temp=0,count=0;
  316.         while(1)
  317.         {
  318.                 temp=ImgProcess(1);//生成特征1
  319.                 if(temp==1)        //生成特征文件成功
  320.                 {         //采集第一個特征成功
  321.                         count=0;
  322.                         buzzer=0;
  323.                         delay1ms(100);
  324.                         buzzer=1;
  325.                         break;
  326.                 }
  327.                 else
  328.                 {
  329.                         if(temp==0)        //采集指紋沒有成功
  330.                         {
  331.                                 count++;
  332.                                 if(count>=40)//采集了40次,還不成功,直接采集失敗,直接退出enroll函數,返回0
  333.                                         return 0;
  334.                         }
  335.                 }
  336.         }
  337.         delay1ms(2000);//延時2秒開始采集下一個特征
  338.         //開始采集第二個特征
  339.         while(1)  
  340.         {
  341.                 temp=ImgProcess(2);        //生成特征2
  342.                 if(temp==1)           //生成特征文件2成功
  343.                 {
  344.                         if((Command(MERG,40)&&(FifoNumber==11)&&(FIFO[9]==0x00))==1)//合并成功返回1
  345.                         {
  346.                                 buzzer=0;
  347.                                 delay1ms(100);
  348.                                 buzzer=1;
  349.                                 delay1ms(100);
  350.                                 buzzer=0;
  351.                                 delay1ms(100);        //響兩聲表示一個模板成功
  352.                                 buzzer=1;
  353.                                 return 1;
  354.                         }
  355.                         else
  356.                         return         0;
  357.                 }
  358.                 else
  359.                 {
  360.                         if(temp==1)//采集指紋沒有成功
  361.                 {
  362.                                 count++;
  363.                                 if(count>=25)
  364.                                 return 0;
  365.                         }
  366.                 }
  367.         }
  368. }
  369. void main(void)
  370. {
  371.         uchar i=0;
  372.         init_12864();
  373.         ET0=1;         //定時器0開中斷
  374.         TL0=0x97;  //17ms的初值
  375.         TH0=0xbd;
  376.         SCON=0x50; //UART方式1:8位UART:REN=1:允許接收
  377.         PCON=0x00; //SMOD=0,波特率不加倍
  378.         TMOD=0x21;        //T1方式2,用于UART波特率
  379.         TH1=0xfd;
  380.         TL1=0xfd;  //UART波特率設置9600
  381.         TR1=1; //開定時器
  382.         TR0=1; //中斷0低電平中斷
  383.         IT0=0; //中斷1低電平中斷
  384.         IT1=1; //開中斷0
  385.         EX0=1; //開中斷1
  386.         EX1=1;
  387.         EA=1;  
  388.         w_12864(com,0x90);
  389.         w_12864(dat,0x34);
  390.         //SMG_g=0;
  391.         //P0=tab[0];
  392.         for(i=0;i<6;i++)//開始握手6次,如果沒有一次成功,表示模快通信不正常,只要成功跳出循環
  393.         {
  394.                 if(VefPSW()==1)        //與模塊握手通過,綠燈亮起。進入識別模式
  395.                 {
  396.                 w_12864(com,0x90);
  397.                 w_12864(dat,0x37);
  398.                         green=0;
  399.                         buzzer=0;
  400.                         delay1ms(300);
  401.                         buzzer=1;
  402.                         green=1;
  403.                         red=0;
  404.                         break;//成功就退出這個循環
  405.                 }
  406.         }
  407.         while(1)
  408.         {
  409.                 if(k2==0)//錄入一個指紋
  410.                 {
  411.                         delay1ms(10);
  412.                         if(k2==0)//如果仍為低電平,表示按鍵有效
  413.                         {
  414.                                 while(k2==0); //等待松手
  415.                                 if(VefPSW()==1&&modeflag==1&&SaveNumber<10)//與模塊握手通過
  416.                                 {                                         
  417.                                 /*        w_12864(com,0x80);
  418.                                         w_12864(dat,'y');
  419.                                         w_12864(dat,'e');
  420.                                         w_12864(dat,'s');*/                                                                                                                                                                                                
  421.                                         if(enroll()==1)//采集兩次,生成一個指紋模塊成功
  422.                                         {        
  423.                                                 if(savefingure(SaveNumber+1)==1)//保存也成功
  424.                                                 {
  425.                                                         SaveNumber++; //加一次
  426.                                                         //P0=tab[SaveNumber];
  427.                                                         delay1ms(200);
  428.                                                         //P0=0xff;
  429.                                                         delay1ms(200);
  430.                                                         //P0=tab[SaveNumber];
  431.                                                                 //w_12864(com,0x90);
  432.                                                 //w_12864(dat,0x31);
  433.                                                 }
  434.                                         }
  435.                                 }
  436.                                 else
  437.                                 {
  438.                                         buzzer=0;
  439.                                         for(i=0;i<8;i++)
  440.                                         {
  441.                                                 delay1ms(100);
  442.                                                 red=~red;
  443.                                         }
  444.                                         red=0;
  445.                                         buzzer=1;
  446.                                 //w_12864(com,0x88);
  447.                                 //w_12864(dat,0x32);
  448.                                 }
  449.                         }
  450.                 }
  451.                 if(modeflag==0)//為識別模式
  452.                 {
  453.                         green=0;
  454.                         red=1;
  455.                         searchnum=search();
  456.                         if(searchnum>=1&&searchnum<=162)//只能存入162個指紋
  457.                         {
  458.                                 //P0=tab[searchnum];//顯示搜索到的指紋模塊
  459.                                         //w_12864(com,0x87);
  460.                                 //w_12864(dat,0x33);
  461.                                 //relay=0;
  462.                                 buzzer=0;
  463.                                 delay1ms(100);
  464.                                 buzzer=1;
  465.                                 delay1ms(3000);
  466.                                 //relay=1;
  467.                         }
  468.                         if(searchnum==255)        //不正確的指紋,蜂鳴器響三聲
  469.                         {
  470.                                 //P0=tab[0];//顯示
  471.                                          //w_12864(com,0x86);
  472.                                 //w_12864(dat,0x35);
  473.                                 buzzer=0;delay1ms(100);buzzer=1;delay1ms(100);
  474.                                 buzzer=0;delay1ms(100);buzzer=1;delay1ms(100);
  475.                                 buzzer=0;delay1ms(100);buzzer=1;delay1ms(100);
  476.                         }
  477.                 }
  478.                 if(modeflag==1)//錄入模式
  479.                 {
  480.                         green=1;
  481.                         red=0;
  482.                 }
  483.                 if(clearalflag==1)
  484.                 {        
  485.                         clearalflag=0;
  486.                         Clear_All();
  487.                         red=0;
  488.                         green=1;
  489.                         modeflag=1;//進入錄入指紋模式
  490.                 //        P0=tab[0];//表示沒有指紋錄入
  491.                                  //w_12864(com,0x98);
  492.                         //        w_12864(dat,0x38);
  493.                         buzzer=0;
  494.                         delay1ms(800);
  495.                         buzzer=1;
  496.                         SaveNumber=0;
  497.                 }
  498.                 if(changeflag==1)
  499.                 {
  500.                         changeflag=0;
  501.                         if(modeflag==0)//識別模式
  502.                         {
  503.                                 green=0;
  504.                                 red=1;
  505.                         //        P0=tab[0];//顯示當前幾個指紋
  506.                                 //w_12864(com,0x92);
  507.                                 //w_12864(dat,0x37);
  508.                          }
  509.                          else          //錄入模式
  510.                         {
  511.                                 red=0;
  512.                                 green=1;
  513.                          //        P0=tab[0]; //顯示0
  514.                          //w_12864(com,0x94);
  515.                                 //w_12864(dat,0x38);
  516.                         }
  517.                 }
  518.           }
  519.         }
  520.         void Timer0() interrupt 1  //定時器0中斷函數
  521.         {
  522.                 TL0=0x97;
  523.                 TH0=0xbd;
  524.                 clk0++;        //延時17ms
  525.         }
  526.         void int0()interrupt 0 //中斷0,清除所有指紋
  527.         {
  528.                 if(k3==0) //清除所有指紋
  529.                 {
  530.                         delay1ms(10);
  531.                         if(k3==0)//如果仍為低電平,表示按有效
  532.                         {
  533.                                  while(k3==0); //等待松手
  534.                                 clearalflag=1;
  535.                                 changeflag=1;
  536.                         }
  537.                 }
  538.         }
  539.         void int1()        interrupt 2        //中斷1,模式轉換
  540.         {
  541.                 if(k1==0)  //模式轉換 其中用modeflag來標志。默認從1個指紋開始錄入
  542.                 {
  543.                         delay1ms(10);
  544.                         if(k1==0)
  545.                         {
  546.                                 while(k1==0);
  547.                                 modeflag=~modeflag;//0表示錄入 1表示識別指紋
  548.                                 changeflag=1;
  549.                         }
  550.                 }
  551. }
復制代碼
回復

使用道具 舉報

地板
ID:103094 發表于 2016-4-5 19:53 | 只看該作者
已解決,問題出在模塊的波特率,用上位機軟件將模塊波特率改過來后就好用了
回復

使用道具 舉報

5#
ID:111032 發表于 2016-4-6 00:09 | 只看該作者
好厲害,這么多代碼,贊!
回復

使用道具 舉報

6#
ID:67175 發表于 2016-5-22 19:57 | 只看該作者
厲害 正在搞呢,沒有思路!  參考參口樓主方案。
回復

使用道具 舉報

7#
ID:123559 發表于 2016-6-9 13:51 | 只看該作者
寫這么多代碼?指紋需要這么多的代碼?
回復

使用道具 舉報

8#
ID:140040 發表于 2016-9-21 16:36 | 只看該作者
贊一個,,我也正在搞
回復

使用道具 舉報

9#
ID:140040 發表于 2016-9-21 16:39 | 只看該作者
我也正在做,,贊一個
回復

使用道具 舉報

10#
ID:140040 發表于 2016-9-21 17:40 | 只看該作者
下載試試看去
回復

使用道具 舉報

11#
ID:140040 發表于 2016-9-21 17:52 | 只看該作者
樓主,可以再來更詳細的資料嗎?現在搞這個,可以學習學習
回復

使用道具 舉報

12#
ID:154256 發表于 2016-12-12 22:25 | 只看該作者
求教啊,畢業設計急需
回復

使用道具 舉報

13#
ID:154103 發表于 2016-12-12 22:58 | 只看該作者

可以可以,有想法。
回復

使用道具 舉報

14#
ID:221594 發表于 2017-9-6 08:51 | 只看該作者
求教學,有償
回復

使用道具 舉報

15#
ID:237440 發表于 2017-10-28 19:27 | 只看該作者

城章R307指紋識別模塊做指紋鎖很簡單的我日記里有需要的可以去看一下
回復

使用道具 舉報

16#
ID:106211 發表于 2017-12-17 23:43 | 只看該作者
FPC1012指紋識別模塊與單片機stm32誰會做,
回復

使用道具 舉報

17#
ID:507944 發表于 2019-4-9 15:36 | 只看該作者
六腳的TOUCH和VUSB如何接單片機呀
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区四区三区四 | 欧美视频一区二区三区 | 日韩av一区二区在线观看 | 日韩快播电影 | 国产亚洲黄色片 | 精品国产乱码久久久久久中文 | 99精品在线观看 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 日本不卡一区 | 国产精品一区二区日韩 | 欧美精品在线一区二区三区 | 中文字幕精品一区久久久久 | 美女黄频| 欧美午夜精品 | 中文字幕日韩一区 | 久久一区二区三区四区 | 国产午夜视频 | 国产专区在线 | 鸡毛片 | 91精品国产综合久久久久久丝袜 | 精品一区二区久久久久久久网精 | 天堂三级 | 精品综合视频 | 91人人看 | 国产东北一级毛片 | 久久9精品 | 日韩国产欧美视频 | 午夜不卡福利视频 | 国产精品久久久久久妇女6080 | 91成人精品| 日韩精品成人 | 国产高清在线 | 欧美日韩不卡在线 | 欧美日韩亚洲一区 | 久久i| 伊人无码高清 | 懂色一区二区三区免费观看 | 日本三级网站在线 | 国产精品久久久99 | 欧美乱大交xxxxx另类电影 | 欧美在线|