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

📄 lcd.lst

📁 基于单片机开发的红外线遥控器控制的电器定时开关系统
💻 LST
字号:
C51 COMPILER V8.02   LCD                                                                   05/16/2008 19:34:16 PAGE 1   


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

line level    source

   1                                  #include "AT89X51.H"
   2          #define Ddata P0
   3          sbit RS=P2^5;
   4          sbit RW=P2^6;
   5          sbit LCDE=P2^7;
   6          //1PIN--GND  2PIN--VCC  3PIN--VO  4PIN--RS  5PIN--RW  6PIN--E  7-14PIN--DB0-DB7  15PIN--A  16PIN--K
   7          unsigned char hour=12,min=0,sec=0;
   8          unsigned int count=0;
   9          unsigned char line1[16]={"www.gliet.edu.cn"};
  10          unsigned char line2[16]={"Gui Lin 12:00:00"};
  11          unsigned char tab[]={'0','1','2','3','4','5','6','7','8','9'};
  12          
  13          void delay5ms()
  14          {unsigned  int i;
  15   1      for (i=0;i<1000;i++);
  16   1      }
  17          
  18          void delay50us()
  19          {register int i;
  20   1      for (i=0;i<20;i++);
  21   1      }
  22          
  23          void delay()
  24          {unsigned char m,n;
  25   1      for(m=255;m>0;m--)
  26   1      for(n=255;n>0;n--);}
  27          
  28          wr_com(unsigned char comm)//********写控制字符程序 E=1 RS=0 RW=0**********//
  29          {                         
  30   1                      LCDE=0;
  31   1                      RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
  32   1                      RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
  33   1                      LCDE=1;
  34   1                      Ddata=comm;
  35   1                      RS=0;
  36   1                      RW=0;
  37   1                      LCDE=0;
  38   1      }
  39          
  40          wr_data(unsigned char dat)//*****当前位置写字符子程序:E=1 RS=1 RW=0
  41          {
  42   1                      LCDE=0;
  43   1                      RS=0;             //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
  44   1                      RW=0;             //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
  45   1                      RS=1;
  46   1                      RW=0;
  47   1                      LCDE=1;
  48   1                      Ddata=dat;
  49   1                      LCDE=0;
  50   1                      RS=0;
  51   1                      RW=0;
  52   1      }
  53          
  54          
  55          unsigned char busycheck()//*****忙状态检查*******//
C51 COMPILER V8.02   LCD                                                                   05/16/2008 19:34:16 PAGE 2   

  56          {
  57   1                      unsigned char i;
  58   1                      LCDE=0;
  59   1                      RS=0;
  60   1                      RW=0;
  61   1                      RS=0;
  62   1                      RW=1;
  63   1                      LCDE=1;
  64   1                      i=Ddata;
  65   1                      LCDE=0;
  66   1                      return(i);
  67   1      }
  68                  
  69          void init()//**********初始化程序,必须按照产品的资料介绍的过程进行********//
  70          {
  71   1              wr_com(0x38);   //*****显示模式设置必须三次,不用检测忙信号
  72   1              delay5ms();
  73   1              wr_com(0x38);
  74   1              delay5ms();
  75   1              wr_com(0x38);
  76   1              delay5ms();
  77   1              wr_com(0x01);   ///***清屏****
  78   1              delay5ms();
  79   1              busycheck();
  80   1              delay5ms();
  81   1              wr_com(0x06);   ///****光标移动设置***
  82   1              delay5ms();
  83   1              busycheck();
  84   1              delay50us();
  85   1              wr_com(0x38);   ////***显示模式设置****
  86   1              delay50us();
  87   1              busycheck();
  88   1              delay50us();
  89   1              wr_com(0x0c);   /////***显示开***
  90   1              delay50us();
  91   1              busycheck();
  92   1              delay50us();
  93   1              wr_com(0x40);           //set cgram address
  94   1              delay50us();
  95   1              delay50us();      //***这些延时可用可不用***//
  96   1      }
  97          
  98          
  99          void display()
 100          {               unsigned char i;
 101   1                      wr_com(0x80);           //set ram address
 102   1                      delay50us();
 103   1                      busycheck();
 104   1                      delay50us();
 105   1                      for(i=0;i<16;i++)
 106   1             {wr_data(line1[i]);              //display 
 107   2                      delay50us();
 108   2                      busycheck();}
 109   1                      busycheck();
 110   1                      delay50us();
 111   1                      wr_com(0xc0);
 112   1                      delay50us();
 113   1                      busycheck();
 114   1                      delay50us();
 115   1                      for(i=0;i<16;i++)
 116   1                      {
 117   2                              wr_data(line2[i]);              //display 
C51 COMPILER V8.02   LCD                                                                   05/16/2008 19:34:16 PAGE 3   

 118   2                              delay50us();
 119   2                              busycheck();
 120   2                      }
 121   1      }
 122          
 123          
 124          void main()
 125          {
 126   1      TMOD=0X01;
 127   1      EA=1;
 128   1      ET0=1;
 129   1      TR0=1;
 130   1      TH0=(65536-4995)/256;
 131   1      TL0=(65536-4995)%256;
 132   1      init(); 
 133   1              while(1)
 134   1         {line2[15]=tab[sec%10];line2[14]=tab[sec/10];
 135   2          line2[12]=tab[min%10];line2[11]=tab[min/10];
 136   2              line2[9]=tab[hour%10];line2[8]=tab[hour/10];
 137   2              if(!P1_2){delay();if(!P1_2){delay();sec++;if(sec==60){sec=0;}}}
 138   2              if(!P1_1){delay();if(!P1_1){delay();min++;if(min==60){min=0;}}}
 139   2              if(!P1_0){delay();if(!P1_0){delay();hour++;if(hour==24){hour=0;}}}
 140   2          display();
 141   2          }
 142   1      }
 143          
 144          void t0(void)interrupt 1 using 0
 145          {
 146   1      TH0=(65536-4995)/256;
 147   1      TL0=(65536-4995)%256;
 148   1       count++;
 149   1       if(count==200){count=0;sec++;}
 150   1       if(sec==60){sec=0;min++;}
 151   1       if(min==60){min=0;hour++;}
 152   1       if(hour==24){hour=0;}
 153   1      }


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