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

📄

📁 自调量程数字电压表 自动实现200MV档 2V档 20V档的量程调换
💻
字号:
C51 COMPILER V8.05a   测电压                                                               12/11/2008 15:07:08 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char 
   3          #define uint  unsigned int
   4                
   5          
   6          
   7          #define uchar unsigned char 
   8          #define uint  unsigned int
   9           
  10          uchar  a,b,c,d;
  11          unsigned char getdata;
  12          unsigned int temp;
  13          unsigned int j;
  14          unsigned char m;
  15          
  16          
  17          
  18          uchar code table0[]=" The V Is:";
  19          uchar code table2[]="0123456789MV .";
  20          
  21          
  22          
  23          
  24          
  25          sbit rs=P2^5;
  26          sbit rw=P2^6;
  27          sbit e =P2^7;
  28          
  29          
  30          sbit ST=P3^0;
  31          sbit OE=P3^1;
  32          sbit EOC=P3^2;
  33          sbit CLK=P3^3;
  34          sbit ALE=P3^7;
  35          
  36          
  37          
  38          sbit led1=P2^2;
  39          sbit led2=P2^3;
  40          sbit led3=P2^4;
  41          
  42          sbit s1=P2^0;
  43          sbit s2=P2^1;
  44          
  45          
  46          #define  _v0_2 {s1=0;s2=1;}
  47          #define  _v2   {s1=1;s2=0;}
  48          #define  _v20  {s1=0;s2=0;} 
  49          
  50          
  51          void TimeInitial();
  52          
  53          
  54          void TimeInitial()
  55          { TMOD=0x10;
C51 COMPILER V8.05a   测电压                                                               12/11/2008 15:07:08 PAGE 2   

  56   1       TH1=(65536-200)/256;
  57   1       TL1=(65536-200)%256;
  58   1       EA=1;
  59   1       ET1=1;
  60   1       TR1=1;
  61   1       }
  62          
  63          
  64          void delay(unsigned char x)
  65          {
  66   1      unsigned char a,b;
  67   1      for(a=x;a!=0;a--)
  68   1      for(b=20;b!=0;b--);
  69   1      }
  70          
  71          
  72          void writecomm(uchar comm)
  73          {
  74   1      P0=comm;
  75   1      rs=0;
  76   1      rw=0;
  77   1      e=0;
  78   1      delay(5);
  79   1      e=1;
  80   1      delay(5);
  81   1      e=0;
  82   1      }
  83          
  84          
  85          void writedat(uchar dat)
  86          {
  87   1      P0=dat;
  88   1      rs=1;
  89   1      rw=0;
  90   1      e=0;
  91   1      delay(5);
  92   1      e=1;
  93   1      delay(5);
  94   1      e=0;
  95   1      }
  96          
  97          
  98          void writesmh(uchar add,uchar date)
  99          {
 100   1      uchar count;
 101   1      count=date;
 102   1      writecomm(0xc0+add);
 103   1      delay(5);
 104   1      writedat(table2[count]);
 105   1      delay(5);
 106   1      }
 107          
 108          
 109          void init()
 110          {
 111   1      uchar i;
 112   1      delay(50);
 113   1      writecomm(0x38);
 114   1      delay(50);
 115   1      writecomm(0x0c);
 116   1      delay(50);
 117   1      writecomm(0x06);
C51 COMPILER V8.05a   测电压                                                               12/11/2008 15:07:08 PAGE 3   

 118   1      delay(50);
 119   1      writecomm(0x01);
 120   1      delay(50);
 121   1      writecomm(0x80);
 122   1      delay(5);
 123   1      for(i=0;i<10;i++ )
 124   1      {
 125   2      writedat(table0[i]);
 126   2      
 127   2      delay(5);
 128   2      }
 129   1      writesmh(4,a);
 130   1      delay(5);
 131   1      writesmh(5,b);
 132   1      delay(5);
 133   1      writesmh(7,c);
 134   1      delay(5);
 135   1      writesmh(8,d);
 136   1      delay(5);
 137   1      
 138   1      }
 139          
 140          void main()
 141          {  init();
 142   1         
 143   1         _v20;
 144   1         m=1;
 145   1        TimeInitial();
 146   1      while(1)
 147   1      {
 148   2      
 149   2        
 150   2        ST=1;
 151   2        ST=0;
 152   2        while(EOC==0);
 153   2        OE=1;
 154   2        getdata=P1;
 155   2        OE=0;
 156   2        if ((s1==0) && (s2==0) && (temp<200))
 157   2              {       
 158   3                      _v2;
 159   3              m=2; 
 160   3                      
 161   3               }
 162   2        else if       ((s1==1)&&(s2==0) && (getdata<26))
 163   2              {                
 164   3                      
 165   3                      _v0_2;
 166   3              
 167   3                      m=3;
 168   3               }
 169   2         else if((s1==0)&&(s2==1) && (getdata>254))
 170   2              {
 171   3                    
 172   3                                 _v2;
 173   3                     m=2;
 174   3               }
 175   2         else if ((s1==1)&&(s2==0) && (getdata>254))
 176   2                   {
 177   3                       
 178   3                        _v20;
 179   3                        m=1;
C51 COMPILER V8.05a   测电压                                                               12/11/2008 15:07:08 PAGE 4   

 180   3                       }
 181   2         temp=(getdata*1.0/255)*2000;
 182   2         a=temp/1000;
 183   2         b=temp/100%10;
 184   2         c=temp/10%10;
 185   2         d=temp%10;
 186   2         
 187   2            if(m==1)
 188   2            { 
 189   3                  
 190   3              writesmh(4,a);
 191   3              delay(5);
 192   3              writesmh(5,b);
 193   3              delay(5);
 194   3                      writesmh(6,13);
 195   3              delay(5);
 196   3              writesmh(7,c);
 197   3              delay(5);
 198   3                  writesmh(8,d);
 199   3                      delay(5);
 200   3                      writesmh(9,12);
 201   3                      delay(5);
 202   3                      writesmh(10,11);
 203   3                      delay(5);
 204   3      
 205   3                      led2=1;
 206   3                      led1=0;
 207   3                      led3=1;
 208   3            } 
 209   2                 if (m==2)   
 210   2           {  
 211   3                  writesmh(4,a);
 212   3              delay(5);
 213   3                      writesmh(5,b);
 214   3              delay(5);
 215   3                      writesmh(6,c);
 216   3              delay(5);
 217   3              writesmh(7,d);
 218   3              delay(5);
 219   3                      writesmh(8,12);
 220   3              delay(5);
 221   3                      writesmh(9,10);
 222   3              delay(5);
 223   3                      writesmh(10,11);
 224   3              delay(5);
 225   3                      led2=0;
 226   3                      led1=1;
 227   3                      led3=1; 
 228   3            } 
 229   2                 if (m==3)   
 230   2           {  
 231   3                      
 232   3              writesmh(4,a);
 233   3              delay(5);
 234   3              writesmh(5,b);
 235   3              delay(5);
 236   3                      writesmh(6,c);
 237   3              delay(5);
 238   3                      writesmh(7,13);
 239   3              delay(5);
 240   3                      writesmh(8,d);
 241   3              delay(5);
C51 COMPILER V8.05a   测电压                                                               12/11/2008 15:07:08 PAGE 5   

 242   3                      writesmh(9,10);
 243   3              delay(5);
 244   3                      writesmh(10,11);
 245   3              delay(5);
 246   3                      led2=1;
 247   3                      led1=1;
 248   3                      led3=0;
 249   3            } 
 250   2               for(j=0;j<40;j++)
 251   2           delay(250);         
 252   2       }       
 253   1      }
 254          
 255          void t1(void) interrupt 3 using 0
 256           {
 257   1        TH1=(65536-200)/256;
 258   1        TL1=(65536-200)%256;
 259   1        CLK=~CLK;
 260   1        }
 261          
 262          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    612    ----
   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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