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

📄 main.lst

📁 at89c55和lcm128645Z液晶显示模块的并口连接的显示例子程序(keil c实现)
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  04/02/2008 20:23:48 PAGE 1   


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

stmt level    source

   1          
   2          
   3          #include <AT89X55.h>
   4          
   5                                                            
   6          #define Uchar unsigned char
   7          #define Uint  unsigned int
   8          #define Ulong unsigned long
   9          
  10          sbit E=P2^0;//E=P3^0;//
  11          sbit RW=P2^1;//RW=P3^1;
  12          sbit RS=P2^2;//RS=P3^2;
  13          
  14          /** 定义字符串数组*/
  15          code char STR1[]="中南大学铁道学院";
  16          code char STR3[]="长沙瑞纬电气公司";
  17          
  18          
  19          /*定义函数声明*/
  20          void Delayus(Ulong t);   /*延时函数*/
  21          void BUSYLOOP();          /*判忙函数*/
  22          void Write_command(Uchar CMD,Uchar bb);  /*写控制字函数*/
  23          void Write_data(Uchar CMD);              /*写数据函数*/
  24          void init();                             /*初始化函数*/
  25          void Display(Uchar *ptr,Uchar ddram);    /*显字符串函数*/
  26          
  27               /*void Delayus(Ulong t);   /*延时函数*/
  28              
  29            void Delayus(Ulong t)
  30          {
  31   1      
  32   1              Ulong w;
  33   1              for(w=0;w<t;w++)
  34   1               {;}
  35   1       }
  36          
  37             /*  void BUSYLOOP()          判忙函数*/
  38                 
  39                void BUSYLOOP()
  40              { 
  41   1      
  42   1            
  43   1            P0=0x0ff;//P1=0x0ff;
  44   1            RS=0;
  45   1            RW=1;
  46   1            
  47   1             do {
  48   2                   E=1;
  49   2                   P1=P0;//P2=P1;
  50   2                   E=0;
  51   2                 }
  52   1            //while(P2>0x7F);
  53   1            while(P1>0x7F);
  54   1          }
  55          
C51 COMPILER V7.06   MAIN                                                                  04/02/2008 20:23:48 PAGE 2   

  56               
  57          
  58          /*    void Write_command(Uchar CMD,Uchar bb);  /*写控制字函数*/
  59             
  60              void Write_command(Uchar CMD,Uchar bb) 
  61          { 
  62   1         if(bb)
  63   1         {BUSYLOOP();}
  64   1      
  65   1         RS=0;
  66   1         RW=0;
  67   1         E=1;
  68   1         //P1=CMD;
  69   1         P0=CMD;
  70   1         Delayus(1);
  71   1         E=0;
  72   1      }
  73          
  74          
  75          /* void Write_data(Uchar CMD);              /*写数据函数*/
  76          
  77             void Write_data(Uchar CMD) 
  78          
  79          { 
  80   1         BUSYLOOP();
  81   1         RS=1;
  82   1         RW=0;
  83   1         E=1;
  84   1         //P1=CMD;
  85   1         P0=CMD;
  86   1         Delayus(1);
  87   1         E=0; 
  88   1      }
  89          
  90          
  91           /* void init();                             /*初始化函数*/
  92          
  93            void init()
  94          {
  95   1        
  96   1         Delayus(38);
  97   1         Write_command(0x30,0); /*8位  基本指令*/
  98   1         Delayus(1);
  99   1         Write_command(0x30,0);/*8位   基本指令*/
 100   1         Delayus(1);
 101   1         Write_command(0x0C,1);/*开显示*/
 102   1         Delayus(1);
 103   1         Write_command(0x01,0);/*清屏*/
 104   1         Delayus(20);
 105   1         Write_command(0x06,1);/*光标右移*/
 106   1         
 107   1      }
 108          
 109          
 110            /*void Display(Uchar *ptr,Uchar ddram);    /*显字符串函数*/
 111            
 112              void Display(Uchar *ptr,Uchar ddram)
 113          {
 114   1      
 115   1          Uchar l,il,x;
 116   1         
 117   1          int lie,hang;
C51 COMPILER V7.06   MAIN                                                                  04/02/2008 20:23:48 PAGE 3   

 118   1          
 119   1          
 120   1          l=0;
 121   1          if(ddram<0x88)
 122   1          { hang=0; }   /*定位行地址:第一行*/
 123   1          else if(ddram<0x90)
 124   1          { hang=2; }   /*定位行地址:第三行*/
 125   1              else if(ddram<0x98)
 126   1          { hang=1;}   /*定位行地址:第二行*/
 127   1              else  { hang=2; }   /*定位行地址:第四行*/
 128   1      
 129   1              lie=0xf&ddram; /*定义列地址*/
 130   1              if(lie>0x07)
 131   1              {lie=lie-0x08;}
 132   1              x=lie*2;
 133   1              Write_command(ddram,0);/*定位显示起始地址*/
 134   1              while ( (ptr[l])!='\0' )
 135   1              { l++; }
 136   1              
 137   1              for(il=0;il<l;il++)
 138   1              { 
 139   2                 Write_data(ptr[il]); /*输出单个字符*/
 140   2                 x++;
 141   2                 if(x==0x10)
 142   2                 { x=0;
 143   3                   hang++;
 144   3                   switch(hang)
 145   3                       { 
 146   4                     case 0:Write_command(0x80,0);break;
 147   4                     case 1:Write_command(0x90,0);break;
 148   4                     case 2:Write_command(0x88,0);break;
 149   4                     case 3:Write_command(0x98,0);break;
 150   4                       }
 151   3      
 152   3                   if(hang>3)
 153   3                   {Write_command(0x80,0);
 154   4                   hang=0;
 155   4                       }
 156   3                       
 157   3                }
 158   2      
 159   2                      
 160   2              }
 161   1              
 162   1          }
 163          
 164          
 165              /*主函数开始*/
 166          
 167            main()
 168          
 169          {
 170   1          init();
 171   1          Display(STR1,0x80);  //上面一行显示一个预定的字符串
 172   1          Display(STR3,0x88);
 173   1          
 174   1          Delayus(200);
 175   1          Write_command(0x9c,0);//将光标移动0x9c
 176   1          Write_command(0x0f,0);//将光标处反白闪烁
 177   1          // Write_command(0x80,0); //进入睡眠状态
 178   1          // Delayus(200);
 179   1          // Write_command(0x0C,0); //唤醒
C51 COMPILER V7.06   MAIN                                                                  04/02/2008 20:23:48 PAGE 4   

 180   1          while(1)
 181   1          {;}
 182   1          
 183   1      }
 184          
 185          
 186          /*    主函数结束**/


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