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

📄 adc0809电压表.lst

📁 利用ADC0809将外部的电压模拟量转换为数字量
💻 LST
字号:
C51 COMPILER V8.05a   ADC0809电压表                                                        04/15/2009 13:51:24 PAGE 1   


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

line level    source

   1          #include<reg52.h>
   2          #include<stdio.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          uchar code tab0[]="AD0809数字电压表";
   6          uchar code tab1[]="Vx =     V";
   7          sbit sid=P0^1;//12864数据输入
   8          sbit sck=P0^0;//12864时钟输入
   9          sbit st=P3^0;
  10          sbit oe=P3^1;
  11          sbit eoc=P3^2;
  12          sbit clk=P3^3;
  13          #define com 0 //指令标志
  14          #define dat 1 //数据标志
  15          //uint temp,a1,a2,a3,a;
  16          uchar dis[16];
  17          float ftemp;
  18          //********12864相关函数*****************//
  19          
  20          void w_12864byte(uchar byte)//写字节
  21          {
  22   1      uchar i;
  23   1      for(i=0;i<8;i++)
  24   1      {
  25   2         sck=0;
  26   2         byte<<=1;
  27   2         sid=CY;
  28   2         sck=1;
  29   2         sck=0;   
  30   2      }
  31   1      }
  32          
  33          void w_12864(bit dat_com,uchar byt)     //写入函数
  34          {
  35   1              uchar temp;
  36   1              if(dat_com==0) //为零,写入指令 
  37   1              temp=0xf8; //11111,RS(0),RW(0),0
  38   1              else    //否则,写入数据
  39   1                      temp=0xfa; //11111,RS(1),RW(0),0 
  40   1              w_12864byte(temp);
  41   1              w_12864byte(byt&0xf0); //写入高四位
  42   1              w_12864byte(byt<<4);   //写入低四位
  43   1      
  44   1      }
  45          
  46          void init_12864(void)//初始化12864
  47          {
  48   1              w_12864(com,0x30); //基本指令功能.
  49   1              w_12864(com,0x0c); //显示打开,关光标,反白关.
  50   1              w_12864(com,0x01); //清屏指令.
  51   1              w_12864(com,0x06); //AC自动加一
  52   1      }
  53          
  54          void lcd_display()
  55          {
C51 COMPILER V8.05a   ADC0809电压表                                                        04/15/2009 13:51:24 PAGE 2   

  56   1              uchar i;
  57   1              w_12864(com,0x80);
  58   1              for(i=0;i<16;i++)
  59   1              {
  60   2                      w_12864(dat,tab0[i]);
  61   2              }
  62   1              w_12864(com,0x90);
  63   1              for(i=0;i<10;i++)
  64   1              {
  65   2                      w_12864(dat,tab1[i]);
  66   2              }
  67   1      
  68   1      }
  69          
  70          uchar get_0809()
  71          {        uint temp=0;
  72   1               st=0;
  73   1               st=1;
  74   1               st=0;
  75   1               while(eoc==0);//等待AD转换完毕
  76   1               oe=1;
  77   1              // P1++;
  78   1              // if(P1==256)
  79   1               //     P1=0;
  80   1               temp=P1;
  81   1               oe=0;
  82   1               return(temp);
  83   1      }
  84          void adc0809_data(uint temp)
  85          {       
  86   1              uchar i;
  87   1              w_12864(com,0x80);
  88   1              for(i=0;i<16;i++)
  89   1              {
  90   2                      w_12864(dat,tab0[i]);
  91   2              }
  92   1      
  93   1              ftemp = temp*0.0196*44;
  94   1              sprintf(dis,"%f",ftemp);//把温度值写入数组内存    
  95   1              w_12864(com,0x90+2);
  96   1              for(i=0;i<5;i++)
  97   1              w_12864(dat,dis[i]);
  98   1              
  99   1      
 100   1      }
 101          /*
 102          void delay(uint z)
 103          {
 104                  uint x,y;
 105                  for(x=0;x<z;x++)
 106                          for(y=0;y<120;y++);
 107          }
 108          */
 109          void time0(void) interrupt 1 
 110          {
 111   1              clk=~clk;
 112   1      }
 113          void main()
 114          {
 115   1              TMOD=0x02;
 116   1              TR0=1;
 117   1              EA=1;
C51 COMPILER V8.05a   ADC0809电压表                                                        04/15/2009 13:51:24 PAGE 3   

 118   1              ET0=1;
 119   1              TH0=0xfe;
 120   1              TL0=0xfe; //500KHz
 121   1              P1=0xff;
 122   1              init_12864();
 123   1              lcd_display();
 124   1              while(1)
 125   1              {       
 126   2                      adc0809_data(get_0809());
 127   2                      
 128   2                      
 129   2              }
 130   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    292    ----
   CONSTANT SIZE    =     31    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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