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

📄 main.lst

📁 校园打铃系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
 235   2                LCD_set_xy( X, Y ); //设置显示的地址
 236   2                LCD_en_dat(*s);
 237   2                s++;
C51 COMPILER V7.06   MAIN                                                                  06/08/2007 16:16:19 PAGE 5   

 238   2                X++;
 239   2                if(X==16)     //当第一行显示满时,Y^=1,取另一行
 240   2                  {
 241   3                    X=0;
 242   3                    Y^=1;
 243   3                  }
 244   2      
 245   2              }
 246   1      
 247   1      }
 248          
 249          
 250          /************LCD模块初始化******************************************************/
 251          void LCD_init(void)
 252          {
 253   1          LCD_en_command(0x01);//清屏 (得两次清屏)
 254   1          LCD_en_command(0x38);//设定双行显示,字形5*7点阵,8位数据转移
 255   1          LCD_en_command(0x0c);//开显示,光标不显示,不闪烁
 256   1          LCD_en_command(0x06);//右移光标(光标加1,字符不动)
 257   1          LCD_en_command(0x01);//清屏
 258   1      }
 259          
 260          
 261          /*********************************************************************************
 262          ** 函数名:void FLOAT_NUM_Display(float dd)***************************************
 263          ** 功能:显示浮点型数字(6位有效数字)********************************************
 264          ** 入口参数:float dd (dd 为调用这个子程序时传入的数据)*************************
 265          ** 出口参数:无 ******************************************************************
 266          **注意各变量的数据类型,数的有效范围***********************************************
 267          **实现方式:从小数点第六位 起往左逆向取数字,存入数组,再正向输出7位数字**********
 268          **该函数的缺陷是:小数部分最多显示六位,如0.000020**************************************/
 269          
 270          
 271          void FLOAT_NUM_Display(float dd,uchar x,uchar y)
 272          {
 273   1      
 274   1        uchar i,j,k=0;
 275   1        frequency=dd*1000000;//取小数点后六位
 276   1        if(frequency>=10000000) //整数部分不为0
 277   1          {
 278   2            for (i=0;i<16;i++)
 279   2               {
 280   3                if(i==6)
 281   3                   {
 282   4                      LCDDisplaybuffer[i]='.';
 283   4                   }
 284   3                 else
 285   3                   {
 286   4                    LCDDisplaybuffer[i]=CHR[frequency%10];
 287   4                    frequency/=10;
 288   4                   }
 289   3      
 290   3                if(frequency==0)
 291   3                       {
 292   4                           i++;
 293   4                           break;
 294   4                       }
 295   3                }
 296   2            }
 297   1         else            //整数部分为0
 298   1            {
 299   2             for (i=0;i<8;i++)
C51 COMPILER V7.06   MAIN                                                                  06/08/2007 16:16:19 PAGE 6   

 300   2               {
 301   3                if(i==6)
 302   3                   {
 303   4                      LCDDisplaybuffer[i]='.';
 304   4                   }
 305   3                 else
 306   3                   {
 307   4                    LCDDisplaybuffer[i]=CHR[frequency%10];
 308   4                    frequency/=10;
 309   4                   }
 310   3             }
 311   2          }
 312   1      
 313   1         for (j=0;j<7;j++)     //可以通过改变j的范围来增减显示的位数
 314   1             {
 315   2                LCD_write_char(x++,y,LCDDisplaybuffer[i-1]);
 316   2                i--;
 317   2      
 318   2             }
 319   1      
 320   1      
 321   1      
 322   1      }
 323          
 324          /*********************************************************************************
 325          ** 函数名:INT_NUM_Display(unsigned int Num)**************************************
 326          ** 功能:显示整数*****************************************************************
 327          ** 入口参数:unsigned int Num (Num 为调用这个子程序时传入的数据)****************
 328          *********** 这里可以通过改变div的值来增减显示的位数 ******************************
 329          ******这个例子显示5位数***********************************************************
 330          ** 出口参数:无 ******************************************************************
 331          **注意各变量的数据类型,根据数的范围来改变形参的数据类型**************************
 332          **********************************************************************************/
 333          /*void INT_NUM_Display(unsigned int Num,uchar x,uchar y)
 334          {
 335               uchar i;
 336               unsigned int div=10000;
 337               for (i=0;i<8;i++)
 338                   {
 339                       LCDDisplaybuffer[i]=CHR[Num/div];
 340                       Num%=div;
 341                       div/=10;
 342                    }
 343          
 344               LCD_write_string(x,y,LCDDisplaybuffer);
 345          
 346          }
 347          
 348          /*********************************************************************************
 349          ** 函数名:HEX_NUM_Display(long int Num,uchar Bit)********************************
 350          ** 功能:16进制数值显示函数*******************************************************
 351          ** 入口参数:unsigned long Num,uchar Bite( Num   需要显示的数值(最长8位)********
 352          *****************************************(  Bite   有效显示位数 )****************
 353          ** 出口参数:无 ******************************************************************
 354          **********************************************************************************/
 355          /*void HEX_NUM_Display(unsigned long  Num,uchar Bite,uchar x,uchar y)   //这里的形参Num类型一定要为
 356                                                                                //unsigned long,不然不会显示
 357          
 358          {
 359              uchar a=0,i=0;
 360              for(a=8-Bite;a<8;a++)
 361                {
C51 COMPILER V7.06   MAIN                                                                  06/08/2007 16:16:19 PAGE 7   

 362          
 363                     LCDDisplaybuffer[i]=CHR[(Num<<(a<<2))>>28];
 364                     i++;
 365                }
 366              LCD_write_string(x,y,LCDDisplaybuffer);
 367          }
 368          
 369          /************************ LCD End **************************************************/
 370          
 371          
 372          /**************************Other Part************************************************/
 373          
 374          
 375          /*******************key******************************/
 376          #define KEY P1
 377          
 378          bit judge_hitkey();
 379          uchar scan_key();
 380          
 381          bit judge_hitkey()
 382          {uchar scancode,keycode;
 383   1         scancode=0x0f;
 384   1         KEY=scancode;
 385   1         keycode=KEY;
 386   1         if(keycode==0x0f)
 387   1         return(0);
 388   1         else
 389   1         return(1);
 390   1      
 391   1      }
 392          
 393          
 394          
 395          uchar scan_key()
 396          {uchar scancode,keycode;
 397   1       scancode=0xef;
 398   1        while(scancode!=0xff)
 399   1         {  KEY=scancode;
 400   2            keycode=KEY;
 401   2                if((keycode&0x0f)!=0x0f)
 402   2                break;
 403   2                scancode=(keycode<<1)|0x0f;
 404   2         }
 405   1      
 406   1      
 407   1         keycode=~keycode;
 408   1         return(keycode);
 409   1      }
 410          /*********************************key over****************************/
 411          
 412          /**************************message************************************/
 413          
 414          void message()
 415          {delay_nms(100);
 416   1      LCD_write_string(0,0,cd);
 417   1      }
 418          
 419          /*************************led******************************************/
 420          
 421          void led()
 422          {LCD_init();
 423   1       LCD_write_string(0,0,"8LED");
C51 COMPILER V7.06   MAIN                                                                  06/08/2007 16:16:19 PAGE 8   

 424   1       led_data_out=led_data;
 425   1      }
 426          /*************************over******************************************/
 427          
 428          /*************************adc******************************************/
 429          void adc()
 430          { float v_d;
 431   1       v_d=(ad0_data[1]+(ad0_data[0]&0x03)*256)/1024.0*5;
 432   1       LCD_write_string(0,0,"A0");
 433   1       FLOAT_NUM_Display(v_d,4,0);
 434   1       LCD_write_char( 10,0,'V');
 435   1       v_d=(ad1_data[1]+(ad1_data[0]&0x03)*256)/1024.0*5;
 436   1       LCD_write_string(0,0,"A1");
 437   1       FLOAT_NUM_Display(v_d,4,0);
 438   1       LCD_write_char( 10,0,'V');
 439   1       }
 440          /*************************adc over******************************************/
 441          
 442          
 443          
 444          
 445          /*********************************************************************/
 446          void data_display()
 447          {uchar abc;
 448   1       LCD_init();
 449   1       LCD_write_string(0,0,"hello!");
 450   1      abc=control_data&0xf0;
 451   1      while(scan_key()!=0x28)
 452   1      
 453   1       switch(abc)
 454   1       {case 0x50:led();
 455   2             break;
 456   2        case 0x60:message();
 457   2             break;
 458   2        case 0x0a0:adc();
 459   2             break;
 460   2        default:break;
 461   2      }
 462   1      }
 463          /******************************************************************/
 464          
 465          
 466          /********************set_frequency*********/
 467          sbit CLK=P2^3;
 468          sbit Din=P2^2;
 469          sbit ADin=P2^1;
 470          sbit ENB=P2^0;
 471          
 472          
 473          void MC145162_Reset(unsigned int Ctrl_Data,unsigned long int Ref_Data,unsigned int Tx_Count,unsigned int R
             -x_Count)
 474          {
 475   1      unsigned int i;
 476   1      unsigned long int mask;
 477   1      ENB=0;
 478   1      CLK=0;

⌨️ 快捷键说明

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