文档详情

基于51的FM1702射频卡程序.doc

发布:2017-02-07约1.44万字共26页下载文档
文本预览下载声明
#includereg52.h #includeintrins.h #includeFM1702.h #define uchar unsigned char #define uint unsigned int uchar Fbuff[16]; //发送FIFO缓存 uchar Jbuff[16]; //接收FIFO缓存 uchar UID[7]; //卡型及卡号 uchar Data[4]; //按键值存储区 uchar code seg[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //数码管段选对应0~f uchar count=0 ; //按键回传的值 uchar shuaka,chongzhi,keyflag=0; sbit k2=P3^5; //充值‘加值键(实现加1或者加10) sbit k3=P3^2; //刷卡’减值键(实现减1或者减10) sbit k4=P3^3; //确认键 sbit nWR=P2^4; //74hc373片选 /*****************1702函数声明**************************/ uchar spi(uchar m); void fifo_clear(); void resig_write(uchar reg,uchar da); uchar resig_read(uchar reg); uchar fifo_read(uchar count,uchar *s); void fifo_write(uchar count,uchar *s); uchar inti_1702(); void card_halt(); uchar request(); uchar card_anticoll(); uchar card_select(); uchar card_authtication(uchar m) ; uchar card_read(uchar m); uchar card_write(uchar m); uchar loadkey(); void delay(uchar m); /********************按键显示函数声明***************/ void display(); void keyscan() ; void data1deal() ; void data2deal(uchar m); void lcdclear(); /***********************子函数解释******************/ /*********************************************************/ //解释: 这是spi总线的读写时序,所有的寄存器操作基于此时序,非常重要 // // //输入:要写入的16进制参数 // // //输出:内部传回的16进制参数 // /********************************************************/ uchar spi(uchar m) { uchar i,temp=0; for(i=0;i8;i++) { sck=0; if(m0x80) mosi=1; else mosi=0; m=1; sck=1; temp=1; if(miso) temp|=0x01; } sck=0; mosi=0; return temp; } /*********************************************************/ //解释:写寄存器函数 // // //输入:寄存器地址 以及要写入的参数 // // //输出: // //注意!!在所有的资料中都没有给出寄存器寻址时的格式,下边的有,看仔细了,如果连寄存器都找不到,后边的就不用看了 /********************************************************/ void resig_write(uchar reg,uchar da) { sck=0; reg=1; cs=0; reg=reg0x7e; spi(reg); spi(da); cs=1; } /********************************
显示全部
相似文档