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

📄 key_disp.lst

📁 MCU51-JZ01单片机开发板实验例程
💻 LST
📖 第 1 页 / 共 3 页
字号:
 186   1      }
 187              
 188          unsigned char key_read()                       //读键码子程序
 189          {
 190   1            
 191   1            if (!key)                                // 如果有健按下,则为"0"
 192   1            {
 193   2                 key_number=read7279(CMD_READ);      // 读键码            
 194   2                 while (!key);                       // 等待按键松开           
 195   2            }           
 196   1            return(key_number);                      //返回键码值
 197   1      }
 198          
 199          void  key_serve(void)                          //键盘服务子程序
 200          {   
 201   1                  
 202   1          switch (key_number)
 203   1          {
 204   2                 uchar Temp;
 205   2             case 6:
 206   2                  // 第一个通道输入 
 207   2                  key_6 = 1;
 208   2                  key_14 = 0;
 209   2                  key_5 = 0;
 210   2                  while(key_6)
 211   2                  {
 212   3                       if(ReadRom1() == 0x28)                 // 检测DS18B20存在
 213   3                       {                   
 214   4                           UartSent(0x28);                    // 发送DS18B20家族码
 215   4                                   tmp1change();                                              // 开始温度转换
 216   4                                   delay1ms(250);                                             // 读取延时
 217   4                                   tmp1();                                                    // 读取温度
 218   4                                           Temp = ((Temph&0x0F)<<4)|((Templ&0xF0)>>4);
 219   4      
 220   4                           UartSent(Temp/10);                  // 把接收到的十位上的数据发送到串口 
 221   4                           UartSent(Temp%10);                  // 把接收到的个位上的数据发送到串口
 222   4                           UartSent(Offset);                   // 把接收到的数据发送到串口 
 223   4      
 224   4                           write7279(DECODE1+1,Temp/10);// 在第2位显示键码高8位
 225   4                           write7279(DECODE1,Temp%10);  // 在第1位显示键码低8位
 226   4                       }
 227   3                       else 
 228   3                               {
 229   4                            write7279(DECODE1+1,0x0F);         // 在第2位显示键码高8位
 230   4                            write7279(DECODE1,0x0F);           // 在第1位显示键码低8位
 231   4                                   }
 232   3                       if (!key)  break;
 233   3                  }
 234   2      
 235   2                  break;     
 236   2                                  
 237   2             case 14:  
 238   2                  // 第二个通道输入
 239   2                  key_6 = 0;
 240   2                  key_14 = 1;
C51 COMPILER V7.50   KEY_DISP                                                              12/06/2006 14:10:24 PAGE 5   

 241   2                  key_5 = 0;
 242   2                  while(key_14)
 243   2                      {
 244   3                       if(ReadRom2() == 0x28)                  // 检测DS18B20存在
 245   3                       {                   
 246   4                            UartSent(0x29);                      // 发送DS18B20家族码
 247   4                                    tmp2change();                                              // 开始温度转换
 248   4                                delay1ms(250);                                         // 读取延时
 249   4                                    tmp2();                                                // 读取温度
 250   4                                        Temp = ((Temph&0x0F)<<4)|((Templ&0xF0)>>4);
 251   4      
 252   4                            UartSent(Temp/10);                  // 把接收到的十位上的数据发送到串口 
 253   4                            UartSent(Temp%10);                  // 把接收到的个位上的数据发送到串口
 254   4                            UartSent(Offset);                   // 把接收到的数据发送到串口 
 255   4      
 256   4                            write7279(DECODE1+1,Temp/10);      // 在第2位显示键码高8位
 257   4                            write7279(DECODE1,Temp%10);        // 在第1位显示键码低8位
 258   4                       }
 259   3                       else                                    // 检测DS18B20不存在,显示0xFF
 260   3                           {
 261   4                            write7279(DECODE1+1,0x0F);         // 在第2位显示键码高8位
 262   4                            write7279(DECODE1,0x0F);           // 在第1位显示键码低8位
 263   4                           }
 264   3                               if (!key)  break;
 265   3                  }                   
 266   2       
 267   2                  break;                      
 268   2                  
 269   2             case 5:
 270   2                  key_6 = 0;
 271   2                  key_14 = 0;
 272   2                  key_5 = 1; 
 273   2                  while(key_5)
 274   2                  {
 275   3                       // 第一个通道输入
 276   3                       if(ReadRom1() == 0x28)                  // 检测DS18B20存在
 277   3                       {                   
 278   4                           UartSent(0x28);                     // 发送DS18B20家族码
 279   4                                   tmp1change();                                               // 开始温度转换
 280   4                                   delay1ms(250);                                              // 读取延时
 281   4                                   tmp1();                                                 // 读取温度
 282   4                                           Temp = ((Temph&0x0F)<<4)|((Templ&0xF0)>>4);
 283   4      
 284   4                           UartSent(Temp/10);                  // 把接收到的十位上的数据发送到串口 
 285   4                           UartSent(Temp%10);                  // 把接收到的个位上的数据发送到串口
 286   4                           UartSent(Offset);                   // 把接收到的数据发送到串口 
 287   4      
 288   4                           write7279(DECODE1+1,Temp/10);// 在第2位显示键码高8位
 289   4                           write7279(DECODE1,Temp%10);  // 在第1位显示键码低8位
 290   4                       }
 291   3                       else 
 292   3                               {
 293   4                            write7279(DECODE1+1,0x0F);         // 在第2位显示键码高8位
 294   4                            write7279(DECODE1,0x0F);           // 在第1位显示键码低8位
 295   4                                   }
 296   3                       // 第二个通道输入
 297   3                       if(ReadRom2() == 0x28)                  // 检测DS18B20存在
 298   3                       {                   
 299   4                            UartSent(0x29);                    // 发送DS18B20家族码
 300   4                                    tmp2change();                                              // 开始温度转换
 301   4                                delay1ms(250);                                         // 读取延时
 302   4                                    tmp2();                                                // 读取温度
C51 COMPILER V7.50   KEY_DISP                                                              12/06/2006 14:10:24 PAGE 6   

 303   4                                        Temp = ((Temph&0x0F)<<4)|((Templ&0xF0)>>4);
 304   4      
 305   4                            UartSent(Temp/10);                  // 把接收到的十位上的数据发送到串口 
 306   4                            UartSent(Temp%10);                  // 把接收到的个位上的数据发送到串口
 307   4                            UartSent(Offset);                   // 把接收到的数据发送到串口
 308   4       
 309   4                            write7279(DECODE1+1,Temp/10);      // 在第2位显示键码高8位
 310   4                            write7279(DECODE1,Temp%10);        // 在第1位显示键码低8位
 311   4                       }
 312   3                       else                                    // 检测DS18B20不存在,显示0xFF
 313   3                           {
 314   4                            write7279(DECODE1+1,0x0F);         // 在第2位显示键码高8位
 315   4                            write7279(DECODE1,0x0F);           // 在第1位显示键码低8位
 316   4                           }
 317   3                       if (!key)  break;
 318   3      
 319   3                  }
 320   2       
 321   2                  break;
 322   2                  
 323   2             case 13:  
 324   2                  send_byte(CMD_RESET);                    //清除显示 
 325   2                  break;   
 326   2      
 327   2             default :
 328   2             //若出错,则显示"FF"
 329   2                  write7279(DECODE1+1,0x0F);         // 在第2位显示键码高8位
 330   2                  write7279(DECODE1,0x0F);           // 在第1位显示键码低8位
 331   2      
 332   2                  break;
 333   2              
 334   2          }
 335   1       
 336   1      }
 337          void ini_uart(void)
 338          {
 339   1          SCON = 0x50;                                //串口方式1,允许接受
 340   1          TMOD = 0x20;                                //定时器1,定时方式2
 341   1          TH1  = 0xfd;                                //11.0592Hz,Baud Rate 9600
 342   1          TL1  = 0xfd;
 343   1          TI   = 0;
 344   1          RI   = 0;
 345   1          TR1  = 1;                                   //启动定时器
 346   1      }
 347          
 348          //查询方式,向串口发送一个字符 
 349          void UartSent(uchar byte)  
 350          {
 351   1          SBUF=byte;
 352   1          while(TI==0);
 353   1          TI=0;
 354   1      }
 355          
 356          void tm1reset (void)                                                             // 发送复位和初始化
 357          {
 358   1              unsigned int i;
 359   1              DQ1 = 0;        
 360   1              i = 103;
 361   1              while (i>0) i--;                                                        // 延时
 362   1              DQ1 = 1;        
 363   1              i = 4;  
 364   1              while (i>0) i--;        
C51 COMPILER V7.50   KEY_DISP                                                              12/06/2006 14:10:24 PAGE 7   

 365   1      }
 366          void tm2reset (void)                                                             // 发送复位和初始化
 367          {
 368   1              unsigned int i;
 369   1              DQ2 = 0;        
 370   1              i = 103;
 371   1              while (i>0) i--;                                                        // 延时
 372   1              DQ2 = 1;        
 373   1              i = 4;  
 374   1              while (i>0) i--;        
 375   1      }
 376          bit tmp1read (void)                                                             // 读取数据的一位
 377          { 
 378   1              unsigned int i;
 379   1              bit dat;
 380   1              DQ1 = 0; i++;   

⌨️ 快捷键说明

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