设计文档:
单片机源程序如下:
/******************************************************************************************************************
程序名: 射频卡门禁系统
功能概述:
1、 点阵LCD(128*64)显示。在正常、设置情况下LCD显示系统各个时期的菜单以供选择。
2、 射频卡开锁,开锁时用射频卡放在读卡器上(距离<15CM)即可开锁,如果用非法卡连续刷写次数超过3
次则报警(报警功能没有添加),这时系统将关闭刷卡器30分钟,在30分钟后再允许刷卡。
3 本系统分为:
1)、1个主机。
2)、2个读卡头(一个在门外供刷卡用、一个在主机旁用于管理操作)
4、 本锁开锁时供电,平时断电(12V)。
5、 8个按键(AD转换采样取值)(设置、+、-、↑、↓、确认、返回、说明)
6、 每次按下键、刷卡时有峰鸣器指示
7、 LCD背光在有按键按下时、或刷卡时自动点亮,延时30秒关闭
8、 门外有人体红外传感器探头,发现2米内有人,自动进入预警状态,如果是在晚上超过7点钟,则点亮门前的灯泡照明,
如果此时有人破坏(比如取下灯泡、剪断灯炮的线、打烂灯泡)也要报警。否则、连续在门前超过1分钟,就开始报警。
(此功能没有添加)
9、 开门时发出“欢迎光临”,并提示关门(此功能没有添加)
10、 本机带有门铃,并能记录前10天门铃按下的次数。(此功能没有添加)
11、 LCD显示日期、星期、时间、室内温度、锁的状态、功能设置(菜单显示)等
12、 可以查询过去10天内的开门记录并由LCD显示出来(此功能没有添加)
13、 可以于电脑通过RS-232接口连接进行通信,监看门的状态、开门记录等,方便打印(此功能没有添加)
14、 要求锁误判率小于1PPM
15、 系统配有UPS(12V) 平时用UPS电能,只有当主机检测到电压低于11.5V时,自动接入火电进行充电。
电瓶充满时(大约5小时)自动断电。
16、 电压:12V
17、 电流:待机时<50MA
射频卡类型: 4001、EM4100和含E2PROM的RF卡。如E5550。
MCU类型: ATmega16
晶振频率: 7.3728MHZ
版本: V0.1
******************************************************************************************************************/
#include
#include
#include
#include"LCD_12864.H" //LCD头文件
#include"read_card.H" //读卡头文件
#define key_inc (PINC&(1<
#define key_dec (PINC&(1<
#define BAUDRATE 9600 //波特率
#define F_CPU 7372800 //晶振频率
#define LCD_LAMP 60 //LCD默认30S后关闭
#define BATTERY_TIME 5 //每十分钟检测一次电池电量
#define ADC_PINA0 0x00 //ADC0 按键AD 单端通道,不放大
#define ADC_PINA1 0x01 //ADC1 温度采样
#define ADC_PINA2 0x02 //ADC2 电平电量检测
#define LCD_BACK_ON PORTC&=~(1<
#define LCD_BACK_OFF PORTC|=(1<
#define buzzer_on PORTD&=~(1<
#define buzzer_off PORTD|=(1<
#define charge_on PORTC&=~(1<
#define charge_off PORTC|=(1<
#define LOCK_ON PORTC&=~(1<
#define LOCK_OFF PORTC|=(1<
#define CHARGE_STATUS (PINC&(1<
#define null 0
#define vref 5000 //AD转换参考电压
#define OVER_FLOW 10 //进入菜单设置时,如果在10S内没有按下任何键
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』