基于单片机的门禁系统设计毕业设计

基于单片机的门禁系统设计 15

各引脚的功能如表3-2所示

表3-2 LCD显示器引脚功能表

管脚名称 1 2 3 4 符号 VSS VDD V0 RS 电平 0V 5.0V 负压 H/L 功能描述 接地(GND) 电源电压 液晶显示器驱动电压调节端 并口模式寄存器选择 H:数据;L:指令 5 6 7到10 11到14 15 R/W E DB0到DB3 DB4到DB7 PSB H/L H/L H/L H/L H/L 并口模式 H:读; L;写 并口:读/写起始脚 数据总线低4位,4位并口时悬空 数据总线高4位 H:8/4位数据接口模式 L:串行接口模式由硬件设置时,此脚悬空 16 17 NC RES H/L H/L 悬空 复位信号,选择硬件复位时,此脚悬空 18 19 20

VOUT BLA BLK 负压 5V 0V 液晶显示器驱动电压 背光正 背光负 基于单片机的门禁系统设计 16

系统的硬件原理图如图3-9所示:

基于单片机的门禁系统设计 17

图3-9 系统硬件原理图

4 软件设计

本系统的软件设计包括基于ATmega16单片机的主控设备的流程图以及主程序的编写,基于RFM12无线传输模块的通信协议以及编程,用Visual Basic语言设计开发人机界面。

4.1 主控设备的软件设计

ATmega16单片机的工作流程是当没有卡片进入读卡区时,信号指示灯绿灯常亮,表示门禁系统处于待机状态,LCD显示当前时间以及欢迎观临。当读卡器感应到有卡进入读卡区后会把读取的相应的数据通过串口发送给单片机,单片机正确的读到数据以后就会通过无线模块发送到PC机,PC机把这个数据和数据库中的合法信息比对,做出判断后返回一个结果给单片机。如果该数据是合法的,单片机执行一个开锁命令,并且通过LCD显示“ 请进”。如果数据是非法的,蜂鸣器报警,警告信号灯红灯闪烁,LCD显示 “对不起”。

综上ATmega16单片机的程序包括串口中断子程序,无线传输子程序,及LCD显示

程序。图4-1为程序的主流程图。 开始 系统初始化 读取门禁号 监控门禁信号 N 有卡进入感应区? 门禁状态异常? Y 报警 N Y 卡号合法? Y 基于单片机的门禁系统设计 18

图4-1 主流程图

读卡号 4.1.1 单片机初始化设置 #include #include #include #include //#include //宏定义 #define uc unsigned char #define LCD_DIR DDRD #define LCD_PORT_OUT PORTD #define LCD_PORT_IN PIND、 #define RFID_START 0x10 #define RFID_ADDR 0xFF #define READ_BLOCK 0x52 uc rfid_rdata[20]; uc rfid_rcount; //函数声明

void Decode_numeral(uc figure); void Lcd_Wcmd(uc cmd); void Lcd_Wdat(uc data);

//////////////////////////////////////////////////////// //定义I/O输出端口 #define RST 4 #define RST_H() PORTB |= (1 << RST) #define RST_L() PORTB &= ~(1 << RST) #define RS 5 #define RS_DATA() PORTB |= (1 << RS)

#define RS_INSTRUCTION() PORTB &= ~(1 << RS) #define RW 6 #define RW_READ() PORTB |= (1 << RW) #define RW_WRITE() PORTB &= ~(1 << RW) #define EN 7 #define EN_H() PORTB |= (1 << EN) #define EN_L() PORTB &= ~(1 << EN) #define M_DIR 6 //定义全局变量

uc numeral_hour_counter=20; uc numeral_second_counter=00; uc numeral_minute_counter=01; uc BCD_code[6];

联系客服:779662525#qq.com(#替换为@)