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

📄 lcd时钟.lst

📁 一个对1602液晶显示器的驱动程序
💻 LST
字号:
C51 COMPILER V8.02   LCD时钟                                                               08/19/2008 21:00:06 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD时钟
OBJECT MODULE PLACED IN lcd时钟.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL\C51\BIN\C51.EXE lcd时钟.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1           #include <reg51.h>
   2          #include <intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define BOOL bit
   6          sbit remoteout=P3^2;
   7          sbit rs = P1^0; 
   8          sbit rw = P1^1;
   9          sbit ep = P1^2;
  10          uchar temp,i,num;
  11          uchar miaoge,miaoshi,fengge,fengshi,shige,shishi;
  12          uchar code dis1[] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
  13          //BYTE code dis2[]={0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xc0,0xc1,0xc3,0xc4,0xc5,0xc6};
  14          uchar code dis2[]={"  Time to time  "};
  15          delay(uchar ms)
  16          {                                                       // 延时子程序
  17   1              uchar i;
  18   1              while(ms--)
  19   1              {
  20   2                      for(i = 0; i< 250; i++)
  21   2                      {
  22   3                              _nop_();
  23   3                              _nop_();
  24   3                              _nop_();
  25   3                              _nop_();
  26   3                      }
  27   2              }
  28   1      }
  29          
  30          BOOL lcd_bz()
  31          {                                                       // 测试LCD忙碌状态
  32   1              BOOL result;
  33   1              rs = 0;
  34   1              rw = 1;
  35   1              ep = 1;
  36   1              _nop_();
  37   1              _nop_();
  38   1              _nop_();
  39   1              _nop_();
  40   1              result = (BOOL)(P0 & 0x80);
  41   1              ep = 0;
  42   1              return result;  
  43   1      }
  44          
  45          lcd_wcmd(uchar cmd)
  46          {                                                       // 写入指令数据到LCD
  47   1              while(lcd_bz());
  48   1              rs = 0;
  49   1              rw = 0;
  50   1              ep = 0;
  51   1              _nop_();
  52   1              _nop_();        
  53   1              P0 = cmd;
  54   1              _nop_();
  55   1              _nop_();
C51 COMPILER V8.02   LCD时钟                                                               08/19/2008 21:00:06 PAGE 2   

  56   1              _nop_();
  57   1              _nop_();
  58   1              ep = 1;
  59   1              _nop_();
  60   1              _nop_();
  61   1              _nop_();
  62   1              _nop_();
  63   1              ep = 0;         
  64   1      }
  65          
  66          lcd_pos(uchar pos)
  67          {                                                       //设定显示位置
  68   1              lcd_wcmd(pos | 0x80);
  69   1      }
  70          
  71          lcd_wdat(uchar dat)     
  72          {                                                       //写入字符显示数据到LCD
  73   1              while(lcd_bz());
  74   1              rs = 1;
  75   1              rw = 0;
  76   1              ep = 0;
  77   1              P0 = dat;
  78   1              _nop_();
  79   1              _nop_();
  80   1              _nop_();
  81   1              _nop_();
  82   1              ep = 1;
  83   1              _nop_();
  84   1              _nop_();
  85   1              _nop_();
  86   1              _nop_();
  87   1              ep = 0; 
  88   1      }
  89          
  90          lcd_init()
  91          {                                                       //LCD初始化设定
  92   1              lcd_wcmd(0x38);                 //功能设置
  93   1              delay(1);
  94   1              lcd_wcmd(0x0c);                 //显示开关控制
  95   1              delay(1);
  96   1              lcd_wcmd(0x01);                 //清除LCD的显示内容
  97   1              delay(1);
  98   1      }
  99          time()
 100          {
 101   1              if(temp==100)
 102   1              {
 103   2                      temp=0;
 104   2      
 105   2                      miaoge++;
 106   2                      if(miaoge>=10)
 107   2                      {
 108   3                              miaoge=0;
 109   3                              miaoshi++;
 110   3                              if(miaoshi>=6)
 111   3                              {
 112   4                                      miaoshi=0;
 113   4                                      fengge++;
 114   4                                      if(fengge>=10)
 115   4                                      {
 116   5                                              fengge=0;
 117   5                                              fengshi++;
C51 COMPILER V8.02   LCD时钟                                                               08/19/2008 21:00:06 PAGE 3   

 118   5                                              if(fengshi>=6)
 119   5                                              {
 120   6                                                      fengshi=0;
 121   6                                                      shige++;
 122   6                                                      if(shige>=10)
 123   6                                                      {
 124   7                                                              shige=0;
 125   7                                                              shishi++;
 126   7                                                              if(shishi>2)
 127   7                                                              shishi=0;
 128   7                                                      }
 129   6      
 130   6                                              }
 131   5                                      }
 132   4                              }
 133   3                      }
 134   2                              
 135   2      
 136   2              }
 137   1              lcd_pos(0X07);                          // 设置显示位置为第二行12区为秒个位
 138   1              lcd_wdat(dis1[miaoge]);
 139   1                      lcd_pos(0X06);                          // 设置显示位置为第二行11区为秒十位
 140   1              lcd_wdat(dis1[miaoshi]);
 141   1                      lcd_pos(0x05);
 142   1              lcd_wdat(0x3a);
 143   1                      lcd_pos(0X04);                          // 设置显示位置为第二行的第9区为分个位
 144   1              lcd_wdat(dis1[fengge]);
 145   1                      lcd_pos(0X03);                          // 设置显示位置为第二行的第8区为分十位
 146   1              lcd_wdat(dis1[fengshi]);
 147   1                      lcd_pos(0x02);
 148   1              lcd_wdat(0x3a);
 149   1                      lcd_pos(0X01);                          // 设置显示位置为第二行的第6区时十位    
 150   1              lcd_wdat(dis1[shige]);
 151   1                      lcd_pos(0X00);                          // 设置显示位置为第二行的第5区时个位
 152   1              lcd_wdat(dis1[shishi]);
 153   1      }
 154          main()
 155          {       EA=1;
 156   1              EX0=1;
 157   1              TMOD=0X01;
 158   1              TH1=0X4c;
 159   1              TL1=0x00;
 160   1              ET1=1;
 161   1              TR1=1;
 162   1              lcd_init();                             // 初始化LCD                    
 163   1              delay(10);
 164   1              while(1)
 165   1              { 
 166   2                      time();
 167   2              }
 168   1      
 169   1      }
 170          void int0(void) interrupt 0
 171          {
 172   1              num++;
 173   1              P0=~P0;
 174   1      
 175   1      }
 176          void time1(void) interrupt 3
 177          {       ET1=0;
 178   1              TR1=0;
 179   1              TH1=0X4c;
C51 COMPILER V8.02   LCD时钟                                                               08/19/2008 21:00:06 PAGE 4   

 180   1              TL1=0X00;
 181   1              TR1=1;
 182   1              temp++;
 183   1              ET1=1;  
 184   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    355    ----
   CONSTANT SIZE    =     27    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -