陕西理工学院毕业设计
4.3 系统软件模块化设计
本文将系统大致分为如下几个模块:主函数、控制模块、矩阵键盘模块、RC522模块、蜂鸣器模块、LCD12864模块等。
初始化 是 删除按键按下 否 进入门禁模式 否 否 是 模拟开门 返回 图 4.2 系统流程图
显示非法卡 是 开始 注册按键按下 否 进入注册卡模式 完成注册卡 进入删除卡模式 完成删除卡式 是否有刷卡 是 是否合法 4.3.1 射频控制模块
(1)MFRC522复位操作
在上单之后一定要对MFRC522进行复位操作,MFRC522是高电平复位有效地,可以由STC89C52的I/O口直接复位,要注意的是:
<1>必须在STC89C51成功复位150ms以后,再对MFRC522进行复位; <2>复位高电平持续200us以上;
<3>若复位成功,MFRC522内部的Command寄存器的值为0,如果不为0,必须重新复位。
(2)初始化MFRC522内部寄存器
在复位成功后,再对MFRC522的内部寄存器进行初始化,只有正确初始化之后,MFRC522才能正常工作。
第 16 页 共 61 页
陕西理工学院毕业设计
开机复位 初始化MFRC522 请求操作 否 有碰撞? 有 反碰撞操作 选择卡 是 通过验证? 否 卡的数据操作
图 4.3 射频模块的工作流图
///////////////////////////////////////////////////////////////////// //功 能:复位RC522
///////////////////////////////////////////////////////////////////// char PcdReset(void) {
SET_RC522RST; delay_ns(10); CLR_RC522RST; delay_ns(10); SET_RC522RST; delay_ns(10);
WriteRawRC(CommandReg,PCD_RESETPHASE); delay_ns(10);
WriteRawRC(ModeReg,0x3D);
WriteRawRC(TReloadRegL,30); WriteRawRC(TReloadRegH,0); WriteRawRC(TModeReg,0x8D);
WriteRawRC(TPrescalerReg,0x3E); WriteRawRC(TxAutoReg,0x40); return MI_OK; }
第 17 页 共 61 页
陕西理工学院毕业设计
4.3.2 LCD12864模块
延时 延时 设置工作方式 清屏 延时 延时 开始 结束
功能设置 延时 光标设置 延时 延时 复位 显示开
图 4.4 LCD初始化流程图
/*******************************************************************/ /* LCD初始化设定 */ /*******************************************************************/ void lcd_init() {
write_cmd(0x36);
delay(5);
write_cmd(0x30);
delay(5);
write_cmd(0x0C);
delay(5);
write_cmd(0x01);
delay(5); }
第 18 页 共 61 页
陕西理工学院毕业设计
4.3.3 按键程序设计
输入密码 延时 是否检测到数据 是 否 验证密码是 否正确 LCD 显示
图 4.5密码验证流程图
if(key_count==8)
{
if( table[0]==KEY_BUF[0] && table[1]==KEY_BUF[1] && table[2]==KEY_BUF[2] && table[3]==KEY_BUF[3] && table[4]==KEY_BUF[4] && table[5]==KEY_BUF[5] && table[6]==KEY_BUF[6] &&
table[7]==KEY_BUF[7] ) //密吗正确 {
bPass=1;
relay_ON(); //灯开关 display(2,0,5);
break; }
else //密码错误 {
relay_OFF(); beep1() ; bWarn=1;
display(2,0,6); break;
第 19 页 共 61 页