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

QQ登錄

只需一步,快速開始

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

單片機(jī)控制門禁程序,求大神討論

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

uchar temp;         //標(biāo)志位
uchar buf[27];         //韋根26數(shù)據(jù)存儲(chǔ)位
uchar table[]={0,0,0};         //卡號(hào)存儲(chǔ)數(shù)組
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)//數(shù)據(jù)驗(yàn)證
{
        uchar i,j,even=0,odd=1;                                                                 
          temp=0; //初始化標(biāo)志位
    while(temp==26); //等待讀取完26位                               
    even=0;                                        //判斷奇偶校驗(yàn)是否正確
    for(j=1;j<13;j++)
     {
                 if(buf[j]==1)       
                  even=(~even)&0x01;
     }
     if(even!=buf[0])
      {
              temp=0;         //清除標(biāo)志         
              goto end;
      }         
    odd=1;
    for(i=13;i<25;i++)
     {
            if(buf[i]==1)                         
                odd=(~odd)&0x01;             
     }
     if(odd!=buf[25])
      {
                 temp=0;        //清除標(biāo)志
               goto end;
      }       
    temp=0;//清除標(biāo)志  
        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)//用轉(zhuǎn)換為字符
{
           //直接轉(zhuǎn)換
        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ù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

LCD的顯示是正常的  現(xiàn)在就是數(shù)據(jù)可以上傳了 但是卡號(hào)不對(duì)。而且WG26讀出來的數(shù)據(jù)比我預(yù)想的多了?求大神指點(diǎn)奧
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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)是一個(gè)字節(jié)+'0'一個(gè)字節(jié),那么 ICNo[0]是uchar型一個(gè)字節(jié)=兩個(gè)字節(jié)??是不是有問題呢??知道說的對(duì)不
回復(fù)

使用道具 舉報(bào)

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

看到這樣的帖真是過癮!為什么當(dāng)初他們就沒有那么多說教那么多求拜!個(gè)個(gè)那么幽默詼諧!建議版主開一個(gè)段子獎(jiǎng),大家相互互動(dòng)學(xué)習(xí),人氣會(huì)立馬上來!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表