欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機基于esp8266 WIFI的刷卡器程序
[打印本頁]
作者:
落葉因風起
時間:
2019-5-14 18:07
標題:
51單片機基于esp8266 WIFI的刷卡器程序
單片機源程序如下:
#include "reg52.h"
#include "rc522.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "string.h"
#include "lcd1602.h"
#define RELOAD_COUNT 0xFA//宏定義波特率發生器的載入值
#define uchar unsigned char //對數據類型進行聲明定義
#define uint unsigned int
sfr AUXR=0x8E;
sfr BRT=0x9C;
sfr AUXR1=0xA2;
sbit led=P2^7;
sbit BEEP=P2^6;
sbit TEST=P2^5;
uchar Receive,i;
uint n;
uchar s=0,c=0,h=0;
uchar Recive_table[15];
char status;//按鍵狀態
unsigned char code CardKeyABuf[] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
unsigned char CT[2];
unsigned char SN[4];//從卡片讀取的卡號存放在這里
// 系統注冊的卡號
unsigned char code card_1[4]={0XFD, 0X31, 0X9A, 0X15};
unsigned char code card_2[4]={0X84, 0X4D, 0XC3, 0XDB};
unsigned char code id_1[16]={"20150502310028"};
unsigned char code id_2[16]={"20150502310033"};
//WiFi模塊設置
unsigned char LYMS[13]={0x41,0x54,0x2B,0x43,0x57,0x4D,0x4F,0x44,0x45,0x3D,0x32,0x0D,0x0A};//AT+CWMODE=2 設置成路由模式
unsigned char SZLY[38]={0x41,0x54,0x2B,0x43,0x57,0x53,0x41,0x50,0x3D,0x22,0x45,0x53,0x50,
0x38,0x32,0x36,0x36,0x22,0x2C,0x22,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x22,
0x2C,0x31,0x31,0x2C,0x33,0x0D,0x0A};//AT+CWSAP="ESP8266","0123456789",11,0 設置路由
unsigned char RST[8]={0x41,0x54,0x2B,0x52,0x53,0x54,0x0D,0x0A};//AT+RST 重啟
unsigned char SZDLJ[13]={0x41,0x54,0x2B,0x43,0x49,0x50,0x4D,0x55,0x58,0x3D,0x31,0x0D,0x0A};//AT+CIPMUX=1 設置成多連接
unsigned char KQFU[21]={0x41,0x54,0x2B,0x43,0x49,0x50,0x53,0x45,0x52,0x56,0x45,0x52,0x3D,
0x31,0x2C,0x35,0x30,0x30,0x30,0x0D,0x0A};//AT+CIPSERVER=1,5000 開啟TCP服務端口
unsigned char FSSJ[11]={0x41,0x54,0x2B,0x43,0x49,0x50,0x53,0x45,0x4E,0x44,0x3D};//AT+CIPSEND= 發送數據
/****************************************************
名稱:延時函數
功能:精準延時
*****************************************************/
void usdelay(uint f)
{
while(f--);
}
/****************************************************
名稱:讀卡號函數
功能:讀取測試卡號
*****************************************************/
void Display_ID( unsigned char * SrcBuf )
{
char xdata DisplayBuf[10];
char *pDisplayChar;
unsigned char Tmp, i;
pDisplayChar = DisplayBuf;
for( i = 0; i < 4; i++ )
{
Tmp = ( ( *SrcBuf ) >> 4 ) & 0x0F;
if( ( Tmp >=0 ) && ( Tmp <= 9 ) )
{
*pDisplayChar ++ = '0' + Tmp;
}
else
{
*pDisplayChar ++ = 'A' + Tmp - 10;
}
Tmp = ( *SrcBuf ) & 0x0F;
if( ( Tmp >=0 ) && ( Tmp <= 9 ) )
{
*pDisplayChar ++ = '0' + Tmp;
}
else
{
*pDisplayChar ++ = 'A' + Tmp - 10;
}
SrcBuf ++;
}
*pDisplayChar ++ = '\0';
writecom(0x80);
writestr(DisplayBuf);
}
/*******************************************************************************
* 函數名 :UsartInit()
* 函數功能 :設置串口
*******************************************************************************/
void Uart_Init()//使用定時器1作為波特率發生器
{
SCON=0x50;//設置為串行口以方式1工作,8位異步通訊,允許接收中斷。//一幀信息為10位,1位起始位,8位數據位(低位在先),1位停止位。
PCON=0x80;//SMOD波特率選擇位為1,SMOD=1.
TMOD=0x21;//設置定時器1為波特率發生器,工作在模式2,8位自動裝載
TH1=RELOAD_COUNT;//波特率9600,TH1=256-FOSC/16/12/波特率
TL1=TH1;
EA=1;//總中斷打開
ES=0;//關閉串口中斷
TR1=1;//啟動定時器1
}
/********************************************************************
名稱:串口發送函數
功能:MCU向其他與其連接的設備發送數據(此處是無線WIFI模塊ESP8266)
********************************************************************/
void Send_Uart (uchar value)
{
ES=0;//關閉串口中斷
TI=0;//清發送完畢中斷請求標志位
SBUF=value;//發送
while(TI==0);//等待發送完畢
TI=0;//清發送完畢中斷請求標志位
ES=1;//允許串口中斷
}
/********************************************************************
名稱:WIFI模塊設置函數
作用:啟動模塊,以便可以實現無線接入和控制
********************************************************************/
void ESP8266_Set(uchar *puf)//數組指針*puf指向字符串數組
{
while(*puf!='\0')//遇到空格跳出循環
{
Send_Uart(*puf);//向WIFI模塊發送控制指令
usdelay(5);
puf++;
}
usdelay(5);
Send_Uart('\r');//回車
usdelay(5);
Send_Uart('\n');//換行
delayms(1000);
}
/****************************************************
名稱:ESP8266發送數據函數
功能:用于與wifi模塊相連的終端發送數據
*****************************************************/
void ESP8266_Sent(uchar *puf)//數組指針*puf指向字符串數組
{
ESP8266_Set(FSSJ);
while(*puf!='\0')//遇到空格跳出循環
{
Send_Uart(*puf);//向WIFI模塊發送控制指令。
usdelay(5);
puf++;
}
usdelay(5);
Send_Uart('\n');//換行
delayms(10);
}
/*蜂鳴器滴響*/
void Beep(int a)
{ int i;
for(i=0;i<a;i++)
{
BEEP = 0;
delayms(100);
BEEP = 1;
}
}
/*******************************************************************************
* 函 數 名 : Timer0Init
* 函數功能 : 定時器0初始化
*******************************************************************************/
void Timer0Init()
{
TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
}
void Timer0() interrupt 0
{
static uint i;
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
i++;
if(i==1000)
{
s++;
if(s>59)
{
c++;
}
if(c>59)
{
h++;
}
if(h>23)
{
h=0;
}
}
}
/*******************************************************************************
* 函數名 : Usart() interrupt 4
* 函數功能 : 串口通信中斷函數
*******************************************************************************/
void Usart() interrupt 4
{
static uchar i=0;
if(RI==1)
{
RI=0;
Receive=SBUF;//MCU接收wifi模塊反饋回來的據
Recive_table[i]=Receive;
i++;
if((Recive_table[i-1]=='\n'))i=0;//遇到換行重新裝值
}
else TI=0;
}
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
*******************************************************************************/
void main()
{
RC522_Init();//re522刷卡器初始化
Timer0Init();//定時器0中斷初始化
lcdinit();
Uart_Init(); //串口初始化
ESP8266_Set(LYMS);//WiFi模塊設置
ESP8266_Set(SZLY);
ESP8266_Set(RST);
ESP8266_Set(SZDLJ);
ESP8266_Set(KQFU);
while(1)
{ led=0;
status = PcdRequest(PICC_REQALL,CT);//向卡發送請求讀取的信號,并且向CT數組內寫入從卡片讀取的數據
status = PcdAnticoll(SN);//防沖撞處理,防止讀卡出現沖突 ,往SN寫入4字節卡號
if(TEST==0)
{ delayms(20);
if(TEST==0)
{ Display_ID(SN);//按下按鍵讀取卡號
delayms(3000);
}
}
if(status == MI_OK)
{
led=1;
Beep(5);
if(0 == memcmp(SN,card_1,4))
{
ESP8266_Sent(id_1);
Send_Uart(h);
Send_Uart(':');
Send_Uart(c);
Send_Uart(':');
Send_Uart(s);
Send_Uart('\n');//換行
writecom(0x80+0x42);
writedata(h);
writecom(0x80+0x44);
writedata(':');
writecom(0x80+0x45);
writedata(c);
writecom(0x80+0x47);
writedata(':');
writecom(0x80+0x48);
writedata(s);
}
if(0 == memcmp(SN,card_2,4))
{
ESP8266_Sent(id_2);
Send_Uart(h);
Send_Uart(':');
Send_Uart(c);
Send_Uart(':');
Send_Uart(s);
Send_Uart('\n');//換行
writecom(0x80+0x42);
writedata(h);
writecom(0x80+0x44);
writedata(':');
writecom(0x80+0x45);
writedata(c);
writecom(0x80+0x47);
writedata(':');
writecom(0x80+0x48);
writedata(s);
}
}
}
}
復制代碼
所有資料51hei提供下載:
單片機課設程序.zip
(81.01 KB, 下載次數: 18)
2019-5-14 18:06 上傳
點擊文件名下載附件
51單片機基于WIF的刷卡器程序
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1