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

📄 1602串.lst

📁 单片机1602显示
💻 LST
字号:
C51 COMPILER V7.06   1602__                                                                04/06/2009 16:09:35 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 1602__
OBJECT MODULE PLACED IN 1602串.OBJ
COMPILER INVOKED BY: D:\Program Files\keil c\C51\BIN\C51.EXE 1602串.c BROWSE DEBUG OBJECTEXTEND TABS(5)

stmt level    source

   1          
   2          
   3          //1602串口显示不需判别忙信号//
   4          
   5          #include"AT89X51.H"
   6          #define uchar unsigned char
   7          #define ufloat unsigned float
   8          
   9          sbit LCD_RS=P0^0;
  10          sbit LCD_RW=P0^1;
  11          sbit LCD_E=P0^2;
  12          
  13          sbit CLK=P0^3;
  14          sbit Clear=P0^4;
  15          sbit LCD_Data=P0^5;
  16          
  17          char a[]={'1','q','w','e','f','s','c','f','s','c','v'};
  18          char b[]={'0','1','2','3','4','5','6','7','8','9'};
  19          
  20          
  21          int h,m,s,count=1;
  22          void delay(unsigned char time)
  23            {
  24   1         uchar i,k;
  25   1         for(i=time;i>0;i--)
  26   1         for(k=248;k>0;k--) ;
  27   1      }
  28          /////将一个字节转换成数据流/////////////
  29          void TransBit(uchar WCLCD)   //char->bit
  30          {
  31   1        int i;
  32   1       // CLK=0;     
  33   1        Clear=1;   //CLK上升沿时输出全为零
  34   1        for(i=0;i<8;i++)   //数据流处理
  35   1          {      
  36   2             LCD_Data=WCLCD&0x80;     
  37   2            CLK=0;     ////CLK下降沿时读取数据
  38   2             delay(2);
  39   2             CLK=1;
  40   2             WCLCD<<=1;
  41   2           }
  42   1      }
  43          ////////写指令////////
  44          void WriteCommandLCD(uchar WDLCD) 
  45            {
  46   1         TransBit(WDLCD);
  47   1         LCD_RS=0;
  48   1         LCD_RW=0;
  49   1         LCD_E=0;
  50   1         LCD_E=0;
  51   1         LCD_E=1;
  52   1        }
  53          
  54          ////////写数据////////
  55          void WriteDataLCD(uchar WDLCD)
C51 COMPILER V7.06   1602__                                                                04/06/2009 16:09:35 PAGE 2   

  56            {
  57   1         TransBit(WDLCD);
  58   1         LCD_RS=1;
  59   1         LCD_RW=0;
  60   1         LCD_E=0;
  61   1         LCD_E=0;
  62   1         LCD_E=1; 
  63   1        }
  64          
  65          /////按指定位置显示一个字符X不能大于15,Y不能大于1/////
  66          void DisplayOneChar(uchar X,uchar Y,uchar Num)
  67            {
  68   1       
  69   1         Y&=0x01;
  70   1         X&=0x0F; //限制X不能大于15,Y不能大于1
  71   1         if(Y) X+=0xc0; //当要显示第二行时地址码+0xc0;
  72   1         else X+=0x80;
  73   1         WriteCommandLCD(X); //发送地址码
  74   1         WriteDataLCD(Num);
  75   1        }
  76          
  77          /////按指定位置显示一串字符/////
  78          void DisplayListChar(uchar X,uchar Y,uchar *DData)
  79            {
  80   1         uchar ListLength;   
  81   1         ListLength=0;
  82   1         while(DData[ListLength]>0x20) //若到达字串尾则退出
  83   1           {
  84   2            if(X<=15) //X坐标应小于15
  85   2              {
  86   3               DisplayOneChar(X,Y,DData[ListLength]); //显示单个字符
  87   3               ListLength++;
  88   3               ++X;
  89   3              }
  90   2           }
  91   1        }
  92          
  93          ///显示数字////
  94          void DisplayNumChar(uchar X,uchar Y,int Num,char length)
  95            {
  96   1         char i;
  97   1          int e=1,num;
  98   1          num=Num;
  99   1         for(i=0;i<length-1;i++)
 100   1           {      
 101   2               e*=10;              
 102   2            }
 103   1         for(i=0;i<length;i++)
 104   1           {
 105   2             if(X<=15)
 106   2              {
 107   3                DisplayOneChar(X,Y,b[(num/e)]);
 108   3                X++;
 109   3                num-=(num/e)*e;
 110   3                e/=10;
 111   3           }
 112   2           }
 113   1        }
 114          //////显示光标程序////////
 115          void LocateXY(uchar X,uchar Y)
 116            { uchar temp;
 117   1          Y&=0x01;
C51 COMPILER V7.06   1602__                                                                04/06/2009 16:09:35 PAGE 3   

 118   1         X&=0x0F; //限制X不能大于15,Y不能大于1
 119   1         if(Y) X+=0xc0; //当要显示第二行时地址码+0xc0;
 120   1         else X+=0x80;
 121   1         temp=X;
 122   1         WriteCommandLCD(temp);
 123   1        }
 124          void LCDInit(void) //LCM初始化
 125            {
 126   1         delay(3);
 127   1         WriteCommandLCD(0x38); //显示模式设置
 128   1         delay(3);
 129   1         WriteCommandLCD(0x38);
 130   1         delay(3);
 131   1         WriteCommandLCD(0x38);
 132   1         delay(3);
 133   1         WriteCommandLCD(0x38);
 134   1         delay(3);
 135   1         WriteCommandLCD(0x0f);//整体显示的开,光标开,光标是否闪烁,
 136   1         delay(3);
 137   1         WriteCommandLCD(0x01);
 138   1         delay(3);
 139   1         WriteCommandLCD(0x06);
 140   1        }
 141          
 142          void main(void)
 143          { 
 144   1        TMOD=0x01;
 145   1        TH0=(65536-5000)/256;
 146   1        TL0=(65536-5000)%256;
 147   1        ET0=1;
 148   1        EA=1;
 149   1        TR0=1;
 150   1        LCDInit();
 151   1        CLK=1;
 152   1        DisplayListChar(8,1,"time");   
 153   1        DisplayOneChar(1,0,':');
 154   1        DisplayOneChar(13,0,':');
 155   1        LocateXY(12,1);
 156   1       while(1);
 157   1        
 158   1      }
 159          void t0(void) interrupt 1 using 0
 160          {
 161   1        TH0=(65536-1000)/256;
 162   1        TL0=(65536-1000)%256;
 163   1       // DisplayListChar(8,1,"time");   
 164   1       // DisplayOneChar(10,0,':');
 165   1       // DisplayOneChar(13,0,':');
 166   1        count++;
 167   1        if(count==1000)
 168   1          {
 169   2            s++;
 170   2            count=1;
 171   2          if(s==59)
 172   2             {
 173   3              m++;
 174   3                s=0;
 175   3                 if(m==59)
 176   3                   {
 177   4                     h++;
 178   4                      m=0;
 179   4                     if(h==12)
C51 COMPILER V7.06   1602__                                                                04/06/2009 16:09:35 PAGE 4   

 180   4                     h=0;
 181   4                      }
 182   3             }
 183   2            DisplayNumChar(8,0,h,2);
 184   2            DisplayNumChar(11,0,m,2);
 185   2            DisplayNumChar(14,0,s,2);
 186   2            }
 187   1                      
 188   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    584    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     29      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 + -