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

📄 text1.lst

📁 LCD12864显示汉字和数字(程序和电路)
💻 LST
字号:
C51 COMPILER V8.08   TEXT1                                                                 08/23/2009 14:14:16 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #include"zifuku.h"
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          sbit CS1=P2^0;                  //LCD右屏幕
   6          sbit CS2=P2^1;                  //LCD左屏幕
   7          sbit RS=P2^2;                   //LCD数据、指令寄存器
   8          sbit RW=P2^3;                   //LCD读、写操作
   9          sbit E=P2^4;                    //LCD使能信号,下降沿有效
  10          
  11          
  12          /*
  13                  自定义延时子函数
  14          */
  15          void delayms(uchar z)
  16          {
  17   1               int x,y;
  18   1               for(x=z;x>0;x--)
  19   1                  for(y=110;y>0;y--);
  20   1      }
  21          
  22          /*
  23               判断LCD忙信号状态
  24          */
  25          void buys()
  26          {
  27   1               int dat;
  28   1               RW=1;
  29   1               RS=0;
  30   1               do
  31   1                 {    
  32   2                      P0=0x00;
  33   2                      E=1;
  34   2                              dat=P0;
  35   2                              E=0;
  36   2                              dat=0x80 & dat;
  37   2                      } while(!(dat==0x00));
  38   1      }
  39          
  40          /*
  41               LCD写指令函数
  42          */
  43          void w_com(uchar com)
  44          {
  45   1               //buys();
  46   1               RW=0;
  47   1               RS=0;
  48   1               E=1;
  49   1               P0=com;
  50   1               E=0;
  51   1      }
  52          
  53           /*
  54               LCD写数据函数
  55          */
C51 COMPILER V8.08   TEXT1                                                                 08/23/2009 14:14:16 PAGE 2   

  56          void w_date(uchar date)
  57          {
  58   1               //buys();
  59   1               RW=0;
  60   1               RS=1;
  61   1               E=1;
  62   1               P0=date;
  63   1               E=0;
  64   1      }
  65          
  66          
  67          /*
  68                     LCD选屏函数
  69          */
  70          void select_screen(uchar screen)
  71          {
  72   1                 switch(screen)
  73   1                 {
  74   2                                case 0:     //选择全屏
  75   2                                           CS1=0;
  76   2                                                       CS2=0;
  77   2                                                       break;
  78   2                                case 1:     //选择左屏
  79   2                                           CS1=0;
  80   2                                                       CS2=1;
  81   2                                                       break;
  82   2                                         
  83   2                                case 2:     //选择右屏
  84   2                                           CS1=1;
  85   2                                                       CS2=0;
  86   2                                                       break;
  87   2                              /*  case 3:     //选择右屏
  88   2                                           CS1=1;
  89   2                                                         CS2=1;
  90   2                                                    break;
  91   2                              */
  92   2                 }              
  93   1                 
  94   1      }
  95          
  96          /*
  97                   LCDx向上滚屏显示
  98          */
  99          void lcd_rol()
 100          {
 101   1                 int x;
 102   1                 for(x=0;x<64;x++)
 103   1                    {
 104   2                                      select_screen(0);
 105   2                                      w_com(0xc0+x);
 106   2                                      delayms(500);
 107   2                        }
 108   1      
 109   1      
 110   1      }
 111          
 112          /*
 113                     LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列
 114          */
 115          void clear_screen(screen)
 116          {
 117   1               int x,y;
C51 COMPILER V8.08   TEXT1                                                                 08/23/2009 14:14:16 PAGE 3   

 118   1               select_screen(screen);            //screen:0-选择全屏,1-选择左半屏,2-选择右半屏
 119   1               for(x=0xb8;x<0xc0;x++)                 //从0xb8-0xbf,共8页
 120   1                  {
 121   2                              w_com(x);
 122   2                              w_com(0x40);                    //列的初始地址是0x40
 123   2                              for(y=0;y<64;y++)
 124   2                                 {
 125   3                                          w_date(0x00);
 126   3                                 
 127   3                                  }
 128   2                   }     
 129   1      }
 130          
 131          /*
 132                          LCD显示汉字字库函数
 133          */
 134          void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun)
 135          {               //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数
 136   1            int a;
 137   1                mun=mun*32;
 138   1                select_screen(screen);
 139   1                w_com(0xb8+(page*2));
 140   1                w_com(0x40+(col*16));
 141   1                for ( a=0;a<16;a++)
 142   1                   {
 143   2                                 w_date(hanzi[mun++]);
 144   2                       
 145   2                       }
 146   1                w_com(0xb8+(page*2)+1);
 147   1                w_com(0x40+(col*16));
 148   1                for ( a=0;a<16;a++)
 149   1                   {
 150   2                                 w_date(hanzi[mun++]);
 151   2                       
 152   2                       }
 153   1      }
 154          
 155           /*
 156                          LCD显示字符字库函数
 157          */
 158          void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun)
 159          {               //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数
 160   1            int a;
 161   1                mun=mun*16;
 162   1                select_screen(screen);
 163   1                w_com(0xb8+(page*2));
 164   1                w_com(0x40+(col*8));
 165   1                for ( a=0;a<8;a++)
 166   1                   {
 167   2                                 w_date(zifu[mun++]);
 168   2                       
 169   2                       }
 170   1                w_com(0xb8+(page*2)+1);
 171   1                w_com(0x40+(col*8));
 172   1                for ( a=0;a<8;a++)
 173   1                   {
 174   2                                 w_date(zifu[mun++]);
 175   2                       
 176   2                       }
 177   1      }
 178          
 179          /*
C51 COMPILER V8.08   TEXT1                                                                 08/23/2009 14:14:16 PAGE 4   

 180                          LCD显示数字字库函数
 181          */
 182          void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun)
 183          {               //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数
 184   1            int a;
 185   1                mun=mun*16;
 186   1                select_screen(screen);
 187   1                w_com(0xb8+(page*2));
 188   1                w_com(0x40+(col*8));
 189   1                for ( a=0;a<8;a++)
 190   1                   {
 191   2                                 w_date(shuzi[mun++]);
 192   2                       
 193   2                       }
 194   1                w_com(0xb8+(page*2)+1);
 195   1                w_com(0x40+(col*8));
 196   1                for ( a=0;a<8;a++)
 197   1                   {
 198   2                                 w_date(shuzi[mun++]);
 199   2                       
 200   2                       }
 201   1      }
 202          
 203          /*
 204                          LCD初始化函数
 205          */
 206          void lcd_init()
 207          {
 208   1               w_com(0x3f);            //LCD开显示
 209   1               w_com(0xc0);            //LCD行初始地址,共64行
 210   1               w_com(0xb8);            //LCD页初始地址,共8页
 211   1               w_com(0x40);            //LCD列初始地址,共64列
 212   1          
 213   1      }
 214          
 215          /*
 216                          LCD显示主函数
 217          */
 218          void main()
 219          {
 220   1        //第一行
 221   1            int x;
 222   1                lcd_init();                     //LCD初始化
 223   1                clear_screen(0);                //LCD清屏幕
 224   1                lcd_display_shuzi(1,0,4,5);             //LCD显示数字
 225   1                lcd_display_shuzi(1,0,5,1);             //LCD显示数字
 226   1            lcd_display_hanzi(1,0,3,0);                 //LCD显示汉字
 227   1                lcd_display_hanzi(2,0,0,1);             //LCD显示汉字           //LCD字符汉字
 228   1                lcd_display_hanzi(2,0,1,2);             //LCD显示汉字
 229   1        //第二行       
 230   1                lcd_display_zifuk(1,1,2,0);             //LCD显示字符
 231   1                lcd_display_zifuk(1,1,3,0);             //LCD显示字符
 232   1                lcd_display_zifuk(1,1,4,0);             //LCD显示字符
 233   1                lcd_display_zifuk(1,1,5,4);             //LCD显示字符
 234   1                lcd_display_shuzi(1,1,6,8);             //LCD显示字符
 235   1                lcd_display_shuzi(1,1,7,9);             //LCD显示字符
 236   1                lcd_display_shuzi(2,1,0,5);             //LCD显示字符
 237   1                lcd_display_shuzi(2,1,1,1);             //LCD显示字符
 238   1                lcd_display_zifuk(2,1,2,4);
 239   1                lcd_display_zifuk(2,1,3,1);
 240   1                lcd_display_zifuk(2,1,4,2);
 241   1                lcd_display_zifuk(2,1,5,3);
C51 COMPILER V8.08   TEXT1                                                                 08/23/2009 14:14:16 PAGE 5   

 242   1        //第三行
 243   1                for(x=0;x<4;x++)
 244   1                   {
 245   2                               lcd_display_hanzi(1,2,x,3+x);            //LCD显示汉字
 246   2                       }
 247   1              
 248   1                for(x=0;x<4;x++)
 249   1                   {
 250   2                               lcd_display_hanzi(2,2,x,7+x);            //LCD显示汉字
 251   2                       }
 252   1        //第四行
 253   1      
 254   1                 for(x=0;x<4;x++)
 255   1                   {
 256   2                               lcd_display_zifuk(1,3,x,5+x);            //LCD显示汉字
 257   2                       }
 258   1                 lcd_display_shuzi(1,3,4,7);
 259   1                 lcd_display_shuzi(1,3,5,5);
 260   1                 lcd_display_shuzi(1,3,6,5);
 261   1                 lcd_display_zifuk(1,3,7,9);
 262   1                 lcd_display_shuzi(2,3,0,8);
 263   1                 lcd_display_shuzi(2,3,1,9);
 264   1                 lcd_display_shuzi(2,3,2,9);
 265   1                 lcd_display_shuzi(2,3,3,5);
 266   1                 lcd_display_shuzi(2,3,4,6);
 267   1                 lcd_display_shuzi(2,3,5,8);
 268   1                 lcd_display_shuzi(2,3,6,9);
 269   1                 lcd_display_shuzi(2,3,7,2);
 270   1             while(1);
 271   1                /* while(1)
 272   1                 {                             //      LCD向上滚屏显示
 273   1                        lcd_rol();
 274   1                 }
 275   1                */
 276   1      }
 277          
 278          
 279          
 280          
 281          


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