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

📄 fyd12864.lst

📁 利用DS3102时钟芯片跟12864液晶制作简单的多功能万年历
💻 LST
字号:
C51 COMPILER V8.02   FYD12864                                                              10/15/2008 12:11:27 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE FYD12864
OBJECT MODULE PLACED IN FYD12864.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FYD12864.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "FYD12864.h"
   2          
   3          //IO输入输出控制
   4          unsigned char code AC_TABLE[]={
   5          0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,      //第一行汉字位置
   6          0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,      //第二行汉字位置
   7          0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,      //第三行汉字位置
   8          0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,      //第四行汉字位置
   9          };
  10          
  11          //短延时函数:ShortDelay()
  12          void ShortDelay(uchar i)
  13          {
  14   1              for(;i>0;i--) ;
  15   1              }
  16                  
  17          //长延时函数:LongDelay()
  18          void LongDelay(uint i)
  19          {
  20   1              uint j;
  21   1              for(;i>0;i--)
  22   1                      { for(j=1000;j>0;j--);}
  23   1      }
  24                  
  25          
  26          
  27          
  28          ////////////////////////////////////////////////
  29          ///////////////////////////////////////////////
  30          void SendByteLCD(uchar WLCDData)
  31          {
  32   1      uchar i;
  33   1      for(i=0;i<8;i++)
  34   1      {
  35   2       if((WLCDData<<i)&0x80)SID=1;
  36   2       else SID=0;
  37   2       SCLK=0; 
  38   2       SCLK=1; 
  39   2      }
  40   1      }
  41          
  42           SPIWR(uchar Wdata,uchar RS)
  43           {
  44   1         SendByteLCD(0xf8+(RS<<1));
  45   1         SendByteLCD(Wdata&0xf0);
  46   1         SendByteLCD((Wdata<<4)&0xF0);
  47   1       }
  48          
  49          
  50          
  51          //写指令函数:WriteInstruc()
  52          void WriteInstruc(uchar CMD)
  53          {
  54   1       SPIWR(CMD,0);
  55   1       ShortDelay(90);//
C51 COMPILER V8.02   FYD12864                                                              10/15/2008 12:11:27 PAGE 2   

  56   1      }
  57          
  58          //写一字节数据函数:WriteOneByte()
  59          void WriteOneByte(uchar Data)
  60          {
  61   1       SPIWR(Data,1);
  62   1      }
  63          
  64          //初始化函数:InitLCD()
  65          void InitLCD(void)
  66          {
  67   1        RST=0;
  68   1        ShortDelay(50);
  69   1        RST=1;
  70   1       
  71   1           WriteInstruc(0x30);//功能设置,一次送8位数据,基本指令集
  72   1           WriteInstruc(0x0C);//0000,1100  整体显示,游标off,游标位置off
  73   1           WriteInstruc(0x01);//0000,0001 清DDRAM
  74   1           WriteInstruc(0x02);//0000,0010 DDRAM地址归位
  75   1           WriteInstruc(0x80);//1000,0000 设定DDRAM 7位地址000,0000到地址计数器AC//     
  76   1        //   WriteInstruc(0x04);//点设定,显示字符/光标从左到右移位,DDRAM地址加 一//   
  77   1         //  WriteInstruc(0x0C);//显示设定,开显示,显示光标,当前显示位反白闪动
  78   1      }
  79          
  80          //显示一个汉字(16x16)函数:DispOneWord()
  81          void DispOneWord(uchar X,uchar Y,uint Word)        
  82          {                                                                                          
  83   1        uchar Disp_Address;                                                    
  84   1        uchar Address_H;                                                               
  85   1        uchar Address_L;                                                               
  86   1                                                                                                       
  87   1        if((X == 0x00)||(X == 0x02)) // 0,2行                  
  88   1              Address_H = 0x80;                                                        
  89   1        else // 1,3行                                                                   
  90   1              Address_H = 0x90;                                                         
  91   1                                                                                                        
  92   1        if((X == 0x00)||(X == 0x01)) // 0,1行
  93   1              Address_L = Y;
  94   1        else // 2,3行
  95   1              Address_L = Y + 0x08;                                              
  96   1        Disp_Address = (Address_H | Address_L) & 0xff;
  97   1        SetDDRAM_Add(Disp_Address);                           // Set DDRAM(Disp_Address)
  98   1        WriteOneByte(((Word & 0xff00) >> 8) & 0xff); // H_Byte
  99   1        WriteOneByte(Word & 0xff);             // L_Byte  
 100   1      }
 101          
 102          
 103          /*void disparr(uchar X,uchar Y,char *ptr)        //从x y连续显示三个汉字
 104          
 105          {       uchar Disp_Address;
 106                  uchar Address_H;
 107                  uchar Address_L;
 108                  uchar dispname[6]={0,0,0,0,0,0};
 109                  uchar i;
 110          
 111            if((X == 0x00)||(X == 0x02)) // 0,2行                  
 112                  Address_H = 0x80;                                                        
 113            else // 1,3行                                                                   
 114                  Address_H = 0x90;                                                         
 115                                                                                                            
 116            if((X == 0x00)||(X == 0x01)) // 0,1行
 117                  Address_L = Y;
C51 COMPILER V8.02   FYD12864                                                              10/15/2008 12:11:27 PAGE 3   

 118            else // 2,3行
 119                  Address_L = Y + 0x08;                                              
 120             Disp_Address = (Address_H | Address_L) & 0xff;
 121             SetDDRAM_Add(Disp_Address);          
 122                  for(i=0;i<6;i++)
 123                  dispname[i]=*(ptr+i);
 124                  WriteOneByte(dispname[0] & 0xff); 
 125                  WriteOneByte(dispname[1] & 0xff);
 126                  Disp_Address = (Address_H | Address_L+1) & 0xff;
 127              SetDDRAM_Add(Disp_Address);
 128                  WriteOneByte(dispname[2] & 0xff);
 129                  WriteOneByte(dispname[3] & 0xff);
 130                  Disp_Address = (Address_H| Address_L+2) & 0xff;    //h+2显示正常
 131                  SetDDRAM_Add(Disp_Address);
 132                  WriteOneByte(dispname[4] & 0xff);
 133                  WriteOneByte(dispname[5] & 0xff);
 134          
 135          
 136           }*/
 137          /*//显示两个字符(8x16)函数:DispTwoCharacter()
 138          void DispTwoCharacter(uchar X,uchar Y,uchar Character1,uchar Character2)
 139          {
 140            uchar Disp_Address;
 141            uchar Address_H;
 142            uchar Address_L;
 143            
 144            if((X == 0x00)||(X == 0x02)) // 0,2行
 145                  Address_H = 0x80;
 146            else // 1,3行
 147                  Address_H = 0x90;
 148                  
 149            if((X == 0x00)||(X == 0x01)) // 0,1行
 150                  Address_L = Y;
 151            else // 2,3行
 152                  Address_L = Y + 0x08;
 153            Disp_Address = Address_H | Address_L;
 154            SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
 155            WriteOneByte(Character1);
 156            WriteOneByte(Character2);
 157           }      
 158             */
 159           //显示一个字符函数
 160           void DispOneCharacter(uchar X,uchar Y,uchar  Character)
 161          { uchar Disp_Address;
 162   1        uchar Address_H;
 163   1        uchar Address_L;
 164   1        
 165   1        if((X == 0x00)||(X == 0x02)) // 0,2行
 166   1              Address_H = 0x80;
 167   1        else // 1,3行
 168   1              Address_H = 0x90;
 169   1              
 170   1        if((X == 0x00)||(X == 0x01)) // 0,1行
 171   1              Address_L = Y;
 172   1        else // 2,3行
 173   1              Address_L = Y + 0x08;
 174   1        Disp_Address = Address_H | Address_L;
 175   1        SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
 176   1        WriteOneByte(Character);
 177   1       } 
 178          
 179          
C51 COMPILER V8.02   FYD12864                                                              10/15/2008 12:11:27 PAGE 4   

 180          //连续显示n个字符的数组 最多16个字符
 181          
 182          void disponelinechar(uchar X,uchar Y,uchar  *ptr,uchar m)
 183           {uchar Disp_Address;
 184   1        uchar Address_H;
 185   1        uchar Address_L;
 186   1        uchar i,n,k;
 187   1        uchar dispchar[16];
 188   1           n=m;
 189   1          if((X == 0x00)||(X == 0x02)) // 0,2行
 190   1              Address_H = 0x80;
 191   1        else // 1,3行
 192   1              Address_H = 0x90;
 193   1              
 194   1        if((X == 0x00)||(X == 0x01)) // 0,1行
 195   1              Address_L = Y;
 196   1        else // 2,3行
 197   1              Address_L = Y + 0x08;
 198   1              for(i=0;i<n;i++)
 199   1                 dispchar[i]=*(ptr+i);
 200   1                 k=ceil(n/2);
 201   1                 for(i=0;i<k;i++)
 202   1                 {Disp_Address = (Address_H | Address_L+i)& 0xff;
 203   2             SetDDRAM_Add(Disp_Address);
 204   2             WriteOneByte(dispchar[2*i]& 0xff);
 205   2             WriteOneByte(dispchar[2*i+1]& 0xff);
 206   2              }
 207   1      
 208   1       }
 209          
 210           
 211          /*void disponelinehanzi(uchar X,uchar Y,char *ptr)       //从x y连续显示一行8个汉字
 212          
 213          {       uchar Disp_Address;
 214                  uchar Address_H;
 215                  uchar Address_L;
 216                  uchar dispname[16];
 217                  uchar i;
 218          
 219            if((X == 0x00)||(X == 0x02)) // 0,2行                  
 220                  Address_H = 0x80;                                                        
 221            else // 1,3行                                                                   
 222                  Address_H = 0x90;                                                         
 223                                                                                                            
 224            if((X == 0x00)||(X == 0x01)) // 0,1行
 225                  Address_L = Y;
 226            else // 2,3行
 227                  Address_L = Y + 0x08;                                              
 228             Disp_Address = (Address_H | Address_L) & 0xff;
 229           
 230                  for(i=0;i<16;i++)
 231             dispname[i]=*(ptr+i);
 232             for(i=0;i<8;i++)
 233             { Disp_Address = (Address_H | Address_L+i) & 0xff;
 234                   SetDDRAM_Add(Disp_Address);
 235                  WriteOneByte(dispname[2*i] & 0xff); 
 236                  WriteOneByte(dispname[2*i+1] & 0xff);   }
 237                  
 238            
 239           }
 240          
 241           void readtwocharacter(uchar X,uchar Y,uchar Character1,char Character2)
C51 COMPILER V8.02   FYD12864                                                              10/15/2008 12:11:27 PAGE 5   

 242          { uchar Disp_Address;
 243            uchar Address_H;
 244            uchar Address_L;
 245            
 246            if((X == 0x00)||(X == 0x02)) // 0,2行
 247                  Address_H = 0x80;
 248            else // 1,3行
 249                  Address_H = 0x90;
 250                  
 251            if((X == 0x00)||(X == 0x01)) // 0,1行
 252                  Address_L = Y;
 253            else // 2,3行
 254                  Address_L = Y + 0x08;
 255            Disp_Address = Address_H | Address_L;
 256            SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
 257            Character1=ReadOneByte( );
 258            Character2=ReadOneByte( );
 259           } 
 260            */


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