赞
踩
本RFID系统设计可分为硬件部分和软件部分。硬件部分以MFRC522射频识别模块为核心,结合主控模块STC89C52设计系统的外围硬件电路,实现对射频卡的控制与MCU之间的互通。软件部分采用C语言进行系统的下位机程序的开发,完成与IC卡之间的通信,实现数据交换功能。整体电路主要由51单片机最小系统,LCD12864液晶显示模块,RFID无线模块,5V转3.3V稳压电路,蜂鸣器模块,AT24C02存储电路,继电器控制电路,按键模块;原理图如图:
PCB如图:
(1)LCD初始化
- /*******************************************************************/
- void lcd_init()
- {
-
- LCD_PSB = 1; //并口方式 ,部分液晶不需要
- write_cmd(0x36); //扩充指令操作
- delay(5);
- write_cmd(0x30); //基本指令操
- delay(5);
- write_cmd(0x0C); //显示开,关光标
- delay(5);
- write_cmd(0x01); //清除LCD的显示内容
- delay(5);
- }
(2)修改密码
- case 3:
- display(1,0,4); //密码设置
- display2(3,0,table,8);
- key_count=0;
- while(1)
- {
- key_value=key_scan();
- if(key_value==12)
- {
- states--;
- return;
- }
-
- if(key_value>=0 && key_value <=9)//有按键输入
- {
- table[key_count++]=key_value+'0';
- display2(3,0,table,8);
- }
-
- if(key_value==11)//退格
- {
- table[--key_count]='-';
- display2(3,0,table,8);
- }
-
- if(key_count==8 && key_value == 15) //按下确定键
-
- {
-
- for(i=0;i<8;i++)
- KEY_BUF[i]=table[i];
- EEPROM_WRITE(7,KEY_BUF,8);//写入EEPROM
-
- break;
- }
- }
-
- break ;
(3)匹配密码
- case 1:
- display(1,0,2); //密码输入
- display2(3,0,table,8);
- key_count=0;
- while(1)
- {
- key_value=key_scan();
- if(key_value==12)
- {
- states--;
- return;
- }
-
- if(key_value==13)
- {
- states++;
- return;
- }
- if(key_value>=0 && key_value <=9)//有按键输入
- {
- table[key_count++]=key_value+'0';
- display2(3,0,table,8);
- }
-
- if(key_value==11)//退格
- {
- table[--key_count]='-';
- display2(3,0,table,8);
- }
-
- 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);
- relay_OFF();
- break;
-
- }
- else //密码错误
- {
- relay_OFF();
- beep1() ;
- bWarn=1;
- display(2,0,6);
- break;
- }
- }
-
- }
- break ;
(3)主程序源码
- void main(void) //主函数
- {
- INT8U key;
-
- Delay_ms(50); //让硬件稳定
- init_all(); //执行初始化函数
- relay_OFF(); //关继电器
- LED_BLINK_1(); //led test
- beep1(); //beep test
- display(0,0,0); //显示初始化
-
- while(1)
- {
- key=key_scan(); //按键操作
- if(key==12) if(states>0) states--;
- else states=0; //上一功能
-
- if(key==13) if(++states>3) states=3; //下一功能
- ctrl_process(); //进入RC522操作
- }
- }
资料链接:https://pan.baidu.com/s/1KkmG5-HjxLwf_3w9jcIkiQ?pwd=oyni
提取码:oyni
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。