久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

紅外遙控RC522芯片RFID公交卡、飯卡刷卡系統應用(附源碼)

  [復制鏈接]
跳轉到指定樓層
樓主


全部源碼下載:
RC-522 S50 038 12864刷卡程序.zip (225.13 KB, 下載次數: 932)

一、功能簡介:
1.
有讀卡信息(卡類型、類號、余額),初始化卡,充值和扣款功能。
2.多級菜單操作,菜單有反白高度顯示。
3.全遙控操作,通過遙控鍵盤控制讀、寫卡,并可輸入讀、寫數值。
4.自動設定數據范圍,超范圍自動提示。
5.可應用于公交卡刷卡和飯卡刷卡等類似應用。
   
1.系統組成                                      2. 歡迎界面
   
3.主菜單                                         4.卡信息二級子菜單
   
5.讀卡信息                                      6. 輸入充值額
   
7.充值刷卡                                      8. 輸入消費額
   
9.消費刷卡                                      10. 余額超范圍提示
二、系統組成:
                    1.MCU:STC12C5A60S2 ,11.0592MHz
                 2.12864帶中文字庫液晶
                 3.RFID讀卡模塊:RC522,+ S50卡
                 4.紅外遙控038接收頭,CARMP3遙控器,不同遙控器鍵值不同,若用不同品牌遙控器需修改鍵值   
                 5.LED指示燈(或為蜂鳴器)
                        RC522接法:
                        sbit     MF522_RST  =    P1^4;                  
                        sbit     MF522_NSS  =    P1^2;
                        sbit     MF522_SCK  =    P1^1;
                        sbit     MF522_SI   =    P1^0;
                        sbit     MF522_SO   =    P1^3;
                        
                        LED指示燈接法:
                        sbit     LED_GREEN  =    P1^5;                   //指示燈
                        
                        12864接法:
                        #define Lcd_Bus P0             //數據口
                        sbit LCM_RS  =  P2^0;            //寄存器選擇輸入
                        sbit LCM_RW  =  P2^1;            //液晶讀/寫控制
                        sbit LCM_EN  =  P2^2;            //液晶使能控制
                        sbit LCM_PSB =  P2^3;            //串/并方式
                        
                        紅外遙控接法:
                        sbit IRIN = P3^2; //紅外接收器數據線
                        遙控器功能鍵說明:prev為退格鍵,next為切換鍵,play為確認鍵,0-9為相應數字鍵        100+為小數點鍵

   
          注意:務必確保RC522供電為3.3V,接5V必燒!!!同時,為了系統運行穩定,整個系統最好單獨供電,用usb供電可能電流不足!
下面是主程序預覽:
  1. /************** 全遙控操作RFID刷卡系統************/
  2. /*
  3.    硬件:1.MCU:STC12C5A60S2 ,11.0592MHz
  4.           2.12864帶中文字庫液晶
  5.           3.RFID讀卡模塊:RC522,+ S50卡
  6.                   4.紅外遙控038接收頭,CARMP3遙控器,不同遙控器鍵值不同,若用不同品牌遙控器需修改鍵值   
  7.                   5.LED指示燈(或為蜂鳴器)
  8.                         RC522接法:
  9.                         sbit     MF522_RST  =    P1^4;                  
  10.                         sbit     MF522_NSS  =    P1^2;
  11.                         sbit     MF522_SCK  =    P1^1;
  12.                         sbit     MF522_SI   =    P1^0;
  13.                         sbit     MF522_SO   =    P1^3;
  14.                         
  15.                         LED指示燈接法:
  16.                         sbit     LED_GREEN  =    P1^5;                   //指示燈
  17.                         
  18.                         12864接法:
  19.                         #define Lcd_Bus P0             //數據口
  20.                         sbit LCM_RS  =  P2^0;            //寄存器選擇輸入
  21.                         sbit LCM_RW  =  P2^1;            //液晶讀/寫控制
  22.                         sbit LCM_EN  =  P2^2;            //液晶使能控制
  23.                         sbit LCM_PSB =  P2^3;            //串/并方式
  24.                         
  25.                         紅外遙控接法:
  26.                         sbit IRIN = P3^2; //紅外接收器數據線
  27.                         遙控器功能鍵說明:prev為退格鍵,next為切換鍵,play為確認鍵,0-9為相應數字鍵        100+為小數點鍵
  28.                         
  29.                         注意:務必確保RC522供電為3.3V,接5V必燒!!!

  30.         功能: 1.多級菜單操作,菜單有反白高度顯示。
  31.                2.全遙控操作,通過遙控鍵盤控制讀、寫卡,并可輸入讀、寫數值。
  32.                    3.有讀卡信息(卡類型、類號、余額),初始化卡,充值和扣款功能。
  33.                    4.自動設定數據范圍,超范圍自動提示。        
  34.                   
  35.         出品:聚龍居士
  36. */
  37. /****************************************/
  38. #include "reg52.h"
  39. #include "main.h"
  40. #include "mfrc522.h"        
  41. #include "string.h"
  42. #include "12864.h"
  43. #include "hw.h"
  44. #include "set.h"
  45. #include "delay.h"
  46. //M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
  47. //4字節金額(低字節在前)+4字節金額取反+4字節金額+1字節塊地址+1字節塊地址取反+1字節塊地址+1字節塊地址取反
  48. unsigned char code data1[16] = {0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};
  49. uchar g_ucTempbuf[20];   
  50. sfr AUXR  = 0x8E;
  51. /////////////////////////////////////////////////////////////////////
  52. //系統初始化
  53. /////////////////////////////////////////////////////////////////////
  54. void InitializeSystem()
  55. {
  56.         LED_GREEN = 1;
  57.         PcdReset();
  58.         PcdAntennaOff();
  59.         PcdAntennaOn();  
  60.         M500PcdConfigISOType( 'A' );
  61.         LED_GREEN = 0;
  62.         delay_10ms();        
  63.         LED_GREEN = 1;
  64.         delay_10ms();
  65.         LED_GREEN = 0;
  66. }

  67. void main( )
  68. {   
  69.         IE = 0x81;    //允許總中斷中斷,使能 INT0 外部中斷 相當于EA=1; EX0=1;
  70.     TCON = 0x01;  //觸發方式為脈沖負邊沿觸發   相當于IT0=1;
  71.     IRIN=1;       //紅外接收器數據初始化
  72.         lcm_init();
  73.     InitializeSystem( );
  74.         write12864GDRAM(bmp12864);//顯示開機畫面
  75.         Delay100ms(20);//延時
  76.         Clean_12864_GDRAM();
  77.         lcm_init();
  78.         display_welcome();
  79.         Delay100ms(20);
  80.         mainmenu(0);
  81.         w=1;
  82.         menu2=0;        
  83.         while(1)
  84.     {        
  85. /*-----------------------------紅外遙控切換功能---------------------------*/
  86.                 if (key_manue==1)         
  87.                 {                  
  88.                         DelayM(8);
  89. /*-----------------當是主菜單調時狀態 本鍵用于調整下一項---------------------------*/               
  90.                         if(key_manue==1&&w==1&& menu2==0)   //w為主菜單狀態位,menu2為子菜單狀態參數
  91.                         {
  92.                                   key_manue=0;
  93.                                 e++;
  94.                                 if (e >= 3 ) {e = 0;}                                             
  95.                                 mainmenu(e);                     //主菜單調整                                
  96.                         }
  97. /*------------------------當是子菜單時調整信息顯示子菜單-----------------------*/
  98.                         if(key_manue==1&&w == 0 &&menu2==1&&e==0)
  99.                         {
  100.                                 key_manue=0;
  101.                                 d++;
  102.                                 if(d>=3){d=0;}
  103.                                 set_info(d);                                       
  104.                         }
  105. /*---------------------當是子菜單時調整充值子菜單------------------------------*/
  106.                         if(key_manue==1&&w == 0&&menu2==1&&e==1)
  107.                         {
  108.                                 key_manue=0;
  109.                                 t++;
  110.                                 if(t>=2){t=0;}
  111.                                 set_inch(t);
  112.                         }
  113. /*---------------------當是子菜單時調整消費子菜單-------------------------------*/
  114.                         if(key_manue==1&&w == 0&&menu2==1&&e==2)
  115.                         {
  116.                                 key_manue=0;
  117.                                 a++;
  118.                                 if(a>=2){a=0;}
  119.                                 set_cons(a);
  120.                         }
  121.                         key_manue=0;
  122.                 }
  123. /*-----------------------------紅外遙控切換功能---------------------------*/


  124. /*--------------紅外遙控確認功能----------------------------------------*/               
  125.                 if (key_ok==1)                    
  126.                 {
  127.                         DelayM(8);
  128. /*---------------------主菜單時選項選擇確認功能-----------------------------------*/
  129.                         if(key_ok==1&&w==1&&menu2==0)
  130.                         {                        
  131.                                 key_ok=0;
  132.                                 menu2=1;
  133.                                 w=0;
  134.                                 switch(e) //進入相應子菜單
  135.                                 {
  136.                                         case 0:        
  137.                                                         d=0;
  138.                                                         set_info(d);
  139.                                                         break;
  140.                                         case 1:        t=0;
  141.                                                         set_inch(t);
  142.                                                         break;
  143.                                         case 2:        a=0;
  144.                                                         set_cons(a);
  145.                                                         break;
  146.                                 }
  147.                         }
  148. /*---------------------子菜單時選項選擇確認功能-----------------------------------*/
  149.                         if(key_ok==1&&w==0&&menu2==1)
  150.                         {                        
  151.                                 key_ok=0;
  152.                                 switch(e) //各子菜單確認鍵功能定義
  153.                                 {
  154.                                        
  155.                                         case 0:        
  156.                                                     if(d==0)
  157.                                                           { info();}
  158.                                                   if(d==1)
  159.                                                           { initcard();}
  160.                                                   if(d==2)
  161.                                                           { menu2=0; w=1;        mainmenu(0);}
  162.                                                         break;
  163.                                         case 1:
  164.                                                   if(t==0)
  165.                                                         {incharg();}         
  166.                                                   if(t==1)
  167.                                                           {menu2=0;w=1;mainmenu(1);}
  168.                                                   break;
  169.                                         case 2:
  170.                                                   if(a==0)
  171.                                                     {consume();}                                                           
  172.                                                   if(a==1)
  173.                                                           {menu2=0;w=1;mainmenu(2);}
  174.                                                   break;
  175.                                 }                        
  176.                         }
  177.                         key_ok=0;
  178.                 }

  179. /*--------------紅外遙控確認功能----------------------------------------*/

  180. /*---------------------遙控鍵盤輸入功能-----------------------------------*/
  181.                 if(key0==1||key1==1||key2==1||key3==1||key4==1||key5==1||key6==1||key7==1||key8==1||key9==1||key_back==1||key_dot==1)
  182.                 {
  183.                    DelayM(8);
  184.                    if(key0==1||key1==1||key2==1||key3==1||key4==1||key5==1||key6==1||key7==1||key8==1||key9==1||key_back==1||key_dot==1)
  185.                    {
  186.                                 if(w==0&&menu2==1)
  187.                                 {
  188.                                         set_inch_input();
  189.                                         key0=0;
  190.                                         key1=0;
  191.                                         key2=0;
  192.                                         key3=0;
  193.                                         key4=0;
  194.                                         key5=0;
  195.                                         key6=0;
  196.                                         key7=0;
  197.                                         key8=0;
  198.                                         key9=0;
  199.                                         key_back=0;
  200.                                         key_dot=0;                                       
  201.                                 }
  202.                         }
  203.                 }
  204. /*---------------------遙控鍵盤輸入功能-----------------------------------*/
  205.         }
  206. }

復制代碼

評分

參與人數 5黑幣 +21 收起 理由
北風搖曳 + 5 很給力!
lasermiao + 5 很給力!
vvv64 + 5 共享資料的黑幣獎勵!
fefen0 + 1 很給力!
zhaok2013 + 5 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏52 分享淘帖 頂5 踩
回復

使用道具 舉報

沙發
ID:57657 發表于 2016-11-7 20:41 | 只看該作者
實際應用的話還需要結合php、易語言、app開發一套管理系統、再做個php服務器以保存消費記錄和開卡人身份信息和卡密碼余額等信息,以實現網上充值以及掛失補辦和余額凍結等功能,卡里保存各種防復制盜刷的高級加密的數據。
回復

使用道具 舉報

板凳
ID:148841 發表于 2016-11-29 14:33 | 只看該作者
運行之后12864上什么都不顯示是為什么吶
回復

使用道具 舉報

地板
ID:162343 發表于 2017-1-19 19:38 | 只看該作者
好像12864要接DB0~7的接口
回復

使用道具 舉報

5#
ID:162343 發表于 2017-1-19 20:45 | 只看該作者
然后電流一定要足
回復

使用道具 舉報

6#
ID:110816 發表于 2017-3-11 12:07 | 只看該作者
太給力了,好厲害啊
回復

使用道具 舉報

7#
ID:130231 發表于 2017-3-16 22:03 | 只看該作者
感謝分享,太厲害了,我來學習一下。
回復

使用道具 舉報

8#
ID:148760 發表于 2017-3-23 12:20 | 只看該作者
wawa,不錯。
回復

使用道具 舉報

9#
ID:124631 發表于 2017-3-24 17:14 | 只看該作者
可以啊
回復

使用道具 舉報

10#
ID:194871 發表于 2017-4-29 22:54 | 只看該作者
厲害了
回復

使用道具 舉報

11#
ID:197589 發表于 2017-5-7 09:00 | 只看該作者
謝謝分享
回復

使用道具 舉報

12#
ID:105781 發表于 2017-5-13 11:07 | 只看該作者
是跟51單片機結合的是吧?
回復

使用道具 舉報

13#
ID:105781 發表于 2017-5-13 11:20 | 只看該作者
樓主有原理圖嗎?謝謝
回復

使用道具 舉報

14#
ID:112693 發表于 2017-5-24 22:40 | 只看該作者
樓主,請問 如何使用按鍵操作,附件中只定義了 K1..K4 4個按鍵,沒有這四個按鍵的語句!
回復

使用道具 舉報

15#
ID:223098 發表于 2017-7-28 21:45 | 只看該作者
好東東!!!
回復

使用道具 舉報

16#
ID:223098 發表于 2017-7-28 21:46 | 只看該作者
好東東學習學習
回復

使用道具 舉報

17#
ID:227828 發表于 2017-8-15 23:59 | 只看該作者
路過學習學習
回復

使用道具 舉報

18#
ID:228916 發表于 2017-8-26 17:24 | 只看該作者
改完IO口后,屏幕能顯示,但是按遙控器不能切換頁面,遙控器一樣的,請教怎么回事。另外:sbit K1  = P3^7; //K1-設置
sbit K2  = P3^6; //K2-確認、返回
sbit K3  = P3^5; //K3-加
sbit K4  = P3^4; //K4-減  這個是定義什么的?
回復

使用道具 舉報

19#
ID:197013 發表于 2017-9-20 11:07 | 只看該作者
好東西,謝謝分享,拿來看看
回復

使用道具 舉報

20#
ID:197013 發表于 2017-9-20 11:55 | 只看該作者
這樣的屏怎么接???
回復

使用道具 舉報

21#
ID:235409 發表于 2017-9-26 10:54 | 只看該作者
很好!  CPU卡可以嗎
回復

使用道具 舉報

22#
ID:236174 發表于 2017-9-27 20:40 | 只看該作者
學習學習
回復

使用道具 舉報

23#
ID:256192 發表于 2017-12-1 19:20 | 只看該作者
大神!
回復

使用道具 舉報

24#
ID:256192 發表于 2017-12-1 19:22 | 只看該作者
服了。
回復

使用道具 舉報

25#
ID:286128 發表于 2018-2-28 10:13 | 只看該作者
朋友有一個事看不懂,這個模塊上沒有什么綠色的指示燈,而你的程序卻有,看不懂啊。
回復

使用道具 舉報

26#
ID:286128 發表于 2018-3-1 19:36 | 只看該作者
之前問您的問題我懂了
回復

使用道具 舉報

27#
ID:302379 發表于 2018-4-5 17:10 | 只看該作者
HELLO,居士!

   老師,我對您這個比較感興趣并且制作了PCB板,準備“盜用“”下做個課程設計,在這里跟您說一聲,如果您覺得不行,我立馬停做。在做的過程中我遇到了幾個問題,如果您能看的見的話,望看一下:
   Question 1 :  在使用充值功能時候,遙控輸入充值金額后,刷卡,卡接近RC522后,就出現閃屏,然后熄滅,直至再次給RC522供電才能重新開機工作,不能往卡里輸入信息;
   Question 2 :在使用消費功能時候,遙控輸入消費金額后,刷卡,卡接近RC522后,出現余額不足,這是否與Question 1為寫入數據有關;
   Quesiton 3  :  我看您在第一步讀取卡信息時候,里面已經有余額,這個是不是您事先在程序中寫好的呢?這個數據一旦寫入是不是就能解決上述兩個問題了呢?這個數據怎么在程序中實現的呢?
回復

使用道具 舉報

28#
ID:164604 發表于 2018-4-7 18:50 | 只看該作者
感謝分享,好東西!
回復

使用道具 舉報

29#
ID:276118 發表于 2018-4-8 12:37 | 只看該作者
大神力作
回復

使用道具 舉報

30#
ID:280484 發表于 2018-4-29 08:07 | 只看該作者
多謝了  看看好用吧
回復

使用道具 舉報

31#
ID:323241 發表于 2018-5-17 18:03 | 只看該作者
可以,學習了
回復

使用道具 舉報

32#
ID:407498 發表于 2018-10-25 17:30 | 只看該作者
謝謝分享啊
回復

使用道具 舉報

33#
ID:87088 發表于 2018-10-30 19:09 | 只看該作者
已經下載了,過來試試看。
回復

使用道具 舉報

34#
ID:125719 發表于 2018-11-6 08:32 | 只看該作者
好東西,感謝分享
回復

使用道具 舉報

35#
ID:297409 發表于 2018-12-17 13:29 | 只看該作者
屏幕一直不顯示是怎么回事呢
回復

使用道具 舉報

36#
ID:30192 發表于 2019-3-5 16:12 | 只看該作者
已經下載了,過來試試看。
回復

使用道具 舉報

37#
ID:255925 發表于 2019-3-24 22:32 | 只看該作者
求大神將紅外遙控改成矩陣鍵盤控制的程序分享下,感謝
回復

使用道具 舉報

38#
ID:226505 發表于 2019-4-23 20:55 來自手機 | 只看該作者
試了試   程序沒問題  只要硬件電路沒問題  就能實現相應功能   謝樓主
回復

使用道具 舉報

39#
ID:527687 發表于 2019-5-5 15:58 | 只看該作者
樓主能幫我寫一個刷一次卡,扣兩塊錢的程序嗎?類似公交車刷卡系統
回復

使用道具 舉報

40#
ID:226505 發表于 2019-5-6 00:04 來自手機 | 只看該作者
北風搖曳 發表于 2019-4-23 20:55
試了試   程序沒問題  只要硬件電路沒問題  就能實現相應功能   謝樓主

就是上電  led一直亮  改一下初始化就好
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天干夜夜操 | 精品日韩在线观看 | 精品一区二区免费视频 | 日韩精品av一区二区三区 | 亚洲精品久久久久久久久久久 | 亚洲精品视频在线播放 | 欧美性网 | 日韩视频精品在线 | 天天爽天天操 | 天堂久 | 欧美中文字幕在线观看 | 亚洲激精日韩激精欧美精品 | 九七午夜剧场福利写真 | 最新中文字幕在线 | 伊人性伊人情综合网 | av免费网站在线观看 | 97av在线 | 91国内精品久久 | 国产男女精品 | 久久国产婷婷国产香蕉 | 国产精品视频一区二区三区, | 欧美中文字幕在线 | 黄色大片在线 | 91久久久精品国产一区二区蜜臀 | 欧美激情一区二区 | 精品日韩一区 | 黄色在线观看国产 | 日日干夜夜操 | 日韩视频中文字幕 | 国产精品a久久久久 | 国产原创在线观看 | 色毛片| 国产粉嫩尤物极品99综合精品 | 亚洲风情在线观看 | 欧美一区二区大片 | 国产免费看 | 精品av久久久久电影 | 国产免费一级片 | 91精品国产91 | 中文字幕日本一区二区 | 亚洲一区二区三区久久久 |