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

📄 anjian.lst

📁 按键的识别算法
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   ANJIAN                                                                10/08/2007 15:34:45 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ANJIAN
OBJECT MODULE PLACED IN anjian.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE anjian.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include<string.h>
   3          #include<math.h>
   4          #define uint  unsigned int
   5          #define uchar unsigned char
   6          
   7          #define x1    0x80
   8          #define x2    0x88
   9          #define y     0x80
  10          #define comm  0
  11          #define dat   1
  12          sbit cs   = P2^5;
  13          sbit std  = P2^6;
  14          sbit sclk = P2^7;
  15          
  16          uchar number=0;
  17          uchar count=0;
  18          uchar list=0;
  19          //uchar idata tt[10]={0x07,0x06,0x06,0x17,0x25}; 
  20          uchar idata tab1[64];
  21          uchar idata buffer[12];
  22          
  23          uchar code tab2[]={
  24          "  时间          "
  25          "  电压设置      "
  26          "  电压值        "
  27          "  电压统计量    "
  28          };
  29          
  30          uchar idata tab3[]={
  31          "2007-05-31 16:33"
  32          "2007-05-30 16:33"
  33          "电压值: 220.5V  "
  34          "电压值: 220.5V  "
  35          };
  36          
  37          uchar code tab4[]={
  38          "*-------------* "
  39          "上限电压: 107%  "
  40          "下限电压:  90%  "
  41          "*-------------* "
  42          };
  43          
  44          uchar code tab5[]={
  45          "  整点电压值    "
  46          "上限电压时间间隔"
  47          "下限电压时间间隔"
  48          "  停电时间间隔  "
  49          };
  50          
  51          void wr_lcd (uchar dat_comm,uchar content);
  52          void delay (uint us);
  53          //uchar keywork(uchar p,uchar k);
  54          
  55          /*------------------初始化-----------------*/
C51 COMPILER V7.50   ANJIAN                                                                10/08/2007 15:34:45 PAGE 2   

  56          void init_lcd (void)
  57          {
  58   1        
  59   1        wr_lcd (comm,0x30);  /*30---基本指令动作*/   
  60   1        wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
  61   1        delay (100);
  62   1        wr_lcd (comm,0x06);  /*光标的移动方向*/
  63   1        wr_lcd (comm,0x0c);  /*开显示,关游标*/
  64   1      }
  65          
  66          /*---------------显示汉字----------------*/
  67          void chn_disp (uchar code *chn)
  68          {
  69   1       uchar i,j;
  70   1        wr_lcd (comm,0x30);
  71   1        wr_lcd (comm,0x80);
  72   1        for (j=0;j<4;j++)
  73   1        {
  74   2          for (i=0;i<16;i++)
  75   2          wr_lcd (dat,chn[j*16+i]);
  76   2        }
  77   1      }
  78          
  79          /*---------------显示字----------------*/
  80          void chn_disp1 (uchar idata *chn)
  81          {
  82   1       uchar i,j;
  83   1        wr_lcd (comm,0x30);
  84   1        wr_lcd (comm,0x80);
  85   1        j=0;
  86   1        {
  87   2          for (i=0;i<16;i++)
  88   2          wr_lcd (dat,chn[j*16+i]);
  89   2        }
  90   1      }
  91          
  92          /*---------------显示电压----------------*/
  93          void chn_disp2 (uchar idata *chn)
  94          {
  95   1       uchar i,j;
  96   1        wr_lcd (comm,0x30);
  97   1        wr_lcd (comm,0x80);
  98   1        for (j=0;j<4;j++)
  99   1        {
 100   2          for (i=0;i<16;i++)
 101   2          wr_lcd (dat,chn[j*16+i]);
 102   2        }
 103   1      }
 104          /*--------------显示点阵----------------*/
 105          void lat_disp (uchar data1,uchar data2)
 106          {
 107   1        uchar i,j,k,x;
 108   1        x=x1;
 109   1        for(k=0;k<2;k++)
 110   1        {
 111   2          for(j=0;j<16;j++)
 112   2          {
 113   3            for(i=0;i<8;i++)
 114   3            {
 115   4              wr_lcd (comm,0x34);
 116   4              wr_lcd (comm,y+j*2);
 117   4              wr_lcd (comm,x+i);
C51 COMPILER V7.50   ANJIAN                                                                10/08/2007 15:34:45 PAGE 3   

 118   4              wr_lcd (comm,0x30);
 119   4              wr_lcd (dat,data1);
 120   4              wr_lcd (dat,data1);
 121   4            }
 122   3            for(i=0;i<8;i++)
 123   3            {
 124   4              wr_lcd (comm,0x34);
 125   4              wr_lcd (comm,y+j*2+1);
 126   4              wr_lcd (comm,x+i);
 127   4              wr_lcd (comm,0x30);
 128   4              wr_lcd (dat,data2);
 129   4              wr_lcd (dat,data2);
 130   4            }
 131   3          }
 132   2          x=x2;
 133   2        }
 134   1        wr_lcd (comm,0x36);
 135   1      }
 136          
 137          /*---------------反白 ---------------------*/
 138          void con_disp (uchar data1,uchar data2,uchar x0,uchar y0,uchar xl,uchar yl)
 139          {
 140   1        uchar i,j;
 141   1        for(j=0;j<yl;j++)
 142   1        {
 143   2          for(i=0;i<xl;i++)
 144   2          {
 145   3            wr_lcd (comm,0x34);
 146   3            wr_lcd (comm,y0+j);
 147   3            wr_lcd (comm,x0+i);
 148   3            wr_lcd (comm,0x30);
 149   3            wr_lcd (dat,data1);
 150   3            wr_lcd (dat,data2);
 151   3          }
 152   2        }
 153   1        wr_lcd (comm,0x36);
 154   1      }
 155          
 156          /*---------------------------------------*/
 157          void wr_lcd (uchar dat_comm,uchar content)
 158          {
 159   1        uchar a,i,j;
 160   1        delay (50);
 161   1        a=content;
 162   1        cs=1;
 163   1        sclk=0;
 164   1        std=1;
 165   1        for(i=0;i<5;i++)
 166   1        {
 167   2          sclk=1;
 168   2          sclk=0;
 169   2        }
 170   1        std=0;
 171   1        sclk=1;
 172   1        sclk=0;
 173   1        if(dat_comm)
 174   1          std=1;   //data
 175   1        else
 176   1          std=0;   //command
 177   1        sclk=1;
 178   1        sclk=0;
 179   1        std=0;
C51 COMPILER V7.50   ANJIAN                                                                10/08/2007 15:34:45 PAGE 4   

 180   1        sclk=1;
 181   1        sclk=0;
 182   1        for(j=0;j<2;j++)
 183   1        {
 184   2          for(i=0;i<4;i++)
 185   2          {
 186   3            a=a<<1;
 187   3            std=CY;
 188   3            sclk=1;
 189   3            sclk=0;
 190   3          }
 191   2          std=0;
 192   2          for(i=0;i<4;i++)
 193   2          {
 194   3            sclk=1;
 195   3            sclk=0;
 196   3          }
 197   2        }
 198   1      }
 199          
 200          /*-----------------------------------*/
 201          void delay (uint us)   //delay time
 202          {
 203   1        while(us--);
 204   1      }
 205          
 206          /*---------------数据处理--------------------*/
 207          void transfer(uchar idata tt[])
 208          { uchar i, time;
 209   1         for(i=0;i<6;i++)
 210   1        {
 211   2           time=tt[i];
 212   2           buffer[2*i+1]=time&0x0f;
 213   2           buffer[2*i]=time>>4;
 214   2        }
 215   1      }
 216          
 217          void convent( uchar idata buffer[])
 218          {  uchar i, time; 
 219   1         uchar idata pp[]={"-- :"};
 220   1         uchar idata buffer1[12];
 221   1         for(i=0;i<12;i++) 
 222   1        { time=buffer[i];
 223   2          switch(time)
 224   2                { case 0:buffer1[i]='0'; break;
 225   3                  case 1:buffer1[i]='1'; break;
 226   3                      case 2:buffer1[i]='2'; break;
 227   3                      case 3:buffer1[i]='3'; break;
 228   3                  case 4:buffer1[i]='4'; break;
 229   3                      case 5:buffer1[i]='5'; break;
 230   3                      case 6:buffer1[i]='6'; break;
 231   3                  case 7:buffer1[i]='7'; break;
 232   3                      case 8:buffer1[i]='8'; break;
 233   3                      case 9:buffer1[i]='9'; break;
 234   3                      default: break;
 235   3                }
 236   2         }
 237   1        for(i=0;i<4;i++)
 238   1          { tab1[i]=buffer1[i];
 239   2            tab1[3*i+4]=pp[i];
 240   2            tab1[3*i+5]=buffer1[2*i+4];
 241   2            tab1[3*i+6]=buffer1[2*i+5];
C51 COMPILER V7.50   ANJIAN                                                                10/08/2007 15:34:45 PAGE 5   

 242   2              }
 243   1       }
 244          
 245          /*-----------------1#键------------------*/
 246          void key1(uchar flag[])
 247          {  
 248   1           number++;
 249   1           if(number==3)
 250   1            number=1;
 251   1          flag[1]=number;
 252   1        if(flag[1]==1)
 253   1           {  flag[3]=1;
 254   2              flag[2]=1;
 255   2                      init_lcd ();
 256   2              lat_disp (0x00,0x00);
 257   2              chn_disp (tab2);
 258   2           }
 259   1        if(flag[1]==2)
 260   1           {  if(flag[4]==1)
 261   2                 { init_lcd ();
 262   3                   lat_disp (0x00,0x00);
 263   3                   convent(buffer);
 264   3                   chn_disp1 (tab1);
 265   3                           flag[5]=1;
 266   3                 }
 267   2              if(flag[4]==2)
 268   2                 { init_lcd ();
 269   3                   lat_disp (0x00,0x00);
 270   3                   chn_disp2 (tab3);
 271   3                   }
 272   2                 if(flag[4]==3)
 273   2               { init_lcd ();
 274   3                 lat_disp (0x00,0x00);
 275   3                 chn_disp (tab4);
 276   3                   }
 277   2                 if(flag[4]==4)
 278   2               { init_lcd ();
 279   3                 lat_disp (0x00,0x00);
 280   3                 chn_disp (tab5);
 281   3                   }
 282   2                  flag[1]=1;
 283   2                      
 284   2          }
 285   1      }
 286          
 287          /*-----------------2#键------------------*/
 288          void key2(uchar  flag[])
 289          {    count++;

⌨️ 快捷键说明

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