亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ex6-1.c

?? 密碼鎖
?? C
字號:
/*
標題:范例 6-1
版本:1.0
Target:89S51
程序描述: 這個范例說明如何使用8051, LCD顯示器和4ⅹ4的小鍵盤,制作一個密碼鎖。PORT 1 連接到LCD顯示器的數據線。PORT 3 的P3.3,P3.4和P3.5分別連接到LCD顯示器的控制線。PORT 2連接到4ⅹ4的小鍵盤,可以輸入密碼。執行修改密碼或是時間的程序時,首先讓LCD顯示器顯示出時間和日期。
 當用戶按下4ⅹ4小鍵盤的按鈕 A 時,可以輸入密碼。如果密碼正確時,就會讓 P3.6的 LED 閃爍,表示打開鎖。如果密碼不正確時,LCD顯示器就會顯示出
 "PASSWORD WRONG"。
當用戶按下4ⅹ4小鍵盤的按鈕 B時,可以修改時間。
 當用戶按下4ⅹ4小鍵盤的按鈕 C時,可以修改密碼。*/
/* ***************************************************** */
#include <REGX51.H>
#include <lcd.h>

#define   XTAL               11059200

#define   TIMER0_COUNT       0xD8F0  /* 10000h-(12,000,000/(12*100)) *
/
                                     /* 數字時鐘的工作模式 */
#define DEFAULT              0
#define UNLOCK               1
#define INPUT_PASSWORD       10
#define SET_TIME             11
#define SET_PASSWORD         12
#define TRUE                 1
#define FALSE                0
#define putchar              write_LCD_data
#define LOCK                 P3_7
//
typedef struct { 
          char    hour;
          char    minute;
          char    second;
} time;
typedef struct { 
          char    year;
          char    month;
          char    day;
} date;
time now={23,59,0},display;
date today={04,12,15},tmpday;
static unsigned timer0_tick=100,mode=0,operation;
char code dayofmonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
char code 
weekday[7][4]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
char code int2char[]="0123456789ABCDEF";
unsigned char  password[4]={1,2,3,4};
unsigned char  code always[4]={1,2,2,7};
char code prompt[]="Input Password:";
char code old_password[]="Old Password:";
char code new_password[]="New Password:";
char code confirm[]="Confirm Again:";
unsigned char   guess[4]={0,0,0,0}; 
unsigned char   temp[4]={0,0,0,0}; 
unsigned char   txOK,c,unlock=0,address;

char            gotkey();
unsigned char   read_byte(int);
void            write_byte(int,unsigned char);
void            write_LCD_data(unsigned);
void display_time(void)
{
     gotoxy(1,0);
     display_LCD_number(display.hour);
     display_LCD_string(":");
     display_LCD_number(display.minute);
     display_LCD_string(":");
     display_LCD_number(display.second);
}
void display_date()
{
    char i,days=4;
      gotoxy(2,2);
      display_LCD_number(today.year);
      display_LCD_string("/");
      display_LCD_number(today.month);
      display_LCD_string("/");
      display_LCD_number(today.day);
      display_LCD_string(" ");
      if(today.month > 1)
           for(i=0;i<=today.month-2;i++)
               days+=(dayofmonth[i]%7);
      if( today.year !=0 ) days+=((today.year-1)/4)+today.year+1;
      if (today.year%4==0 && today.month >2) days++;
      days=(days+today.day) % 7;
      display_LCD_string(&weekday[days][0]);
}
int getdigit(unsigned char x,unsigned char y)
{
      char    keys;
      do {
              gotoxy(x,y);
              putchar('_');
              keys=gotkey();
              gotoxy(x,y);
              putchar(int2char[keys]);
      } while(keys>9);
      return(keys);
}
int getsecret(unsigned char x,unsigned char y)
{
      char  keys;
      do {
            gotoxy(x,y);
            putchar('_');
            keys=gotkey();
            gotoxy(x,y);
            putchar('*');
      } while(keys>9);
      return(keys);
}
void get_password()
{
      char i;
      for(i=0;i<4;i++)
      guess[i]=getsecret(2,i);
}
int check_password()
{
      char i;
      i=0;
      while ((guess[i]==always[i]) && (i < 4)) i++;
      if (i==4)return(TRUE);
      while ((guess[i]==password[i]) && (i < 4)) i++;
      if (i==4)return(TRUE);
      else return(FALSE);
}
int input_new_password()
{
      unsigned char i,j;
      clear_LCD();
      gotoxy(1,0);
      display_LCD_string(new_password);
      for(i=0;i<4;i++)
      temp[i]=getsecret(2,i);
      clear_LCD();
      gotoxy(1,0);
      display_LCD_string(confirm);
      for(i=0;i<4;i++)
      guess[i]=getsecret(2,i); 
      i=0;
      while ((guess[i]==temp[i]) && (i < 4)) i++;
      if (i==4) {
           for(j=0;j<4;j++) {
           password[j]=temp[j];
               write_byte(j,password[j] );
           }
           return(TRUE);
      }
      else return(FALSE);
}
int gettime()
{
      char temp;
      do {
      while((temp=getdigit(1,0))>2);     //時的十位數不能大于2
          temp=temp*10+getdigit(1,1);
          if (temp > 23) display_time();
      } while (temp > 23);
      display.hour=temp;
      while((temp=getdigit(1,3))>5);
      display.minute=temp*10+getdigit(1,4);
      return(TRUE);
}
char monthday(char year,char month)
{
     if(month==2 && year%4==0)       //潤年的2月有29天
     return(29);
     else
     return(dayofmonth[month-1]);   //非閏年時的該月份天數
}
int getdate()
{
    char temp,days;
    temp=getdigit(2,2);
    tmpday.year=temp*10+getdigit(2,3);
    do {
    while((temp=getdigit(2,5))>1);     //月的十位數不能大于1
           temp=temp*10+getdigit(2,6);
           if (temp > 12) display_date(); //月份的數字不能大于12
    } while (temp > 12);
    tmpday.month=temp;
    do {
    while((temp=getdigit(2,8))>3);     //日的十位數不能大于3
           temp=temp*10+getdigit(2,9);
           days=monthday(tmpday.year,tmpday.month);
    if(temp > days || temp==0) display_date();
//如果輸入的日期大于該月份的日期就重新輸入
        } while (temp > days || temp==0); 
   tmpday.day=temp;
   return(TRUE);
}
static void timer0_isr(void) interrupt  TF0_VECTOR using 1
{
       TR0=0;
       TL0=(TIMER0_COUNT & 0x00FF);
       TH0=(TIMER0_COUNT >> 8);
       TR0=1;
       if(--timer0_tick) return;
       timer0_tick=100;
       if(unlock==1) P3_5=!P3_5;
       now.second++;                         //秒加1
       if (now.second==60) {                 //如果秒等于60
             now.second=0;                   //秒恢復為0
             now.minute++;                   //分加1
             if (now.minute==60) {           //如果分等于60
                   now.minute=0;             //分恢復為0
                   now.hour++;               //時加1
                   if (now.hour==24) {       //如果時等于24
                         now.hour=0;         //時恢復為0
                         today.day++;        //日加1
//如果日超過當月最大日數,就變成1
           if (today.day>monthday(today.year,today.month)) {
                      today.day=1;
                      today.month++;          //月加1
                      if(today.month==13) {   //如果月等于13
                         today.month=1;       //月恢復為1
                         today.year++;        //年加1
                      }
                }
                if(operation==DEFAULT)display_date();
            }
       }
    }
    if (operation==SET_TIME ) return;
    display=now;
    if(operation==DEFAULT) display_time();
}
static void timer0_initialize(void)
{
  EA=0;   
  TR0=0;
  TMOD &= 0XF0;
  TMOD |=0x01;
  TL0=(TIMER0_COUNT & 0x00FF);
  TH0=(TIMER0_COUNT >> 8);
  PT0=0;
  ET0=1;
  TR0=1;
  EA=1;
}
void main (void)  {
     char keys;
     int i;

     LOCK=1;
     txOK=1;
     init_LCD();
     clear_LCD();
     gotoxy(2,0);
     display_LCD_string("20");
     display=now;
     display_time();
     display_date();
     EA=1;
     timer0_initialize();
     IT0=1;
     EX0=1;
     read_byte(0);
     gotoxy(1,8);
     for(i=0;i<4;i++)
             password[i]=read_byte(i);
     do {
     keys=gotkey();
          switch (keys) {
               case SET_TIME :
                    operation=SET_TIME;
                    if ( gettime()) now=display;
                    if ( getdate()) {
                         today=tmpday;
                         display_date();
                    }
                    operation=0;
                    break;
               case INPUT_PASSWORD :
                    clear_LCD();
                    gotoxy(1,0);
                    display_LCD_string(prompt);
                    operation=INPUT_PASSWORD;
                    get_password();
                    clear_LCD();
                    gotoxy(1,10);
                    if ( check_password() )
                    {
                          LOCK=0;
                          display_LCD_string("Right");
                    }
                    else
                          display_LCD_string("Wrong");
                    operation=0;
                    gotoxy(2,0);
                    display_LCD_string("20");
                    display_time();
                    display_date();
                    break;
               case SET_PASSWORD :
                    clear_LCD();
                    gotoxy(1,0);
                    display_LCD_string(old_password);
                    operation=SET_PASSWORD;
                    get_password();
                    if ( check_password() )
                           if( input_new_password() ){
                                 clear_LCD();
                                 gotoxy(1,10);
                                 display_LCD_string("OK");
                           }
                           else {
                                clear_LCD();
                                gotoxy(1,10);
                                display_LCD_string("Fail");
                           }
                     else clear_LCD();
                     operation=0;
                     gotoxy(2,0);
                     display_LCD_string("20");
                     display_time();
                     display_date();
                     break;
            }
     } while(1);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利一区二区三区在线视频| 午夜精品福利视频网站| 久久精品视频免费观看| 欧美激情艳妇裸体舞| 亚洲一区二区三区四区五区黄| 一二三区精品视频| 蜜臀久久久99精品久久久久久| 久久99九九99精品| 国产精品99久久久久| 在线观看一区不卡| 精品国产一区二区在线观看| 国产精品久久久一本精品 | 精品在线你懂的| 国产精品456露脸| 在线观看日韩国产| 国产日韩欧美一区二区三区乱码 | 亚洲人成网站影音先锋播放| 九九精品视频在线看| 欧美一区二区三区在线观看视频| 亚洲欧美一区二区三区久本道91 | 欧美一二三区在线| 1024成人网| 成人免费毛片a| 久久久精品天堂| 精品一区免费av| 日韩欧美成人激情| 国产又粗又猛又爽又黄91精品| 在线播放日韩导航| 日韩主播视频在线| 欧美日韩国产在线观看| 亚洲成av人影院| 5566中文字幕一区二区电影| 丝袜美腿高跟呻吟高潮一区| 欧美日韩国产首页| 久久国产福利国产秒拍| 久久久久久久综合色一本| 国内久久精品视频| 亚洲欧洲国产日韩| 欧美色倩网站大全免费| 视频在线观看91| 久久网站热最新地址| 国产69精品久久久久毛片| 亚洲欧洲av一区二区三区久久| 97久久久精品综合88久久| 亚洲天堂久久久久久久| 欧美在线看片a免费观看| 久久福利资源站| 欧美激情中文不卡| 欧美午夜精品一区二区三区| 美女视频黄 久久| 国产精品免费丝袜| 日韩一区二区精品在线观看| 国产jizzjizz一区二区| 亚洲午夜av在线| 国产精品免费看片| 欧美一级精品在线| 欧美日韩久久一区| 成人国产在线观看| 国产一区二区视频在线| 亚洲黄色av一区| 欧美国产视频在线| 国产精品人成在线观看免费| 在线不卡a资源高清| 91网站最新地址| 成人一区二区三区在线观看| 青青草97国产精品免费观看| 亚洲综合在线第一页| 亚洲欧美在线另类| 国产精品高潮呻吟| 日本一区二区三区四区在线视频| 91精品国产综合久久精品app| 91免费在线播放| 97se亚洲国产综合在线| 成人一区二区三区中文字幕| 成人午夜免费av| 国产成a人无v码亚洲福利| 国产一区在线观看麻豆| 国产精品亚洲一区二区三区在线| 国精品**一区二区三区在线蜜桃| 美女视频黄久久| 国产传媒欧美日韩成人| 国产盗摄女厕一区二区三区| 成人午夜精品在线| 97久久人人超碰| 欧美性大战久久久| 欧美成人三级在线| 国产精品嫩草影院av蜜臀| 亚洲图片激情小说| 日韩一区二区三区精品视频| 中文字幕制服丝袜成人av| 欧美精彩视频一区二区三区| 久久久久久麻豆| 中文字幕av免费专区久久| 亚洲男帅同性gay1069| 亚洲影院免费观看| 久久国产剧场电影| 91蝌蚪国产九色| 精品国产一区二区三区久久影院| 久久九九影视网| 亚洲小说欧美激情另类| 国产精品亚洲视频| 欧美二区三区91| 亚洲精品伦理在线| 国产白丝网站精品污在线入口| 欧美性感一区二区三区| 亚洲欧洲精品一区二区三区 | 色婷婷综合五月| 国产视频一区二区三区在线观看| 午夜日韩在线电影| 成人aaaa免费全部观看| 精品粉嫩超白一线天av| 午夜精品久久久久久久99樱桃| 国产精品12区| 国产亚洲综合性久久久影院| 另类专区欧美蜜桃臀第一页| 色吧成人激情小说| 亚洲欧美激情在线| 一本久道中文字幕精品亚洲嫩| 日本一区二区三区在线不卡| 国产不卡高清在线观看视频| 国产午夜精品福利| 国产乱对白刺激视频不卡| 欧美精品一区二区三区蜜桃| 九色综合狠狠综合久久| 国产亚洲综合在线| 91在线视频网址| 一区二区三区在线观看视频| 91官网在线观看| 亚洲国产va精品久久久不卡综合| 在线免费观看视频一区| 午夜免费欧美电影| 欧美mv和日韩mv的网站| 成人h动漫精品一区二区| 精品乱人伦小说| 国产一区二区三区在线观看精品| 日韩美女主播在线视频一区二区三区| 夜夜精品视频一区二区 | 中文字幕欧美日本乱码一线二线| 不卡电影一区二区三区| 亚洲自拍偷拍欧美| 久久综合久色欧美综合狠狠| 成人美女视频在线看| 亚洲电影在线免费观看| 国产日产欧产精品推荐色| 欧美日韩二区三区| 国产呦萝稀缺另类资源| 亚洲成国产人片在线观看| 久久奇米777| 日韩精品一二三区| 欧美专区在线观看一区| 久久国产欧美日韩精品| 亚洲一区中文日韩| 国产精品免费人成网站| 日韩欧美在线123| 欧美丰满嫩嫩电影| 欧美三级视频在线| 一本大道久久a久久精品综合| 久久99久久99小草精品免视看| 亚洲图片另类小说| 国产女人水真多18毛片18精品视频| 欧美日韩中文另类| 在线观看亚洲成人| 一本久久精品一区二区| av中文字幕一区| 91麻豆精品国产91久久久久久 | www.欧美日韩国产在线| 国产一区欧美二区| 91久久精品日日躁夜夜躁欧美| 国产成人精品网址| 99国产精品久久久久久久久久久| 国产黄人亚洲片| 波多野结衣中文一区| 91在线porny国产在线看| 91网站视频在线观看| 欧美性猛片aaaaaaa做受| 欧美无乱码久久久免费午夜一区| 欧美日韩成人一区二区| 日韩欧美在线不卡| 国产精品天美传媒沈樵| 亚洲一区影音先锋| 蜜桃视频在线观看一区| 国产99久久久久| 欧美综合一区二区| 日韩欧美一卡二卡| 欧美极品另类videosde| 亚洲aⅴ怡春院| 国产一区美女在线| 欧美性感一类影片在线播放| 日韩一级黄色片| 亚洲人吸女人奶水| 日韩av电影免费观看高清完整版| 激情五月婷婷综合网| 色屁屁一区二区| 久久综合九色综合97婷婷 | 91在线视频网址| 日本一区二区三区电影| 亚欧色一区w666天堂| 91免费观看国产| 欧美激情资源网| 国内精品写真在线观看|