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

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

?? ex6-1.c

?? 在Keil環境下
?? 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一区二区三区免费野_久草精品视频
免费观看在线色综合| 亚洲成人av资源| 日韩精品中文字幕一区二区三区| 日本道免费精品一区二区三区| 成人手机电影网| 国产精品资源站在线| 国模一区二区三区白浆| 国产一区亚洲一区| 国产一本一道久久香蕉| 国产成人在线影院| 国产精品自拍毛片| 99久久综合国产精品| 99在线精品视频| 91成人网在线| 91精品黄色片免费大全| 日韩欧美区一区二| 国产亚洲成aⅴ人片在线观看| 久久久精品日韩欧美| 国产人妖乱国产精品人妖| 国产精品欧美极品| 一区二区三区四区不卡在线| 亚洲午夜视频在线观看| 奇米色一区二区| 国产高清久久久| 91免费版pro下载短视频| 欧美亚洲日本国产| 亚洲精品一区二区精华| 中文字幕亚洲一区二区va在线| 亚洲欧美偷拍另类a∨色屁股| 亚洲高清免费视频| 国产成人综合亚洲网站| 99国产精品久久| 3d动漫精品啪啪1区2区免费| 久久亚洲一区二区三区四区| 中文字幕欧美一区| 日产国产高清一区二区三区| 高清在线成人网| 欧美日韩国产另类一区| 久久久99精品免费观看| 亚洲精品国产无天堂网2021 | 国产精品久久久久久久久果冻传媒| 中文字幕中文字幕在线一区| 五月综合激情网| www.综合网.com| 日韩午夜av一区| 一区二区三区中文字幕电影| 免费xxxx性欧美18vr| 91色|porny| 久久在线免费观看| 天天爽夜夜爽夜夜爽精品视频| 国产精品亚洲а∨天堂免在线| 欧美日韩亚洲综合一区| 亚洲国产精品精华液2区45| 午夜精品免费在线| 不卡av在线网| 国产亚洲福利社区一区| 美女视频网站黄色亚洲| 欧美影院精品一区| 综合久久久久久| 国产成都精品91一区二区三| 欧美一区二区免费视频| 综合在线观看色| 国产91在线|亚洲| 日韩欧美专区在线| 日韩电影免费在线看| 欧美主播一区二区三区| 欧美国产丝袜视频| 韩国v欧美v亚洲v日本v| 日韩欧美亚洲国产另类| 日本91福利区| 7777精品伊人久久久大香线蕉超级流畅| 亚洲欧美自拍偷拍色图| 99精品欧美一区| 国产精品久久看| 北条麻妃国产九九精品视频| 国产欧美精品在线观看| 国产高清在线精品| 亚洲国产精华液网站w| 国产很黄免费观看久久| 久久久电影一区二区三区| 国产福利精品一区| 国产精品日韩精品欧美在线| 国产精品一区二区免费不卡 | 99久久er热在这里只有精品66| 久久久久久毛片| 岛国一区二区在线观看| 国产精品青草综合久久久久99| 成人精品一区二区三区四区 | 欧洲另类一二三四区| 亚洲午夜三级在线| 欧美一二三四区在线| 日本欧美肥老太交大片| 欧美精品一区二区三区在线| 国产成人亚洲综合a∨婷婷 | 亚洲乱码中文字幕| 在线精品视频小说1| 日韩影院免费视频| 久久奇米777| 99久久精品免费看| 亚洲妇女屁股眼交7| 日韩欧美专区在线| www.亚洲激情.com| 亚洲不卡一区二区三区| 日韩一级片在线观看| 国产一区在线视频| 樱花草国产18久久久久| 日韩午夜精品电影| www..com久久爱| 性感美女极品91精品| 久久免费国产精品| 在线视频国内一区二区| 精品无人区卡一卡二卡三乱码免费卡| 国产欧美日韩激情| 欧美日韩成人在线| 国产99久久久国产精品潘金| 亚洲狠狠丁香婷婷综合久久久| 日韩无一区二区| 色噜噜久久综合| 国产精品一区久久久久| 亚洲午夜精品网| 国产精品色一区二区三区| 91精品婷婷国产综合久久| 成人免费毛片嘿嘿连载视频| 青青草原综合久久大伊人精品优势| 国产精品久久久久aaaa| 日韩欧美一二三| 欧美日韩成人综合在线一区二区| 风间由美中文字幕在线看视频国产欧美| 亚洲在线中文字幕| 综合色中文字幕| 久久久久国产精品厨房| 91麻豆精品91久久久久久清纯| 91美女在线看| 国产一区二区精品在线观看| 亚洲国产成人tv| 中文字幕一区二区不卡| 久久精品一区蜜桃臀影院| 欧美一区二区精品在线| 亚洲精品一区二区三区蜜桃下载| 久久久久久影视| 成人综合在线视频| 精品少妇一区二区| 日韩美女天天操| 蜜桃视频在线观看一区二区| 欧美日韩激情在线| 一区二区三区精密机械公司| 在线精品视频小说1| 欧美一区午夜精品| 一区二区日韩av| 久久精工是国产品牌吗| 91精品一区二区三区在线观看| 欧美成人女星排行榜| 国产午夜亚洲精品午夜鲁丝片| 最好看的中文字幕久久| 亚洲va韩国va欧美va精品| 精品一区二区三区视频在线观看| 成人av在线资源网| 欧美美女bb生活片| 国产欧美精品一区二区色综合朱莉| 亚洲色图清纯唯美| 裸体一区二区三区| 色成年激情久久综合| 久久久天堂av| 丝袜美腿亚洲一区| 91毛片在线观看| 亚洲精品在线免费观看视频| 亚洲摸摸操操av| 国内精品国产三级国产a久久| 色综合欧美在线视频区| 久久综合九色欧美综合狠狠| 亚洲精品中文字幕在线观看| 国内成人精品2018免费看| 欧美吞精做爰啪啪高潮| 欧美激情一区二区三区| 蜜臀a∨国产成人精品| 欧美最猛性xxxxx直播| 国产精品天美传媒沈樵| 美国十次综合导航| 欧美日韩二区三区| 亚洲欧美日韩系列| 成人综合激情网| 精品国内二区三区| 视频一区在线播放| 欧美在线不卡一区| 亚洲同性同志一二三专区| 国产黑丝在线一区二区三区| 欧美一区二视频| 午夜av一区二区三区| 欧美在线视频全部完| 亚洲乱码国产乱码精品精小说| 国产不卡免费视频| 久久免费午夜影院| 韩国成人精品a∨在线观看| 日韩一区二区免费电影| 欧美aaa在线| 日韩欧美国产综合一区| 日韩电影免费在线看| 欧美日本一区二区三区| 亚洲图片欧美视频| 欧美日韩国产免费|