欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于MFRC500的讀卡程序-帶4-3鍵盤輸入和12864液晶
[打印本頁]
作者:
chenye1132
時間:
2017-10-3 15:24
標題:
基于MFRC500的讀卡程序-帶4-3鍵盤輸入和12864液晶
基于MFRC500射頻芯片和51單片機的13.56MHzRFID射頻識別系統的讀寫程序。
0.png
(54.21 KB, 下載次數: 100)
下載附件
2017-10-3 16:20 上傳
單片機源程序如下:
/****************************************************************************
* File: MAIN.C *
* Version: 飯卡打卡系統簡化版1.0 *
* Created: 2007.11.30 *
* Last Change: 2008.5.15 *
* Author: *
* QQ: *
* EMail: *
* Compiler: KEIL C51 uVision2 V2.23 *
* Description: 操作流程:先讀卡,等待鍵盤輸入,再寫卡 *
* 注意:鍵盤輸入后,卡不能抽走,不然數據流失! *
* 注意:程序共有18個警告,因為有些函數暫時沒用到! *
* 注意:暫沒小數顯示,由于以后考慮用以太網通訊,故沒加進UATR通訊*
* 留言:謝謝Hexing的幫助,如果大家對程序有什么意見可以隨時找我 *
****************************************************************************/
#include "main.h"
#include "m500a.h"
#include "PORT.h"
#include "delay.h"
#include "LCD_Key.h"
/*************************公有變量定義**********************************************/
bit KEY_SCAN_G; //鍵盤掃描標志
bit W_CARD_SCAN_G; //寫卡掃描標志
tWord Card_Money; //最大值這里只取9999,顯示4位數金額
tByte LCD_Money[5]; //卡中金額顯示緩沖區
tByte LCD_Key[6]=" "; //初始化按鍵顯示緩沖區,保證數組最后字節存有結束符'\0'
tByte temp; //臨時變量
tByte tt1[2]; //存放卡類型號
tByte Snr_RC500[4]; //存放rc500序列號
tByte AbsoluteBlock = 8; //對絕對塊8進行操作, 取值范圍為 0 <= AbsoluteBlock < 64
tByte data cardserialno[4]; //存放卡號
tByte idata blockdata[16]; //絕對塊8數據緩沖區,注意其儲存模式 idata
/************************私有函數原型**************************************************/
void MCU_Init(void); //單片機初始化函數
void BEEP_Ctrl(void); //蜂鳴器控制函數
tByte MF_Active(tByte AbsoluteBlock,tByte data *cardserialno); //卡激活函數
tByte MF_Read (tByte AbsoluteBlock,tByte idata *blockdata); //讀卡函數
tByte MF_Write (tByte AbsoluteBlock,tByte idata *blockdata); //寫卡函數
tByte data RC500_Disp[13];
void hex_ten(unsigned char *RC500_St);
/*****************************************************************************************
函數名稱:主函數
函數輸入:
函數輸出:
函數功能:
******************************************************************************************/
void main (void)
{
/*************************硬件初始化**********************************************/
MCU_Init();
M500PCD_Init();
KEYPAD_Init();
LCD_Init();
LCD_China_Disp();
BEEP_Ctrl(); //聲音提示1,所有初始化完成,等待讀卡
/*************************大循環執行**********************************************/
while(1)
{
temp=MF_Active( AbsoluteBlock,cardserialno); //激活一張卡
if(temp!=MI_OK)
{
continue; //跳到 while 入口
}
temp=MF_Read(AbsoluteBlock,blockdata); //讀卡數據
if(temp!=MI_OK)
{
continue;
}
BEEP_Ctrl();
hex_ten(cardserialno); //聲音提示2,讀卡成功,等待鍵盤掃描
put_char(4,30,RC500_Disp);
/*************************按鍵掃描循環**********************************************/
KEY_SCAN_G=1; //允許鍵盤掃描
while(KEY_SCAN_G)
{
Card_Money=blockdata[0]+blockdata[1]*256; //合并絕對塊8前兩字節
LCD_Money[0]=Card_Money/1000+48; //裝載千位數據
LCD_Money[1]=Card_Money%1000/100+48; //百位
LCD_Money[2]=Card_Money%1000%100/10+48; //十位
LCD_Money[3]=Card_Money%1000%100%10+48; //個位
LCD_Money[4]='\0'; //結束符
LCD_KEY_Update(); //鍵盤和LCD刷新
delay_nms(30); //每隔30毫秒掃描一次鍵盤
}
/*************************寫入卡循環**********************************************/
W_CARD_SCAN_G=1; //允許寫卡掃描
while(W_CARD_SCAN_G)
{
blockdata[0]=Card_Money%256; //分解回字節數據,準備寫回到絕對塊8
blockdata[1]=Card_Money/256;
temp=MF_Active( AbsoluteBlock,cardserialno); //激活同一張卡
if(temp!=MI_OK)
{
continue;
}
temp=MF_Write(AbsoluteBlock,blockdata); //寫數據入卡
if(temp!=MI_OK)
{
continue;
}
W_CARD_SCAN_G=0; //清循環標志,跳出while循環
BEEP_Ctrl();
put_char(4,30," ");//聲音提示3,表示寫卡完成,用戶可以取走卡
delay_nms(1000);
} //注意:聲音提示后的1秒延遲期間,必須拿走卡,否則體統重新讀卡
}
}
/*————————————————————————————————————————————main函數結束———————————————————————————————————————*/
/*****************************************************************************************
函數名稱:tByte MF_Active 激活卡函數
函數輸入:tByte AbsoluteBlock,tByte data *cardserialno
函數輸出:
函數功能:激活A類卡類型
******************************************************************************************/
tByte MF_Active(tByte AbsoluteBlock,tByte data *cardserialno)
{
tByte status1;
tByte *sak1;
/*********************尋卡***************************/
status1 = M500PiccRequest(PICC_REQALL, tt1);
if (status1!=MI_OK)
{
return(FM1715_REQERR);
}
/********************防碰撞**************************/
status1=M500PiccAnticoll(0,cardserialno);
if (status1!=MI_OK)
{
return(FM1715_REQERR);
}
/*********************選擇卡*************************/
status1=M500PiccSelect(cardserialno,sak1);
if (status1!=MI_OK)
{
return(FM1715_REQERR);
}
/*************************授權********************************/
status1 = M500PiccAuth(PICC_AUTHENT1A, cardserialno, 1, AbsoluteBlock);
if (status1!=MI_OK) //對第八塊(絕對地址)進行授權, 也就是第三個扇區第一塊
{
return(FM1715_REQERR);
}
return MI_OK;
}
/*****************************************************************************************
函數名稱:tByte MF_Read 讀卡函數
函數輸入:tByte AbsoluteBlock,tByte idata *blockdata
函數輸出:
函數功能:讀取射頻卡的數據
******************************************************************************************/
tByte MF_Read(tByte AbsoluteBlock,tByte idata *blockdata)
{
tByte status1;
status1=M500PiccRead(AbsoluteBlock, blockdata);
if (status1!=MI_OK)
{
return(FM1715_REQERR);
}
return MI_OK;
}
/*****************************************************************************************
函數名稱:tByte MF_Write 寫卡函數
函數輸入:tByte AbsoluteBlock,tByte idata *blockdata
函數輸出:
函數功能:寫入射頻卡數據
******************************************************************************************/
tByte MF_Write(tByte AbsoluteBlock,tByte idata *blockdata)
{
tByte status1;
status1 = M500PiccWrite(AbsoluteBlock,blockdata);
if (status1!=MI_OK)
{
return(FM1715_REQERR);
}
return MI_OK;
}
/*****************************************************************************************
函數名稱:MCU_Init函數
函數輸入:
函數輸出:
函數功能:初始化RC500
******************************************************************************************/
void MCU_Init(void)
{
RC500RST = FALSE;
RC500_CS = TRUE; // Enable the CS for RC500
IT0 = 1; // Config ext0 as edge trigger for RC500
EX0 = 1; // Enable ext0 interrupt for RC500
EA = TRUE; // Enable all interrupts
}
/*****************************************************************************************
函數名稱:BEEP_Ctrl (void) 蜂鳴器驅動初始化
函數輸入:
函數輸出:
函數功能:有源蜂鳴器
******************************************************************************************/
void BEEP_Ctrl (void)
{
BEEP = OFF;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
基于MFRC500讀卡芯片的讀卡程序-帶4-3鍵盤輸入和12864液晶.zip
(244.28 KB, 下載次數: 42)
2017-10-3 15:22 上傳
點擊文件名下載附件
13.56MHz
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1