|
畢業(yè)設(shè)計(jì)刷卡代碼
單片機(jī)源程序如下:
- #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;//模式標(biāo)志位 0-驗(yàn)證刷卡開門模式 1-注冊(cè)卡模式 2-注銷卡模式
- uchar i=0,t=0,In_Code=0;
- uchar IN_TAXT[4]="0000";
- uchar NOW_CODE[]="123456E"; //mima
- uchar num[]="123A456B789CD0EF";
- u8 receiveData;
- /*******************************************************************************
- * 函數(shù)名 :UsartInit()
- * 函數(shù)功能 :設(shè)置串口
- * 輸入 : 無
- * 輸出 : 無
- *******************************************************************************/
- void UsartInit()
- {
- SCON=0X50; //設(shè)置為工作方式1
- TMOD=0X20; //設(shè)置計(jì)數(shù)器工作方式2
- PCON=0X80; //波特率加倍
- TH1=0XF3; //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的
- TL1=0XF3;
- ES=1; //打開接收中斷
- EA=1; //打開總中斷
- TR1=1; //打開計(jì)數(shù)器
- }
- void main()
- {
- Card_Init();//讀卡器初始化
- LCD_init();//液晶1602初始化
- Buzzer=1;//蜂鳴器關(guān)閉
- Jdq=0;//繼電器關(guān)閉
- KeyState=0;
- UsartInit();
- while(1)
- {
-
-
- while(ModeFlag==0)//卡驗(yàn)證模式
- {
- write_string(1,0,"Verif Mode:");//第二行顯示"Welcome!"
- ReturnValue=0;//驗(yàn)證卡返回值置0
- ReturnValue=Vreif_Sy();// 驗(yàn)證卡
- if(ReturnValue==4)//ReturnValue==4卡驗(yàn)證成功
- {
- write_string(2,0,"Welcome!");//第二行顯示"Welcome!"
- Buzzer=0; //開蜂鳴器
- Jdq=1;//開繼電器
- delay1ms(500);//延時(shí)0.5s
- Buzzer=1;//關(guān)蜂鳴器
- delay1ms(1000);//延時(shí)1s
- write_string(2,0," ");//清第二行顯示
- // EA=1;
- // ES=1;
- Jdq=0;//關(guān)閉繼電器
-
- for(t=0;t<100;t++)
- { SBUF='A';delay1ms(50);}
- }
- else {SBUF='B'; }
- if(ChangeKey==0)//切換按鍵被按下
- {
- while(ChangeKey==0);//等待被彈起
- LCD_Clear();//清屏幕
- ModeFlag=1;//進(jìn)入注冊(cè)卡模式
- }
- if(Key==0)//切換按鍵被按下
- {
- while(Key==0);//等待被彈起
- write_string(1,0,"CODE Mode:");//第一行顯示"Code Mode:"
- write_string(2,0," ");
- In_Code=1;//進(jìn)入密碼模式
- }
- }//end for while(ModeFlag==0)
- while(ModeFlag==1)//卡注冊(cè)模式
- {
- write_string(1,0,"Register Mode:");//第一行顯示"Register Mode:"
- ReturnValue=0;//ReturnValue重置0
- ReturnValue=CardReg();//卡注冊(cè)
- if(ReturnValue==6)//ReturnValue==6卡注冊(cè)成功
- {
- 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;//進(jìn)入注銷卡模式
- }
- if(Key==0)//切換按鍵被按下
- {
- while(Key==0);//等待被彈起
- write_string(1,0,"CODE Mode:");//第一行顯示"Code Mode:"
- write_string(2,0," ");
- In_Code=1;//進(jìn)入密碼模式
- }
- }//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;//進(jìn)入注銷卡模式
-
- }
- }//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();
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
刷卡.zip
(192.82 KB, 下載次數(shù): 85)
2018-6-13 17:25 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|