[MCU方案]CC2530无线 IC 卡考勤机

2019-07-26 19:08发布

本帖最后由 sharknarduo 于 2015-6-12 19:02 编辑

IC 卡 (Integrated Circuit Card,集成电路卡),有些国家和地区
也称智能卡(smart card)、智慧卡(intelligent card)、微电路卡
(microcircuit card)或微芯片卡等。它是将一个微电子芯片嵌入符合 ISO
7816 标准的卡基中,做成卡片形式。 IC 卡读写器是 IC 卡与应用系统间
的桥梁,在 ISO 国际标准中称之为接口设备 IFD(Interface Device)。 IFD
内 CPU 通过一个接口电路与 IC 卡相连并进行通信。 IC 卡接口电路是 IC
卡读写器中至关重要的部分,根据实际应用系统的不同,可选择并行通信、
半双工串行通信和 I2C 通信等不同的 IC 卡读写芯片。
非接触式 IC 卡又称射频卡,成功地解决了无源(卡中无电源)和免
接触这一难题,是电子器件领域的一大突破。主要用于公交、轮渡、地铁
的自动收费系统,也应用在门禁管理、身份证明和电子钱包。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
sharknarduo
2019-07-27 00:49
1. #include "variable.h"
2. #include"delay.h"
3. #include "KEY.h"
4. #include "UART.h"
5. #include "IC_w_r.h"
6. void Initial()
7. {
8. CLKCONCMD &= ~0x40; //设置系统时钟源为 32MHZ 晶振
9. while(CLKCONSTA & 0x40); //等待晶振稳定为 32M
10. CLKCONCMD &= ~0x47; //设置系统主时钟频率为 32MHZ
11. UartInitial();
12.
13. …
14. …
IC_SCK = 1;
IC_CS = 1;
15. }
16. void IC_test()
17. {
18. uint
19. uchar qq[4];
20. uchar find=0xaa;
21. uchar ar;
22.
23. while(1)
24. {
25. /***16 进制转 ASC 码*****/
26. uchar
27. asc_16[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','
D','E','F'},i;
28. uchar Card_Id[8]; //存放 32 位卡号
29. ar = PcdRequest(0x52,qq);//寻卡
30. if(ar != 0x26)
31. ar = PcdRequest(0x52,qq);
32. if(ar != 0x26)
33. find = 0xaa;
34. if((ar == 0x26)&&(find == 0xaa))
35. {
36. if(PcdAnticoll(qq) == 0x26);//防冲撞
37. {
38. UartSend_String("The Card ID is: ",16);
39.
40. /****16 进制转 ASC 码********/
41. for(i=0;i<4;i++)
42. {
43. Card_Id[i*2]=asc_16[qq[i]/16];
44. Card_Id[i*2+1]=asc_16[qq[i]%16];
45. }
46. UartSend_String(Card_Id,8); //打印 IC 卡号
47. UartSend_String(" ",1);
48. find = 0x00;
49. }
50. }
51. }
52. }
53. void main()
54. {
55. Initial();
56. PcdReset();
57. M500PcdConfigISOType('A'); //设置工作方式
58. while(1)
59. {
60. IC_test();//IC 卡检测
}
61. }
我们留意主函数代码:
第 55~56 行:初始化工作。
第 57 行:设置 IC 卡模块工作方式。
第 60 行:检测 IC 卡。
大家可以在工程里进入具体函数看代码,理解 IC 卡初始化及读取卡号的过程。

一周热门 更多>