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

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

QQ登錄

只需一步,快速開始

搜索
查看: 3928|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

城章R307模塊做指紋鎖C51的無(wú)聊時(shí)候?qū)懙南M麑?duì)大家有用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:237440 發(fā)表于 2017-10-28 19:39 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include < at89x51.h>
#define uchar unsigned char
#define uint unsigned int  


void rs232_init();                        
uchar key=0;     //接收計(jì)數(shù)器
int i=0;
uchar data   table1[15];


sbit K2=P2^1;
sbit K1=P2^0;
sbit led= P3^7;
sbit p1=P0^0;
sbit cumo=P1^4;  //觸摸輸入信號(hào)
sbit fmp=P3^2;          //蜂鳴器控制腳低電平響


uchar  flag=0;  //觸摸標(biāo)志 0是有效  1為無(wú)效
uchar  zcid=0;   //指紋注冊(cè)標(biāo)志1為有效0無(wú)效

  void delay1ms(uint x)
{
  uchar  q=124;
  while(x--)
     while(q--);

}


void rs232_init()
{
         TMOD=0x20;
         TH1=0xfd;
         TL1=0xfd;
         TR1=1;
         SM0=0;
         SM1=1;
         REN=1;                                                        //先設(shè)定號(hào)工作方式,在打開允許接收
         EA=1;
         ES=1;
                  TI=0;
           RI=0;

for( i=0;i<15;i++) //初始化table1[]數(shù)組
        {
                table1[i]=0xFF;
    }



}

void ser()interrupt 4
{                 
                RI=0;
                table1[key++]=SBUF;                                //存數(shù)據(jù)到接收緩存
                       
}



void  GR_Enroll()              //        自動(dòng)注冊(cè)模板
{       
     uchar sendbuffer[]={0xef,0x01,0xff,0xff,0xff,0x0ff,0x01,0x00,0x03,0x33,0x00,0x37};
        uchar j=0;

                  ES=0;  //禁止中斷
    for(j=0;j<12;j++)
                {
                SBUF=sendbuffer[j];
                      while(!TI);
                      TI=0;  }
                ES=1;  //允許中斷

                 while(key<13); //等待發(fā)送到0-13即14位數(shù)據(jù)

                       
                          if(table1[9]==0x00) //判斷命令數(shù)組10位返回0x00即指紋驗(yàn)證通過返回其它數(shù)就不通過
                {       
                   fmp=0;  //蜂鳴器響
                   delay1ms(200);
                  
                    fmp=1;  //停止蜂鳴器響
                        delay1ms(500);
                  
                                   }
                        else

                {
                 fmp=0;  //蜂鳴器響
                   delay1ms(80);
                    fmp=1;  //停止蜂鳴器響         
                          delay1ms(80);
                         fmp=0;  //蜂鳴器響
                   delay1ms(80);
                    fmp=1;  //停止蜂鳴器響         

                           }        
                                                
        for( i=0;i<13;i++)                //接收完數(shù)據(jù)把數(shù)據(jù)置為0xFF
        {
                table1[i]=0xff;
    }                            
                 key=0;  //接收完畢把數(shù)據(jù)個(gè)數(shù)標(biāo)志清零       
        zcid=0;                //清空指紋注冊(cè)標(biāo)志

                                    }          



void GR_Identity()    //        自動(dòng)驗(yàn)證指紋
{   
        uchar j=0;
  uchar sendbuffer[]={0xef,0x01,0xff,0xff,0xff,0x0ff,0x01,0x00,0x03,0x34,0x00,0x38}; //指紋驗(yàn)證數(shù)組命令
       
        if(cumo==0 && flag==0)     //滿足指紋感應(yīng)有手指并且感應(yīng)標(biāo)志為0時(shí)候才執(zhí)行指紋驗(yàn)證程序
           {           
                ES=0;  //禁止中斷
    for(j=0;j<12;j++)       //發(fā)送指紋驗(yàn)證數(shù)組命令
                {
                SBUF=sendbuffer[j];
                      while(!TI);
                      TI=0;   }
                                                                 
                   ES=1;  //允許中斷

                         while(key<15) ; //等待發(fā)送到0-14個(gè)數(shù)據(jù)即15位數(shù)據(jù)接收完畢

                       
                          if(table1[9]==0x00) //判斷命令數(shù)組10位返回0x00即指紋驗(yàn)證通過返回其它數(shù)就不通過
                {

                    if(        table1[10]==0x00 &&  table1[11]==0x00)                //如果指紋庫(kù)里0個(gè)指紋那就啟動(dòng)注冊(cè)新指紋函數(shù)
               
                {
                            
                         zcid=1;                       
                        fmp=0;  //蜂鳴器響
                   delay1ms(200);                   
                    fmp=1;  //停止蜂鳴器響
                   delay1ms(500);
                                  }

                          else

                {        p1=0;  //驗(yàn)證通過p1指示燈亮 不通過即滅
                   fmp=0;  //蜂鳴器響
                   delay1ms(200);
                  
                    fmp=1;  //停止蜂鳴器響
                        delay1ms(500);
                                     p1=1;         //1秒時(shí)間到關(guān)閉
                                                              }                                          
                                                  
                                                   }
                        else

                {        p1=1;
                 fmp=0;  //蜂鳴器響
                   delay1ms(80);
                    fmp=1;  //停止蜂鳴器響         
                          delay1ms(80);
                         fmp=0;  //蜂鳴器響
                   delay1ms(80);
                    fmp=1;  //停止蜂鳴器響         

                           }        
                                                
        for( i=0;i<15;i++)                //接收完數(shù)據(jù)把數(shù)據(jù)置為0xFF
        {
                table1[i]=0xff;
    }                            
                       
                 flag=1;          //標(biāo)志置1待重新拿出手指置0指紋驗(yàn)證才起效
                 
                           delay1ms(250);//延時(shí)等待
                                                        
                          }       
                          
                 key=0;  //接收完畢把數(shù)據(jù)個(gè)數(shù)標(biāo)志清零            

}



void GR_Empty()        //        全部清空指紋庫(kù)函數(shù)
  {
     uchar sendbuffer[]={0xef,0x01,0xff,0xff,0xff,0x0ff,0x01,0x00,0x03,0x0D,0x00,0x11};
                uchar j=0;

                  ES=0;  //禁止中斷
    for(j=0;j<12;j++)
                {
                SBUF=sendbuffer[j];
                      while(!TI);
                      TI=0;  }
                ES=1;  //允許中斷

                 while(key<11); //等待發(fā)送到0-11即12位數(shù)據(jù)

                       
                          if(table1[9]==0x00) //判斷命令數(shù)組10位返回0x00即指紋驗(yàn)證通過返回其它數(shù)就不通過
                {       
                   fmp=0;  //蜂鳴器響
                   delay1ms(200);
                  
                    fmp=1;  //停止蜂鳴器響
                        delay1ms(500);
                  
                                   }
                        else

                {
                 fmp=0;  //蜂鳴器響
                   delay1ms(80);
                    fmp=1;  //停止蜂鳴器響         
                          delay1ms(80);
                         fmp=0;  //蜂鳴器響
                   delay1ms(80);
                    fmp=1;  //停止蜂鳴器響         

                           }        
                                                
        for( i=0;i<11;i++)                //接收完數(shù)據(jù)把數(shù)據(jù)置為0xFF
        {
                table1[i]=0xff;
    }                            
       
   key=0;  //接收完畢把數(shù)據(jù)個(gè)數(shù)標(biāo)志清零       


            }





















main()
{

                led=0;
        P0 = 0xFF;
         fmp=1;
         zcid=0;
        delay1ms(550);  //開機(jī)等待模塊延時(shí)函數(shù)
                 rs232_init();  //初始化函數(shù)
                delay1ms(1000);//開機(jī)等待模塊延時(shí)函數(shù)

         while(1)
         {
                         key=0;  //接收完畢把數(shù)據(jù)個(gè)數(shù)標(biāo)志清零       

                       if(cumo==1)  flag=0;           //待放開手指后標(biāo)志重新置0

                         GR_Identity();    //        自動(dòng)驗(yàn)證指紋


                          

                if(K1==0 || zcid==1 )                        //按下按鍵k1
               {       
         delay1ms(20);        //防抖動(dòng)延時(shí)       
        if(K1==1 ||zcid==1)     //松開k1按鍵
           {               
                         GR_Enroll();              //        自動(dòng)注冊(cè)模板
                }                        }




        if(K2==0)                        //按下按鍵k2
               {       
         delay1ms(20);        //防抖動(dòng)延時(shí)       
        if(K2==1)     //松開k1按鍵
           {              
            GR_Empty();           //        全部清空指紋庫(kù)函數(shù)
        }                       }
               

                 }
}

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:357940 發(fā)表于 2018-6-24 18:22 來自手機(jī) | 只看該作者
來學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:357940 發(fā)表于 2018-6-25 12:45 來自手機(jī) | 只看該作者
樓主可以發(fā)一下這個(gè)代碼的  仿真電路嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:356526 發(fā)表于 2018-6-25 20:10 來自手機(jī) | 只看該作者
太強(qiáng)了,有protues仿真嗎
回復(fù)

使用道具 舉報(bào)

5#
ID:71421 發(fā)表于 2019-3-14 08:44 | 只看該作者
感謝分享!!!!
回復(fù)

使用道具 舉報(bào)

6#
ID:793134 發(fā)表于 2020-7-13 08:35 來自手機(jī) | 只看該作者
樓主,這個(gè)代碼完整不
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 北条麻妃一区二区三区在线视频 | 一区二区免费高清视频 | 欧美在线视频一区二区 | 精品99在线 | 一区二区三区在线播放 | 国产精品视频一二三区 | 久久精品毛片 | 国产日韩在线观看一区 | 亚洲精品视频在线 | 精品一区二区免费视频 | 午夜在线| 丁香久久 | 欧美日韩一区二区在线观看 | 国产精品不卡一区 | 亚洲综合小视频 | 91视视频在线观看入口直接观看 | 我要看免费一级毛片 | 狠狠亚洲 | 激情六月丁香 | 四虎影音 | 成人在线免费av | 少妇一级淫片免费放播放 | 国产精品视频久久 | 一区二区免费在线观看 | 精品区一区二区 | 天堂av中文在线 | 国产激情视频网站 | 在线看片国产精品 | 99在线免费观看视频 | 久久av一区二区 | 一区二区视频在线 | 91大神在线看 | 亚洲成人黄色 | 欧美日韩国产精品一区 | 亚洲欧美中文字幕在线观看 | 国产精品一区二区三区在线 | 国产欧美精品一区二区三区 | 国产免费一区二区三区 | 日韩视频免费在线 | 欧美中文字幕在线 | 国产福利在线 |