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

📄 lcd_show.lst

📁 基于51的LCD+PS2程序
💻 LST
字号:
C51 COMPILER V7.50   LCD_SHOW                                                              06/24/2007 16:02:39 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD_SHOW
OBJECT MODULE PLACED IN LCD_SHOW.OBJ
COMPILER INVOKED BY: D:\程序\keil\C51\BIN\C51.EXE LCD_SHOW.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"PS2.H"
   2          
   3          sbit CS = P2^5;
   4          sbit SID=P2^6;
   5          sbit CLK=P2^7;
   6          sbit FSB=P2^4;
   7          sbit RST=P2^3;
   8          
   9                                                   
  10          uchar code addr[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 
  11                              0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 
  12                              0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
  13                              0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f };//DDRAM地址
  14          extern unsigned char Time[];
  15                                                   
  16          /*****************************函数列表*******************************/
  17          void InitLcd( void );
  18          void Send(unsigned char senddata);
  19          void delay( uint t );
  20          void WriteCmd( uchar cmd );
  21          void WriteData( uchar Data );
  22          void display( uchar *x_add,uchar *dat1,uchar *dat2 );
  23          void DisHz16x16(uchar x,uchar y,uchar *Data);
  24          void Dis5bitNumber( uchar x,uchar y, uint Number );
  25          void DisMhz( uchar x,uchar y  );
  26          void WhiteLine( uchar line );
  27          void CleanScreen( void );
  28          void CleanUnit( uchar x,uchar y );
  29          void DisTab( uchar x,uchar y );
  30          void DisMenu( void );
  31          void MenuLoop( uchar Tab_X,uchar Tab_Y );
  32          void DisSaveChannelNote( void );
  33          void DisInput(unsigned char Input);
  34          void DisString(unsigned char *String,unsigned char Length);
  35          
  36          unsigned char CountInput = 0;
  37          /*****************************初始化子程序******************************/
  38          void InitLcd(void)
  39          {
  40   1      
  41   1        delay( 50000 );//延时45MS
  42   1      
  43   1        FSB = 0;
  44   1        CS  = 1;
  45   1        WriteCmd( 0x30 );
  46   1        delay( 150 );//延时150us
  47   1      
  48   1        WriteCmd(0x30);
  49   1        delay( 45 );//延时45us
  50   1      
  51   1        WriteCmd( 0x0C );
  52   1        delay( 150 );//延时150us
  53   1        
  54   1        CleanScreen();
  55   1        delay( 15000 );//延时12MS
C51 COMPILER V7.50   LCD_SHOW                                                              06/24/2007 16:02:39 PAGE 2   

  56   1        
  57   1        WriteCmd(0x06);
  58   1      }
  59          
  60          /*****************************延时子程序***************************/
  61          void delay( uint t )
  62          {
  63   1        while( t-- );      
  64   1      }
  65          /*********************************************************** 
  66          函数名称: 
  67          函数功能: 
  68          入口参数: 
  69          出口参数: 
  70          备 注: 
  71          ***********************************************************/
  72          void DelayUS(unsigned int n)       //N us延时函数
  73            {
  74   1         unsigned int i=0;
  75   1         for (i=0;i<n;i++)
  76   1             _nop_();
  77   1        }
  78          /*********************************************************** 
  79          函数名称: 
  80          函数功能: 发送命令
  81          入口参数: 
  82          出口参数: 
  83          备 注: 
  84          ***********************************************************/
  85          void Send(unsigned char senddata)
  86          {
  87   1              unsigned char i;
  88   1              for(i=0;i<8;i++)
  89   1              {
  90   2                      if((senddata)&0x80)
  91   2                          SID = 1;
  92   2                      else
  93   2                              SID = 0;        
  94   2                      CLK = 1;
  95   2                      _nop_();
  96   2                      CLK = 0;
  97   2                      senddata<<=1;
  98   2              }
  99   1      }
 100          
 101          
 102          /*******************************写指令子程序***************************/
 103          void WriteCmd( uchar cmd )
 104          {       
 105   1              Send(0xf8);
 106   1              Send(cmd&0xf0);
 107   1              Send(cmd<<4);   
 108   1              DelayUS(20);
 109   1      }
 110          
 111          /***********************************写数据子程序****************************/
 112          void WriteData(unsigned char Data)
 113          {
 114   1              Send(0xfa);
 115   1              Send(Data&0xf0);
 116   1              Send(Data<<4);
 117   1              DelayUS(20);     
C51 COMPILER V7.50   LCD_SHOW                                                              06/24/2007 16:02:39 PAGE 3   

 118   1      }
 119          
 120          
 121          /*********************************************************** 
 122          函数名称: 
 123          函数功能:显示16X16汉字  带有X,Y坐标 
 124          入口参数: 
 125          出口参数: 
 126          备 注:  X(0~~7)Y(0~~3)
 127          ***********************************************************/
 128          void DisHz16x16(uchar x,uchar y,uchar *Data)
 129          {
 130   1              WriteCmd( addr[(8*y+x)] );
 131   1              WriteData( *Data );
 132   1              WriteData( *(Data+1) );
 133   1      }
 134          /*********************************************************** 
 135          函数名称: 
 136          函数功能: 显示2位数字
 137          入口参数: 
 138          出口参数: 
 139          备 注: 
 140          ***********************************************************/
 141          void Dis2bitNumber( uchar x,uchar y, uint Number )
 142          {
 143   1              WriteCmd( addr[(8*y+x)] );
 144   1              WriteData( LCDNumber[(Number/16)] );
 145   1              WriteData( LCDNumber[(Number%16)] );
 146   1              WriteCmd( 0x30 );       
 147   1      }
 148          /*********************************************************** 
 149          函数名称: 
 150          函数功能: 显示4位数字
 151          入口参数: 
 152          出口参数: 
 153          备 注: 
 154          ***********************************************************/
 155          void Dis4bitNumber( uchar x,uchar y, uint Number )
 156          {
 157   1              WriteCmd( addr[(8*y+x)] );
 158   1              WriteData( LCDNumber[Number/1000] );
 159   1              WriteData( LCDNumber[(Number/100)%10] );
 160   1              WriteCmd( addr[(8*y+x+1)] );
 161   1              WriteData( LCDNumber[(Number/10)%10] );
 162   1              WriteData( LCDNumber[(Number%10)] );
 163   1              WriteCmd( 0x30 );       
 164   1      }
 165          /*********************************************************** 
 166          函数名称: 
 167          函数功能: 
 168          入口参数: 
 169          出口参数: 
 170          备 注: 
 171          ***********************************************************
 172          void DisInput(unsigned char Input)
 173          {
 174                  if(CountInput%2==0)
 175                  {
 176                          if(CountInput==64)
 177                                  {
 178                                  CountInput = 0;
 179                                  CleanScreen();
C51 COMPILER V7.50   LCD_SHOW                                                              06/24/2007 16:02:39 PAGE 4   

 180                                  }
 181          
 182                  WriteCmd( addr[CountInput/2] );
 183                  }
 184                  WriteData(Input);
 185                  
 186                  if(Input==99)
 187                  {
 188                  WriteData(0x20);
 189                  }
 190                  else  
 191                  {
 192                  WriteData(LCDNumber[Input]);
 193                  }
 194          
 195                  CountInput++;
 196          
 197          }
 198          /*********************************************************** 
 199          函数名称: 
 200          函数功能:显示4位数字,其中两位为小数 
 201          入口参数: 
 202          出口参数: 
 203          备 注: 
 204          ***********************************************************
 205          void Dis5bitNumber( uchar x,uchar y, uint Number )
 206          {
 207                  WriteCmd( addr[(8*y+x)] );
 208                  WriteData( LCDNumber[Number/1000] );
 209                  WriteData( LCDNumber[(Number/100)%10] );
 210                  WriteCmd( addr[(8*y+x+1)] );
 211                  WriteData(0x2e);
 212                  WriteData( LCDNumber[(Number/10)%10] );
 213                  WriteCmd( addr[(8*y+x+2)] );
 214                  WriteData( LCDNumber[(Number%10)] );
 215          
 216                  WriteCmd( 0x30 );       
 217          }
 218          /*********************************************************** 
 219          函数名称: 
 220          函数功能:清屏 
 221          入口参数: 
 222          出口参数: 
 223          备 注: 
 224          ***********************************************************/
 225          void CleanScreen( void )
 226          {
 227   1              WriteCmd( 0x01 );
 228   1              
 229   1      }       
 230          /*********************************************************** 
 231          函数名称: 
 232          函数功能:清除单位块 
 233          入口参数: 
 234          出口参数: 
 235          备 注: 
 236          ***********************************************************
 237          void CleanUnit( uchar x,uchar y )
 238          {
 239                  WriteCmd( addr[(8*y+x)] );
 240                  WriteData( 0x20 );
 241                  WriteData( 0x20 );
C51 COMPILER V7.50   LCD_SHOW                                                              06/24/2007 16:02:39 PAGE 5   

 242          }
 243          
 244          /*********************************************************** 
 245          函数名称: 
 246          函数功能:
 247          入口参数: 
 248          出口参数: 
 249          备 注: 
 250          ***********************************************************/
 251          void DisString(unsigned char *String,unsigned char Length)
 252          {
 253   1              unsigned char i;
 254   1              WriteCmd( addr[0] );
 255   1              for(i=0;i<=Length;i++)
 256   1              {
 257   2              if(i%2==0)
 258   2              {
 259   3                      if(i==64)
 260   3                              {
 261   4                              CleanScreen();
 262   4                              }
 263   3              WriteCmd( addr[i/2] );
 264   3              }
 265   2              WriteData(String[i]);
 266   2              }
 267   1      } 
 268          /*********************************************************** 
 269          函数名称: 
 270          函数功能:显示声音 
 271          入口参数: 
 272          出口参数: 
 273          备 注: 
 274          ***********************************************************
 275          void DisSoundValue( void )
 276          {
 277          
 278          
 279                                  
 280          }
 281          
 282          
 283          /*********************************************************** 
 284          函数名称: 
 285          函数功能: 
 286          入口参数: 
 287          出口参数: 
 288          备 注: 秒 分 时 日 月 星期 年 
 289          ***********************************************************
 290          void DisDs1302( void )
 291          {
 292                  Get1302(&Time[0]);
 293                  Dis2bitNumber(0,0,Time[6]);
 294                  DisHz16x16(1,0,&nian);
 295                  Dis2bitNumber(2,0,Time[4]);
 296                  DisHz16x16(3,0,&yue);
 297                  Dis2bitNumber(4,0,Time[3]);
 298                  DisHz16x16(5,0,&ri);
 299          //      Dis2bitNumber(6,0,Time[2]);
 300          //      DisHz16x16(7,0,&ri);
 301                  Dis2bitNumber(0,1,Time[2]);
 302                  WriteData(0x3a);
 303                  Dis2bitNumber(2,1,Time[1]);
C51 COMPILER V7.50   LCD_SHOW                                                              06/24/2007 16:02:39 PAGE 6   

 304                  WriteData(0x3a);
 305                  Dis2bitNumber(4,1,Time[0]);
 306                  DisHz16x16(5,1,&xing);
 307                  DisHz16x16(6,1,&qi);
 308                  Dis2bitNumber(7,1,Time[5]);
 309          }
 310          
 311          /*********************************************************** 
 312          函数名称: 
 313          函数功能:控制对目录的操作 
 314          入口参数:浮标X,Y坐标 
 315          出口参数: 
 316          备 注: 
 317          ***********************************************************/
 318          


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