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

📄 shumaguan.lst

📁 通过对键盘的编程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 168          bit isdigit(unsigned char kvalue)
 169          {
 170   1              if(kvalue>='0'&&kvalue<='9')
 171   1              return 1;
 172   1              else 
 173   1              return 0;
 174   1      }
 175          /**********************************************************************
 176          **函数功能:把数字的ASCII转换成整型                                                                      **
 177          **参数:整型数                                                                                                           **
 178          **返回:整型                                                                                                             **
 179          **********************************************************************/
C51 COMPILER V8.02   SHUMAGUAN                                                             10/17/2006 16:37:26 PAGE 4   

 180          unsigned char transition(unsigned char kvalue)
 181          {
 182   1              if(kvalue>='0'&&kvalue<='9')
 183   1                      return (kvalue-'0');
 184   1              else
 185   1                      return 0;
 186   1      }
 187          /**********************************************************************
 188          **函数功能:键盘扫描功能                                                                                         **
 189          **参数:无                                                                                                                       **
 190          **返回:返回键值                                                                                                         **
 191          **********************************************************************/
 192          unsigned char key_scan(void)
 193          {
 194   1              unsigned char line,row,temp,a,b,kvalue;
 195   1              temp=0xfe;
 196   1              flag=0;
 197   1              P1=0xff;
 198   1      
 199   1              for(line=0;line<5;line++) //进行行扫描
 200   1              {
 201   2                       a=temp<<line;
 202   2                       b=temp>>(8-line);
 203   2                       P3=a|b;
 204   2                       kvalue=P1&0x0f;
 205   2                       if(kvalue!=0x0f)         //去除键抖动
 206   2                       delay(100);
 207   2                       kvalue=P1&0x0f;
 208   2                       if(kvalue!=0x0f)
 209   2                              break;
 210   2              }
 211   1              while(P1!=0x0ff)  //判断键弹起
 212   1              {       
 213   2              }
 214   1              if(kvalue==0x0e) //确定是第几列
 215   1                      row=0;
 216   1              else
 217   1                      if(kvalue==0x0d)
 218   1                              row=1;
 219   1                      else 
 220   1                              if(kvalue==0x0b)
 221   1                                      row=2;
 222   1                              else
 223   1                                      if(kvalue==0x07)
 224   1                                              row=3;
 225   1                                      else 
 226   1                                              return 0;
 227   1              P3=0xff;
 228   1              
 229   1              return keyvalue[line][row];
 230   1      }       
 231          
 232          /**********************************************************************
 233          **函数功能:在数码管上显示数据                                                                           **
 234          **参数:整型数                                                                                                           **
 235          **返回:无                                                                                                                       **
 236          **********************************************************************/
 237          void display(int disnum)
 238          {
 239   1              int ge,shi,bai,qian,i,j;
 240   1              int num[5]={0,0,0,0,10};
 241   1              if(disnum<9999)
C51 COMPILER V8.02   SHUMAGUAN                                                             10/17/2006 16:37:26 PAGE 5   

 242   1              {
 243   2                      ge=disnum%10;
 244   2                      shi=(disnum%100)/10;
 245   2                      bai=(disnum/100)%10;
 246   2                      qian=disnum/1000;
 247   2                      num[0]=ge;
 248   2                      num[1]=shi;
 249   2                      num[2]=bai;
 250   2                      num[3]=qian;
 251   2                      if(qian!=0)
 252   2                      {
 253   3                              for(i=0;i<4;i++)
 254   3                              {
 255   4                                      
 256   4                                      P2=num_tab1[i];            //先送位码
 257   4                                      P0=num_tab2[num[i]];   //再送段码
 258   4                                      delay(1);
 259   4                              }
 260   3                      }
 261   2                      else
 262   2                      {
 263   3                              if(bai!=0)
 264   3                              {
 265   4                                      for(i=0;i<3;i++)
 266   4                                      {
 267   5                                              
 268   5                                              P2=num_tab1[i];
 269   5                                              P0=num_tab2[num[i]];
 270   5                                              delay(1);
 271   5                                      }
 272   4                              }
 273   3                              else
 274   3                              {
 275   4                                      if(shi!=0)
 276   4                                      {
 277   5                                              for(i=0;i<2;i++)
 278   5                                              {
 279   6                                                      
 280   6                                                      P2=num_tab1[i];
 281   6                                                      P0=num_tab2[num[i]];
 282   6                                                      delay(1);
 283   6                                              }
 284   5                                      }       
 285   4                                      else
 286   4                                      {
 287   5                                              for(i=0;i<1;i++)
 288   5                                              {
 289   6                                                      for(j=0;j<4;j++)
 290   6                                                      {
 291   7                                                              if(j==0)
 292   7                                                              {
 293   8                                                                      
 294   8                                                                      P2=num_tab1[j];
 295   8                                                                      P0=num_tab2[num[i]];
 296   8                                                                      delay(1);
 297   8                                                              }
 298   7                                                              else
 299   7                                                              {
 300   8                                                                      
 301   8                                                                      P2=num_tab1[j];
 302   8                                                                      P0=num_tab2[num[4]];
 303   8                                                                      delay(1);
C51 COMPILER V8.02   SHUMAGUAN                                                             10/17/2006 16:37:26 PAGE 6   

 304   8                                                              }
 305   7                                                      }
 306   6                                              }
 307   5                                      }
 308   4                              }
 309   3                      }
 310   2              }
 311   1              else
 312   1              ;
 313   1      }
 314          /**********************************************************************
 315          **函数功能:延时时间                                                                                             **
 316          **参数:整型数                                                                                                           **
 317          **返回:无                                                                                                                       **
 318          **********************************************************************/ 
 319          void delay(unsigned int time)
 320          {
 321   1              int i;
 322   1              int k;
 323   1              for(i=0;i<time;i++)
 324   1              for(k=0;k<100;k++);
 325   1      }
 326          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    914    ----
   CONSTANT SIZE    =     56    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      33
   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 + -