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

📄 ad.lst

📁 校园打铃系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 219   2                LCD_en_dat(*s);
 220   2                s++;
 221   2                X++;
 222   2                if(X==16)     //当第一行显示满时,Y^=1,取另一行
 223   2                  {
 224   3                    X=0;
 225   3                    Y^=1;
 226   3                  }
 227   2      
 228   2              }
 229   1      
 230   1      }
 231          
 232          
 233          /************LCD模块初始化******************************************************/
 234          void LCD_init(void)
 235          {
 236   1          LCD_en_command(0x01);//清屏 (得两次清屏)
 237   1          LCD_en_command(0x38);//设定双行显示,字形5*7点阵,8位数据转移
 238   1          LCD_en_command(0x0c);//开显示,光标不显示,不闪烁
 239   1          LCD_en_command(0x06);//右移光标(光标加1,字符不动)
 240   1          LCD_en_command(0x01);//清屏
C51 COMPILER V7.06   AD                                                                    06/08/2007 19:10:53 PAGE 5   

 241   1      }
 242          
 243          
 244          /*********************************************************************************
 245          ** 函数名:void FLOAT_NUM_Display(float dd)***************************************
 246          ** 功能:显示浮点型数字(6位有效数字)********************************************
 247          ** 入口参数:float dd (dd 为调用这个子程序时传入的数据)*************************
 248          ** 出口参数:无 ******************************************************************
 249          **注意各变量的数据类型,数的有效范围***********************************************
 250          **实现方式:从小数点第六位 起往左逆向取数字,存入数组,再正向输出7位数字**********
 251          **该函数的缺陷是:小数部分最多显示六位,如0.000020**************************************/
 252          
 253          
 254          void FLOAT_NUM_Display(float dd,uchar x,uchar y)
 255          {
 256   1      
 257   1        uchar i,j,k=0;
 258   1        frequency=dd*1000000;//取小数点后六位
 259   1        if(frequency>=10000000) //整数部分不为0
 260   1          {
 261   2            for (i=0;i<16;i++)
 262   2               {
 263   3                if(i==6)
 264   3                   {
 265   4                      LCDDisplaybuffer[i]='.';
 266   4                   }
 267   3                 else
 268   3                   {
 269   4                    LCDDisplaybuffer[i]=CHR[frequency%10];
 270   4                    frequency/=10;
 271   4                   }
 272   3      
 273   3                if(frequency==0)
 274   3                       {
 275   4                           i++;
 276   4                           break;
 277   4                       }
 278   3                }
 279   2            }
 280   1         else            //整数部分为0
 281   1            {
 282   2             for (i=0;i<8;i++)
 283   2               {
 284   3                if(i==6)
 285   3                   {
 286   4                      LCDDisplaybuffer[i]='.';
 287   4                   }
 288   3                 else
 289   3                   {
 290   4                    LCDDisplaybuffer[i]=CHR[frequency%10];
 291   4                    frequency/=10;
 292   4                   }
 293   3             }
 294   2          }
 295   1      
 296   1         for (j=0;j<7;j++)     //可以通过改变j的范围来增减显示的位数
 297   1             {
 298   2                LCD_write_char(x++,y,LCDDisplaybuffer[i-1]);
 299   2                i--;
 300   2      
 301   2             }
 302   1      
C51 COMPILER V7.06   AD                                                                    06/08/2007 19:10:53 PAGE 6   

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

 365          unsigned int tlc1543(unsigned char port)
 366          {
 367   1          unsigned int data ad;
 368   1          unsigned int data i;
 369   1          unsigned char data al=0,ah=0;
 370   1          ad=0x0000;
 371   1          adclk=0;
 372   1          adcs=0;
 373   1          port<<=4;
 374   1          for (i=0;i<4;i++) //把通道号打入1543
 375   1          {
 376   2              adadr=(bit)(port&0x80);
 377   2              adclk=1;
 378   2              adclk=0;
 379   2              port<<=1;
 380   2          }
 381   1          for (i=0;i<6;i++) //填充6个CLOCK
 382   1          {
 383   2              adclk=1;adclk=0;
 384   2          }
 385   1      
 386   1          adcs=1;
 387   1          _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
 388   1          _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
 389   1          _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
 390   1          _nop_();_nop_();_nop_();
 391   1          adcs=0; //等待AD转换
 392   1      
 393   1          _nop_();_nop_();_nop_();
 394   1      
 395   1          for (i=0;i<2;i++) //取D9,D8
 396   1          {
 397   2              //adadr=1;
 398   2              adclk=1;
 399   2              ah<<=1;
 400   2              if (adout) ah|=0x01;
 401   2              adclk=0;
 402   2          }
 403   1          for (i=0;i<8;i++) //取D7--D0
 404   1          {
 405   2              adout=1;
 406   2              adclk=1;
 407   2              al<<=1;
 408   2              if (adout) al|=0x01;
 409   2              adclk=0;
 410   2          }
 411   1      
 412   1          adcs=1;
 413   1          ad=ah*256;
 414   1          ad+=al;
 415   1          return (ad);
 416   1      } 
 417          void mian()
 418          {unsigned int data ad;
 419   1      float ad_data;
 420   1      LCD_init();
 421   1      while(1)
 422   1      {
 423   2      ad=tlc1543(0x00);
 424   2      ad_data=(ad/1024.0)*5;
 425   2      LCD_write_string(3,0,"NO.1");
 426   2      FLOAT_NUM_Display(ad_data,7,0);
C51 COMPILER V7.06   AD                                                                    06/08/2007 19:10:53 PAGE 8   

 427   2      }
 428   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    888    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     63      30
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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