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

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

?? 程序.c

?? 基于AT89S52單片機密碼鎖的源程序
?? C
字號:
#include<AT89X52.H>

#define uchar unsigned char

uchar digbit;                 // 字位
uchar wordbuf[6 ];            // 字型緩沖碼
uchar t1count;                // 定時器T0由50ms累積到5 s所用的計數器

unsigned char second;          // 秒
unsigned char minute;            // 分
unsigned char hour;             //時
unsigned int tcnt;
uchar count;                  // 密碼位記數
uchar pw[6];                  // 初始密碼存儲區
uchar pwbuf[6];               // 輸入密碼存儲區
uchar   wrong;                //錯誤次數計數器
bit cancelflag;                 //  取消鍵標志位
bit enterflag;                  // 確認鍵標志位
bit zhflag;                     // 功能鍵轉換標志位
bit pwflag;                    //  密碼正確標志位
bit showflag;                 //  數碼管顯示標志位
sbit green=P2^2;                
sbit red=P2^1;
sbit spk=P2^0;
void   display();
bit   pwcmp ();
/* 鍵盤消抖延時函數  10mus   */
void  delay ()
 {
   uchar i,j ;
   for (i=200;i>0;i--)
              for (j=50;j>0;j--);
 }
  
/* 鍵盤掃描程序  */
  uchar keyscan (void)
   {
      uchar scancode,tmpcode;
       P0= 0xf0;                           // 發全0行掃描
      if ((P0&0xf0)!= 0xf0)                 // 若有鍵按下
       {	 
			
	        delay();                           //  消除抖動 10ms
     	if ((P0&0xf0)!= 0xf0)
	  	{    
	   		 scancode=0xfe;
   			 while ((scancode&0x10)!=0)        // 逐行掃描
    			{
     			 P0 = scancode;                 // 輸出行掃碼
     			 if ((P0&0xf0)!=0xf0)            // 本行有鍵按下
       				{
                     tmpcode=(P0&0xf0)|0x0f ;
					 while ((P0&0xf0)!=0xf0) ;
					 
                     return ((~scancode)+(~tmpcode));      // 按鍵行列碼
                    }
                 else scancode=( scancode<<1)|0x01 ;   // 行掃碼左移一位
                 }
         }
       }
      return  (0);
    }


void time1_int(void) interrupt 3 using 0
{     
   
	tcnt++;                    //定時器中斷次數加1,250US
    if(tcnt==4000)
   {
  		tcnt=0;
    	second++;
    	if(second==60)           // 秒進位
    	{
			second=0;
        	minute++;
        	if(minute==60)          //分進位
        	{ 
        		minute=0;
            	hour++;
            	if(hour==24)         // 時進位
            	{
           		 	hour=0;
            	}
       		}
   		}

	}                             //if(tcnt==4000) END		
}
void time0_int(void)  interrupt 1  // 50ms
{
 
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  if  (t1count<100)                 //  5秒
   {
   t1count ++;
   } 
  else
   { 
     TR0=0;                 //  關T0
     count=0;              //密碼計數器清零
     t1count=0;            // 5秒計數器清零
	 red=1;
	 green=1;
	 cancelflag=0;
     showflag=1;        // 打開顯示
     digbit=0xfe;         // 第一位字型碼
	 /*  初始顯示  */
      wordbuf[0]=0x0e;
      wordbuf[1]=0x0e;
      wordbuf[2]=0x0e;
      wordbuf[3]=0x0e;
      wordbuf[4]=0x0e;
      wordbuf[5]=0x0e;
    }
}

/* 共陽極數碼管0~9,A~B字型代碼  */
uchar  getcode (uchar i )
{
  uchar  p;
  switch  (i)
   {
    case  0:  p=0xc0;  break;  // 0 
    case  1:  p=0xf9;  break;    // 1
    case  2:  p=0xa4;  break;    // 2
    case  3:  p=0xb0;  break;    // 3
    case  4:  p=0x99;  break;    // 4
    case  5:  p=0x92;  break;    // 5
    case  6:  p=0x82;  break;    // 6
    case  7:  p=0xf8;  break;    // 7
    case  8:  p=0x80;  break;    // 8
	case  9:  p=0x90;  break;      //  9
	case  10:  p=0x88;  break;      //  10
	case  11:  p=0x83;  break;     // 11
	case  12:   p=0xc6;   break;  // 12
	case  13:   p=0xa1;   break;  // 13
	case  14:   p=0x86;   break;  // 14
	case  15:   p=0x8e;   break;  // 15
    default:            break;
   }
   return  (p) ;
}

/* 顯示函數  */
void   display(void)
 {
  uchar  i;
  switch (digbit)
    {
     case  0xfe:    i=0;   break;           //第1位字型碼
     case  0xfd:    i=1;   break;           //第2位字型碼
     case  0xfb:    i=2;   break;           //第3位字型碼
     case  0xf7:    i=3;   break;           //第4位字型碼
     case  0xef:    i=4;   break;           //第5位字型碼
     case  0xdf:    i=5;   break;           //第6位字型碼
     default:          break;
     }    
  P1 = getcode(wordbuf[i]);       // 送字型碼
  P3 = digbit  ;                 // 送字位碼
  if (digbit>0xdf)              // 共六位
         digbit =(digbit<<1)|0x01;            // 左移一位
  else 
         digbit = 0xfe;
}

/* 密碼比較函數 */
bit   pwcmp (void)
{
      bit  flag ;
      uchar  i;
      for (i=0;i<6;i++)
	      {
		      if (pw[i]==pwbuf[i])
			         flag=1;
			  else  
			      {
				    flag=0;
					i=6;
				   }
			}

     return (flag);            
   }

      
     /* 報警   */
void  sound (void)
{ 
  unsigned int i,j,k;
  unsigned int count1,sound1,tone;
  count1=60;
  sound1=40;
  tone=110;
  for (k=0;k<count1;k++)
  {
     P3=0xff;
   red = ~ red;
        for (i = 0; i<sound1;i++)
         {
         spk= ~ spk;
         for (j=0;j<tone;j++);
         }
   delay();
 }
}
void  sound1 (void)
{ 
  unsigned int i,k,j;
  unsigned int count1,sound1,tone;
  count1=30;
  sound1=20;
  tone=70;
  for (k=0;k<count1;k++)
       {
            P3=0xff;
	     green = ~ green;
       for (i = 0; i<sound1;i++)
         {
            spk= ~ spk;
		 for (j=0;j<tone;j++);
         }
     delay();
    }
}
void  sound2 (void)
{ 
  unsigned int i,j,k;
  unsigned int count1,sound1,tone;
  count1=40;
  sound1=30;
  tone=90;
  for (k=0;k<count1;k++)
      {
	      P3=0xff;
         red = ~ red;
        for (i = 0; i<sound1;i++)
                 for (j=0;j<tone;j++);

   delay();
   }
}

    
/*   主程序  */
void  main()
{
  uchar  j,key;
  P3 = 0xff;              // 關閉數碼管顯示
  TMOD=0x21;           //  工作方式
 
   TH0=(65536-50000)/256;            //  5毫秒
   TL0=(65536-50000)%256;
   TR0=0;
   ET0=1;

   TH1=0X06;               // 250us
   TL1=0X06;
   TR1=1;
   ET1=1; 
   
   EA=1;            //   開中斷
  count=0;               //   初始沒有密碼輸入,計數器為0
  enterflag=0;             //  沒有確定鍵按下
  cancelflag=0;
  pwflag=0;               //   密碼標志記為0
  green =1;
  spk=1;
  wrong=0;
  red =1;            //  紅燈、綠燈不亮
  /*    設定初始密碼   */
  pw[0]=1;
  pw[1]=2;
  pw[2]=3;
  pw[3]=4;
  pw[4]=5;
  pw[5]=6;
  /*    設定時間   */
  second=50;
  minute=58;
  hour=12;
  showflag =1 ;               // 打開數碼管顯示
/*   剛加電時顯示 8888888  */
      	wordbuf[0]=0x0e;
        wordbuf[1]=0x0e;
   		wordbuf[2]=0x0e;
   		wordbuf[3]=0x0e;
   		wordbuf[4]=0x0e;
   		wordbuf[5]=0x0e;	 
	  digbit = 0xfe;              //   從第一位開始動態掃描
	  
  while (1)
      {
   	  display();
      key = keyscan();          //   調用鍵盤掃描函數
      switch (key)
             {
              
             case  0x11:            //   第1行第1列,數字0
                       TR0=0;
                       TR0=1;
			           if (zhflag==1)
						    {
						     second++;
                             if(second==60)     // 調秒
                  				{
                   				 second=0;
						     	}
							 }
					  else 
						 {
                          if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 0;
                    		 count+=1;
                              }
						  }
                        break;
            case  0x21:                    //  第1行第2列,數字1
                        TR0=0;
                        TR0=1;
                        if (zhflag==1)
						    {
						    minute++;
                         	if(minute==60)     // 調分
                 				{
                   				 minute=0;
                 				}
						     }
						else 
						 {
                          if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 1;
                    		 count+=1;
                              }
						  }
      					break;
			case  0x41:                       //  第1行第3列,數字2
                        TR0=0;
                          TR0=1;
     					if (zhflag==1)
						    {
						    hour++;
            				if(hour==24)     // 調時
              				 	{
                  				 hour=0;
               					}
						    }
						 else 
						 {
                          if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 2;
                    		 count+=1;
                              }
						  }
    					 break;
      		case  0x81:                     //  第1行第4列,數字3
                      TR0=0;
                      TR0=1;
                       if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 3;
                    		 count+=1;
                              }
						
     					break;
		   case  0x12:                      //  第2行第1列,數字4
                      TR0=0;
                      TR0=1;
   				      if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 4;
                    		 count+=1;
                              }
						 
                        break;
           case  0x22:                //  第2行第2列,數字5
                       TR0=0;
                       TR0=1;
                       if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 5;
                    		 count+=1;
                              }
						 
    				   break;
           case  0x42:                   //  第2行第3列,數字6
                          TR0=0;
                           TR0=1;
                          if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 6;
                    		 count+=1;
                              }
						 
   					  break;
          case  0x82:                   //  第2行第4列,數字7
                     TR0=0;
              		TR0=1;
                      if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 7;
                    		 count+=1;
                              }
						
     				 break;
		 case  0x14:                     //  第3行第1列,數字8
                     TR0=0;
                     TR0=1;
                      if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 8;
                    		 count+=1;
                              }
						  
    				 break;
 		case  0x24:                    //  第3行第2列,數字9
                     TR0=0;
                     TR0=1;
        		     if  (count<6)
                             {
                             wordbuf[count]=0x0f ;        //  對應位顯示 F
                         	 pwbuf[count] = 9;
                    		 count+=1;
                              }
						  
    				 break;
		case  0x44:
          				enterflag=1 ;                 //比較密碼
          				if (count==6)
           					pwflag = pwcmp () ;
          				else 
             				pwflag = 0 ;						
     				break;
		case  0x84:
    				    count=0;
						cancelflag=1;
       					for (j=0;j<6;j++)          // 取消密碼輸入
				          {
           				    wordbuf[j]=8;
                            pwbuf[j]=0x0f;        // 顯示888888
						  }
                         t1count=50;
						 TR0=1;                   //開T0
          			break;
        case  0x18:    
		            count=0;
                    zhflag=~zhflag;          // 功能轉換
                    break;

      	 default:  break;
	   }	   	   

	 if (zhflag==1)                        //顯示電子鐘
	       {
			  wordbuf[0]=second%10;
        	  wordbuf[1]=second/10;
   			  wordbuf[2]=minute%10;
   			  wordbuf[3]=minute/10;
   			  wordbuf[4]=hour%10;
   			  wordbuf[5]=hour/10;
             }
	  else
	       {  
		     if ((count==0)&(cancelflag==0))
			          {
		                        t1count=150;
		                        TR0=1;           // 開T0
					 }
			}
    if (enterflag ==1)
       {
         enterflag = 0;
         count = 0;   
           t1count = 0;
          if (pwflag==1)              //密碼正確
	         {
	          wrong=0;
               sound1();
				 TR0=1;   
             }
	      else
             {
			   wrong+=1;
			  if(wrong==3)        //錯誤三次
			      { 
				    sound();        //調用報警并鎖定鍵盤
				    wrong=0;
					TR0=1;          //開T0
					}
			   else 
			      {
				    sound2();            //密碼錯誤
				    TR0=1;
				   }
	          }
        }
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷六月综合亚洲| 99精品欧美一区二区蜜桃免费| 在线免费不卡电影| 中文字幕佐山爱一区二区免费| 波波电影院一区二区三区| 国产亚洲欧美中文| 大尺度一区二区| 1024成人网色www| 色婷婷久久综合| 亚洲电影中文字幕在线观看| 欧美丰满少妇xxxbbb| 蜜桃av一区二区| 精品国产sm最大网站| 国产99久久久国产精品潘金 | 欧美激情中文字幕一区二区| 国产精品 欧美精品| 国产精品久久久久久久久快鸭 | 午夜免费欧美电影| 欧美一区二区三区的| 精品一区二区三区在线观看| 国产午夜一区二区三区| 91小视频在线免费看| 亚洲一区二区三区影院| 日韩欧美一级特黄在线播放| 粉嫩一区二区三区在线看| 亚洲精品第一国产综合野| 欧美一二三区在线| 成人免费毛片嘿嘿连载视频| 亚洲一本大道在线| 久久久久久99精品| 日本韩国欧美在线| 韩国v欧美v日本v亚洲v| 亚洲欧美日韩在线| 日韩欧美在线影院| 97aⅴ精品视频一二三区| 青青草国产成人av片免费| 国产精品日产欧美久久久久| 欧美精品久久一区二区三区| 成人午夜碰碰视频| 日本va欧美va精品| 亚洲精品日产精品乱码不卡| 欧美xingq一区二区| 91激情在线视频| 国产乱子伦一区二区三区国色天香| 亚洲人午夜精品天堂一二香蕉| 91精品欧美综合在线观看最新| 成人精品免费视频| 麻豆成人综合网| 一区二区三区.www| 亚洲国产精品成人综合| 7777精品伊人久久久大香线蕉超级流畅 | 久久aⅴ国产欧美74aaa| 亚洲色图在线播放| 久久久精品一品道一区| 欧美久久一二区| 一本色道综合亚洲| 国产很黄免费观看久久| 美女爽到高潮91| 亚洲综合男人的天堂| 国产精品久久久久久久久图文区| 日韩视频国产视频| 欧美日韩午夜精品| 日本福利一区二区| 99re这里只有精品视频首页| 国产一区二区三区在线观看免费 | 中文字幕成人网| 26uuu国产一区二区三区| 欧美浪妇xxxx高跟鞋交| 欧美日韩在线播| 91丝袜呻吟高潮美腿白嫩在线观看| 狠狠色综合日日| 狠狠色丁香久久婷婷综合_中 | 亚洲精品一区二区三区四区高清 | 99久久99久久免费精品蜜臀| 国内精品第一页| 蜜桃av一区二区在线观看 | 久久国产精品99久久人人澡| 亚洲v精品v日韩v欧美v专区| 亚洲一区二区三区中文字幕| 亚洲精品免费在线观看| 亚洲乱码中文字幕| 一区二区三区中文字幕| 一区二区欧美在线观看| 亚洲自拍与偷拍| 一区二区三区四区中文字幕| 亚洲精品视频在线| 亚洲影视资源网| 亚洲成人精品一区二区| 婷婷开心激情综合| 美国毛片一区二区三区| 国内不卡的二区三区中文字幕| 国产美女娇喘av呻吟久久| 国产成人福利片| 99国产精品久| 欧美精品三级在线观看| 欧美成人猛片aaaaaaa| 久久久久9999亚洲精品| 国产精品国产三级国产| 亚洲与欧洲av电影| 另类综合日韩欧美亚洲| 国产精品一二一区| 91婷婷韩国欧美一区二区| 欧美色男人天堂| 日韩一区二区高清| 国产免费观看久久| 亚洲一区二区三区四区中文字幕| 调教+趴+乳夹+国产+精品| 精品一区精品二区高清| 波多野洁衣一区| 欧美日韩一区二区三区在线| 日韩一区二区三区视频在线观看| 久久久久亚洲蜜桃| 1000精品久久久久久久久| 亚洲成人午夜电影| 国产精品18久久久| 91精品91久久久中77777| 日韩欧美aaaaaa| 亚洲日本电影在线| 日韩电影在线看| 波多野结衣亚洲| 91精品国产丝袜白色高跟鞋| 中文字幕免费不卡| 日本少妇一区二区| 91一区二区三区在线观看| 欧美大肚乱孕交hd孕妇| 中文字幕一区免费在线观看 | 日韩欧美中文一区二区| 欧美国产乱子伦| 日日嗨av一区二区三区四区| 国产a久久麻豆| 欧美一区二区三区免费大片 | 在线综合亚洲欧美在线视频| 欧美国产日韩精品免费观看| 日韩精品视频网| 99精品久久99久久久久| 精品1区2区在线观看| 亚洲综合免费观看高清完整版在线 | 色先锋久久av资源部| 精品日韩在线观看| 亚洲一区二区三区美女| 国产成人鲁色资源国产91色综| 欧美日韩黄色一区二区| 国产精品天美传媒沈樵| 麻豆精品久久久| 欧美三级欧美一级| 亚洲欧美自拍偷拍| 国产剧情一区二区| 日韩一区二区麻豆国产| 亚洲一区二区三区四区五区黄 | 久久精品国产亚洲a| 欧美日韩中字一区| 亚洲日本欧美天堂| 99国产精品久久久| 国产精品初高中害羞小美女文| 国产一区二区三区免费在线观看| 欧美福利一区二区| 亚洲成av人影院| 欧美日韩视频一区二区| 一区二区久久久| 一本久久精品一区二区| 中文字幕一区二区不卡| 成人爱爱电影网址| 中文字幕免费不卡| jlzzjlzz欧美大全| 一区二区中文字幕在线| 成人动漫在线一区| 中文字幕亚洲成人| 不卡的av电影在线观看| 国产精品久久久久久久裸模| 国产传媒欧美日韩成人| 久久精品视频网| 国产99久久精品| 亚洲国产精品黑人久久久| 成人激情小说网站| 亚洲欧美综合在线精品| 99久久精品情趣| 亚洲精品成a人| 欧美唯美清纯偷拍| 丝袜亚洲另类丝袜在线| 欧美一级精品在线| 国内精品伊人久久久久av一坑| 久久综合av免费| 成人看片黄a免费看在线| 亚洲天堂2014| 欧美日韩精品福利| 狠狠久久亚洲欧美| 中文字幕乱码一区二区免费| 99免费精品在线| 亚洲一线二线三线视频| 欧美疯狂做受xxxx富婆| 久久精品免费观看| 中文在线免费一区三区高中清不卡| 成人免费的视频| 亚洲一区二区综合| 日韩一级精品视频在线观看| 精品亚洲成a人在线观看| 国产精品色哟哟| 欧美日韩二区三区| 国产曰批免费观看久久久| 国产精品久久久久久久久久久免费看 |