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

📄 power.lst

📁 51单片机控制简易数控直流电源源码加仿真。
💻 LST
字号:
C51 COMPILER V8.05a   POWER                                                                05/14/2008 15:39:54 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE POWER
OBJECT MODULE PLACED IN power.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE power.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <at89x51.h>
   2          #include "lcd_h.h"
   3          const char LCDnum[10]="0123456789";
   4          unsigned int value=255,result1=0,result2=0,svalue=255,tri=263;
   5          unsigned char y=0,z=0,j=0,true=1;
   6          float x1=0,x2=0;
   7          void display(void)
   8          {
   9   1               write_LCD_data(LCDnum[9-y]);
  10   1               display_LCD_string(".");
  11   1               write_LCD_data(LCDnum[9-z]);
  12   1               display_LCD_string("V");
  13   1      }
  14          void delay_50us(unsigned int t)
  15          {
  16   1               unsigned char j;
  17   1               for(;t>0;t--)
  18   1               for(j=19;j>0;j--);
  19   1      }
  20          void main(void)
  21          {
  22   1               delayms(50);                             
  23   1               init_LCD();                              // 初始化LCD
  24   1               clear_LCD();                             //
  25   1               movexy(2,5);                             //
  26   1               value=P1;                                        // 指拨开关设初值
  27   1               svalue=value;
  28   1               x1=(value+0.0)/256*100;          // 数据处理
  29   1               y=x1/10;                                         //
  30   1               z=(x1-y*10);                             //
  31   1               P2=value;                                        //往DS0832写数据
  32   1               P3_0=0;                                          //启动D/A
  33   1               P3_0=1;                                          //关闭D/A
  34   1               display();                                       //1602显示数据
  35   1               do                                                       //查询按键情况
  36   1               {
  37   2                      if (P3_1==0)                      //-0.1V
  38   2                      {
  39   3                              delay_50us(200);
  40   3                              if (P3_1==0)
  41   3                              {       
  42   4                                      do
  43   4                                      {
  44   5                                              if (y==9&&z==9) break;    //若输出为0.0V,退出
  45   5                                              value++;
  46   5                                              x1=(value+0.0)/256*100;
  47   5                                              x2=(value+1.0)/256*100; 
  48   5                                              result1=(unsigned int)(x1);
  49   5                                              result2=(unsigned int)(x2);
  50   5                                      }while((result2-result1)!=1);
  51   4                                      clear_LCD();
  52   4                                      movexy(2,5);
  53   4                                      y=x1/10;
  54   4                                      z=(x1-y*10);
  55   4                                      display();
C51 COMPILER V8.05a   POWER                                                                05/14/2008 15:39:54 PAGE 2   

  56   4                                      P2=value;
  57   4                                      P3_0=0;
  58   4                                      P3_0=1;
  59   4                                      svalue=value;             //保存当前值,为切换输出类型准备
  60   4                                      while(P3_1==0);
  61   4                              }
  62   3                       }
  63   2                      if (P3_2==0)                      //+0.1V
  64   2                      {
  65   3                              delay_50us(200);
  66   3                              if (P3_2==0)
  67   3                              {
  68   4                                      do
  69   4                                      {                       
  70   5                                              if (y==0&&z==0)                   //若输出为9.9V,保持不变
  71   5                                              {
  72   6                                                      value=4;
  73   6                                                      break;
  74   6                                              }               
  75   5                                              value--;
  76   5                                              x1=(value-0.0)/256*100;
  77   5                                              x2=(value-1.0)/256*100; 
  78   5                                              result1=(unsigned int)(x1);
  79   5                                              result2=(unsigned int)(x2);
  80   5                                      }while((result1-result2)!=1);
  81   4                                      clear_LCD();
  82   4                                      movexy(2,5);
  83   4                                      y=x2/10;
  84   4                                      z=(x2-y*10);
  85   4                                      display();
  86   4                                      P2=value-1;
  87   4                                      svalue=value-1;
  88   4                                      
  89   4                                      P3_0=0;
  90   4                                      P3_0=1;
  91   4                                      while(P3_2==0);
  92   4                               }
  93   3                      }
  94   2                      if (P3_3==0)                                       //方波输出按钮
  95   2                      {
  96   3                              delay_50us(200);
  97   3                              if (P3_3==0)
  98   3                              {
  99   4                                      clear_LCD();
 100   4                                      movexy(1,0);
 101   4                                      display_LCD_string("SQUARE POWER");
 102   4                                      while(P3_3==0);
 103   4                                      do
 104   4                                      {
 105   5                                              P2=255;                    //低点平0V
 106   5                                              P3_0=0;
 107   5                                              P3_0=1;
 108   5                                              delay_50us(100);
 109   5                                              P2=128;                    //高电平5V
 110   5                                              P3_0=0;
 111   5                                              P3_0=1;
 112   5                                              delay_50us(100);
 113   5                                              if (P3_3==0) true=0;    //再按一次方波输出返回
 114   5                                      }while(true);
 115   4                                      true=1;
 116   4                                      P2=svalue;
 117   4                                      P3_0=0;
C51 COMPILER V8.05a   POWER                                                                05/14/2008 15:39:54 PAGE 3   

 118   4                                      P3_0=1;
 119   4                                      clear_LCD();
 120   4                                      movexy(2,5);
 121   4                                      display();
 122   4                                      while(P3_3==0);
 123   4                              }
 124   3                      }
 125   2                      if (P3_4==0)                                    //三角波输出
 126   2                      {
 127   3                              delay_50us(200);
 128   3                              if (P3_4==0)
 129   3                              {
 130   4                                      clear_LCD();
 131   4                                      movexy(1,0);
 132   4                                      display_LCD_string("TRIANGLE POWER");
 133   4                                      while(P3_4==0);                         //循环输出三角波
 134   4                                      do
 135   4                                      {
 136   5                                              for (j=0;j<=16;j++)             //从0V到5V
 137   5                                              {
 138   6                                                      tri=tri-8;
 139   6                                                      P2=tri;
 140   6                                                      P3_0=0;
 141   6                                                      P3_0=1;
 142   6                                                      delay_50us(100);
 143   6                                                      if (P3_4==0) break;
 144   6                                              }
 145   5                                              if (P3_4==0) break;
 146   5                                              tri=tri+8;
 147   5                                              for (j=0;j<=15;j++)             //从5V到0V
 148   5                                              {
 149   6                                                      P2=tri;
 150   6                                                      tri=tri+8;
 151   6                                                      P3_0=0;
 152   6                                                      P3_0=1;
 153   6                                                      delay_50us(100);
 154   6                                                      if (P3_4==0) break;
 155   6                                              }
 156   5                                              tri=263;
 157   5                                              if (P3_4==0) break;
 158   5                                      }while(1);
 159   4                                      P2=svalue;
 160   4                                      P3_0=0;
 161   4                                      P3_0=1;
 162   4                                      clear_LCD();
 163   4                                      movexy(2,5);
 164   4                                      display();
 165   4                                      while(P3_4==0);
 166   4                              }
 167   3                      }                        
 168   2               }while(1);
 169   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1011    ----
   CONSTANT SIZE    =     32    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     32    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V8.05a   POWER                                                                05/14/2008 15:39:54 PAGE 4   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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