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

📄 lcd_tem_clock.lst

📁 万年历+温度+12864LCD
💻 LST
字号:
C51 COMPILER V8.05a   LCD_TEM_CLOCK                                                        07/31/2008 11:16:13 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE LCD_TEM_CLOCK
OBJECT MODULE PLACED IN LCD_TEM_CLOCK.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE LCD_TEM_CLOCK.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <DS18B20.H>
   3          #include <DS1302.H>
   4          #include <LCD12864.H>
   5          
   6          unsigned char j[8];
   7          sbit KEY1=P3^2;
   8          sbit KEY2=P3^3;
   9          sbit KEY3=P3^4;
  10          sbit LED1=P3^5;
  11          sbit LED2=P3^6;
  12          sbit LED3=P3^7;
  13          
  14          uchar time0_count;      //time0计数器
  15          
  16          void delay10(void)
  17          {
  18   1              unsigned char i,j;
  19   1              for(i=0;i<255;i++)
  20   1              for(j=0;j<200;j++);
  21   1      }
  22          
  23          unsigned char conver(unsigned char a,unsigned char b,unsigned char c)
  24          {       
  25   1       
  26   1              if((a&0x0f)==0x0a) a=a+6;
  27   1              if(a==b)  a=c;
  28   1              return a;
  29   1      }
  30          
  31          
  32          
  33          
  34          
  35          main() 
  36          {       
  37   1              bit flag_2=1;
  38   1              bit flag_3=1;
  39   1              bit flag_4=1;
  40   1              int i;           
  41   1              char a;    
  42   1              unsigned  char  choose=0x01;
  43   1      
  44   1              InitLCD();        //初始化LCD12864
  45   1              for(i=0;i<9;i++)
  46   1                      {
  47   2                       ShowNumber(6,i*8+32,i+14);
  48   2                       }
  49   1              Show32x32(0,0,0);
  50   1              ShowChina(4,0,7);
  51   1              ShowChina(4,16,8);
  52   1              ShowChina(4,32,9);
  53   1              ShowChina(4,48,10);
  54   1              ShowNumber(4,64,10);      //显示温度高位
  55   1      
C51 COMPILER V8.05a   LCD_TEM_CLOCK                                                        07/31/2008 11:16:13 PAGE 2   

  56   1                      read_serial(j);                   //读取DS1302的时间
  57   1      
  58   1      
  59   1                      ShowNumber(2,32,j[2]>>4&0x03);
  60   1                      ShowNumber(2,40, j[2]&0x0f);
  61   1                      ShowChina(2,48,3);
  62   1                      ShowNumber(2,64,j[1]>>4&0x07);
  63   1                      ShowNumber(2,72, j[1]&0x0f);
  64   1                      ShowChina(2,80,4);
  65   1                      ShowNumber(2,96,j[0]>>4&0x07);
  66   1                      ShowNumber(2,104, j[0]&0x0f);
  67   1                      ShowChina(2,112,5);
  68   1      
  69   1      
  70   1                      ShowNumber(0,32,j[6]>>4&0x0f);
  71   1                      ShowNumber(0,40, j[6]&0x0f);
  72   1                      ShowChina(0,48,0);
  73   1                      ShowNumber(0,64,j[4]>>4&0x01);
  74   1                      ShowNumber(0,72, j[4]&0x0f);
  75   1                      ShowChina(0,80,1);
  76   1                      ShowNumber(0,96,j[3]>>4&0x03);
  77   1                      ShowNumber(0,104, j[3]&0x0f);
  78   1                      ShowChina(0,112,2);
  79   1      
  80   1                      ShowChina(4,104,6); 
  81   1                      ShowNumber(4,120,j[5]-1&0x07);
  82   1                      
  83   1       
  84   1      
  85   1       
  86   1      
  87   1              while(1)
  88   1              {
  89   2                  //send_char_com(0x31);
  90   2      
  91   2                      if(flag_2==1)
  92   2                      read_serial(j);                   //读取DS1302的时间
  93   2                      else 
  94   2                      write_date_time(j);
  95   2      
  96   2      
  97   2      
  98   2                      a=Read_Temperature();     //读取DS18B20的温度
  99   2                      if(a<0)                                   //处理温度正负
 100   2                      {       
 101   3                                      a = (-1)*a;     // 取补
 102   3                                      ShowNumber(4,72,11);      //显示温度正负
 103   3                      }
 104   2                      else 
 105   2                      { 
 106   3                                      ShowNumber(4,72,12);      //显示温度正负
 107   3                      }
 108   2       
 109   2                      ShowNumber(4,80,a/100);   //显示温度高位
 110   2         
 111   2                      ShowNumber(4,88,a/10%10);  //显示温度中位
 112   2                
 113   2                      ShowNumber(4,96,a%10);     //显示温度低位
 114   2      
 115   2                      LED3=1;LED2=0;LED1=1;
 116   2                      if(a>40){LED3=0;LED2=1;LED1=1;}
 117   2                      if(a<30){LED3=1;LED2=1;LED1=0;}
C51 COMPILER V8.05a   LCD_TEM_CLOCK                                                        07/31/2008 11:16:13 PAGE 3   

 118   2      
 119   2        
 120   2      
 121   2      
 122   2                      if(KEY1==0)                               //按键1--处理设定时间和返回
 123   2                      {
 124   3                              delay10();
 125   3                              if(KEY1==1)
 126   3                              {
 127   4                                      delay10();
 128   4                                      flag_2=~flag_2; 
 129   4                              }
 130   3                      }
 131   2      
 132   2                      if(KEY2==0)                               //按键2--处理选择设定时间的项目
 133   2                      { 
 134   3                              delay10();
 135   3                              if(KEY2==1)
 136   3                              {
 137   4                                      delay10();
 138   4                                      choose++;
 139   4                                      if(choose==8)
 140   4                                      choose=0x01;
 141   4                              }       
 142   3                      }
 143   2      
 144   2      
 145   2                      if(KEY3==0)                               //按键3--处理设定时间和返回
 146   2                      {       delay10();
 147   3                              if(KEY3==1)
 148   3                              {
 149   4                                      delay10(); 
 150   4                                      switch(choose)
 151   4                                      {
 152   5                                              case 1: j[6]++; j[6]=conver(j[6],0xa0,0x00);break;//年
 153   5                                              case 2: j[5]++; j[5]=conver(j[5],0x07,0x00);break;//周
 154   5                                              case 3: j[4]++; j[4]=conver(j[4],0x13,0x01);break;//月
 155   5                                              case 4: j[3]++; j[3]=conver(j[3],0x32,0x01);break;//日
 156   5                                              case 5: j[2]++; j[2]=conver(j[2],0x24,0x00);break;//时
 157   5                                              case 6: j[1]++; j[1]=conver(j[1],0x60,0x00);break;//分
 158   5                                              case 7: j[0]++; j[0]=conver(j[0],0x60,0x00);break;//秒
 159   5                                      }
 160   4                              }       
 161   3                      }
 162   2      
 163   2                      if(flag_2==1)
 164   2                      read_serial(j);                   //读取DS1302的时间
 165   2                      else 
 166   2                      write_date_time(j);
 167   2      
 168   2                      ShowNumber(2,32,j[2]>>4&0x03);
 169   2                      ShowNumber(2,40, j[2]&0x0f);
 170   2                      ShowChina(2,48,3);
 171   2                      ShowNumber(2,64,j[1]>>4&0x07);
 172   2                      ShowNumber(2,72, j[1]&0x0f);
 173   2                      ShowChina(2,80,4);
 174   2                      ShowNumber(2,96,j[0]>>4&0x07);
 175   2                      ShowNumber(2,104, j[0]&0x0f);
 176   2                      ShowChina(2,112,5);
 177   2      
 178   2      
 179   2                      ShowNumber(0,32,j[6]>>4&0x0f);
C51 COMPILER V8.05a   LCD_TEM_CLOCK                                                        07/31/2008 11:16:13 PAGE 4   

 180   2                      ShowNumber(0,40, j[6]&0x0f);
 181   2                      ShowChina(0,48,0);
 182   2                      ShowNumber(0,64,j[4]>>4&0x01);
 183   2                      ShowNumber(0,72, j[4]&0x0f);
 184   2                      ShowChina(0,80,1);
 185   2                      ShowNumber(0,96,j[3]>>4&0x03);
 186   2                      ShowNumber(0,104, j[3]&0x0f);
 187   2                      ShowChina(0,112,2);
 188   2      
 189   2                      ShowChina(4,104,6); 
 190   2                      ShowNumber(4,120,j[5]-1&0x07);
 191   2              }
 192   1      }
 193          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2163    ----
   CONSTANT SIZE    =    912    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9      41
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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