欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 電子密碼鎖 頭文件從<REG51.H>改成<STC15F2K60S2.H>,程序怎么改 [打印本頁]

作者: ABCD12345333    時間: 2019-5-3 17:54
標題: 電子密碼鎖 頭文件從<REG51.H>改成<STC15F2K60S2.H>,程序怎么改
#include <REGX51.H>#include "LCD1602.H"#include "KeyBoard4x4.h"#include "EEPROM.h"#include "Timer0.h"sbit      RELAY     = P3^7;                                                     //--- 定義的繼電器引腳 ---struct STRUCT_TIMER LockKeyBoardTimer,RelayTimer;//========================================================================================================//--- 定義與密碼相關結構體變量 ---struct STRUCT_PASSWORD{  unsigned char Status;  unsigned char ErrCnt;  unsigned char Pointer;  unsigned char Buffer[6];  unsigned char OldBuffer[6];  unsigned char NewBuffer[6];};struct STRUCT_PASSWORD Password;//========================================================================================================//--- main()主程序區 ---void main(void){  unsigned char i,KeyValue;    LCD_Init();                                                                   // --- 初始化1602液晶模塊 ---  LCD_PutChar(0,0,'A');  LCD_PutString(0,0," Input Password ");  T0_Init();  EA = 1;    for(i=0;i<sizeof(Password.OldBuffer);i++)    Password.OldBuffer[i] = IAPReadByte(i);  while(1)    {      if(0 == RELAY)        {          if(0 == RelayTimer.Enable)RELAY = 1;                                  //--- 繼電器動作時間到,則恢復原位 ---        }            if(Password.ErrCnt > 2)                                                   //--- 密碼輸錯三次,鎖鍵盤 ---        {          if(0 == LockKeyBoardTimer.Enable)Password.ErrCnt = 0;                 //--- 鎖鍵盤時間到,解鎖 ---        }      else        {          KeyValue = KeyBoard4x4_Scan();          if(KeyValue < 16)                                                     //--- 識別出有效的按鍵 ---            {              if(KeyValue < 10)                                                 //--- 當前按鍵是數字“0~9”鍵 ---                {                  if(Password.Pointer < sizeof(Password.Buffer))                //--- 若輸入的密碼少于指定的長度 ---                    {                      LCD_PutChar(1,Password.Pointer + 5,'*');                  //--- 顯示“*” ---                      if(2 == Password.Status)                        Password.NewBuffer[Password.Pointer] = KeyValue;                      Password.Buffer[Password.Pointer ++] = KeyValue;          //--- 裝入密碼輸入緩沖區 ---                    }                }              else if(11 == KeyValue)                                           //--- 當前按鍵是“B”鍵,用于修改密碼 ---                {                  LCD_PutString(0,0,"  Old Password  ");                        //--- 顯示輸入舊密碼 ---                  LCD_PutString(1,0,"                ");                        //--- 清顯示區域 ---                  Password.Pointer = 0;                  Password.Status = 1;                }              else if(14 == KeyValue)                                           //--- 當前按鍵是“*”鍵 ---                {                  LCD_PutString(1,0,"                ");                        //--- 清顯示區域 ---                  Password.Pointer = 0;                }                                                               //--- 清密碼輸入計數變量 ---              else if(15 == KeyValue)                                           //--- 當前按鍵是“#”鍵 ---               {                  switch(Password.Status)                    {                      case 0:                                                   //--- 密碼輸入狀態 ---                      case 1:                        if(Password.Pointer < sizeof(Password.Buffer))          //--- 輸入的密碼長度不夠 ---                          {                            LCD_PutString(1,0," Password Error ");              //--- 顯示密碼錯誤信息 ---                            if(++ Password.ErrCnt > 2)                          //--- 若超過3次 ---                              {                                LockKeyBoardTimer.Interval = 60000;             //--- 置鎖鍵盤時間為1分鐘 ---                                LockKeyBoardTimer.Enable = 1;                              }                          }                        else                          {                            for(i=0;i<sizeof(Password.Buffer);i++)              //--- 密碼比較 ---                              {                               if(Password.Buffer[i] != Password.OldBuffer[i])  //--- 若不正確,則退出下面的比較 ---                                 {                                   i = sizeof(Password.Buffer) + 2;                                 }                              }                            if(i > sizeof(Password.Buffer))                              {                               LCD_PutString(1,0," Password Error ");           //--- 顯示密碼錯誤信息 ---                               if(++ Password.ErrCnt > 2)                       //--- 若超過3次 ---                                 {                                   LockKeyBoardTimer.Interval = 60000;          //--- 置鎖鍵盤時間為1分鐘 ---                                   LockKeyBoardTimer.Enable = 1;                                 }                              }                            else                              {                                LCD_PutString(1,0," Password Right ");          //--- 顯示密碼輸入正確信息 ---                                Password.ErrCnt = 0;                                if(0 == Password.Status)RELAY = 0;              //--- 發出打開動作 ---                                else if(1 == Password.Status)                                  {                                    LCD_PutString(0,0,"  New Password  ");      //--- 顯示輸入舊密碼 ---                                    LCD_PutString(1,0,"                ");      //--- 清顯示區域 ---                                    Password.Pointer = 0;                                    Password.Status = 2;                                  }                                if(0 == Password.Status)                                  {                                    RelayTimer.Interval = 60000;                                    RelayTimer.Enable = 1;                                  }                              }                          }                        break;                      case 2:                                                   //--- 輸入新密碼狀態 ---                        LCD_PutString(0,0,"  Input Again   ");                  //--- 顯示輸入舊密碼 ---                        LCD_PutString(1,0,"                ");                  //--- 清顯示區域 ---                        Password.Pointer = 0;                        Password.Status = 3;                        break;                      case 3:                                                   //--- 比較兩次輸入的密碼正確性 ---                        for(i=0;i<sizeof(Password.Buffer);i++)                  //--- 密碼比較 ---                          {                           if(Password.Buffer[i] != Password.NewBuffer[i])      //--- 若不正確,則退出下面的比較 ---                             {                               i = sizeof(Password.Buffer) + 2;                             }                          }                        if(i > sizeof(Password.Buffer))                          {                            LCD_PutString(1,0," Compare Error  ");              //--- 顯示密碼比較錯誤信息 ---                            Password.Status = 0;                                //--- 回到原始狀態 ---                          }                        else                          {                            LCD_PutString(1,0," Compare Right  ");              //--- 顯示密碼比較正確信息 ---                            for(i=0;i<sizeof(Password.NewBuffer);i++)           //--- 將新密碼寫入EEPROM ---                              IAPProgramByte(i,Password.NewBuffer[i]);                            for(i=0;i<sizeof(Password.OldBuffer);i++)                              Password.OldBuffer[i] = IAPReadByte(i);                            DelaymS(250);                            LCD_PutString(0,0," Input Password ");                            LCD_PutString(1,0,"                ");              //--- 清顯示區域 ---                            Password.Pointer = 0;                            Password.Status = 0;                                //--- 回到原始狀態 ---                          }                        break;                    }               }            }        }    }}
作者: wc86110    時間: 2019-5-3 23:54
樓主先編輯排版后再上傳,這樣雜亂無章的沒那個耐心看
作者: angmall    時間: 2019-5-4 15:50
你這個程序不完整,
這個程序
#include "LCD1602.H"
#include "KeyBoard4x4.h"
#include "EEPROM.h"
#include "Timer0.h"
發上來
作者: 1255230    時間: 2019-5-6 10:31
IAP15F2k60S2單片機的頭文件能夠替代51單片機的頭文件,功能比51單片機強,速度比51單片機快大概12倍,所以只要重新修正延時程序就行了




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1