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

📄 lcddis.lst

📁 22个51单片机的实例
💻 LST
字号:
C51 COMPILER V8.05a   LCDDIS                                                               09/18/2008 22:43:47 PAGE 1   


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

line level    source

   1          /************************
   2          ADC0832实验
   3          ************************/
   4          #include <intrins.h>
   5          #include <reg51.h>
   6          
   7          #define ulong unsigned long
   8          #define uint unsigned int
   9          #define uchar unsigned char
  10          
  11          sbit ADCS =P3^0;  //ADC0832 chip seclect
  12          sbit ADDI =P3^2;  //ADC0832 data in
  13          sbit ADDO =P3^2;  //ADC0832 data out
  14          sbit ADCLK =P3^1;  //ADC0832 clock signal
  15          unsigned char readad[2];
  16          unsigned char tem;
  17          
  18          void  Adc0832(unsigned char channel);
  19          
  20          /************
  21          读ADC0832函数
  22          ************/
  23          
  24          //采集并返回
  25          void Adc0832(unsigned char channel)
  26          {
  27   1              uchar i=0;
  28   1              uchar j;
  29   1              uint dat=0;
  30   1              uchar ndat=0;
  31   1      
  32   1              if(channel==0)channel=2;
  33   1              if(channel==1)channel=3;
  34   1              ADDI=1;
  35   1              _nop_();
  36   1              _nop_();
  37   1              ADCS=0;//拉低CS端
  38   1              _nop_();
  39   1              _nop_();
  40   1              ADCLK=1;//拉高CLK端
  41   1              _nop_();
  42   1              _nop_();
  43   1              ADCLK=0;//拉低CLK端,形成下降沿1
  44   1              _nop_();
  45   1              _nop_();
  46   1              ADCLK=1;//拉高CLK端
  47   1              ADDI=channel&0x1;
  48   1              _nop_();
  49   1              _nop_();
  50   1              ADCLK=0;//拉低CLK端,形成下降沿2
  51   1              _nop_();
  52   1              _nop_();
  53   1              ADCLK=1;//拉高CLK端
  54   1              ADDI=(channel>>1)&0x1;
  55   1              _nop_();
C51 COMPILER V8.05a   LCDDIS                                                               09/18/2008 22:43:47 PAGE 2   

  56   1              _nop_();
  57   1              ADCLK=0;//拉低CLK端,形成下降沿3
  58   1              ADDI=1;//控制命令结束 
  59   1              _nop_();
  60   1              _nop_();
  61   1              dat=0;
  62   1              for(i=0;i<8;i++)
  63   1              {
  64   2                      dat|=ADDO;//收数据
  65   2                      ADCLK=1;
  66   2                      _nop_();
  67   2                      _nop_();
  68   2                      ADCLK=0;//形成一次时钟脉冲
  69   2                      _nop_();
  70   2                      _nop_();
  71   2                      dat<<=1;
  72   2                      if(i==7)dat|=ADDO;
  73   2              }  
  74   1              for(i=0;i<8;i++)
  75   1              {
  76   2                      j=0;
  77   2                      j=j|ADDO;//收数据
  78   2                      ADCLK=1;
  79   2                      _nop_();
  80   2                      _nop_();
  81   2                      ADCLK=0;//形成一次时钟脉冲
  82   2                      _nop_();
  83   2                      _nop_();
  84   2                      j=j<<7;
  85   2                      ndat=ndat|j;
  86   2                      if(i<7)ndat>>=1;
  87   2              }
  88   1              ADCS=1;//拉低CS端
  89   1              ADCLK=0;//拉低CLK端
  90   1              ADDO=1;//拉高数据端,回到初始状态
  91   1              
  92   1              readad[0]=dat; 
  93   1              //if (tem==0) tem=dat;
  94   1              
  95   1              //readad[1]=ndat
  96   1              //dat<<=8;
  97   1              //dat|=ndat;
  98   1              //return(dat);            //return ad data
  99   1      }
 100          
 101          
 102          
 103          
 104          /////////////lcd variable/////////////////
 105          #include <absacc.h>
 106          
 107          #define REG0   XBYTE[0x0000]
 108          #define REG1   XBYTE[0x0001]
 109          #define REG2   XBYTE[0x0002]
 110          #define REG3   XBYTE[0x0003]
 111          
 112          unsigned char bdata busyflag;
 113          unsigned char dat,datn,count;
 114          
 115          unsigned char word1[16]={"CH = "};
 116          code unsigned char word2[16]={"  by LiXueli "};
 117          code unsigned char word3[16]={"www.bitc.edu.cn!"};
C51 COMPILER V8.05a   LCDDIS                                                               09/18/2008 22:43:47 PAGE 3   

 118          code unsigned char word4[16]={"bitclxl@126.com!"};
 119          code unsigned char  word5[16]={"  Wellcome To "};
 120          code unsigned char  word6[16]={" Proteus Tools!"};
 121          code unsigned char  word7[16]={"This Programme "};
 122          code unsigned char  word8[16]={"  by LiXueli "};
 123          
 124          sbit busyflag_7=busyflag^7;
 125          sbit p10=P1^0;
 126          sbit p11=P1^1;
 127          sbit p12=P1^2;
 128          /////////////////end of lcd variable////////////
 129          ///////////////start  of  lcd 1602/////////////////
 130          void busy()
 131          {
 132   1              do
 133   1              {
 134   2                      busyflag=REG1;
 135   2              }while(busyflag_7);
 136   1      }
 137          
 138          void wrc(unsigned char wcon)
 139          {
 140   1              busy();
 141   1              REG0=wcon;
 142   1      }
 143          
 144          void wrd(unsigned char wdat)
 145          {
 146   1              busy();
 147   1              REG2=wdat;
 148   1      }
 149          
 150          void rdd()
 151          {
 152   1              busy();
 153   1              dat=REG3;
 154   1      }
 155          
 156          void lcdint()
 157          {
 158   1              wrc(0x38);
 159   1              wrc(0x01);
 160   1              wrc(0x06);
 161   1              wrc(0x0c);
 162   1      }
 163          void wrn(unsigned char word[])
 164          {
 165   1              unsigned char i;
 166   1              for(i=0;i<16;i++)
 167   1              {
 168   2                      wrd(word[i]);
 169   2              }
 170   1      }
 171          //////////////end of lcd 1602///////////////////////
 172          ////////////// data process//////////////////////
 173          void Tempprocess()
 174          {
 175   1              float tt;
 176   1              
 177   1              tt=(readad[0])/255.0*5.0;
 178   1              word1[4]=(unsigned char )(tt);
 179   1              word1[5]='.';
C51 COMPILER V8.05a   LCDDIS                                                               09/18/2008 22:43:47 PAGE 4   

 180   1              word1[6]=(unsigned char )(tt*10-word1[4]*10);
 181   1              word1[7]=(unsigned char )(tt*100-word1[4]*100-word1[6]*10);
 182   1              word1[8]=(unsigned char )(tt*1000-word1[4]*1000-word1[6]*100-word1[7]*10);
 183   1              word1[9]=(unsigned char )(tt*10000-word1[4]*10000-word1[6]*1000-word1[7]*100-word1[8]*10);
 184   1              word1[4]+=48;
 185   1              word1[6]+=48;
 186   1              word1[7]+=48;
 187   1              word1[8]+=48;
 188   1              word1[9]+=48;
 189   1              word1[10]='V';
 190   1      }
 191          ///////////////////// end of process/////////////
 192          
 193          void main()
 194          {
 195   1                      lcdint();//初始化液晶
 196   1                      wrc(0x80);
 197   1                      wrn(word5);
 198   1                      wrc(0xc0);
 199   1                      wrn(word6);
 200   1      
 201   1              while(1)
 202   1                      
 203   1                  //if(p10==0) //判断P1.0是否按下
 204   1                              {                               
 205   2                                      
 206   2                                      Adc0832(1);
 207   2                                      Tempprocess();
 208   2                                      wrc(0xc0);
 209   2                                      word1[2]='1';
 210   2                                      wrn(word1);
 211   2                                       Adc0832(0);
 212   2                                      Tempprocess();
 213   2                                      wrc(0x80);
 214   2                                      word1[2]='0';
 215   2                                      wrn(word1);
 216   2                              }
 217   1      
 218   1                              
 219   1      }
 220          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    934    ----
   CONSTANT SIZE    =    112    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23       7
   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 + -