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

📄 shizhong.lst

📁 主要由AT89S52,lcd1602,ds1302以及4*4键盘的控制是实现的一个简单电子表 适合初学单片机者下载
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   SHIZHONG                                                             05/13/2009 17:15:03 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE SHIZHONG
OBJECT MODULE PLACED IN shizhong.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE shizhong.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //design by Mr zhen
   2          //date:2009-05-10
   3          //采用4-4矩阵键盘中的三个作为按键
   4          #include <reg52.h>
   5          #include <stdio.h>
   6          #include"ds1302.h"
   7          #include"lcd1602.h"
   8          #define uchar unsigned char
   9          #define uint unsigned int
  10          uchar temp,num=0,s=0;
  11          sbit key_set=P0^4; //功能设计键
  12          sbit key_up=P0^5;//上调
  13          sbit key_down=P0^6;//下调
  14          uchar flag,flag_up,flag_down,id,flag_set,f1,f2,id1[1];//转换标志
  15          uchar ucCurtime[7],times[10],date[12];
  16          uchar inittime[7]={0x00,0x15,0x17,0x10,0x05,0x01,0x09};//初始化时间09年5月9日下午17点31分00秒
  17          void change();
  18          void disp_time(void);
  19          void disp_set(void);
  20          void set(void);
  21          void main()
  22          {
  23   1       LCD_init();
  24   1       v_setd1302(inittime);
  25   1       delay(100); 
  26   1       while(1)
  27   1       {
  28   2        set();
  29   2        disp_time();
  30   2       }
  31   1      }
  32          
  33           void set (void)  //功能设置程序
  34          {  
  35   1         P0=0xf7;
  36   1        //test(key_set); //检测按键1是否按下
  37   1         if (key_set==0)
  38   1        {
  39   2         flag_set=1;
  40   2         f1=1;
  41   2         delay(10);
  42   2         disp_set();
  43   2         if(key_set==0)
  44   2          {
  45   3               flag_set=1;   //真正按下则置标志1
  46   3               while(key_set==0);
  47   3               }
  48   2         }
  49   1      
  50   1        if(flag_set==1) //如果设置键1按下
  51   1         {while(flag_set==1)//等待设置键1再次按下之前测试键2、3的功能选择
  52   2              {//test(key_up);
  53   3                if (key_up==0)
  54   3             {
  55   4                   delay(10);
C51 COMPILER V8.05a   SHIZHONG                                                             05/13/2009 17:15:03 PAGE 2   

  56   4               if(key_up==0)
  57   4               {flag=1;   //真正按下则置标志1
  58   5                    while(key_up==0);
  59   5                   }
  60   4              }
  61   3               flag_up=flag;
  62   3               flag=0;
  63   3               if(flag_up==1)  //键2功能选择键的功能加1,转向下一功能设置
  64   3                {id++;
  65   4                delay(10);
  66   4                flag_up=0;
  67   4                 if (id==5)  //功能循环选择
  68   4                   {id=0;}
  69   4                 }
  70   3               //test(key_down);
  71   3                if (key_down==0)
  72   3             {delay(10);
  73   4               if(key_down==0)
  74   4                {flag=1;   //真正按下则置标志1
  75   5                     while(key_down==0);
  76   5                    }
  77   4             }
  78   3               flag_down=flag;
  79   3               flag=0;
  80   3               if(flag_down==1) //键3功能选择键的功能减1,转向上一功能设置
  81   3                {id--;
  82   4                delay(10);
  83   4                flag_down=0;
  84   4                 if (id==0xff)   //功能循环选择
  85   4                   {id=4;}
  86   4                 }
  87   3                //test(key_set);
  88   3                   if (key_set==0)
  89   3                {delay(10);
  90   4                 if(key_set==0)
  91   4                  {flag=1;   //真正按下则置标志1
  92   5                        while(key_set==0);
  93   5                       }
  94   4                }
  95   3            flag_set=!flag;  //键1再次按下则flag_set=!flag=0,退出该while循环
  96   3                flag=0;
  97   3                disp_set();
  98   3               }
  99   2               while(flag_set==0)     //等待设置键1第三次按下之前测试键2、3进行各项数据的加减调整
 100   2               { 
 101   3               switch(id)
 102   3                 {
 103   4                        case 0: //test(key_up);            //调年加
 104   4                                 if (key_up==0)
 105   4                      {delay(20);
 106   5                       if(key_up==0)
 107   5                        {flag=1;   //真正按下则置标志1
 108   6                             while(key_up==0);
 109   6                            }
 110   5                       }
 111   4                         flag_up=flag;
 112   4                         flag=0;
 113   4                         if(flag_up==1)
 114   4                                 {inittime[6]++;
 115   5                                  if(inittime[6]==0x0a)
 116   5                                      {inittime[6]=0x10;}
 117   5                                      if(inittime[6]==0x1a)
C51 COMPILER V8.05a   SHIZHONG                                                             05/13/2009 17:15:03 PAGE 3   

 118   5                                      {inittime[6]=0x20;}
 119   5                                      if(inittime[6]==0x2a)
 120   5                                      {inittime[6]=0x30;}
 121   5                                      if(inittime[6]==0x3a)
 122   5                                      {inittime[6]=0x40;}
 123   5                                      if(inittime[6]==0x4a)
 124   5                                      {inittime[6]=0x50;}
 125   5                                  if(inittime[6]==0x5a)
 126   5                                      {inittime[6]=0;}
 127   5                                      }
 128   4                                // test(key_down);       //调年减
 129   4                                      if (key_down==0)
 130   4                      {delay(10);
 131   5                       if(key_down==0)
 132   5                       {flag=1;   //真正按下则置标志1
 133   6                        while(key_down==0);
 134   6                            }
 135   5                       }
 136   4                         flag_down=flag;
 137   4                         flag=0;
 138   4                         if(flag_down==1)
 139   4                                 {inittime[6]--;
 140   5                                  if(inittime[6]==0x0f)
 141   5                                      {inittime[6]=0x09;}
 142   5                                      if(inittime[6]==0x1f)
 143   5                                      {inittime[6]=0x19;}
 144   5                                      if(inittime[6]==0x2f)
 145   5                                      {inittime[6]=0x29;}
 146   5                                      if(inittime[6]==0x3f)
 147   5                                      {inittime[6]=0x39;}
 148   5                                      if(inittime[6]==0x4f)
 149   5                                      {inittime[6]=0x49;}
 150   5                                  if(inittime[6]==0xff)
 151   5                                      {inittime[6]=0x59;}
 152   5                                  }
 153   4                                      v_setd1302(inittime);
 154   4                                      break;
 155   4                        case 1: //test(key_up);                 //调月份加
 156   4                         if (key_up==0)
 157   4                      {delay(10);
 158   5                       if(key_up==0)
 159   5                        {flag=1;   //真正按下则置标志1
 160   6                        while(key_up==0); 
 161   6                            }
 162   5                      }
 163   4                         flag_up=flag;
 164   4                         flag=0;
 165   4                         if(flag_up==1)     
 166   4                                  { inittime[4]++;
 167   5                                    if(inittime[4]==0x0a) //完成进制的转换
 168   5                                        {inittime[4]=0x10;}
 169   5                                        if(inittime[4]==0x13)
 170   5                                        {inittime[4]=0x00;}
 171   5                                      }
 172   4                                 //test(key_down);             //调月份减
 173   4                                 if (key_down==0)
 174   4                      {delay(10);
 175   5                        if(key_down==0)
 176   5                         {flag=1;   //真正按下则置标志1
 177   6                         while(key_down==0); 
 178   6                              }
 179   5                       }
C51 COMPILER V8.05a   SHIZHONG                                                             05/13/2009 17:15:03 PAGE 4   

 180   4                         flag_down=flag;
 181   4                         flag=0;
 182   4                         if(flag_down==1)
 183   4                                  { inittime[4]--;
 184   5                                    if(inittime[4]==0x0f) //完成进制的转换
 185   5                                        {inittime[4]=0x09;}
 186   5                                        if(inittime[4]==0xff)
 187   5                                        {inittime[4]=0x12;}
 188   5                                      }
 189   4                                      v_setd1302(inittime);
 190   4                                      break;
 191   4                        case 2: //test(key_up);            //调日期加
 192   4                                 if (key_up==0)
 193   4                      {delay(10);
 194   5                       if(key_up==0)
 195   5                        {flag=1;   //真正按下则置标志1
 196   6                       while(key_up==0);
 197   6       
 198   6                            }
 199   5                       }
 200   4                         flag_up=flag;
 201   4                         flag=0;
 202   4                         if(flag_up==1)
 203   4                                 {inittime[3]++;
 204   5                                  if(inittime[3]==0x0a)
 205   5                                      {inittime[3]=0x10;}
 206   5                                      if(inittime[3]==0x1a)
 207   5                                      {inittime[3]=0x20;}
 208   5                                      if(inittime[3]==0x2a)
 209   5                                      {inittime[3]=0x30;}
 210   5                                      if(inittime[3]==0x32)
 211   5                                      {inittime[3]=0x00;}
 212   5                                      }
 213   4                                // test(key_down);       //调日期减
 214   4                                      if (key_down==0)

⌨️ 快捷键说明

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