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

📄 12864final.lst

📁 aduc834单片机
💻 LST
字号:
C51 COMPILER V8.05a   12864FINAL                                                           03/06/2009 16:23:02 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 12864FINAL
OBJECT MODULE PLACED IN 12864final.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 12864final.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*************************************************
   2          *COMPANY    :    北斗星工业化学研究所
   3          
   4          *NAME       :    12864液晶驱动源文件
   5          
   6          *AUTHOR     :    王敬明
   7          
   8          *FUNCTIONG  :    显示汉字和英文字母及数字
   9          
  10          *ADD        :    驱动芯片HD16202
  11          
  12          *VERSION    :    V1.0
  13          
  14          ***************************************************/
  15          #include<ADI/ADuC834.h> 
  16          #include"ziku.h" 
  17          
  18          /***************宏定义及位定义*********************/
  19          #define busy 0x80
  20          #define uchar unsigned char
  21          #define uint unsigned int
  22          #define LCD_DATA P0
  23          void LCD_Clr();
  24          sbit LCD_RS=P2^3;   
  25          sbit LCD_RW=P2^4;       
  26          sbit LCD_EN=P2^5; 
  27          sbit LCD_CSA=P2^6;
  28          sbit LCD_CSB=P2^7;
  29          sbit LCD_RST=P2^2;
  30          
  31          //void delay(uint t)
  32          //{
  33          //      uint i,j;
  34          //      for(i=0;i<t;i++)
  35          //      for(j=0;j<10;j++);
  36          //}
  37          
  38          /***************读液晶状态字*********************/
  39          unsigned char ReadLCDStatus(void) 
  40          { 
  41   1       LCD_DATA = 0xFF;  
  42   1       LCD_RS = 0; 
  43   1       LCD_RW = 1; 
  44   1       LCD_EN = 0; 
  45   1       LCD_EN = 0; 
  46   1       LCD_EN = 1;
  47   1       while (LCD_DATA & busy); //检测忙信号 
  48   1      // delay(1); 
  49   1       LCD_EN = 0; 
  50   1       return(P0); 
  51   1      } 
  52          
  53          /*****************写液晶命令*********************/
  54          void WriteLCD_Command(uchar Command)     
  55          {
C51 COMPILER V8.05a   12864FINAL                                                           03/06/2009 16:23:02 PAGE 2   

  56   1              ReadLCDStatus ();               
  57   1              LCD_RS = 0;       
  58   1              LCD_RW = 0;       
  59   1              LCD_DATA = Command;     
  60   1              LCD_EN = 1;             
  61   1      //      delay(1);
  62   1              LCD_EN = 0;
  63   1      }
  64          
  65          /*****************写液晶数据*********************/
  66          void WriteLCD_Data(unsigned char Data)                  
  67          {                        
  68   1        ReadLCDStatus(); 
  69   1        LCD_RS = 1; 
  70   1        LCD_RW = 0; 
  71   1        LCD_DATA = Data;
  72   1        LCD_EN = 1; 
  73   1      //  delay(1);
  74   1              LCD_EN=0;
  75   1      }
  76          
  77          /*****************初始化液晶*********************/
  78          void LCD_Init()     
  79          {
  80   1              WriteLCD_Command(0x3E);
  81   1              WriteLCD_Command(0xC0);
  82   1              WriteLCD_Command(0x3F);
  83   1              LCD_Clr();
  84   1              LCD_CSB=0;
  85   1              LCD_CSA=1;
  86   1      }
  87          
  88          /*****************显示汉字数据*******************/
  89          /************Page0~7、Rom0~63、汉字数组**********/
  90          void LCD_Display_Word(unsigned char Page,unsigned char Rom,unsigned char *Data)
  91          {
  92   1              unsigned char i;
  93   1              if(Rom>63)
  94   1              {
  95   2                      LCD_CSB=1;
  96   2                LCD_CSA=0;
  97   2              }
  98   1              else
  99   1              {
 100   2                      LCD_CSB=0;
 101   2                LCD_CSA=1;
 102   2              }
 103   1              if((LCD_CSA==1)&&(LCD_CSB==0))
 104   1              {
 105   2                WriteLCD_Command(0xB8+Page);//页地址
 106   2                WriteLCD_Command(0x40+Rom);//列地址
 107   2                for(i=0;i<16;i++)
 108   2                {
 109   3                WriteLCD_Data(Data[i]);
 110   3          }
 111   2          WriteLCD_Command(0xB8+Page+1);//页地址+1
 112   2          WriteLCD_Command(0x40+Rom);//列地址
 113   2          for(i=16;i<32;i++)
 114   2                {
 115   3                WriteLCD_Data(Data[i]);
 116   3          }
 117   2        }
C51 COMPILER V8.05a   12864FINAL                                                           03/06/2009 16:23:02 PAGE 3   

 118   1        if((LCD_CSA==0)&&(LCD_CSB==1))
 119   1        {
 120   2              WriteLCD_Command(0xB8+Page);//页地址
 121   2                WriteLCD_Command(0x40+(Rom-64));//列地址
 122   2                for(i=0;i<16;i++)
 123   2                {
 124   3                WriteLCD_Data(Data[i]);
 125   3          }
 126   2          WriteLCD_Command(0xB8+Page+1);//页地址+1
 127   2          WriteLCD_Command(0x40+(Rom-64));//列地址
 128   2          for(i=16;i<32;i++)
 129   2                {
 130   3                WriteLCD_Data(Data[i]);
 131   3          }
 132   2        }
 133   1      }
 134          
 135          /*****************显示字符数据*******************/
 136          void LCD_Display_Eng(unsigned char Page,unsigned char Rom,unsigned char *Data)
 137          {//页0~7、列0~63、汉字数组
 138   1              unsigned char i;
 139   1              if(Rom>63)
 140   1              {
 141   2                      LCD_CSB=1;
 142   2                LCD_CSA=0;
 143   2              }
 144   1              else
 145   1              {
 146   2                      LCD_CSB=0;
 147   2                LCD_CSA=1;
 148   2              }
 149   1              if((LCD_CSA==1)&&(LCD_CSB==0))
 150   1              {
 151   2                WriteLCD_Command(0xB8+Page);//页地址
 152   2                WriteLCD_Command(0x40+Rom);//列地址
 153   2                for(i=0;i<8;i++)
 154   2                {
 155   3                WriteLCD_Data(Data[i]);
 156   3          }
 157   2          WriteLCD_Command(0xB8+Page+1);//页地址+1
 158   2          WriteLCD_Command(0x40+Rom);//列地址
 159   2          for(i=8;i<16;i++)
 160   2                {
 161   3                WriteLCD_Data(Data[i]);
 162   3          }
 163   2        }
 164   1        if((LCD_CSA==0)&&(LCD_CSB==1))
 165   1        {
 166   2              WriteLCD_Command(0xB8+Page);//页地址
 167   2                WriteLCD_Command(0x40+(Rom-64));//列地址
 168   2                for(i=0;i<8;i++)
 169   2                {
 170   3                WriteLCD_Data(Data[i]);
 171   3          }
 172   2          WriteLCD_Command(0xB8+Page+1);//页地址+1
 173   2          WriteLCD_Command(0x40+(Rom-64));//列地址
 174   2          for(i=8;i<16;i++)
 175   2                {
 176   3                WriteLCD_Data(Data[i]);
 177   3          }
 178   2        }
 179   1      }
C51 COMPILER V8.05a   12864FINAL                                                           03/06/2009 16:23:02 PAGE 4   

 180          
 181          /********************清屏幕**********************/
 182          void LCD_Clr()      
 183          {
 184   1        unsigned char j,i;
 185   1              WriteLCD_Command(0xB8);
 186   1              WriteLCD_Command(0x40);
 187   1              for(i=0;i<8;i++)
 188   1              {
 189   2                WriteLCD_Command(0xB8+i);
 190   2                WriteLCD_Command(0x40);
 191   2                      for(j=0;j<128;j++)
 192   2                {
 193   3                  WriteLCD_Data(0x00);
 194   3                }
 195   2              }
 196   1      }
 197          
 198          /********************显示文档*********************/
 199          void Display_Text(void)
 200          {
 201   1        LCD_Display_Word(0,16,dis1); //北
 202   1        LCD_Display_Word(0,32,dis2); //斗
 203   1        LCD_Display_Word(0,48,dis3); //星
 204   1        LCD_Display_Word(0,64,dis4); //工
 205   1        LCD_Display_Word(0,80,dis5); //化
 206   1        LCD_Display_Word(0,96,dis6); //所
 207   1        LCD_Display_Eng(2,32,dis7);  //b
 208   1        LCD_Display_Eng(2,40,dis8);  //i
 209   1        LCD_Display_Eng(2,48,dis9);  //g
 210   1        LCD_Display_Eng(2,56,dis10); //-
 211   1        LCD_Display_Eng(2,64,dis11); //d
 212   1        LCD_Display_Eng(2,72,dis12); //i
 213   1        LCD_Display_Eng(2,80,dis13); //p
 214   1        LCD_Display_Eng(2,88,dis14); //p
 215   1        LCD_Display_Eng(2,96,dis15); //e
 216   1        LCD_Display_Eng(2,104,dis16); //r
 217   1        LCD_Display_Eng(4,48,dis17); //1
 218   1        LCD_Display_Eng(4,56,dis18); //2
 219   1        LCD_Display_Eng(4,64,dis19); //8
 220   1        LCD_Display_Eng(4,72,dis20); //6
 221   1        LCD_Display_Eng(4,80,dis21); //4
 222   1        LCD_Display_Word(6,48,dis22);//王
 223   1        LCD_Display_Word(6,64,dis23);//敬
 224   1        LCD_Display_Word(6,80,dis24);//明
 225   1      }
 226          
 227          /******************主体函数**********************/
 228          void main()
 229          {
 230   1      //  LCD_RST = 0;
 231   1      //  delay(5);
 232   1      //  LCD_RST = 1;
 233   1              LCD_Init();     
 234   1              Display_Text();
 235   1        while(1)
 236   1        {}
 237   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    701    ----
C51 COMPILER V8.05a   12864FINAL                                                           03/06/2009 16:23:02 PAGE 5   

   CONSTANT SIZE    =    560    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   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 + -