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

📄 电压表.lst

📁 基于c51单片机的高精度数字电压表
💻 LST
字号:
C51 COMPILER V8.12   电压表                                                                08/06/2008 15:58:12 PAGE 1   


C51 COMPILER V8.12, 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<reg51.h>
   2          #include<intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          sbit  rs=P0^0    ;
   6          sbit  rw= P0^1   ;
   7          sbit  e=P0^2    ;
   8          sbit  rd=P3^0;
   9          sbit  wr=P3^1;
  10          uchar count;
  11          uchar temp,temp0;
  12          float temp1;
  13          uchar volt_integer[2];
  14          uchar volt_decimal[3];
  15          void delay(uint ms)
  16          {
  17   1       uint i;
  18   1       uchar j;
  19   1       for(i=0;i<ms;i++)
  20   1         for(j=0;j<150;j++)
  21   1         {
  22   2          _nop_();
  23   2              _nop_();
  24   2              _nop_();
  25   2          _nop_();
  26   2         }
  27   1      
  28   1      
  29   1      
  30   1      }
  31          void  write_com(uchar com)
  32          {
  33   1       rs=0;
  34   1       P2=com;
  35   1       delay(1);
  36   1       e=1;
  37   1       delay(1);
  38   1       e=0;
  39   1      
  40   1      }
  41          
  42          void  write_data(uchar date)
  43          {
  44   1       rs=1;
  45   1       P2=date;
  46   1       delay(1);
  47   1       e=1;
  48   1       delay(1);
  49   1       e=0;
  50   1      
  51   1      }
  52          void gotoxy(uchar x,uchar y)    //光标指针移动到x行y列
  53          {
  54   1              if(x==0)
  55   1              {
C51 COMPILER V8.12   电压表                                                                08/06/2008 15:58:12 PAGE 2   

  56   2                      write_com(0x80+y);
  57   2          }
  58   1              else
  59   1              {
  60   2                      write_com(0x80+0x40+y);
  61   2              }
  62   1      }       
  63          /* ##########################################################################
  64          初始化:设置显示模式       ----  0x38  --设置16x2 显示,5x7点阵,8位数据接口
  65                  显示开/关及光标设置 --   0x08  --关显示
  66                                              --   0x0b  --开显示
  67                                                                           0x0e  --显示光标,不闪烁
  68                                                                           0x0c  --不显示光标,不闪烁
  69                                                                           0x0d  --光标闪烁,不显示
  70                                                                           0x0f  --光标显示+闪烁
  71                                                            ------ 0x06  --读或写一个字符后地址指针加一,且光标加一,整屏不移动
  72                                                            ------ 0x01  --显示清屏:数据指针清零,所有显示清零
  73                                                               0x02  --显示回车:数据指针清零    
  74           ######################################################################### */ 
  75          void init()
  76          {
  77   1        rw=0;    //写状态
  78   1        write_com(0x01);
  79   1        write_com(0x38);
  80   1        write_com(0x0f);
  81   1        write_com(0x06);      
  82   1       // write_com(0x01);
  83   1      }
  84          void display_string(uchar *str) //显示字符串
  85          {
  86   1              while(*str)
  87   1              {
  88   2                      write_data(*str);
  89   2                      str++;
  90   2              }
  91   1      }
  92          void display_number(uchar number)
  93          {
  94   1              write_data(0x30+number);  //转化为ASCII码
  95   1      } 
  96          void init_system()
  97          {
  98   1              TMOD=0x01;
  99   1              TH0=(65536-50000)/256;
 100   1              TL0=(65536-50000)%256;
 101   1              ET0=1;
 102   1              TR0=1;
 103   1              IT0=1;
 104   1              EX0=1;
 105   1              EA=1;
 106   1      }
 107          void timer0() interrupt   1
 108          {
 109   1              TH0=(65536-50000)/256;
 110   1              TL0=(65536-50000)%256;  
 111   1              count++;
 112   1      }
 113          /*void int0() interrupt  0
 114          {
 115              uchar volt;
 116             // P1=0x00;
 117              TR0=0;
C51 COMPILER V8.12   电压表                                                                08/06/2008 15:58:12 PAGE 3   

 118                  rd=0;
 119                  delay(1);
 120                  rd=1;
 121                  delay(1);
 122                  volt=P1;
 123          //      volt=volt<<1;
 124                  gotoxy(1,9);
 125                  display_number(volt);
 126                  gotoxy(1,9);
 127                  TR0=1;
 128          }  */
 129          void main()
 130          {
 131   1              init();
 132   1              gotoxy(0,5);
 133   1              display_string("hello");
 134   1           gotoxy(1,0);
 135   1              display_string("volt:");
 136   1              write_com(0x0c);
 137   1      
 138   1              init_system();
 139   1          while(1)
 140   1              {
 141   2                      if(count==20)
 142   2                  {
 143   3                              count=0;
 144   3                              wr=1;     //开始转换
 145   3                              wr=0;
 146   3                              wr=1;
 147   3                              rd=0;
 148   3                              temp=P1;
 149   3                              temp0=temp*5/255;
 150   3                              temp1=(float)(temp*5/255);
 151   3                              volt_integer[0]=temp0%10+'0';
 152   3                      volt_integer[1]='\0';
 153   3      
 154   3                              temp1=temp1-temp0;
 155   3                              volt_decimal[0]=temp1*10+'0';
 156   3                              volt_decimal[1]=temp1*100+'0';
 157   3                              volt_decimal[2]='\0';
 158   3                              gotoxy(1,6);
 159   3                              display_string(volt_integer);
 160   3                              write_data('.');
 161   3                              display_string(volt_decimal);
 162   3                      }
 163   2      
 164   2              }
 165   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    438    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       3
   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 + -