項目方案: (1)、刷取指紋,指紋識別正確,馬上開門 (2)、蜂鳴器提醒,設備的運行狀態 (3)、OLED實時顯示當前時間,和用戶操作情況 (4) 、門內自動開門,外來訪客,用戶可無線藍牙實現開門
制作出來的實物圖如下:
PCB版正面
PCB背面
主函數代碼: - uint8_t percent;
- uint16_t ad;//ad采集到值
- uint16_t t = 0,i = 0;
- int main(void)
- {
- SystemInit();//系統時鐘初始化
- NVIC_Configuration();//中斷向量優先級分組2(搶占優先級2位;子優先級2位)
- delay_init();//延時函數初始化
- uart_init(9600);//串口一初始化
- USART3_Init(9600);//串口三初始化 -- Bluetooth初始化
- FPC1020_Init();//初始化指紋輸入接口
- //LED_Init();//LED初始化
- KEY_Init();//按鍵初始化
- Beep_Init();//蜂鳴器初始化
- Adc_Init();//初始化ADC
- RTC_Init();//RTC初始化
- Door_Init();//舵機初始化
- OLED_Init();//OLED初始化
- OLED_Clear();//OLED清屏
- WWDG_Init(0x7F, 0x5F, WWDG_Prescaler_8);//窗口看門狗計數器值為7f,窗口寄存器為5f,分頻數為8
- //IWDG_Init(4, 625); //分頻數為64,重載值為625,溢出時間為1s count = 1 / 40 * 64 * 625
- while(1)
- {
- if(t++ / 200)
- {
- t = 0;//清零
- ad = Get_Adc_Average(0, 10);//獲取AD值
- percent = ad * ((3.3 / 4096) / 2.9090) * 100;//轉化為電量百分比 12 * (24 / (24 + 75)) = 2.90909088
- //OLED_Clear();//OLED清屏
- OLED_Static_Display();//固定顯示"二零九指紋鎖"
- Battery_Display(percent);//電量顯示(0% - 100%)
- OLED_Display_RealDate(calendar.w_year, calendar.w_month, calendar.w_date, calendar.week);//顯示年月日
- //LED0 =! LED0;//工作指示燈
- }
- // if(Door_Flag && Door_Status_Flag)//藍牙開門--門的狀態為關閉時-->開門
- // Open_Door();//開門
- // if((i++ / 30) && Door_Status_Flag)//延時時間到和門關閉的時候同時觸發測距
- // //if(i++ / 30)
- // {
- // i = 0;
- // USART1_Send_Byte(0x55);//觸發測距
- // }
- if(Door_Status_Flag)//門關閉的時候
- {
- if(i++ / 30)
- {
- i = 0;//重新計數
- USART1_Send_Byte(0x55);//觸發測距
- }
- if(Door_Flag)//藍牙開門
- Open_Door();//開門
- delay_ms(10);//延時100ms
- }
- OLED_Display_RealTime(calendar.hour, calendar.min, calendar.sec);//顯示時分秒
- KEY_Judge();//按鍵掃描
- FPC1020_Work();//指紋模塊工作函數
- //delay_ms(1);//延時1ms
- //IWDG_Feed();//獨立看門狗喂狗
- }
- }
復制代碼
全部資料51hei下載地址:
指紋鎖項目.7z
(394.01 KB, 下載次數: 161)
2019-2-21 04:05 上傳
點擊文件名下載附件
|