找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機控制門禁程序,求大神討論

  [復制鏈接]
跳轉到指定樓層
樓主
ID:50660 發(fā)表于 2013-6-1 11:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人對WG26為刷卡器傳遞數據,寫了程序但是就是數據傳遞不上來 求大神看看,不勝感激程序如下:
  #include"LCD.H"//用LCD來顯示我的卡號
#include<string.h>
#include<intrins.h>

uchar temp;         //標志位
uchar buf[27];         //韋根26數據存儲位
uchar table[]={0,0,0};         //卡號存儲數組
uchar ICNo[]={1,1,1,1,1,0x3};
void exter_init(void );
void transform(void);
void data_check();
void main(void)
{
        exter_init();
        while(1)
        {
        data_check();
        transform();
        string_dat(0xc0,ICNo);
        }
                  
}
void data_check(void)//數據驗證
{
        uchar i,j,even=0,odd=1;                                                                 
          temp=0; //初始化標志位
    while(temp==26); //等待讀取完26位                               
    even=0;                                        //判斷奇偶校驗是否正確
    for(j=1;j<13;j++)
     {
                 if(buf[j]==1)       
                  even=(~even)&0x01;
     }
     if(even!=buf[0])
      {
              temp=0;         //清除標志         
              goto end;
      }         
    odd=1;
    for(i=13;i<25;i++)
     {
            if(buf[i]==1)                         
                odd=(~odd)&0x01;             
     }
     if(odd!=buf[25])
      {
                 temp=0;        //清除標志
               goto end;
      }       
    temp=0;//清除標志  
        for(i=0;i<3;i++)
        {
                for(j=(i*8);j<i*8+8;j++)
                {

                        table[i]=table[i]<<1|buf[j+1];
                }
        }      
        end:
       temp=0;       
}
void transform(void)//用轉換為字符
{
           //直接轉換
        ICNo[0]=((table[0]&0xF0)<<4)+'0';     //取wiegand[0]的高4位
        ICNo[1]=(table[0]&0x0F)+'0';          //取wiegand[0]的低4位
        ICNo[2]=((table[1]&0xF0)<<4)+'0';
        ICNo[3]=(table[1]&0x0F)+'0';//
        ICNo[4]=((table[2]&0xF0)<<4)+'0';
        ICNo[5]=(table[2]&0x0F)+'0';//
}
void exter_init(void )
{
        init_1602();
        string_dat(0x80,word1);
        EX0=1;EX1=1;
        IT0=1;IT1=1;
        EA=1;
}
void wigenISR0 (void) interrupt 0   
{   
          EX0=0;
           buf[temp++]=0; //DATA0=0;
        EX0=1;
}
void wigenISR1 (void ) interrupt 1
{
        EX1=0;
        buf[temp++]=1;//data1=1;
        EX1=1;
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:50574 發(fā)表于 2013-6-1 17:42 | 只看該作者
lcd 的顯示正常嗎?
回復

使用道具 舉報

板凳
ID:50660 發(fā)表于 2013-6-9 16:23 | 只看該作者
h333 發(fā)表于 2013-6-1 17:42
lcd 的顯示正常嗎?

LCD的顯示是正常的  現在就是數據可以上傳了 但是卡號不對。而且WG26讀出來的數據比我預想的多了?求大神指點奧
回復

使用道具 舉報

地板
ID:76287 發(fā)表于 2015-4-7 19:05 | 只看該作者
不懂,但是還是要頂,安撫樓主受傷心靈,每一個新手都是痛苦的開始,快樂的結局
回復

使用道具 舉報

5#
ID:103447 發(fā)表于 2016-1-16 13:26 | 只看該作者
讀字節(jié)操作函數
回復

使用道具 舉報

6#
ID:97249 發(fā)表于 2016-1-20 12:21 | 只看該作者
本帖最后由 紅塵有你 于 2016-1-20 12:22 編輯

ICNo[0]=((table[0]&0xF0)<<4)+'0';這后面加'0'什么意思,((table[0]&0xF0)<<4)是一個字節(jié)+'0'一個字節(jié),那么 ICNo[0]是uchar型一個字節(jié)=兩個字節(jié)??是不是有問題呢??知道說的對不
回復

使用道具 舉報

7#
ID:485724 發(fā)表于 2019-3-16 08:59 | 只看該作者
livingliving 發(fā)表于 2015-4-7 19:05
不懂,但是還是要頂,安撫樓主受傷心靈,每一個新手都是痛苦的開始,快樂的結局

看到這樣的帖真是過癮!為什么當初他們就沒有那么多說教那么多求拜!個個那么幽默詼諧!建議版主開一個段子獎,大家相互互動學習,人氣會立馬上來!
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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