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

📄 1602.lst

📁 液晶1602的驱动程序。 用的是勤正达的FM1602A--3。 MCU用51
💻 LST
字号:
C51 COMPILER V6.12  1602                                                                   11/22/2008 17:12:49 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN .\1602.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\1602.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include"reg51.h"
   2          #define uchar unsigned char
   3          #define uint  unsigned int
   4          volatile char bf;
   5          
   6          sbit rs=P3^0;
   7          sbit rw=P3^1;
   8          sbit e=P3^2;
   9          sbit ds=P1;
  10          #define bf P1^7
  11          
  12          uchar code tab[]={"***fm1602a--3***"};
  13          uchar code tab1[]={0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11};         //   月
  14          uchar code fm[]={0x0F,0x1C,0x0F,0x1F,0x10,0x00,0x00,0x00,0x0F,0x1C,0x0C,0x19,0x10,0x00,0x00,0x00,
  15          0x0C,0x00,0x0C,0x19,0x10,0x00,0x00,0x00,0x0F,0x1C,0x0C,0x19,0x10,0x00,0x00,0x00,
  16          0x0F,0x1C,0x0C,0x19,0x12,0x07,0x0F,0x10,0x0C,0x00,0x0C,0x19,0x12,0x04,0x0A,0x10,
  17          0x0C,0x00,0x0C,0x19,0x12,0x04,0x0A,0x10,0x0C,0x00,0x0C,0x19,0x13,0x17,0x0A,0x10
  18          };   ///FM 64
  19          uchar  code qin[]={
  20          0x1F,0x11,0x11,0x11,0x11,0x11,0x11,0x1F, //方框
  21          0x0E,0x0A,0x04,0x1F,0x04,0x0E,0x0A,0x1B,  //小人
  22          0x0A,0x15,0x0A,0x15,0x0A,0x15,0x0A,0x15,   //黑白格子
  23          0x1F,0x15,0x1F,0x1B,0x1B,0x1F,0x11,0x1F, //脸
  24          0x0E,0x11,0x11,0x15,0x15,0x0E,0x04,0x04, //树
  25          0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11, // 月
  26          0x1F,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x00, //黑白横条
  27          0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, //黑白竖条
  28          
  29          
  30          }; 
  31          
  32          void nop(){}
  33          
  34          void delay(uint ms)               //延时
  35          {uchar n;
  36   1      while(ms--)
  37   1      {for(n=0;n<24;n++){;;}}
  38   1      }
  39          
  40          void check()                       //    判忙
  41          {
  42   1      
  43   1      rs=0;
  44   1      rw=1;
  45   1      e=0;
  46   1      P1=0xff;
  47   1      e=1;
  48   1      nop();
  49   1      nop();
  50   1      
  51   1      while(P&0x80){};
  52   1      
  53   1      
  54   1      delay(10);
  55   1      }
C51 COMPILER V6.12  1602                                                                   11/22/2008 17:12:49 PAGE 2   

  56          
  57          void sendc(uchar com)            //  发命令字
  58          {check();
  59   1       
  60   1       
  61   1       rs=0;
  62   1       rw=0;
  63   1       e=1;
  64   1       P1=com;
  65   1       
  66   1       nop();
  67   1       e=0;
  68   1       nop();
  69   1       }
  70          
  71          void sendd(uchar word)            // 发显示字
  72          {check();
  73   1       
  74   1       
  75   1       rs=1;
  76   1       rw=0;
  77   1       e=1;
  78   1      P1=word;
  79   1      nop();
  80   1      e=0;
  81   1       nop();
  82   1       }
  83          
  84          void inti()                        // 初始化
  85          {sendc(0x01);
  86   1       sendc(0x38);
  87   1       sendc(0x0f);
  88   1       sendc(0x06);
  89   1       delay(10);
  90   1       }
  91          
  92          void setcgramP()
  93          {uchar x1;
  94   1       uchar y;
  95   1       
  96   1       sendc(0x40);
  97   1       for(y=0;y<8;y++){for(x1=0;x1<8;x1++)
  98   2       {sendd(*(fm+8*x1+y));}}
  99   1      }
 100          
 101          void setcgram()
 102          {uchar x; 
 103   1       sendc(0x40);
 104   1       for(x=0;x<64;x++)
 105   1       {sendd(*(qin+x));}
 106   1      }
 107          
 108          void key()
 109          {while(P2^0){};
 110   1      delay(5);}
 111          
 112          void main()
 113          {unsigned char i;
 114   1      setcgram();
 115   1       inti();
 116   1       delay(1);
 117   1       
C51 COMPILER V6.12  1602                                                                   11/22/2008 17:12:49 PAGE 3   

 118   1       sendc(0x80);
 119   1       delay(500);
 120   1       for(i=0;i<16;i++)
 121   1      {sendd(*(tab+i));};
 122   1      // {sendd(0xff);};
 123   1       
 124   1      delay(500);
 125   1       sendc(0xc0);
 126   1       for(i=0;i<16;i++)
 127   1      {sendd(0x00+i);};
 128   1      //{sendd(0xff);};
 129   1       while(1){};
 130   1       
 131   1       }
 132          
 133          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    257    ----
   CONSTANT SIZE    =    153    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   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 + -