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

📄 ts12864a.lst

📁 基于8051F实现导纳分析仪,键盘,液晶,功能都全有,其中包含测频,测相,测高电平,测低电平,测幅.等多种算法思想.用C语言实现.绝对原创!
💻 LST
字号:
C51 COMPILER V8.02   TS12864A                                                              04/04/2008 19:55:17 PAGE 1   


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

line level    source

   1          /*===============================================================*/
   2          /*函数名称: TS12864A.c                                          */
   3          /*函数功能: 液晶显示启动                                        */ 
   4          /*入口参数: P2---------------------------------------液晶数据传输
   5                       P3----------------------------------------液晶控制脚*/       
   6          /*有无返回: 无                                                  */
   7          /*修改记录: 无修改记录                                          */
   8          /*编写作者: t483-4-19chenyong                                   */
   9          /*编写日期: 2007-4-06                                           */
  10          /*===============================================================*/
  11          #include  "common.h"
  12          #include  "TS12864A.h"
  13          #include  "String_pixel.h"
  14          /*===============================================================*/
  15          /*判断状态                                                       */
  16          /*===============================================================*/                              
  17          void LCD_Busy(void)     
  18          {
  19   1              LCD_RS=0;                   // 状态标志位和地址计数读入DB7和DB6-DB0                      
  20   1              LCD_RW=1;                                                
  21   1              LCD_DATA=0xff;                  //初始化
  22   1              while (1) 
  23   1              {
  24   2                LCD_EN=1;
  25   2                if (LCD_DATA<0x80)break;//判断是否忙
  26   2                LCD_EN=0;
  27   2              } 
  28   1              LCD_EN=0;
  29   1      }
  30          
  31          /*===============================================================*/
  32          /*写数据                                                         */
  33          /*===============================================================*/
  34          void LCD_Write_Data(uchar ddata)
  35          {
  36   1              LCD_Busy();            //检测是否处于忙的状态
  37   1              LCD_RS = 1;
  38   1              LCD_RW = 0;
  39   1              LCD_DATA = ddata;
  40   1              LCD_EN = 1;
  41   1              LCD_EN = 0;
  42   1      }
  43          /*===============================================================*/
  44          /*写命令                                                         */
  45          /*===============================================================*/
  46          
  47          void LCD_Write_Command(uchar command)
  48          {
  49   1              LCD_Busy();            //检测是否处于忙的状态
  50   1              LCD_RS = 0;
  51   1              LCD_RW = 0;
  52   1              LCD_DATA = command;
  53   1              LCD_EN = 1;
  54   1              LCD_EN = 0;
  55   1      }
C51 COMPILER V8.02   TS12864A                                                              04/04/2008 19:55:17 PAGE 2   

  56          
  57          void CleanScreen(void)
  58          {
  59   1        uchar i, j, k;
  60   1      
  61   1        for (i=0;i<8;i++)                     
  62   1        {
  63   2        LCD_CSA = 1;
  64   2        LCD_CSB = 1;
  65   2        LCD_Write_Command(0x40);                //设置列地址
  66   2        LCD_Write_Command(0xb8+i);      //设置页地址
  67   2        LCD_CSA = 1;
  68   2        LCD_CSB = 0;
  69   2        for(j=0;j<128;j++) 
  70   2        LCD_Write_Data(0x00);
  71   2        LCD_CSA = 0;
  72   2        LCD_CSB = 1;
  73   2        for(k=64;k<128;k++) 
  74   2        LCD_Write_Data(0x00);
  75   2        }
  76   1      }  
  77          
  78          /*===============================================================*/
  79          /* 清屏                                                        
  80          
  81             y ------------------------------------------------------纵轴位置
  82             yy------------按LCD显示4行字来计算,0,代表第一行,3,代表第四行;
  83             mod---------------------------清屏方式,
  84             0-------------------------------------------------------按行清屏;
  85             1-------------------------------------------------------全部清屏;
  86          */
  87          /*===============================================================*/
  88          /*void LCD_Cls_xy(uchar mod, uchar yy)
  89          {
  90                  uchar x, y;
  91                  uchar value_temp = 0;
  92                  value_temp = 2*yy;
  93                  switch(mod)
  94                  {
  95                          case 0:         //按行清屏
  96                                  {       
  97                                  for (y=value_temp;y<value_temp+1;y++)
  98                                          for(x=0;x<128;x++) 
  99                                  Dis_Play(x,y,0);
 100                                   }
 101          
 102                          case 1:    //全部清屏
 103                                   {      
 104                                          for (y=0;y<8;y++)                        //清屏
 105                                          {
 106                                                  for(x=0;x<128;x++) 
 107                                                  Dis_Play(x,y,0);
 108                                          }
 109          
 110                                   }  
 111                  }
 112          
 113          }*/ 
 114          /*===============================================================*/
 115          /*设置x,y位置                                                   */
 116          /*===============================================================*/
 117          void LCD_Set_xy(unsigned char x,unsigned char y)
C51 COMPILER V8.02   TS12864A                                                              04/04/2008 19:55:17 PAGE 3   

 118          {
 119   1      
 120   1        LCD_CSA = 1;
 121   1        LCD_CSB = 1;
 122   1      
 123   1        LCD_Write_Command(0x40|x);
 124   1        LCD_Write_Command(0xb8|y);
 125   1      
 126   1        if (x>=64)               //判断是否显示半面,如果大于64则全屏显示
 127   1          {
 128   2                LCD_CSA=0;
 129   2                LCD_CSB=1;
 130   2              } 
 131   1              else                       //小于64则半屏显示
 132   1              {
 133   2                LCD_CSA=1;
 134   2                LCD_CSB=0;      
 135   2              }
 136   1              LCD_DATA=0xff;                  //IO口将电平拉高
 137   1      }
 138          /*===============================================================*/
 139          /*函数名称: Dis_Play.c                                          */
 140          /*函数功能: 显示汉字,fb==1:反白显示                            */
 141          /*函数说明: 具体说明如下:
 142                       x---------------------------------------------横轴位置                                                                                       
 143                       y---------------------------------------------纵轴位置
 144                                   n-------------------------------------数据在表中的位置 
 145                                   dis_value-----------------------------待显示汉字的代码
 146                                                                           */
 147          /*修改记录: 无修改记录                                          */
 148          /*编写日期: 2007-3-17                                           */
 149          /*===============================================================*/
 150          void Dis_Play(unsigned char x,unsigned char y,unsigned char dis_value)
 151          {
 152   1              LCD_Set_xy(x,y);
 153   1              LCD_Write_Data(dis_value);
 154   1      }
 155          
 156          void LCD_Init(void)                            
 157          {
 158   1      
 159   1              LCD_CSA = 1;
 160   1              LCD_CSB = 1;                      //控制器全开
 161   1              LCD_Write_Command(0x3f);  //开显示
 162   1              LCD_Write_Command(0xc0);  //设置起始地址
 163   1      
 164   1      }
 165          
 166          /*===============================================================*/
 167          /*函数名称: Display_Character.c                                 */
 168          /*函数功能: 显示汉字,fb==1:反白显示                            */
 169          /*函数说明: 具体说明如下:
 170                       x---------------------------------------------横轴位置                                                                                       
 171                       y---------------------------------------------纵轴位置
 172                                   n-------------------------------------数据在表中的位置 
 173                                   dis_table-----------------------------待显示数据代码表
 174                                   dis_value-----------------------------待显示汉字的代码
 175                                                                           */
 176          /*修改记录: 无修改记录                                          */
 177          /*编写日期: 2007-3-17                                           */
 178          /*===============================================================*/
 179          void Display_Character(unsigned char x,unsigned char y,unsigned char n) 
C51 COMPILER V8.02   TS12864A                                                              04/04/2008 19:55:17 PAGE 4   

 180          {
 181   1              unsigned char i,dis_value;                        
 182   1              for(i=0;i<16;i++)
 183   1              {
 184   2                switch(y) 
 185   2                { 
 186   3                   case 1: dis_value=dis_table[i+n*32];      //确定显示的值,上半部分
 187   3                           Dis_Play(x*8+i,1,dis_value);
 188   3                           dis_value=dis_table[i+n*32+16];   //确定显示的值,上半部分
 189   3                           Dis_Play(x*8+i,2,dis_value);
 190   3                                       break;
 191   3                   case 3: dis_value=dis_table[i+n*32];      //确定显示的值,上半部分
 192   3                           Dis_Play(x*8+i,3,dis_value);
 193   3                           dis_value=dis_table[i+n*32+16];   //确定显示的值,上半部分
 194   3                           Dis_Play(x*8+i,4,dis_value);
 195   3                                       break;
 196   3                   case 5: dis_value=dis_table[i+n*32];      //确定显示的值,上半部分
 197   3                           Dis_Play(x*8+i,5,dis_value);
 198   3                           dis_value=dis_table[i+n*32+16];   //确定显示的值,上半部分
 199   3                           Dis_Play(x*8+i,6,dis_value);
 200   3                                       break;
 201   3                       default:break;
 202   3                }
 203   2              }
 204   1      }
 205          
 206          /*===============================================================*/
 207          /*函数名称: Display_Char.c                                      */
 208          /*函数功能: 显示字符,fb==1:反白显示                            */
 209          /*函数说明: 具体说明如下:
 210                       x---------------------------------------------横轴位置                                                                                       
 211                       y---------------------------------------------纵轴位置
 212                                   n-------------------------------------数据在表中的位置 
 213                                   dis_table-----------------------------待显示数据代码表
 214                                   dis_value-----------------------------待显示汉字的代码
 215                                                                           */
 216          /*修改记录: 无修改记录                                          */
 217          /*编写日期: 2007-3-17                                           */
 218          /*===============================================================*/
 219          void Display_Char(unsigned char x,unsigned char y,unsigned char n)
 220          {
 221   1              unsigned char i,dis_value;
 222   1              for (i=0;i<8;i++)
 223   1              {
 224   2                 dis_value=shuzi_table[i+n*16];
 225   2                 Dis_Play(x*8+i+1,y,dis_value);
 226   2                 dis_value=shuzi_table[i+n*16+8]; 
 227   2                 Dis_Play(x*8+i+1,y+1,dis_value);
 228   2              }
 229   1      } 


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