|
/************** 全遙控操作RFID刷卡系統(tǒng)************/
/*
硬件:1.MCU:STC12C5A60S2 ,11.0592MHz
2.12864帶中文字庫(kù)液晶
3.RFID讀卡模塊:RC522,+ S50卡
4.紅外遙控038接收頭,CARMP3遙控器,不同遙控器鍵值不同,若用不同品牌遙控器需修改鍵值
5.LED指示燈(或?yàn)榉澍Q器)
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 //數(shù)據(jù)口
sbit LCM_RS = P2^0; //寄存器選擇輸入
sbit LCM_RW = P2^1; //液晶讀/寫控制
sbit LCM_EN = P2^2; //液晶使能控制
sbit LCM_PSB = P2^3; //串/并方式
紅外遙控接法:
sbit IRIN = P3^2; //紅外接收器數(shù)據(jù)線
遙控器功能鍵說(shuō)明:prev為退格鍵,next為切換鍵,play為確認(rèn)鍵,0-9為相應(yīng)數(shù)字鍵 100+為小數(shù)點(diǎn)鍵
注意:務(wù)必確保RC522供電為3.3V,接5V必?zé)。。?br />
功能: 1.多級(jí)菜單操作,菜單有反白高度顯示。
2.全遙控操作,通過(guò)遙控鍵盤控制讀、寫卡,并可輸入讀、寫數(shù)值。
3.有讀卡信息(卡類型、類號(hào)、余額),初始化卡,充值和扣款功能。
4.自動(dòng)設(shè)定數(shù)據(jù)范圍,超范圍自動(dòng)提示。
出品:聚龍居士 qq:15080987 2014.6.8
*/
/****************************************/
#include "reg52.h"
#include "main.h"
#include "mfrc522.h"
#include "string.h"
#include "12864.h"
#include "hw.h"
#include "set.h"
#include "delay.h"
//M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
//4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反
unsigned char code data1[16] = {0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};
uchar g_ucTempbuf[20];
sfr AUXR = 0x8E;
/////////////////////////////////////////////////////////////////////
//系統(tǒng)初始化
/////////////////////////////////////////////////////////////////////
void InitializeSystem()
{
LED_GREEN = 1;
PcdReset();
PcdAntennaOff();
PcdAntennaOn();
M500PcdConfigISOType( 'A' );
LED_GREEN = 0;
delay_10ms();
LED_GREEN = 1;
delay_10ms();
LED_GREEN = 0;
}
void main( )
{
IE = 0x81; //允許總中斷中斷,使能 INT0 外部中斷 相當(dāng)于EA=1; EX0=1;
TCON = 0x01; //觸發(fā)方式為脈沖負(fù)邊沿觸發(fā) 相當(dāng)于IT0=1;
IRIN=1; //紅外接收器數(shù)據(jù)初始化
lcm_init();
InitializeSystem( );
write12864GDRAM(bmp12864);//顯示開(kāi)機(jī)畫(huà)面
Delay100ms(20);//延時(shí)
Clean_12864_GDRAM();
lcm_init();
display_welcome();
Delay100ms(20);
mainmenu(0);
w=1;
menu2=0;
while(1)
{
/*-----------------------------紅外遙控切換功能---------------------------*/
if (key_manue==1)
{
DelayM(8);
/*-----------------當(dāng)是主菜單調(diào)時(shí)狀態(tài) 本鍵用于調(diào)整下一項(xiàng)---------------------------*/
if(key_manue==1&&w==1&& menu2==0) //w為主菜單狀態(tài)位,menu2為子菜單狀態(tài)參數(shù)
{
key_manue=0;
e++;
if (e >= 3 ) {e = 0;}
mainmenu(e); //主菜單調(diào)整
}
/*------------------------當(dāng)是子菜單時(shí)調(diào)整信息顯示子菜單-----------------------*/
if(key_manue==1&&w == 0 &&menu2==1&&e==0)
{
key_manue=0;
d++;
if(d>=3){d=0;}
set_info(d);
}
/*---------------------當(dāng)是子菜單時(shí)調(diào)整充值子菜單------------------------------*/
if(key_manue==1&&w == 0&&menu2==1&&e==1)
{
key_manue=0;
t++;
if(t>=2){t=0;}
set_inch(t);
}
/*---------------------當(dāng)是子菜單時(shí)調(diào)整消費(fèi)子菜單-------------------------------*/
if(key_manue==1&&w == 0&&menu2==1&&e==2)
{
key_manue=0;
a++;
if(a>=2){a=0;}
set_cons(a);
}
key_manue=0;
}
/*-----------------------------紅外遙控切換功能---------------------------*/
/*--------------紅外遙控確認(rèn)功能----------------------------------------*/
if (key_ok==1)
{
DelayM(8);
/*---------------------主菜單時(shí)選項(xiàng)選擇確認(rèn)功能-----------------------------------*/
if(key_ok==1&&w==1&&menu2==0)
{
key_ok=0;
menu2=1;
w=0;
switch(e) //進(jìn)入相應(yīng)子菜單
{
case 0:
d=0;
set_info(d);
break;
case 1: t=0;
set_inch(t);
break;
case 2: a=0;
set_cons(a);
break;
}
}
/*---------------------子菜單時(shí)選項(xiàng)選擇確認(rèn)功能-----------------------------------*/
if(key_ok==1&&w==0&&menu2==1)
{
key_ok=0;
switch(e) //各子菜單確認(rèn)鍵功能定義
{
case 0:
if(d==0)
{ info();}
if(d==1)
{ initcard();}
if(d==2)
{ menu2=0; w=1; mainmenu(0);}
break;
case 1:
if(t==0)
{incharg();}
if(t==1)
{menu2=0;w=1;mainmenu(1);}
break;
case 2:
if(a==0)
{consume();}
if(a==1)
{menu2=0;w=1;mainmenu(2);}
break;
}
}
key_ok=0;
}
/*--------------紅外遙控確認(rèn)功能----------------------------------------*/
/*---------------------遙控鍵盤輸入功能-----------------------------------*/
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)
{
DelayM(8);
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)
{
if(w==0&&menu2==1)
{
set_inch_input();
key0=0;
key1=0;
key2=0;
key3=0;
key4=0;
key5=0;
key6=0;
key7=0;
key8=0;
key9=0;
key_back=0;
key_dot=0;
}
}
}
/*---------------------遙控鍵盤輸入功能-----------------------------------*/
}
}
|
|