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

📄 5.2.3-2.lst

📁 《单片机C语言编程与实例的代码.rar
💻 LST
字号:
C51 COMPILER V6.20c  5_2_3_2                                                               09/02/2001 14:50:30 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE 5_2_3_2
OBJECT MODULE PLACED IN 5.2.3-2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 5.2.3-2.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg51.h>
   2          #include<stdlib.h>
   3          #define uchar unsigned char
   4          uchar data Column;				/*定义"列"变量*/
   5          uchar data Page;
   6          sbit D_I=P3^2;
   7          sbit R_W=P3^3;
   8          sbit E=P3^4;
   9          sbit CSA=P3^1;
  10          sbit CSB=P3^0;
  11          sbit BUSY=P1^7;
  12          sbit Page_4=P1^4;
  13          char code Hanzi[4][32]=
  14          {
  15            0x40,0xB0,0x92,0x96,0x9A,0x92,0xF2,0x9E,0x92,0x91,0x99,0x95,0x91,0x50,0x30,0x00,	/*爱*/
  16            0x00,0x00,0x40,0x30,0x8C,0x83,0x46,0x2A,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,0x00,
  17            0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0xFF,0x20,0x22,0xAC,0x20,0x30,0x20,0x00,	/*我*/
  18            0x00,0x08,0x48,0x84,0x7F,0x02,0x21,0x10,0x09,0x06,0x1A,0x61,0x80,0xE0,0x00,0x00,
  19            0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,	/*中*/
  20            0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00,
  21            0x00,0x40,0x20,0x10,0xFC,0x03,0x40,0x20,0x10,0xFF,0x08,0x04,0x06,0xC0,0x00,0x00,	/*华*/
  22            0x04,0x04,0x04,0x04,0x05,0x04,0x04,0xFF,0x04,0x04,0x05,0x05,0x05,0x05,0x04,0x00
  23          };
  24          void Inquire_Busy_L();			/*左半屏查询是否"忙"*/
  25          void Send_Dat_L(uchar d);			/*送左半屏指令*/
  26          void Inquire_Busy_R();			/*右半屏查询是否"忙"*/
  27          void Send_Dat_R(uchar d);			/*送右半屏指令*/
  28          void Clear();					/*清屏*/
  29          void Ini();						/*初始化*/
  30          void Send_Dat_Disp_L(uchar d);		/*送左半屏显示*/
  31          void Send_Dat_Disp_R(uchar d);		/*送右半屏显示*/
  32          void Lcd_Disp(char *p);			/*显示*/
  33          void Hanzi_Disp();
  34          void Delay();
  35          
  36          /***************************************主程序******************************************/
  37          void main()
  38          {
  39   1       Delay();Delay();Delay();			/*延时*/
  40   1       IE=0x81;TCON=0x00;
  41   1       Ini();						/*初始化*/
  42   1       Clear();						/*清屏*/
  43   1       Hanzi_Disp();					/*显示汉字*/
  44   1      }
  45          
  46          /*********************************查询左半屏是否"忙"子程序******************************/
  47          void Inquire_Busy_L()
  48          {
  49   1         R_W=1; R_W=1;D_I=0;D_I=0;	/*读取状态字*/
  50   1         CSA=0;CSA=0; CSB=1;CSB=1;	/*选左半屏*/
  51   1       Loop:
  52   1         P1=0xFF;
  53   1         E=1;E=1;					/*使能*/
  54   1         E=0;E=0;
  55   1         if(BUSY){goto Loop;}
C51 COMPILER V6.20c  5_2_3_2                                                               09/02/2001 14:50:30 PAGE 2   

  56   1         CSA=1; CSA=1;				/*是CSA为高电平,为选择左半区作准备*/
  57   1         D_I=1;D_I=1; R_W=1;R_W=1;	/*读数据*/
  58   1        }
  59          
  60          /**********************************送左半屏指令子程序***********************************/
  61          void Send_Dat_L(uchar d)
  62          {
  63   1       R_W=0; R_W=0;D_I=0;D_I=0;		/*设置显示开头*/
  64   1       CSA=0;CSA=0;					/*左半屏*/
  65   1       E=1;E=1;
  66   1       P1=d;P1=d;
  67   1       E=0;E=0;
  68   1       CSA=1;CSA=1;
  69   1       D_I=1;D_I=1; R_W=1;R_W=1;		/*读数据*/
  70   1      }
  71          
  72          /*********************************查询右半屏是否"忙"子程序******************************/
  73          void Inquire_Busy_R()
  74          {
  75   1         R_W=1;R_W=1; D_I=0;D_I=0;	/*读状态字*/
  76   1         CSB=0;CSB=0;				/*右半屏*/
  77   1      Loop2:
  78   1         P1=0xFF;
  79   1         E=1;E=1;
  80   1         E=0;E=0;
  81   1         if(BUSY){goto Loop2;}
  82   1         CSB=1; CSB=1;				/*为访问左区作准备*/
  83   1         D_I=1;D_I=1;R_W=1;R_W=1;	/*读数据*/
  84   1       }
  85          
  86          /**********************************送右半屏指令子程序***********************************/
  87          void Send_Dat_R(uchar d)
  88          {
  89   1       R_W=0; R_W=0; D_I=0;D_I=0;		/*设置显示开头*/
  90   1       CSB=1;CSB=1;					/*右半屏*/
  91   1       E=1;E=1;
  92   1       P1=d;P1=d;
  93   1       E=0;E=0;
  94   1       CSB=0;CSB=0;
  95   1       D_I=1;D_I=1; R_W=1;R_W=1;		/*读数据*/
  96   1      }
  97          
  98          /*********************************送左半屏显示字符子程序********************************/
  99          void Send_Dat_Disp_L(uchar d)
 100          {
 101   1       R_W=0; R_W=0; D_I=1;D_I=1;		/*写数据*/
 102   1       CSA=1;CSA=1;
 103   1       E=1;E=1;
 104   1       P1=d;P1=d;
 105   1       E=0;E=0;
 106   1       CSA=0;CSA=0;
 107   1       D_I=1;D_I=1; R_W=1;R_W=1;		/*读数据*/
 108   1      }
 109          
 110          /*********************************送右半屏显示字符子程序********************************/
 111          void Send_Dat_Disp_R(uchar d)/**/
 112          {
 113   1       R_W=0; R_W=0; D_I=1;D_I=1;		/*写数据*/
 114   1       CSB=1;CSB=1;
 115   1       E=1;E=1;
 116   1       P1=d;P1=d;
 117   1       E=0;E=0;
C51 COMPILER V6.20c  5_2_3_2                                                               09/02/2001 14:50:30 PAGE 3   

 118   1       CSB=0;CSB=0;
 119   1       D_I=1;D_I=1; R_W=1;R_W=1;		/*读数据*/
 120   1      }
 121          
 122          /*************************************延时子程序****************************************/
 123          void Delay()
 124          {
 125   1       uchar data i,j;
 126   1       for(i=0;i<255;i++)
 127   1       {for(j=0;j<255;j++);}
 128   1      }
 129          
 130          /************************************初始化子程序***************************************/
 131          void Ini()
 132          {
 133   1       E=0;R_W=1;D_I=1;CSA=CSB=0;Delay();
 134   1       Inquire_Busy_L();
 135   1       Send_Dat_L(0x3e);				/*关显示指令*/
 136   1       Inquire_Busy_R();
 137   1       Send_Dat_R(0x3e);				/*开显示指令*/
 138   1       Inquire_Busy_L();
 139   1       Send_Dat_L(0x3f);				/*设置起始行*/
 140   1       Inquire_Busy_R();
 141   1       Send_Dat_R(0x3f);
 142   1       Inquire_Busy_L();
 143   1       Send_Dat_L(0xc0);
 144   1       Inquire_Busy_R();
 145   1       Send_Dat_R(0xc0);
 146   1      }
 147          
 148          /****************************************清屏子程序*************************************/
 149          void Clear()
 150          {
 151   1       uchar data i,j,Disp_Page;
 152   1       for(i=0;i<8;i++)
 153   1       {
 154   2        Disp_Page=i;
 155   2        Disp_Page=Disp_Page|0xb8;		/*设置页地址*/
 156   2        Inquire_Busy_L();
 157   2        Send_Dat_L(Disp_Page);
 158   2        Inquire_Busy_L();
 159   2        Send_Dat_L(0x40);				/*设置列地址*/
 160   2        for(j=0;j<64;j++)
 161   2        {Send_Dat_Disp_L(0x00);}
 162   2       }
 163   1      for(i=0;i<8;i++)
 164   1       {
 165   2        Disp_Page=i;
 166   2        Disp_Page=Disp_Page|0xb8;		/*设置页地址*/
 167   2        Inquire_Busy_R();
 168   2        Send_Dat_R(Disp_Page);
 169   2        Inquire_Busy_R();
 170   2        Send_Dat_R(0x40);				/*设置列地址*/
 171   2        for(j=0;j<64;j++)
 172   2        {Send_Dat_Disp_R(0x00);}
 173   2       }
 174   1      }
 175          
 176          /***********************************液晶显示子程序**************************************/
 177          void Lcd_Disp(char *p)
 178          {
 179   1       uchar idata i;
C51 COMPILER V6.20c  5_2_3_2                                                               09/02/2001 14:50:30 PAGE 4   

 180   1       char idata ch;
 181   1       for(i=0;i<8;i++)
 182   1       {
 183   2        ch=*p;
 184   2        p++;
 185   2        Send_Dat_Disp_L(ch);
 186   2      Send_Dat_Disp_R(ch);
 187   2       }
 188   1      }
 189          
 190          /*************************************汉字显示子程序************************************/
 191          void Hanzi_Disp()
 192          {
 193   1       uchar data i;
 194   1       Clear();
 195   1       P1=0xbc;					/*页地址*/
 196   1       Column=0x40;					/*列地址*/
 197   1       Inquire_Busy_L();
 198   1       Send_Dat_L(Page);
 199   1       Inquire_Busy_L();
 200   1       Send_Dat_L(Page);
 201   1       Inquire_Busy_L();
 202   1       Send_Dat_L(Column);
 203   1       for(i=0;i<4;i++)					/*显示汉字上半部分*/
 204   1       {
 205   2        Lcd_Disp(&Hanzi[i][0]);
 206   2        Lcd_Disp(&Hanzi[i][8]);
 207   2       }
 208   1       Page=0xbd;					/*页地址加1*/
 209   1       Column=0x40;					/*列地址*/
 210   1       Inquire_Busy_L();
 211   1       Send_Dat_L(Page);
 212   1       Inquire_Busy_L();
 213   1       Send_Dat_L(Page);
 214   1       Inquire_Busy_L();
 215   1       Send_Dat_L(Column);
 216   1       for(i=0;i<4;i++)					/*显示汉字下半部分*/
 217   1       {
 218   2        Lcd_Disp(&Hanzi[i][0]);
 219   2        Lcd_Disp(&Hanzi[i][8]);
 220   2       }
 221   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    565    ----
   CONSTANT SIZE    =    128    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       4
   IDATA SIZE       =   ----       2
   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 + -