亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
stm32f103c8t6+rc522 ic卡識別程序
[打印本頁]
作者:
linuxke
時間:
2020-5-6 21:57
標題:
stm32f103c8t6+rc522 ic卡識別程序
基于stm32的IC卡識別,做的是個門禁系統(tǒng),用的rc522模塊,設別IC卡卡號,判斷卡號為管理員還是員工,進行開門操作,用的12v電磁鎖,添加了時鐘,來分開上班時間和下班時間,以及假日模式,假日模式管理員卡和密碼同時正確才可打開門,下班時間管理員就可以打開。最后加了電池,當外部電源斷開,電池自動供電,由外部電源電池不供電。
制作出來的實物圖如下:
IMG_20200501_141440.jpg
(6.32 MB, 下載次數(shù): 81)
下載附件
2020-5-6 21:55 上傳
單片機源程序如下:
#include "delay.h"
#include "sys.h"
#include "rc522.h"
#include "key.h" //矩陣鍵盤模塊
#include "usart.h"
#include "string.h"
#include "suo.h"
#include "rtc.h"
#include "oled.h"
#include "adc.h"
u8 key;
extern u8 F8X16[];
u8 data_out[16];
unsigned char CT[2];//卡類型
unsigned char SN[4]; //卡號
unsigned char RFID[16]; //存放RFID
unsigned char lxl_bit=0;
unsigned char card_bit=0;
unsigned char total=0;
unsigned char card[30]={153,172,26,163,71,133,84,59,102,94,109,37};
unsigned char KEY[4];
unsigned char MI[4]={3,9,1,8};
u8 status,flags=0,weeks=0,power=0,suo=0;
u8 xianshi[17]={1,2,3,10,4,5,6,11,7,8,9,12,13,0,14,15,16};
u8 str[6];
u8 plen=0;
u8 s;
u8 T=100,TT=100;
/*函數(shù)聲明*/
typedef struct
{
vu8 hour;
vu8 min;
vu8 sec;
//公歷日月年周
vu16 w_year;
vu8 w_month;
vu8 w_date;
vu8 week;
}set_calendar_obj;
set_calendar_obj set_time;
u8 jiance(void)
{
u8 i,j,turns=0,m=0;
for(i=0;i<50;i++)
{
for(j=0;j<4;j++)
{
if(SN[j]==card[j+i*4])
{turns=1;m++;}
else{m=0; turns=0;}
}
if(m==4)break;
}
if(turns==1)return i;
return 255;
}
u8 panduan()
{
u8 i,t=0;
for(i=0;i<4;i++){
if(KEY[i]==MI[i])
t=1;
else t=0;
}
if(t==1)return 1;
else return 0;
}
u8 shuru()
{
u32 m=0,num=0;
key=16;
plen=0;
LCD_Fill(0x00);
LCD_Print(20, 16, "請輸入密碼",TYPE16X16,TYPE8X16);
while(1)
{
key_load();
//請輸入密碼
if(key<16){
num=0;
if(key==3){plen--;m/=10;}//刪減輸入的密碼
else{ plen++;
m=m*10+xianshi[key];
LCD_Print(24, 32, " ",TYPE16X16,TYPE8X16);
KEY[plen-1]=xianshi[key];
}
LCD_Print(35, 32, " ",TYPE16X16,TYPE8X16);
LCD_ShowNum(35,32,m,6,16);
}//將輸入的密碼添加到KEY數(shù)組
//顯示輸入的密碼
if(plen==4) {//達到4位數(shù)密碼,進行密碼對比
LCD_Fill(0x00);
if(panduan()==1){LCD_Print(24, 24, "密碼正確",TYPE16X16,TYPE8X16);flags=1;}
else LCD_Print(24, 32, "密碼錯誤",TYPE16X16,TYPE8X16);
delay_ms(2000);
break;
}
num++;if(num>300)break;
delay_ms(100);
key=16;
}
LCD_Fill(0x00);
T=100,TT=100;
}
void TIME()
{
if(T!=calendar.min)
{
LCD_P32x32STR(52,16,640);
if(calendar.hour>7&&calendar.hour<18)power=1;
else power=0;
if(calendar.week==6||calendar.week==0)weeks=1;
else weeks=0;
T=calendar.min;
if(TT!=calendar.w_date)
{
LCD_Print(56, 0, "- -",TYPE16X16,TYPE8X16);
LCD_Print(37, 48, "星期",TYPE16X16,TYPE8X16);
LCD_ShowNum(24,0,calendar.w_year,4,16);
LCD_ShowNum(64,0,calendar.w_month,2,16);
LCD_ShowNum(88,0,calendar.w_date,2,16);
TT=calendar.w_date;
switch(calendar.week)
{
case 0:
LCD_Print(69,48,"日",TYPE16X16,TYPE8X16);
break;
case 1:
LCD_Print(69,48,"一",TYPE16X16,TYPE8X16);
break;
case 2:
LCD_Print(69,48,"二",TYPE16X16,TYPE8X16);
break;
case 3:
LCD_Print(69,48,"三",TYPE16X16,TYPE8X16);
break;
case 4:
LCD_Print(69,48,"四",TYPE16X16,TYPE8X16);
break;
case 5:
LCD_Print(69,48,"五",TYPE16X16,TYPE8X16);
break;
case 6:
LCD_Print(69,48,"六",TYPE16X16,TYPE8X16);
break;
}
}
LCD_ShowNum(16,16,calendar.hour,2,32);
LCD_ShowNum(70,16,calendar.min,2,32);
}
}
u8 jianpan(u8 x,u8 y,u8 flagm)
{
key_load();
if(xianshi[key]>=0&&xianshi[key]<=9)
{
//Gui_DrawFont_GBK16(x+plen*8,y,BLACK,WHITE,zhuanhuan(xianshi[key]));
s=xianshi[key];
plen++;
return 1;
}
return 0;
}
void IC()
{
u8 j;
status = PcdRequest(PICC_REQALL,CT);
if(status==MI_OK)//尋卡成功
{
status=MI_ERR;
status = PcdAnticoll(SN);
for(j=0;j<4;j++)
printf("%d ",SN[j]);
printf("\r\n");
}
if (status==MI_OK)//防衝撞成功
{
total=jiance();
if(weeks)
{if(total==0) {
if(shuru()==1)flags=1;
}
}
else{
if(total==0) flags=1;
if(total&&power)flags=1;
}
printf("22\r\n");
}
}
int main(void)
{
u8 num=0,i;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(); //延時函數(shù)初始化
RTC_Init(); //RTC初始化
//RTC_Set(2020,5,1,14,20,0);
uart_init(115200);
LCD_Init();
SUO_Init();
key_Init(); //矩陣鍵盤利用外部中斷和輸出引腳構成,先把輸出引腳低電平,按鍵閉合觸發(fā)檢測行,在出現(xiàn)一個下降沿,再次觸發(fā),檢測列
InitRc522(); //初始化射頻卡模塊
while(1)
{
num++;
if(num>50)
break;
if(key==15)
{GPIO_SetBits(GPIOA,GPIO_Pin_4);break;}
delay_ms(100);
key_load();
}
key=16;
while(1)
{
IC();
TIME();//更新時間
key_load(); //鍵盤鍵值檢測
if(flags==1)
{
SUO=1;
for(i=0;i<9;i++)
delay_ms(1000);
SUO=0;num=0;
delay_ms(1000);
T=100,TT=100;
flags=0;
LCD_Init();
} //開鎖
if(key==11)weeks=~weeks;//假期模式選擇
if(weeks)LCD_Print(96, 48, "假日",TYPE16X16,TYPE8X16);
else LCD_Print(96, 48, " ",TYPE16X16,TYPE8X16);
if(key==12)flags=1; //緊急按鍵
if(weeks==0)
{
if(key==7)
{
if(shuru()==1)flags=1; //輸入密碼開鎖
}
}
delay_ms(100);
key=16;
}
}
復制代碼
所有資料51hei提供下載:
門禁.7z
(213.59 KB, 下載次數(shù): 143)
2020-5-7 15:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
門鎖.pdf
(77.41 KB, 下載次數(shù): 62)
2020-5-6 21:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
fengsk
時間:
2020-9-24 14:26
大佬這個引腳圖可以給一下嗎?
作者:
yy3900636
時間:
2021-1-26 15:57
正好需要這個程序,謝謝樓主無私分享,希望講解一下RC522的工作原理
作者:
cyrs
時間:
2021-1-27 13:31
是兩種程序還是一種程序兩種用法
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1