找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4707|回复: 5
打印 上一主题 下一主题
收起左侧

基于51单片机的c语言韦根卡读卡程序 门禁系统

[复制链接]
跳转到指定楼层
楼主


单片机源程序如下:
  1. /*******************************************************************************
  2. * 文件名称:Wiegand.c                               
  3. * 说明:本文件为韦根卡读卡程序。
  4. * 功能:实现对韦根卡的识别
  5. * 修改:无
  6. * 版本:1.0.0
  7. * 作者:YuanDong
  8. * 时间:2009.7.20
  9. *******************************************************************************/       
  10. #include <51reg.h>
  11. #include <string.h>
  12. #include <stdio.h>      /*标准输入输出定义*/

  13.                                
  14. sbit DATA0=P3^2;   //数据线0
  15. sbit DATA1=P3^3;   //数据线1

  16. /*定义韦根卡的一个结构体*/
  17. struct wiegand_dev
  18. {
  19.         char wiegand[26];                             // 定义Weigand  26Bits 数据
  20.   unsigned char  state;  
  21.         int global_var;                                 // 全局计数器 计数组长度

  22.   
  23. };static struct wiegand_dev *rf_card;


  24. /*****************************************************************************************
  25. *函数名称:initial(void)
  26. *函数功能:中断初始化
  27. *入口函数:无
  28. *出口函数:无
  29. *****************************************************************************************/
  30. void initial(void)
  31. {
  32.   EA=0;   //关CPU中断

  33.   IT0=0;  //Wiegand-Data0        低电平触发中断
  34.   EX0=1;  //外部中断0允许
  35.   
  36.   IT1=0;  //Wiegand-Data1 低电平触发中断
  37.   EX1=1;  //外部中断1允许

  38.   EA=1;  //开CPU中断
  39. }
  40. /*****************************************************************************************
  41. *函数名称:Wiegand_Data0( )
  42. *函数功能:韦根卡数据0中断处理
  43. *入口函数:无
  44. *出口函数:无
  45. *****************************************************************************************/
  46. void Wiegand_Data0( ) interrupt 0 using 2  //中断0处理函数,使用第二组寄存器
  47. {
  48.         EX0=0;         //关中断0
  49.         udelay(5);
  50.        
  51.         if(DATA0 == 0)  //如果INT0为低,标示0线中断
  52.         {
  53.                 wiegand[rf_card->global_var] = '0';      //往数组里填0
  54.                 global_var = rf_card->global_var + 1;
  55.         }       
  56.        
  57.         udelay(500);   //延时1500uS(去掉中断后的处理时间)
  58.        
  59.         EX0=1;         //开中断0

  60.   udelay(2500);  //延时2500uS(max值,去掉前期处理时间)

  61. }
  62. /*****************************************************************************************
  63. *函数名称:Wiegand_Data1( )
  64. *函数功能:韦根卡数据1中断处理
  65. *入口函数:无
  66. *出口函数:无
  67. *****************************************************************************************/
  68. void  Wiegand_Data1( ) interrupt 2 using 1  //中断1处理函数,使用第一组寄存器
  69. {
  70.         EX1=0;         //关中断1                       
  71.         udelay(5);
  72.        
  73.         if(DATA1 == 0)
  74.         {
  75.                 rf_card->wiegand[rf_card->global_var] = '1';
  76.                 rf_card->global_var = rf_card->global_var + 1;
  77.         }       
  78.         udelay(500);
  79.         EX1=1;         //开中断0
  80.   
  81. }
  82. /*****************************************************************************************
  83. *函数名称:udelay(uint num)
  84. *函数功能:延时函数 延时num  us
  85. *入口函数:num
  86. *出口函数:无
  87. *****************************************************************************************/
  88. void udelay(uint num)
  89. {
  90.   num=num/5;               
  91.   while(--num);       
  92. }
  93. /*****************************************************************************************
  94. *函数名称:main( )
  95. *函数功能:主函数
  96. *入口函数:无
  97. *出口函数:无
  98. *****************************************************************************************/
  99. void main()
  100. (
  101.    whlie(1)
  102.    {
  103.    initial(void);
  104.    rf_card->global=0;
  105.    
  106.    //等待中断
  107.    }
  108. )
复制代码

所有资料51hei提供下载:
基于单片机的门禁系统.zip (17.97 KB, 下载次数: 100)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2018-6-19 17:54 | 只看该作者
不错,有空试试先
回复

使用道具 举报

板凳
ID:349631 发表于 2018-6-21 22:15 | 只看该作者
正好缺这个
回复

使用道具 举报

地板
ID:349631 发表于 2018-6-21 22:16 | 只看该作者
下载来看看
回复

使用道具 举报

5#
ID:854062 发表于 2020-12-3 21:24 来自手机 | 只看该作者
正好需要这个,可以,点个赞
回复

使用道具 举报

6#
ID:962373 发表于 2021-8-25 23:59 | 只看该作者
非常需要这方面程序,之前找了半天!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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