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

📄 kszong.lst

📁 c8051最小系统板的个部分调试
💻 LST
字号:
C51 COMPILER V7.50   KSZONG                                                                08/25/2007 15:03:30 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE KSZONG
OBJECT MODULE PLACED IN KSzong.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE KSzong.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**函数名称有修改**/
   2          
   3          #include<stdio.h>
   4          
   5          #include"KSzong.h"
   6          
   7          #include"absacc.h"
   8          
   9          #define RSL   XBYTE[0XF6FF]
  10          #define RSR   XBYTE[0XFaFF]
  11          
  12          #define WI1  XBYTE[0XF4FF]
  13          #define WD1  XBYTE[0XF5FF] 
  14          #define RW1  XBYTE[0XF7FF] 
  15          
  16          #define WI2  XBYTE[0XF8FF] 
  17          #define WD2  XBYTE[0XF9FF]
  18          #define RW2  XBYTE[0XFBFF]
  19          
  20          void Delay_us(unsigned int DelayTime)
  21           {
  22   1         while(DelayTime) DelayTime--;
  23   1        }
  24          
  25          void Delay_x10ms(unsigned char DelayTime)   //***************10ms延时**********//
  26             {
  27   1             unsigned char i,j,k;
  28   1             for(i=0;i<DelayTime;i++)
  29   1                for(j=0;j<10;j++)
  30   1                   for(k=0;k<120;k++) {;}
  31   1          }
  32          
  33          /*---------------------------------------------------------------------------- 
  34          下面这个函数用于液晶模块的忙信号检测。 
  35          ----------------------------------------------------------------------------*/ 
  36          /*void LCD_Check_Busy(void)
  37            {
  38              uchar a=0;
  39                  uchar b=0;
  40             while(1)
  41                  { a=RS;
  42                    b=a&0x80;
  43                    if(b==0x80) break;
  44               }
  45                                                                    //
  46            }*/
  47          
  48          /*---------------------------------------------------------------------------- 
  49          下面这个函数用于向液晶模块写入控制指令代码。 
  50          函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。 
  51                        CS_Num  ------ 左右半屏的选数值 
  52          ----------------------------------------------------------------------------*/ 
  53          void LCD_WriteCommand(uchar Command, uchar CS_Num) 
  54          { 
  55   1        if(CS_Num==1)                 /*选择左半屏*/
C51 COMPILER V7.50   KSZONG                                                                08/25/2007 15:03:30 PAGE 2   

  56   1         { while(0x80&RSL);WI1=Command;
  57   2              }
  58   1        else if(CS_Num==2)    /*选择右半屏*/
  59   1         { while(0x80&RSR);WI2=Command;
  60   2              }
  61   1      } 
  62          
  63          
  64          /*---------------------------------------------------------------------------- 
  65          下面这个函数用于向液晶模块写入显示数据。 
  66          函数入口参数:Data------ 向液晶模块写入的显示数据 。 
  67                      CS_Num-------左右半屏的选数值 
  68          ----------------------------------------------------------------------------*/ 
  69          void LCD_WriteData(uchar Data,uchar CS_Num) 
  70          {  
  71   1        //LCD_Check_Busy();
  72   1       
  73   1        if(CS_Num==1)          /*选择左半屏*/
  74   1         {while(0x80&RSL);WD1=Data;
  75   2              }
  76   1        else if(CS_Num==2)  /*选择右半屏*/
  77   1         { while(0x80&RSR);WD2=Data;
  78   2              }
  79   1      }
  80          
  81          
  82          /*---------------------------------------------------------------------------
  83          下面这个函数用于向液晶模块初始化。
  84          如果没有写完一个半屏的数据就要充分结合此函数来达到要显示的效果
  85          ---------------------------------------------------------------------------*/
  86          void LCD_Initial(void) 
  87          {   
  88   1        //LCD_RST = 0;    /* 置复位信号为低电平 */ 
  89   1        //Delay_us(2);  
  90   1        //LCD_RST = 1;    /* 置复位信号为高电平 */  
  91   1        LCD_WriteCommand(0x3F,Left);    /*显示开*/
  92   1        LCD_WriteCommand(0x3F,Right);
  93   1        LCD_WriteCommand(0xC0,Left);    /*起始行*/
  94   1        LCD_WriteCommand(0xC0,Right);                     
  95   1        LCD_WriteCommand(0xB8,Left);    /*起始页*/
  96   1        LCD_WriteCommand(0xB8,Right);  
  97   1        LCD_WriteCommand(0x40,Left);    /*起始列*/
  98   1        LCD_WriteCommand(0x40,Right); 
  99   1      } 
 100          
 101          /*---------------------------------------------------------------------------
 102          *下面这个函数用于向液晶模块左右半屏写入图象显示数据。
 103          *函数入口参数:DisBuf-----向液晶模块写入的图象显示数据
 104                          Side_Num-----液晶模块左右半屏的选择
 105          ---------------------------------------------------------------------------*/
 106          void LCD_Graph_Play(uchar *DisBuf,uchar Side_Num)
 107           {
 108   1         uchar i,k,COM;
 109   1         
 110   1         for(i=0;i<8;i++)                               
 111   1         {
 112   2               COM=0xB8+i;
 113   2           LCD_WriteCommand(COM,Side_Num);    
 114   2               COM=0x40;
 115   2               LCD_WriteCommand(COM,Side_Num);  
 116   2                       
 117   2           for(k=0;k<64;k++)
C51 COMPILER V7.50   KSZONG                                                                08/25/2007 15:03:30 PAGE 3   

 118   2            {
 119   3                  LCD_WriteData(DisBuf[i*64+k],Side_Num);
 120   3                 }
 121   2              }
 122   1               Delay_us(2);
 123   1        }
 124          
 125          /*---------------------------------------------------------------------------
 126          *下面这个函数用于向液晶模块左右半屏写入汉字显示数据。
 127          *函数入口参数:DisBuf-----向液晶模块写入的汉字显示数据
 128                          Side_Num------液晶模块左右半屏的选择数
 129                                  Page_Num------开始显示页数(0----7),共八页
 130                               Clm_Num------开始显示列数 (16的倍数),共64列
 131                                  Word_Num------每页显示的汉字个数(最多为4个)
 132          注意:输入字应该是16*16
 133          ---------------------------------------------------------------------------*/
 134          void LCD_Play(uchar Page_Num,uchar Clm_Num,uchar Word_Num,uchar *DisBuf,uchar Side_Num)
 135           {
 136   1        uchar i,k,COM;
 137   1                                
 138   1        COM=0xB8+Page_Num;
 139   1        LCD_WriteCommand(COM,Side_Num);    
 140   1        COM=0x40+Clm_Num;
 141   1        LCD_WriteCommand(COM,Side_Num);
 142   1        for(i=0;i<Word_Num;i++)
 143   1         {             
 144   2          for(k=0;k<16;k++)
 145   2           {
 146   3                LCD_WriteData(DisBuf[k+32*i],Side_Num);                /*显示一个汉字需要16*16bit,
 147   3                                                                  一个汉字上/下半部各占一页
 148   3                                                                 32个字节的数据*/
 149   3                }
 150   2              }
 151   1      
 152   1        Page_Num++;
 153   1        COM=0xB8+Page_Num;
 154   1        LCD_WriteCommand(COM,Side_Num);    
 155   1        COM=0x40+Clm_Num;
 156   1        LCD_WriteCommand(COM,Side_Num);
 157   1        for(i=0;i<Word_Num;i++)
 158   1         {
 159   2          for(k=16;k<32;k++)
 160   2           {
 161   3                LCD_WriteData(DisBuf[k+32*i],Side_Num);
 162   3                }
 163   2              }
 164   1        Delay_us(2);
 165   1       }
 166          
 167          
 168          /**************************输出宋体的数字8*16***********************/
 169          
 170          
 171          void LCD_Num(uchar Page_Num,uchar Clm_Num,uchar count,uchar *DisBuf,uchar Side_Num)
 172           {
 173   1        uchar k,COM;
 174   1                                
 175   1        COM=0xB8+Page_Num;
 176   1        LCD_WriteCommand(COM,Side_Num);    
 177   1        COM=0x40+Clm_Num;
 178   1        LCD_WriteCommand(COM,Side_Num);                
 179   1        for(k=0;k<8;k++)
C51 COMPILER V7.50   KSZONG                                                                08/25/2007 15:03:30 PAGE 4   

 180   1       {
 181   2                LCD_WriteData(DisBuf[k+16*count],Side_Num);
 182   2        }
 183   1      
 184   1      
 185   1        Page_Num++;
 186   1        COM=0xB8+Page_Num;
 187   1        LCD_WriteCommand(COM,Side_Num);    
 188   1        COM=0x40+Clm_Num;
 189   1        LCD_WriteCommand(COM,Side_Num);
 190   1        for(k=8;k<16;k++)
 191   1       {
 192   2                LCD_WriteData(DisBuf[k+16*count],Side_Num);
 193   2        }
 194   1              
 195   1        Delay_us(2);
 196   1       }
 197          
 198          
 199          /**************************输出英文字母8*8**************************
 200                      
 201                          功能:下面这个函数用于向液晶模块左右半屏写入~~一个字母~~的显示数据。
 202          
 203                          备注:@@@@@~~~~~~There is a super secret in 'Table13[]'~~~~~~@@@@@;
 204                                一个字母,数字,标点都可以由八个字节的数据确定;
 205          
 206          *函数入口参数:DisBuf-----向液晶模块写入英文字母的显示数据
 207                          Side_Num------液晶模块左右半屏的选择数
 208                                  Page_Num------开始显示页数(0----7),共八页
 209                               Clm_Num------开始显示列数 (8的倍数),共64列
 210                                  Count-----@@@@@~~~~~Table13[]里面的行号~~~~~@@@@@
 211          
 212          ****************************************************************/
 213          void LCD_English(uchar Page_Num,uchar Clm_Num,uchar Count,uchar *DisBuf,uchar Side_Num)
 214           {
 215   1          uchar k,COM;                          
 216   1          COM=0xB8+Page_Num;
 217   1          LCD_WriteCommand(COM,Side_Num);    
 218   1          COM=0x40+Clm_Num;
 219   1          LCD_WriteCommand(COM,Side_Num); 
 220   1              for(k=0;k<8;k++)
 221   1          {
 222   2                LCD_WriteData(DisBuf[k+8*Count],Side_Num);
 223   2                }
 224   1       
 225   1        }
 226          
 227          
 228          /******************************输出单个点******************************
 229          功能:在第Page_Num页第Clm_Num列显示数组DisBuf第boxing+1个数即DisBuf[boxing];
 230                
 231                    “设置了页地址和列地址就唯一确定了显示RAM中的一个单元这样MPU 就可以
 232                 用读写指令读出该单元中的内容或向该单元写进一个字节数据”
 233          
 234          入口参数:Page_Num
 235                             Clm_Num
 236                             *DisBuf:
 237                             boxing
 238                             Side_Num             ;
 239          *************************************************************************/
 240          
 241          void lcds(uchar Page_Num,uchar Clm_Num,uchar *DisBuf,uchar boxing,uchar Side_Num)
C51 COMPILER V7.50   KSZONG                                                                08/25/2007 15:03:30 PAGE 5   

 242          {
 243   1          uchar COM;                            
 244   1          COM=0xB8+Page_Num;
 245   1          LCD_WriteCommand(COM,Side_Num);    
 246   1          COM=0x40+Clm_Num;
 247   1          LCD_WriteCommand(COM,Side_Num);  
 248   1              LCD_WriteData(DisBuf[boxing],Side_Num); 
 249   1      }
 250          
 251          /*---------------------------------------------------------------------------
 252          下面这个函数用于液晶模块的清屏。
 253          ---------------------------------------------------------------------------*/
 254          void LCD_CLR(uchar Side_Num)
 255           {
 256   1         uchar i,k,COM;
 257   1         
 258   1         for(i=0;i<8;i++)                               
 259   1         {
 260   2               COM=0xB8+i;
 261   2           LCD_WriteCommand(COM,Side_Num);    
 262   2               COM=0x40;
 263   2               LCD_WriteCommand(COM,Side_Num);  
 264   2                       
 265   2           for(k=0;k<64;k++)
 266   2            {
 267   3                  LCD_WriteData(0x00,Side_Num);
 268   3                 }
 269   2              }
 270   1               Delay_us(2);
 271   1        }
 272          
 273          
 274          /*---------------------------------------------------------------------------
 275          下面这个函数为主函数,根据程序要实现的功能写相应的应用程序
 276          ---------------------------------------------------------------------------*/
 277          
 278          
 279          


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