毕业设计刷卡代码
单片机源程序如下:
- #include "LCD1602.h"
- #include "mfrc522.h"
- #include "CardAction.h"
- #include "key.h"
- #define uchar unsigned char
- #define uint unsigned int
- sbit Buzzer=P3^5;//蜂鸣器接口定义,低电平响
- sbit Jdq=P3^7;//继电器接口定义,低电平吸合
- sbit ChangeKey=P3^2;//切换按键
- sbit Key=P3^2;//切换按键
- uchar ReturnValue=0;//读卡返回值
- uchar ModeFlag=0;//模式标志位 0-验证刷卡开门模式 1-注册卡模式 2-注销卡模式
- uchar i=0,t=0,In_Code=0;
- uchar IN_TAXT[4]="0000";
- uchar NOW_CODE[]="123456E"; //mima
- uchar num[]="123A456B789CD0EF";
- u8 receiveData;
- /*******************************************************************************
- * 函数名 :UsartInit()
- * 函数功能 :设置串口
- * 输入 : 无
- * 输出 : 无
- *******************************************************************************/
- void UsartInit()
- {
- SCON=0X50; //设置为工作方式1
- TMOD=0X20; //设置计数器工作方式2
- PCON=0X80; //波特率加倍
- TH1=0XF3; //计数器初始值设置,注意波特率是4800的
- TL1=0XF3;
- ES=1; //打开接收中断
- EA=1; //打开总中断
- TR1=1; //打开计数器
- }
- void main()
- {
- Card_Init();//读卡器初始化
- LCD_init();//液晶1602初始化
- Buzzer=1;//蜂鸣器关闭
- Jdq=0;//继电器关闭
- KeyState=0;
- UsartInit();
- while(1)
- {
-
-
- while(ModeFlag==0)//卡验证模式
- {
- write_string(1,0,"Verif Mode:");//第二行显示"Welcome!"
- ReturnValue=0;//验证卡返回值置0
- ReturnValue=Vreif_Sy();// 验证卡
- if(ReturnValue==4)//ReturnValue==4卡验证成功
- {
- write_string(2,0,"Welcome!");//第二行显示"Welcome!"
- Buzzer=0; //开蜂鸣器
- Jdq=1;//开继电器
- delay1ms(500);//延时0.5s
- Buzzer=1;//关蜂鸣器
- delay1ms(1000);//延时1s
- write_string(2,0," ");//清第二行显示
- // EA=1;
- // ES=1;
- Jdq=0;//关闭继电器
-
- for(t=0;t<100;t++)
- { SBUF='A';delay1ms(50);}
- }
- else {SBUF='B'; }
- if(ChangeKey==0)//切换按键被按下
- {
- while(ChangeKey==0);//等待被弹起
- LCD_Clear();//清屏幕
- ModeFlag=1;//进入注册卡模式
- }
- if(Key==0)//切换按键被按下
- {
- while(Key==0);//等待被弹起
- write_string(1,0,"CODE Mode:");//第一行显示"Code Mode:"
- write_string(2,0," ");
- In_Code=1;//进入密码模式
- }
- }//end for while(ModeFlag==0)
- while(ModeFlag==1)//卡注册模式
- {
- write_string(1,0,"Register Mode:");//第一行显示"Register Mode:"
- ReturnValue=0;//ReturnValue重置0
- ReturnValue=CardReg();//卡注册
- if(ReturnValue==6)//ReturnValue==6卡注册成功
- {
- write_string(2,0,"Success !");//第二行显示"Success !"
- Buzzer=0;
- delay1ms(500);
- Buzzer=1;
- write_string(2,0," ");
-
- }
- if(ChangeKey==0)//切换按键被按下
- {
- while(ChangeKey==0);//等待被弹起
- LCD_Clear();
- ModeFlag=2;//进入注销卡模式
- }
- if(Key==0)//切换按键被按下
- {
- while(Key==0);//等待被弹起
- write_string(1,0,"CODE Mode:");//第一行显示"Code Mode:"
- write_string(2,0," ");
- In_Code=1;//进入密码模式
- }
- }//end for while(ModeFlag==1)
- while(ModeFlag==2)//卡注销模式
- {
- write_string(1,0,"Reset Mode:");//第一行显示"Reset Mode:"
- ReturnValue=0;//ReturnValue重置0
- ReturnValue=CardReset();//注销卡
- if(ReturnValue==6)//ReturnValue==6卡注销成功
- {
- write_string(2,0,"Success !");//第二行显示"Success !"
- Buzzer=0;
- delay1ms(500);
- Buzzer=1;
- write_string(2,0," ");
- }
- if(ChangeKey==0)//切换按键被按下
- {
- while(ChangeKey==0);//等待被弹起
- LCD_Clear();
- ModeFlag=3;//进入注销卡模式
-
- }
- }//end for while(ModeFlag==2)
-
- while(ModeFlag==3)//密码输入模式
- {
-
- write_string(1,0,"CODE Mode:");//第一行显示"Code Mode:"
- KeyDown();
- if(KeyState)
- {
- KeyState=0;
- IN_TAXT[i]=num[KeyValue];
- // write_char(2,0,IN_TAXT[i]);//第一行显示"Code Mode:"
- // write_char(2,2,NOW_CODE[i]);//第一行显示"Code Mode:"
- //
- // write_string(2,0,NOW_CODE);//第一行显示"Code Mode:"
- //
- // write_string(2,6,IN_TAXT);//第一行显示"Code Mode:"
- // write_char(2,3,IN_TAXT[i]);//第一行显示"Code Mode:"
- i++;
- if(i==1)
- {
- write_string(2,0,"* ");//第一行显示"Code Mode:"
- }
- if(i==2)
- {
- write_string(2,0,"** ");//第一行显示"Code Mode:"
- }
- if(i==3)
- {
- write_string(2,0,"*** ");//第一行显示"Code Mode:"
- }
- if(i==4)
- {
- write_string(2,0,"**** ");//第一行显示"Code Mode:"
- }
- if(i==5)
- {
- write_string(2,0,"***** ");//第一行显示"Code Mode:"
- }
- if(i==6)
- {
- write_string(2,0,"****** ");//第一行显示"Code Mode:"
- }
- }
-
-
- if(i>=7)
- {
- i=0;
- if(NOW_CODE[0]==IN_TAXT[0]&&NOW_CODE[1]==IN_TAXT[1]&&NOW_CODE[2]==IN_TAXT[2]&&NOW_CODE[3]==IN_TAXT[3]&&NOW_CODE[4]==IN_TAXT[4]&&NOW_CODE[5]==IN_TAXT[5]&&NOW_CODE[6]==IN_TAXT[6])//密码正确
- {
- write_string(2,0,"Success ! ");//第二行显示"Success !"
- Buzzer=0;
- Jdq=1;//开继电器
-
- delay1ms(1000);
- Buzzer=1;
- write_string(2,0," ");
- In_Code=0;
- ModeFlag=0;
- Jdq=0;//gaun继电器
- for(t=0;t<100;t++)
- { SBUF='A';delay1ms(50);}
- }
- else { write_string(2,8,"error"); SBUF='B';};
- }
-
-
- if(ChangeKey==0)//切换按键被按下
- {
- while(ChangeKey==0);//等待被弹起
- LCD_Clear();
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
刷卡.zip
(192.82 KB, 下载次数: 85)
|