/**
* 项目名:门禁系统
* 文件名:main.h
*/
#ifndef _MAIN_H
#define _MAIN_H
sbit RELAY_PIN = P0^4;
sbit BUZZER_PIN = P0^6;
void sys_init();
void samplingDS1302();
void samplingUlt();
void initDispMode1();
void initDispMode2();
void initDispMode3();
void refreshTimeDisplay();
#endif
/**
* 项目名:门禁系统
*
* 7:00-22:00工作在模式0(自动门状态)
* 22:00-7:00工作在模式1(密码门状态)
* 难点:继电器在接通5s后断开
* 蜂鸣器报警3s
* 文件名:main.c
*/
#include <stc15f2k60s2.h>
#include <string.h>
#include "stdint.h"
#include "timer.h"
#include "digitalTube.h"
#include "matrixKey.h"
#include "DS1302.h"
#include "EEPROM.h"
#include "ultrasonic.h"
#include "electromagneticDev.h"
#include "main.h"
volatile bit flag50ms = 0, flag200ms = 0, flag500ms = 0; //任务标志
bit workingMode = 1; //工作模式,初始化时间为06:59:00
uint8_t dispMode = 0; //在密码门状态下的显示模式{0, 1, 2, 3}
uint8_t code initPassword[7] = "654321"; //初始密码
uint8_t password[7]; //当前密码
bit isOpen = 0; //继电器是否打开
volatile bit enBuzzer = 0;
sTime_t time;
static uint8_t wrongTimes = 0, passwdTmpIndex = 0; //!!!here
void main() {
uint8_t cnt500ms = 0;
sys_init();
while (1) {
if (flag50ms) {
flag50ms = 0;
keyDriver();
}
if (flag200ms) {
flag200ms = 0;
samplingDS1302();
if (workingMode == 0) { //如果工作于自动门状态
samplingUlt(); //采样超声波模块
}
}
if (flag500ms) {
flag500ms = 0;