|
STM32-RC522-門禁.png (309.45 KB, 下載次數(shù): 50)
下載附件
2023-11-29 21:15 上傳
單片機(jī)源程序如下:- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "rc522.h"
- #include "LED.h"
- #include "Key.h"
- #include "OLED.h"
- #include "Store.h"
- #include "Servo.h"
- /**
- * 連線說明:
- * 1--SDA <----->PA4
- * 2--SCK <----->PA5
- * 3--MOSI <----->PA7
- * 4--MISO <----->PA6
- * 5--懸空
- * 6--GND <----->GND
- * 7--RST <----->PB0
- * 8--VCC <----->VCC
- **/
- uint32_t num; //
- uint8_t j = 0;
- int main(void)
- {
- delay_init(); //延時函數(shù)初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
- uart_init(115200); //串口初始化為115200
- RC522_Init(); //初始化射頻卡模塊
-
- LED_Init(); //LED???
- Key_Init(); //?????
- OLED_Init(); //OLED???
- Store_Init();
- Servo_Init(); //?????
-
- while(1)
- {
- Key_GetNum();
- //先將sn清零
- SN[0]=0X00;
- SN[1]=0X00;
- SN[2]=0X00;
- SN[3]=0X00;
-
- if (KeyNum == 1)
- {
- //這里執(zhí)行讀卡
- OLED_ShowString(1, 1, "moshi: ");
- OLED_ShowString(1, 1, "moshi:du");
- RC522_Handel();
- //
- num = (uint32_t)SN[0] << 24 | (uint32_t)SN[1] << 16 | (uint32_t)SN[2] << 8 | SN[3];
- OLED_ShowHexNum(2, 1, num, 8);
- //將存儲里的卡號讀出來對比這個卡號是否開鎖
- for (j = 1; j < 255; j ++) //
- {
- if(num==0x00000000){
- //跳出循環(huán)
- break;
- }else if(Store_Data[j]==0x00000000){
- OLED_ShowString(3, 1, " ");
- OLED_ShowString(3, 1, "error:failed");
-
- //跳出循環(huán)
- break; //
- }
- else if(Store_Data[j]==num){
- OLED_ShowString(3, 1, " ");
- OLED_ShowString(3, 1, "success:ok");
- //開門
- Servo_SetAngle(90);
- delay_ms(5000);
- Servo_SetAngle(0);
- //跳出循環(huán)
- break; //
- }
- }
-
- }
-
- if (KeyNum == 2)
- {
- //這里執(zhí)行授權(quán)
- OLED_ShowString(1, 1, "moshi:shouqun");
- RC522_Handel();
- //
- num = (uint32_t)SN[0] << 24 | (uint32_t)SN[1] << 16 | (uint32_t)SN[2] << 8 | SN[3];
- OLED_ShowHexNum(2, 1, num, 8);
- //將存儲里的卡號讀出來對比這個卡號是否存在
- for (j = 1; j < 255; j ++) //
- {
- if(num==0x00000000){
- //跳出循環(huán)
- break;
- }else if(Store_Data[j]==num){
- OLED_ShowString(3, 1, " ");
- OLED_ShowString(3, 1, "success:exist");
-
- //跳出循環(huán)
- break; //
- }else if(Store_Data[j]==0x00000000){
- Store_Data[j] = num;
- Store_Save();
- OLED_ShowString(3, 1, " ");
- OLED_ShowString(3, 1, "success:save ok");
- delay_ms(5000);
- //跳出循環(huán)
- break; //
- }
-
- }
- }
-
- }
- }
復(fù)制代碼
原理圖: 無
仿真: 無
代碼:
RFID-RC522.7z
(226.75 KB, 下載次數(shù): 83)
2023-11-29 21:16 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|