/******************************************************************************************************************
程序名: 射频卡门禁系统
功能概述:
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
编程: 于军峰
编译日期: 2007-05-01
******************************************************************************************************************/
#include<iom16v.h>
#include<macros.h>
#include<stdio.h>
#include"LCD_12864.H" //LCD头文件
#include"read_card.H" //读卡头文件
#define key_inc (PINC&(1<<PC0)) //按键+,选择日期、时间时用
#define key_dec (PINC&(1<<PC1)) //按键-,选择日期、时间时用
#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<<PC5)
#define LCD_BACK_OFF PORTC|=(1<<PC5)
#define buzzer_on PORTD&=~(1<<PD7)
#define buzzer_off PORTD|=(1<<PD7)
#define charge_on PORTC&=~(1<<PC6)
#define charge_off PORTC|=(1<<PC6)
#define LOCK_ON PORTC&=~(1<<PC3)
#define LOCK_OFF PORTC|=(1<<PC3)
#define CHARGE_STATUS (PINC&(1<<PC2))
#define null 0
#define vref 5000 //AD转换参考电压
#define OVER_FLOW 10 //进入菜单设置时,如果在10S内没有按下任何键,则自动退出
#pragma data:code
//const uchar manage_card[5]={0x0b,0,0x2d,0x23,0x5f}; //住房卡-----当作管理卡
const uchar manage_card[5]={0x33,0,0x7c,0x09,0xb1}; //000 8128945-----当作管理卡
//*************************************************温度测定查表****************************************************
//******************************************温度范围是:-30度----+99度*********************************************
const uint temp_1[130]={
4304,4270,4235,4198,4161,4122,4083,4042,4001,3958,
3914,3870,3824,3778,3731,3683,3635,3585,3535,3484,
3433,3381,3329,3276,3223,3169,3116,3062,3008,2953,
2899,2844,2789,2733,2678,2622,2568,2514,2459,2405,
2353,2299,2248,2196,2145,2095,2045,1996,1948,1901,
1854,1808,1763,1719,1676,1599,1590,1549,1508,1468,
1429,1391,1354,1318,1282,1247,1214,1181,1149,1117,
1087,1057,1028,1000,973 ,946 ,920 ,895 ,870 ,846 ,
823 ,800 ,777 ,755 ,755 ,713 ,692 ,673 ,654 ,632 ,
617 ,600 ,583 ,567 ,551 ,536 ,521 ,506 ,491 ,478 ,
465 ,452 ,440 ,428 ,417 ,405 ,394 ,384 ,373 ,364 ,
354 ,345 ,335 ,326 ,318 ,310 ,302 ,294 ,286 ,279 ,
271 ,265 ,258 ,252 ,245 ,239 ,233 ,227 ,222 ,216 ,
};
//*****************************************************************************************************************
#pragma data:data
uchar card_data[5][5]={
{0,0,0,0,0}, //卡1
{0,0,0,0,0}, //卡2
{0,0,0,0,0}, //卡3
{0,0,0,0,0}, //卡4
{0,0,0,0,0}, //卡5
};
uchar tem[7]={7, 5, 1, 8, 0, 0, 6}; //日期、时间、星期数组
// 年/月/日 /H /M /S /W
//********************************************目录结构体定义*******************************************************
struct menu_item
{
short menu_count;
char *display_string;
void (*subs)();
struct menu_item *children_menus;
struct menu_item *parent_menus;
};
//**********************************************结构数组声明*******************************************************
struct menu_item main_menu[4];
struct menu_item alarm_menu[2];
struct menu_item infrared_menu[2];
struct menu_item lamp_menu[2];
struct menu_item (*menu_point) = main_menu;
struct menu_item card_main_menu[4];
struct menu_item card_inc_menu[2];
struct menu_item card_dec_menu[2];
struct menu_item (*menu_card) = card_main_menu;
uchar user_choose = 0;
uchar max_items=0;
uint temp_value=0; //温度检测AD值
//********************************************变量定义*************************************************************
uchar second_temp=0; //秒变量
uchar scan_en=0; //主屏扫描标志位
uchar key=0; //按键变量
uchar kk=0; //按键按下标志位
uchar auto_return=0; //菜单自动返回变量
uchar return_en=0; //菜单自动返回标志位
uchar left_right=0; //左右键变量
uchar choose_temp=0; //子菜单标题变量
uchar return_temp=0; //返回临时变量
uchar set_time_temp=0; //设置时间时菜单变量,如果=1表示屏显在设置时间菜单
uchar twinkling_addr=0x91; //设置时间时闪动显示位置变量
uchar inc_card_en=0; //添加新卡允许变量
uchar manage_card_inc_en=0; //管理卡
uchar cold=0; //温度正负极标志位
uchar temp0=0; //温度值变量
uchar xx=88; //温度更新变量,开机赋一个比较大的数,目的是开机就显示温度
uchar close_read=0;
lcd_back_en=0; //LCD背光计时变量允许
lcd_back_time=0; //LCD背光计时变量
//*****************************************************************************************************************
void delay_ms (unsigned int m); //延时
void read_adc(void); //按键ADC处理
void date_time_display(void); //时间日期显示
void root_directory(void); //引导主画面
void set_menu(void); //设置菜单
void clear_screen(void); //清屏
void clear_gdram(void); //清全部GDRAM
void select_menu(uchar data1); //选择菜单时,标志
void time_set_display(void); //时间、日期设置显示
uint adc_sampling(uchar adc_input); //ADC采样
uchar get_degree(void); //温度查表
uchar temperature_check(void); //室温检测
uchar charge_tem=0; //每十分钟,检测一次电池电量,此变量主要是计时
uint battery_temp=0; //电平电压变量
//************************************************函 数 声 明 区***************************************************
void main_menu_initial(void); //主菜单初始化
void alarm_menu_initial(void); //报警菜单初始化
void infrared_menu_initial(void);
void lamp_menu_initial(void);
void menu_initial(void);
void card_main_menu_initial(void);
void card_inc_menu_initial(void);
void card_dec_menu_initial(void);
void show_menu(void);
void date_time_set(void);
void alarm_set(void);
void infrared_set(void);
void lamp_set(void);
void nullsubs(void);
void twinkling_addr_pro(void);
void lcd_week_pro(void);
void key_inc_d
没有合适的资源?快使用搜索试试~ 我知道了~
LOCK_MAIN.rar_swipe reader_刷卡
共1个文件
c:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 161 浏览量
2022-09-22
20:07:51
上传
评论
收藏 12KB RAR 举报
温馨提示
1、 点阵LCD(128*64)显示。在正常、设置情况下LCD显示系统各个时期的菜单以供选择。 2、 射频卡开锁,开锁时用射频卡放在读卡器上(距离<15CM)即可开锁,如果用非法卡连续刷写次数超过3 次则报警(报警功能没有添加),这时系统将关闭刷卡器30分钟,在30分钟后再允许刷卡。 3 本系统分为: 1)、1个主机。 2)、2个读卡头(一个在门外供刷卡用、一个在主机旁用于管理操作)
资源推荐
资源详情
资源评论
收起资源包目录
LOCK_MAIN.rar (1个子文件)
LOCK_MAIN.C 57KB
共 1 条
- 1
资源评论
御道御小黑
- 粉丝: 61
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功