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

📄 xiyiji.lst

📁 使用KEIL PROTEUS等软件,实现键盘扫描和LED灯的显示
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.07   XIYIJI                                                                09/11/2005 16:35:01 PAGE 1   


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

stmt level    source

   1           /*P1.0~~~p1.5  键盘扫描口
   2          P3.5  测温器
   3          P3.6  加热器
   4          P0   显示数据口
   5          P2.0~~~P2.2 显示口控制线
   6          P2.3  检测水满
   7          P2.4  检测水排光
   8          P2.5  加水闸;
   9          P2.6  排水闸;
  10          P2.7  喇叭
  11          3.0   洗衣服电机
  12          P3.1  洗衣服电机
  13          P3.2  P3.3 P3.4  状态灯口
  14          剩下没用到的口有
  15          P3.7 P1.6 P1.7
  16          */
  17          //*******************************************************
  18          #include <at89x51.h>     
  19          unsigned char minite=24; //分钟全局变量在定时器0中用到
  20          unsigned char second=8; //秒钟全局变量在定时器0中用到
  21          unsigned char  wdz=37;   //全局变量可调节的临界温度值变量
  22          bit flag=0;
  23          bit sflag=0;   //设置慢洗中的变量 在定时器0中用到
  24          bit sflagg=0;  //设置报警中的变量 在定时器1中用到
  25          unsigned char san=0; //设置三分钟排水 报警中的变量 在定时器1中用到
  26          unsigned char ba=0;  //设置八分钟排水 报警中的变量 在定时器1中用到
  27          unsigned char biao=0; //设置标号选择 识别按键值
  28          unsigned char su=0;   //确定键的标识号
  29          unsigned char jc1,jc2;//暂停时 寄存 p2 p3 口
  30          //******************************************************
  31          void jia();
  32          void jian();
  33          void getkey(void);
  34          void jiashui(void);
  35          void paishui(void);
  36          void jiawen(void);
  37          void threetime(void );
  38          void twotime(void);
  39          void manxi(void);
  40          void sure(void);
  41          void baojing(void);
  42          //*************************************************
  43          void daojishi(void) ;//定时器0
  44          void dingshi(void) ;//定时器1
  45          //************************************************
  46          void disauto3();//以下是六个操作按键的显示函数
  47          void disauto2(void);
  48          void diskxi(void);
  49          void dismxi(void);
  50          void distuoshui(void);
  51          void disjiare(void);
  52          //*************************************************
  53          void delay(unsigned int i);//延时
  54          void Delay1ms(unsigned int count);//延时
  55          //LCD灯显示的初始化******************************************
C51 COMPILER V7.07   XIYIJI                                                                09/11/2005 16:35:01 PAGE 2   

  56          sbit LcdRs              = P2^0;
  57          sbit LcdRw              = P2^1;
  58          sbit LcdEn      = P2^2;
  59          #define  DBPort   P0
  60          #define LCD_COMMAND                     0      // Command
  61          #define LCD_DATA                        1      // Data
  62          unsigned char LCD_Wait(void);
  63          void LCD_Write(bit style, unsigned char input);
  64          void LCD_Initial();
  65          void GotoXY(unsigned char x, unsigned char y);
  66          void Print(unsigned char *str);
  67          void IntToStr( unsigned char *str) ;
  68          void charToStr( unsigned char *str) ;
  69          void display(void);//显示当前温度和设置要到的温度
  70          void disp(void);//
  71          void wdszStr( unsigned char *str) ;
  72          void wdszdis(void);
  73          //**************************************
  74          sbit DQ=P3^5;//读温度是用到的函数
  75          ReadOneChar(void);//读一个字节
  76          WriteOneChar(unsigned char dat);
  77          unsigned int ReadTemperature(void);//读取温度
  78          //***************************************************
  79          void main(void)
  80          {       
  81   1         unsigned char n;
  82   1         for(n=0;n<2;n++)
  83   1              {
  84   2              P2=0;P3=0;
  85   2                      LCD_Initial();
  86   2              Delay1ms(10);
  87   2                      GotoXY(0,0);
  88   2                      Print("Hello Welcome to");
  89   2              GotoXY(0,1);
  90   2                      Print("Washing System !");
  91   2           }
  92   1              while(1)
  93   1                {
  94   2                  getkey();
  95   2                      if((biao==3)||(biao==4)||(biao==5))disp();
  96   2                      if(biao==6)display();
  97   2                 }
  98   1      }
  99          //************************************************************************
 100          void Delay1ms(unsigned int count)
 101          {
 102   1              unsigned int i,j;
 103   1              for(i=0;i<count;i++)
 104   1              for(j=0;j<120;j++);
 105   1      }
 106          void delay(unsigned int i)//延时函数
 107          {
 108   1          while(i--); 
 109   1      }
 110          //*************************************************************************
 111          bit pkey(void)//判断键的否被按下,通过返回值确定
 112          {
 113   1         P1=0x38;      //p.0~p1.2接行,p1.3~~~p1.5接列。。给行输入低电平,给列输入高电平,整体扫描
 114   1         if(P1!=0x38)
 115   1           {
 116   2             Delay1ms(50);
 117   2             if(P1!=0x38)
C51 COMPILER V7.07   XIYIJI                                                                09/11/2005 16:35:01 PAGE 3   

 118   2             return 1;//如果有按键按下返回1
 119   2             else 
 120   2             return 0;
 121   2            }
 122   1          else return 0;//没有按键按下返回0
 123   1      }
 124          void getkey(void)
 125          {  
 126   1       unsigned char key=0x09,s,k,c;
 127   1       while(1)
 128   1        { 
 129   2         if(pkey()==1)
 130   2         {
 131   3          P1=0x3e;
 132   3          k=0x3e;
 133   3              for(c=0;c<3;c++)
 134   3                { 
 135   4                      s=P1&0x38;
 136   4                      switch(s)
 137   4                       {
 138   5                        case 0x30: key=3*c+0; break; 
 139   5                        case 0x28: key=3*c+1; break;
 140   5                        case 0x18: key=3*c+2; break;
 141   5                        default: break; 
 142   5                      }
 143   4                      k=(k<<1)|0x01;
 144   4                      P1=k;  
 145   4                }
 146   3           while(pkey());
 147   3           switch(key)
 148   3             {
 149   4                  case 0x00 :if(su==0)disauto3(); break;//自动洗3次加脱水
 150   4              case 0x01 :if(su==0)disauto2(); break;//自动洗2次加脱水
 151   4              case 0x02 :if(su==0)diskxi();break;//快速洗一次
 152   4              case 0x03 :if(su==0)dismxi() ;break;//慢速洗一次
 153   4              case 0x04 :if(su==0)distuoshui();break;//脱水
 154   4              case 0x05 :if(su==0)disjiare();break; //加温
 155   4              case 0x06 :jia(); break;//加
 156   4              case 0x07 :jian();break;//减
 157   4                      case 0x08 :su++;if(su>=4)su=2;sure();break;//确定键和暂停
 158   4              default   :break;   
 159   4                 }
 160   3                      
 161   3          }
 162   2         else 
 163   2        break;
 164   2       }
 165   1      }
 166          //****************************************************
 167          void disauto3(void)
 168          { 
 169   1          P3_2=0;P3_3=1;P3_4=1;TR1=0;
 170   1          GotoXY(0,0);
 171   1              Print("system will auto");
 172   1              GotoXY(0,1);
 173   1              Print("wash three times");
 174   1              biao=1;
 175   1      }
 176          void disauto2(void)
 177          { 
 178   1          P3_2=1;P3_3=0;P3_4=1;TR1=0;
 179   1          GotoXY(0,0);
C51 COMPILER V7.07   XIYIJI                                                                09/11/2005 16:35:01 PAGE 4   

 180   1              Print("system will auto");
 181   1              GotoXY(0,1);
 182   1              Print(" wash two times ");
 183   1              biao=2;
 184   1       }
 185          void diskxi(void)
 186          {
 187   1              P3_2=0;P3_3=0;P3_4=1;TR1=0;
 188   1              minite=8;
 189   1              GotoXY(0,0);
 190   1              Print(" kuai xi yi ci  ");
 191   1              GotoXY(0,1);
 192   1              Print("time:           ");
 193   1              biao=3;
 194   1      }
 195          void dismxi(void)
 196          {
 197   1              P3_2=1;P3_3=1;P3_4=0;TR1=0;
 198   1              minite=8;
 199   1              GotoXY(0,0);
 200   1              Print(" man xi yi ci   ");
 201   1              GotoXY(0,1);
 202   1              Print("time:           ");
 203   1              biao=4;
 204   1      }
 205          void distuoshui(void)
 206          {
 207   1              P3_2=0;P3_3=1;P3_4=0;TR1=0;
 208   1          minite=7;P2_6=1;
 209   1              GotoXY(0,0);
 210   1              Print("tuo shui shijian");
 211   1              GotoXY(0,1);
 212   1              Print("time:           ");
 213   1              biao=5;
 214   1      }
 215          void disjiare(void)
 216          { 
 217   1              P3_2=1;P3_3=0;P3_4=0;TR1=0;
 218   1              GotoXY(0,0);
 219   1              Print("from:           ");
 220   1              GotoXY(0,1);
 221   1              Print("to:             ");
 222   1              biao=6;
 223   1      }
 224          //************************************************************
 225          void jia(void)
 226          {
 227   1        minite++; wdz++;
 228   1        if(minite==60) minite=0; 
 229   1      }
 230          void jian(void)
 231          {
 232   1        minite--; wdz--;
 233   1        if(minite<=0) minite=0; 
 234   1      }
 235          //*************************************************************************
 236          void sure(void)
 237          {
 238   1          while(su==1)
 239   1            {   

⌨️ 快捷键说明

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