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

📄 shumaguan2.lst

📁 通过对键盘的编程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 172   1              return 0;
 173   1      }
 174          /**********************************************************************
 175          **函数功能:把数字的ASCII转换成整型                                                                      **
 176          **参数:整型数                                                                                                           **
 177          **返回:整型                                                                                                             **
 178          **********************************************************************/
 179          unsigned char transition(unsigned char kvalue)
C51 COMPILER V8.02   SHUMAGUAN2                                                            10/26/2006 22:08:52 PAGE 4   

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

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

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


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