佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2394|回复: 3

两个WIEGAND 26 RFID READER的问题

[复制链接]
发表于 22-2-2010 07:28 AM | 显示全部楼层 |阅读模式
本帖最后由 最爱金泰希 于 22-2-2010 10:54 PM 编辑

写出:
1. 你要想做什么? 你的应用是什么?
用PIC16F877A的
我用两个WIEGAND 26 RFID READER来控制两个门
就好象CAR PARK那样
不过是小型的
一个出口和一个进口把了

2. 你想要拿到什么效果
打个比喻
下面的SOURCE CODE
detect()是进口
detect1()是出口
main program 那边我只会写
执行了detect()才能执行detect2()
可是我的效果是要当有卡在出口SCAN的时候
如何做到他不用经过detect()直接可以EXECUTE detect2()
如果不明白我的解释可以想象一下一个CAR PARK 如何运做
(一个出口和一个进口的而已)

3. 你做了什么

source code如下
两个reader的source code
就是不懂main program 那里要怎样弄
或着SUBROUTINE如何改

4. 你遇到了什么问题。
不知道应该从MAIN PROGRAM OR SUBROUTINE下手
不过觉得SUBROUTINE会比较好

5. 你用什么MCU?
PIC16F877A

6. 你用什么语言? ASM /C/PICBasic/Keil?Compiler 版本?
PCWH -C COMPILER

7. 有源码吗?
在下面
SUBROUTINE可以说是PASSIVE的
就是说要有卡才会执行
SOURCE CODE是买了某些产品过后FREE的然后自己改了一些

8. 有电路图吗?
9. 有照片/图片补充吗?
10. 你住的地区在哪里? 如要买东西可能同区域的朋友能给予建议。
SELANGOR UPM AREA

11. 你google 了吗?如有,搜索关键字是什么?
找不到所以来这里求救




#include <16f877A.h>
#use delay(clock=20000000)
#fuses hs,protect,nowdt,nolvp
#define use_portb_lcd TRUE
#include <lcd.c>

#byte PORTA=5
#byte PORTB=6
#byte PORTC=7

int buffer[3];
int i;

void detect();

void main()
{
   set_tris_a(0x36);
   set_tris_b(0x00);
   set_tris_c(0xFF);
   lcd_init();

   do {
      detect();
      printf(lcd_putc, "\fCard: %X%X%X    ",buffer[2],buffer[1],buffer[0]);
      }while(1);

}

void detect()
{
      buffer[0]=0;
      buffer[1]=0;
      buffer[2]=0;

      for(i=0; i<26;i++)
      {       while(input(PIN_A1)==1 && input(PIN_A2)==1);
               if(input(PIN_A1)==0 )
               {       if(i!=0 && i != 25)
                        {    shift_left(buffer,3,0); }
               }
               if(input(PIN_A2)==0)
               {        if(i!=0 && i != 25)
                        {shift_left(buffer,3,1); }
               }
               delay_us(500);
      }
}

版主如果看到了我的PM可以先开回我的贴先吗?
我现在不得空
暂时编辑了这么多
迟些再改

试过这个不可以哦
#include <16f877A.h>
#use delay(clock=20000000)
#fuses hs,protect,nowdt,nolvp
#define use_portb_lcd TRUE
#include

#byte PORTA=5
#byte PORTB=6
#byte PORTC=7

int buffer[6];
int i;

void detect();
void detect1();

void main()
{
   set_tris_a(0x36);
   set_tris_b(0x00);
   set_tris_c(0xFF);
   lcd_init();

   do {
      if (detect())
      {printf(lcd_putc, "\fCard: %X%X%X    ",buffer[2],buffer[1],buffer[0]);}
      else if (detect1())
      {printf(lcd_putc, "\fCard: %X%X%X    ",buffer[5],buffer[4],buffer[3]);}
      }while(1);

}

void detect()
{   
      buffer[0]=0;
      buffer[1]=0;
      buffer[2]=0;

      for(i=0; i<26;i++)
      {       while(input(PIN_A1)==1 && input(PIN_A2)==1);
               if(input(PIN_A1)==0 )
               {       if(i!=0 && i != 25)
                        {    shift_left(buffer,3,0); }
               }
               if(input(PIN_A2)==0)
               {        if(i!=0 && i != 25)
                        {shift_left(buffer,3,1); }
               }
               delay_us(500);
      }
      
   
}

void detect1()
{   
      buffer[3]=0;
      buffer[4]=0;
      buffer[5]=0;

      for(i=0; i<26;i++)
      {       while(input(PIN_A4)==1 && input(PIN_A5)==1);
               if(input(PIN_A4)==0 )
               {       if(i!=0 && i != 25)
                        {    shift_left(buffer,3,0); }
               }
               if(input(PIN_A5)==0)
               {        if(i!=0 && i != 25)
                        {shift_left(buffer,3,1); }
               }
               delay_us(500);
      }
      
   
}


如果还有不明之处版主说明下
谢谢
回复

使用道具 举报


ADVERTISEMENT

发表于 22-2-2010 06:21 PM | 显示全部楼层
本帖最后由 pic 于 22-2-2010 07:18 PM 编辑

楼主, 电路图, 照片。
还有源码哪里抄来的也请注明一下。

2. 如果是学生问功课, 请注明你是什么学校, 几年级生,什么major.
回复

使用道具 举报

 楼主| 发表于 22-2-2010 10:35 PM | 显示全部楼层
本帖最后由 最爱金泰希 于 22-2-2010 10:50 PM 编辑
楼主, 电路图, 照片。
还有源码哪里抄来的也请注明一下。

2. 如果是学生问功课, 请注明你是什么学校 ...
pic 发表于 22-2-2010 06:21 PM




其实电路图真的那么重要?
因为我只是FOCUS在PROGRAMMING PART
今天我去找那个我跟他买的人了
他讲如果要做到好象我要求的那样
改那个SUBROUTINE的PROGRAM是可以的
那个SUBROUTINE就变成一个把了咯
我之前也有试过
不过我做不到

我是FINAL YEAR的学生
做着FINAL YEAR PROJECT
E&E FINAL YEAR STUDENT
我的PROJECT有分很多PART所以如果要一个贴子讲完全部的话很难下的

顺便感谢版主开回我的贴
回复

使用道具 举报

发表于 27-2-2010 10:38 AM | 显示全部楼层
本帖最后由 pic 于 27-2-2010 10:42 AM 编辑
其实电路图真的那么重要?
最爱金泰希 发表于 22-2-2010 10:35 PM

当然重要。

那个RFID reader 的电路, 如有, 请放。

  1. void detect()
  2. {   
  3.       buffer[0]=0;
  4.       buffer[1]=0;
  5.       buffer[2]=0;

  6.       for(i=0; i<26;i++)
  7.       {       while(input(PIN_A1)==1 && input(PIN_A2)==1);
  8.                if(input(PIN_A1)==0 )
  9.                {       if(i!=0 && i != 25)
  10.                         {    shift_left(buffer,3,0); }
  11.                }

  12.                if(input(PIN_A2)==0)
  13.                {        if(i!=0 && i != 25)
  14.                         {shift_left(buffer,3,1); }
  15.                }

  16.                delay_us(500);
  17.       }
  18. }



  19. void detect1()
  20. {   
  21.       buffer2[0]=0;
  22.       buffer2[1]=0;
  23.       buffer2[2]=0;

  24.       for(i=0; i<26;i++)
  25.       {       while(input(PIN_A4)==1 && input(PIN_A5)==1);
  26.                if(input(PIN_A4)==0 )
  27.                {       if(i!=0 && i != 25)
  28.                         {    shift_left(buffer2,3,0); }
  29.                }

  30.                if(input(PIN_A5)==0)
  31.                {        if(i!=0 && i != 25)
  32.                         {shift_left(buffer2,3,1); }
  33.                }

  34.                delay_us(500);
  35.       }
  36. }
复制代码

用独立的Buffer 和Buffer2.
试试吧。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 28-3-2024 05:17 PM , Processed in 0.064300 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表