欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機FM1702SL讀卡器控制程序
[打印本頁]
作者:
kiritol
時間:
2017-11-13 19:06
標題:
51單片機FM1702SL讀卡器控制程序
該程序為51單片機的FM1702代碼
0.png
(8.08 KB, 下載次數(shù): 79)
下載附件
2017-11-13 21:12 上傳
單片機源程序如下:
#include <reg51.h>
#include <intrins.h>
#include <FM1702.h>
#include <STDIO.H>
#define PAUSE_INT EA=0;
#define START_INT EA=1;
#define uchar unsigned char
#define uint unsigned int
#define TRUE 1
#define FALSE 0
sbit rst =P0^7;
sbit cs =P0^6;
sbit si =P0^5;
sbit sck =P0^4;
sbit so =P0^3;
sbit led =P1^3;
sbit beep=P3^7;
sbit K1=P1^0;
sbit K2=P1^1;
uchar flag=0;
unsigned char date;
unsigned char TxData[5];
void UART_Init();
uchar Receive();
void Send(unsigned char back);
void send_char_com(uchar ch);
void send_string_com(uchar *str, uchar strlen);
/////變量定義///////////////
uchar RevBuffer[24]; /* FM1702命令發(fā)送接收緩沖區(qū) */
uchar UID[5]; /* 序列號 */
uchar Secnr; /* 塊號 */
#define m1erea 0x01 //要操作的扇區(qū)號
uint pay=1; //刷卡扣取的金額,2個字節(jié),65535
uint put=100; //刷卡充值的金額,每刷一次充值100元
uint ctime,cctime;
uchar ctimeH,ctimeL;
uchar lcd[5];
bit ICValueFlag=1; //IC卡分值為0標志位
bit payflag=0;
/////變量定義///////////////
////////////////////// 子函聲明 /////////////////////////////
uchar SPIRead(char reg_ad);
void SPIWrite(char reg_ad,char reg_data);
void Write_FIFO(uchar count, uchar *buff);
uchar Clear_FIFO(void);
uchar Judge_Req(uchar *buff);
uchar Command_Send(uchar count, uchar *buff, uchar Comm_Set);
uchar Request(uchar mode);
void delay(uint x);
uchar Read_FIFO(uchar *buff);
//void Save_UID(uchar row, uchar col, uchar length);
uchar AntiColl();
uchar Check_UID();
//void Set_BitFraming(uchar row, uchar col);
uchar Select_Card();
char M500HostCodeKey( uchar *uncoded, uchar *coded);
uchar Load_key_CPY(uchar *buff);
void keyto();
uchar block_numset(uchar block_num);
uchar MIF_Write(uchar *buff, uchar Block_Adr);
uchar Read_E2(uchar lsb, uchar msb, uchar count, uchar *buff);
uchar CRCrdadandset(uchar * buff,uchar RW);
void initial_LCD();
void DispalyLcd();
void LCD_Data(uchar LCDbyte );
void WriteCommand(uchar a);
void displayUid();
void displaymun(uchar temp1,uchar temp2,uchar temp3,uchar temp5,uchar buff1,uchar buff2,uchar buff3);
void dis_Request1();
void dis_Request2();
void dis_Request3();
void LCD_PutString(unsigned char x,unsigned char y,uchar *s);
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
void Init_FM1702()
{
uchar temp;
uint i;
sck = 1;
so = 1;
si = 1;
rst = 1; /* FM1702復位 */
for(i = 0; i < 0xff; i++)
{
_nop_(); /*等待約140ms, 11.0592*/
}
rst = 0;
for(i = 0; i < 0xff; i++)
{
_nop_();
}
/////////// init_spi ///////////////////////////////////////////////
while(temp = SPIRead(Command) != 0) /* 等待Command = 0,FM1702復位成功 */
{
_nop_();
}
////////////////////////////////////////////////////////////////////////////
SPIWrite(Page_Sel,0x80); //往PAG里面寫0X80初始化SPI接口
for(i = 0; i < 0xff; i++) /* 延時 */
{
if(temp=SPIRead(Command) == 0x00) //如果Command為0表示初始化SPI接口成功
{
SPIWrite(Page_Sel,0x00); //往PAG里面寫0開使用SPI接口
}
}
////////// init_FM1702 ///////////////////////////////////////
SPIWrite(InterruptEn,0x7f); //address 06H /* 中斷使能/禁止寄存器 */off
SPIWrite(Int_Req,0x7f); //address 07H /* 中斷請求標識寄存器 */清0
SPIWrite(TxControl,0x5b); //address 11H /* 發(fā)送控制寄存器 */
SPIWrite(RxControl2,0x01); //address 1EH 設置接收控制寄存器
SPIWrite(RxWait,0x07); //address 21H 設置接收和發(fā)送之間的時間間隔
SPIWrite(TypeSH,0x00); //0:TYPEA模式*//* 1:TYPEB模式*//* 2:上海模式*/
}
////////////////////////////////////////////////////////////////////////////
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//名稱: spi_byte_transceive //
//功能: 該函數(shù)實現(xiàn)SPI通訊的數(shù)據(jù)收發(fā) //
// //
//輸入: //
// 發(fā)送數(shù)據(jù) //
// //
//輸出: //
// 接收數(shù)據(jù) //
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
char spi_byte_transceive(char sendbyte)
{
char i,temp;
for(i=0;i<8;i++)
{
sck=0;
if(sendbyte & 0x80) //位運算,判斷最高位是否為1
{
si=1;
}
else
{
si=0;
}
sendbyte <<= 1;
sck=1;
temp <<= 1;
if(so)
temp |= 0x01;
}
sck=0;
_nop_();
_nop_();
si=0;
return (temp);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//名稱: rc531_register_write //
//功能: 該函數(shù)實現(xiàn)通過SPI接口對RC531中一個寄存器寫入值 //
// //
//輸入: //
// RC531目標寄存器地址和寫入值 //
// //
//輸出: //
// N/A //
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
void SPIWrite(char reg_ad,char reg_data)
{
sck=0; //時鐘
reg_ad <<= 1;
cs=0; //接口選通
reg_ad &= 0x7F; //最高位為0表示寫
spi_byte_transceive(reg_ad); //寫地址
spi_byte_transceive(reg_data); //寫數(shù)據(jù)
cs=1;
return;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//名稱: rc531_register_read //
//功能: 該函數(shù)實現(xiàn)通過SPI接口讀取RC531中一個寄存器的值 //
// //
//輸入: //
// RC531目標寄存器地址 //
// //
//輸出: //
// 目標寄存器的值 //
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
uchar SPIRead(char reg_ad)
{ char temp;
sck=0; //時鐘
_nop_();
_nop_();
cs=0; //接口選通開
reg_ad <<= 1; //reg_ad左移一位付值給reg_ad
reg_ad |= 0x80; //reg_ad跟“0X80”或運算后付值給reg_ad 最高位為1表示讀
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
讀卡器程序.zip
(91.34 KB, 下載次數(shù): 118)
2017-11-13 19:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
1018954083
時間:
2017-12-26 15:52
很好刷刷刷
作者:
jjfzdnsjg
時間:
2018-1-4 21:42
支持下樓主 小弟剛來 多給幾分讓我好試試程序
作者:
liuzclzc
時間:
2018-1-21 22:38
單片機要學習的內(nèi)容還是比較多的。
作者:
ZuiTengLI
時間:
2018-6-14 16:14
不錯不錯。。。
作者:
treewei
時間:
2018-8-7 14:57
需要多交流學習啊
作者:
lihanjunw
時間:
2020-5-10 21:24
感謝分享,正需要
作者:
zkele
時間:
2021-10-10 15:14
感謝分享,下載一份研究研究
作者:
wzswp
時間:
2022-8-19 14:13
謝謝分享!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1