⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 c语言编程的8位密码锁
💻
📖 第 1 页 / 共 2 页
字号:
 193   3                      P0=table[t];      //段选码送P0
 194   3                      delay(5);
 195   3                 }  
 196   2      
 197   2              }                                         //(0)处结束                      
 198   1       
 199   1              while (1)                                  //开始报警
 200   1                      {
 201   2                      BeepCount(100); 
 202   2                  }
 203   1      
 204   1              while(1);                             
 205   1      } 
 206                          
 207          
 208          /********************************************************************************************
 209          * 函数名称:KeyNum()
 210          * 功    能:检测用户按下的键盘所对应的键盘号并直接转换成段码
 211          * 入口参数:无
 212          * 出口参数:无
 213          * 说    明:用户可根据自己的键盘编号修改该函数。
 214          *********************************************************************************************/
 215           int  KeyNum(void)
 216          {
 217   1          
 218   1         int  KeyTemp;
 219   1          
 220   1          KeyTemp=0;
 221   1          
 222   1          if(keydown()==1)
 223   1          {
 224   2          
 225   2              col1=0; col2=1; col3=1; col4=1;
 226   2              
 227   2              if (row1==0) { KeyTemp=7; }
 228   2              if (row2==0) { KeyTemp=4; } 
 229   2              if (row3==0) { KeyTemp=1; }
 230   2              if (row4==0) { KeyTemp=15; }
 231   2              
 232   2              col1=1; col2=0; col3=1; col4=1;
 233   2              
 234   2              if (row1==0) { KeyTemp=8; }
 235   2              if (row2==0) { KeyTemp=5; }
 236   2              if (row3==0) { KeyTemp=2; }
 237   2              if (row4==0) { KeyTemp=0; }
 238   2              
 239   2              col1=1; col2=1; col3=0; col4=1;
 240   2              
 241   2              if (row1==0) { KeyTemp=9; } 
C51 COMPILER V7.07   最新                                                                  07/20/2008 15:07:46 PAGE 5   

 242   2              if (row2==0) { KeyTemp=6; } 
 243   2              if (row3==0) { KeyTemp=3; } 
 244   2              if (row4==0) { KeyTemp=14; }    
 245   2              
 246   2              col1=1; col2=1; col3=1; col4=0;
 247   2              
 248   2              if (row1==0) { KeyTemp=10; } 
 249   2              if (row2==0) { KeyTemp=11; } 
 250   2              if (row3==0) { KeyTemp=12; } 
 251   2              if (row4==0) { KeyTemp=13; }
 252   2              
 253   2              while ( KeyUp()!=1); 
 254   2              
 255   2              return KeyTemp;
 256   2          
 257   2          }
 258   1          else
 259   1          return 16;
 260   1      }
 261          
 262          /********************************************************************************************
 263          * 函数名称:delay()
 264          * 功    能:软件延时
 265          * 入口参数:count    延时参数,值越大,延时越长
 266          * 出口参数:无
 267          *********************************************************************************************/
 268          void delay(int count)
 269          {
 270   1          int i;             
 271   1          
 272   1          while(--count != 0)        
 273   1          {
 274   2              for(i = 0; i < 125; i++);                
 275   2          }
 276   1      }
 277          /********************************************************************************************
 278          * 函数名称:BeepCount()
 279          * 功    能:蜂鸣器按指定次数缝鸣
 280          * 入口参数:count
 281          * 出口参数:无
 282          *********************************************************************************************/
 283          void BeepCount(int count)
 284          {
 285   1          for(;count>0;count--)
 286   1         {
 287   2            
 288   2             P3_1=1;delay(120);
 289   2                  P3_1=0;delay(120);
 290   2         }
 291   1      }
 292          /********************************************************************************************
 293          * 函数名称:Keydown()
 294          * 功    能:检测键盘是否按下
 295          * 入口参数:无
 296          * 出口参数:返回1表示键盘按下,返回0表示键盘未按下
 297          * 注    意:该函数有消抖功能
 298          *********************************************************************************************/
 299          int keydown(void)
 300          {
 301   1          col1=0; col2=0; col3=0; col4=0; 
 302   1          
 303   1          if((row1==0) || (row2==0) || (row3==0) || (row4==0))
C51 COMPILER V7.07   最新                                                                  07/20/2008 15:07:46 PAGE 6   

 304   1          {
 305   2              delay(1);
 306   2              if((row1==0) || (row2==0) || (row3==0) || (row4==0))
 307   2                  return 1;         //返回1表示键盘按下
 308   2              else
 309   2                  return 0;
 310   2          } 
 311   1          else 
 312   1              return 0;     
 313   1      }
 314          /********************************************************************************************
 315          * 函数名称:KeyUp()
 316          * 功    能:检测键盘是否弹起
 317          * 入口参数:无
 318          * 出口参数:返回1表示键盘弹起,返回0表示键盘未弹起
 319          * 注    意:该函数有消抖功能
 320          *********************************************************************************************/
 321          int KeyUp(void)
 322          {
 323   1          col1=0; col2=0; col3=0; col4=0;
 324   1          
 325   1          if((row1==1) && (row2==1) && (row3==1) && (row4==1))
 326   1          {
 327   2              delay(1);
 328   2              if((row1==1) && (row2==1) && (row3==1) && (row4==1))
 329   2                  return 1;        //返回1表示键盘弹起
 330   2              else
 331   2                  return 0;
 332   2          }
 333   1          else 
 334   1              return 0;
 335   1      }
 336          /********************************************************************************************
 337          * 函数名称:display()
 338          * 功    能:显示键号
 339          * 入口参数:无
 340          * 出口参数:无
 341          * 注    意:
 342          *********************************************************************************************/
 343          void display(void)
 344          {
 345   1          uchar i=0;
 346   1              int a;
 347   1              int b;
 348   1              int k=0;
 349   1              int t;
 350   1              int  table[8]={0xFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
 351   1              int code duanma[]={0xC0,0xF9,0xA4,0xB0,
 352   1                                       0x99,0x92,0x82,0xF8,
 353   1                                       0x80,0x90,0x88,0x83,
 354   1                                       0xC6,0xA1,0x86,0x8E,
 355   1                               0xFF,0xBF};
 356   1              uchar code weima[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
 357   1              while(1)
 358   1               {
 359   2                  a=keydown();           //将判键是否按下函数的值赋给a
 360   2                  if(a==1)               //若为1表示有键按下
 361   2                 {
 362   3                  b=KeyNum();
 363   3                  table[k]=duanma[b];
 364   3                      k++;
 365   3                     }
C51 COMPILER V7.07   最新                                                                  07/20/2008 15:07:46 PAGE 7   

 366   2                  
 367   2                      
 368   2                     for(t=0;t<8;t++)
 369   2                     {
 370   3                      P2=weima[t];       //位码送P2
 371   3                      P0=table[t];      //段选码送P0
 372   3                     delay(1);
 373   3                 } 
 374   2                 
 375   2               
 376   2           }               
 377   1      }
 378           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1079    ----
   CONSTANT SIZE    =    104    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     52      27
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -