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

📄 7.lst

📁 AD0809很翔实的资料。包括电路设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.12  7                                                                      11/29/2008 16:09:39 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE 7
OBJECT MODULE PLACED IN H:\13\7.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE H:\13\7.C DB SB OE

stmt level    source

   1          /*********************************************************************
   2          实验:温度和压力的测量实验
   3          接线方法:
   4          YS0----CS40
   5          YS2----CS13
   6          YS0----CS40
   7          CLOCK--0.5M
   8          IN0----AN0   (压力)
   9          IN1----AN1   (温度)
  10          **********************************************************************/
  11          #include<reg52.h>
  12          #include<stdio.h>
  13          #include  <absacc.h>
  14          #include  <intrins.h>
  15          #include  <ctype.h>
  16          
  17          
  18          xdata unsigned char OUTBIT _at_ 0x8002;           // 位控制口
  19          xdata unsigned char OUTSEG _at_ 0x8004;           // 段控制口
  20          xdata unsigned char IN     _at_ 0x8001;           // 键盘读入口
  21          
  22          xdata unsigned char CS0809 _at_ 0xa000;     //定义第一通道
  23          
  24          xdata unsigned char CSIN   _at_ 0xa001;//定义第二通道
  25          
  26          sbit DQ =P3^3;   //定义p3.3口
  27          
  28          #define  uchar  unsigned  char
  29          #define  uint   unsigned  int
  30          #define Debugging 50
  31          #define Debug     100
  32          
  33          unsigned int MAP[Debugging+1];
  34          
  35          void   delay(uint useconds);
  36          uchar  ow_reset(void);
  37          uchar  read_byte(void);
  38          void   write_byte(uchar val);
  39          uint   Read_Temperature(void);
  40          void Dis_LED(unsigned char n);
  41          
  42          
  43          
  44          void Array (void)
  45          {
  46   1      	int i,j=0;//j=Debugging;
  47   1          for(i=0;i<=Debugging+1;i++)
  48   1      	{
  49   2      
  50   2      	  MAP[i]=j;
  51   2      	  //j--;
  52   2      	  j++;
  53   2      	}
  54   1      }
  55          
C51 COMPILER V6.12  7                                                                      11/29/2008 16:09:39 PAGE 2   

  56          
  57          
  58          
  59          
  60          code unsigned char LEDMAP[] = {                   // 八段管显示码
  61            0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
  62            0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
  63          };
  64          
  65          void Delay(unsigned char CNT)      //压力与变阻式温度的延时
  66          {
  67   1        unsigned char i;
  68   1      
  69   1        while (CNT-- !=0)
  70   1          for (i=100; i !=0; i--);
  71   1      }
  72          
  73          ///=====================
  74          void delay1(uint useconds)                    //数字温度的 延时
  75          {
  76   1        for(;useconds>0;useconds--);
  77   1      }
  78          
  79           //=========================
  80          
  81          unsigned char Read0809()                 //变阻式温度的转换 
  82          {
  83   1        unsigned char i;
  84   1      
  85   1        CS0809 = 0;                                     // 起动 A/D ,并选中通道
  86   1        for (i=0; i<0x00; i++) ;                        // 延时 > 100us 延时等待
  87   1        return(CS0809);                                 // 读入结果
  88   1      }
  89          
  90          
  91          unsigned char Pressure()                   //压力的转换
  92          {
  93   1        unsigned char i;
  94   1      
  95   1        CSIN = 0;                               //选中通道
  96   1        for (i=0; i<0x00; i++) ;        //延时等待
  97   1        return(CSIN);                     //读入结果
  98   1      }
  99          
 100          
 101          void Dis_LED(unsigned char n)          //显示变阻式温度
 102          {
 103   1        unsigned char temp;
 104   1      
 105   1        temp = n;
 106   1      
 107   1        temp = n / 16;
 108   1        OUTSEG = LEDMAP[temp];                        // 显示AD采样值的十位
 109   1        OUTBIT = 0x08;                                        //十位显示在第三个数码管
 110   1        Delay(5);
 111   1      
 112   1        temp = n % 16;
 113   1        OUTSEG = LEDMAP[temp];                        // 显示AD采样值的个位
 114   1        OUTBIT = 0x04;                                      //个位显示在第四个数码管
 115   1        Delay(5);
 116   1      
 117   1      }
C51 COMPILER V6.12  7                                                                      11/29/2008 16:09:39 PAGE 3   

 118          
 119          void Dis_LED1(unsigned char n)       //显示压力
 120          {
 121   1        unsigned char temp;
 122   1      
 123   1        temp = n;
 124   1      //  temp = n / 10;
 125   1      
 126   1      //  n = n % 100;
 127   1        temp = n / 16;
 128   1        OUTSEG = LEDMAP[temp];                        // 显示AD采样值的十位
 129   1        OUTBIT = 0x02;                                       //十位显示在第五个数码管
 130   1        Delay(5);
 131   1      
 132   1        temp = n % 16;
 133   1        OUTSEG = LEDMAP[temp];                        // 显示AD采样值的个位
 134   1        OUTBIT = 0x01;                                         //个位显示在第六个数码管
 135   1        Delay(5);
 136   1      
 137   1      }
 138          ////////////=====================================
 139          void Dis_LED2(unsigned char n)
 140          {
 141   1        unsigned char temp;
 142   1      
 143   1      
 144   1        temp = n / 10;                  // 显示十进制温度值
 145   1        OUTSEG = LEDMAP[temp];
 146   1        OUTBIT = 0x20;                //十位显示在第一个数码管
 147   1        delay1(150);
 148   1      
 149   1        temp = n % 10;
 150   1        OUTSEG = LEDMAP[temp];
 151   1        OUTBIT = 0x10;            //个位显示在第二个数码管
 152   1        delay1(1);
 153   1      
 154   1      }
 155          uchar  ow_reset(void) //  信号复位进行初始化
 156          {
 157   1        uchar  presence;
 158   1        DQ = 0;                       // DQ置低电平 
 159   1        delay1(29);                    // 等待 480us
 160   1        DQ = 1;                       // 
 161   1        delay1(3);                     // 延时等待
 162   1        presence = DQ;                // DS18b20等待过后发送存在的脉冲持续
 163   1        delay1(25);                    // wait for end of timeslot
 164   1        return(presence);             // 返回值
 165   1                                      // 0=presence, 1 = no part
 166   1      }
 167          uchar  read_byte(void)
 168          {
 169   1        uchar  i;
 170   1        uchar  value = 0;
 171   1        for (i=8;i>0;i--)
 172   1        {
 173   2          value>>=1;
 174   2          DQ = 0;                                  // pull DQ low to start timeslot
 175   2          DQ = 1;                                  // then return high
 176   2          delay1(1);
 177   2          if(DQ)value|=0x80;
 178   2          delay1(6);                                // wait for rest of timeslot
 179   2        }
C51 COMPILER V6.12  7                                                                      11/29/2008 16:09:39 PAGE 4   

 180   1        return(value);
 181   1      }
 182          void write_byte(uchar val)
 183          {
 184   1        uchar i;
 185   1        for (i=8; i>0; i--)                      // writes byte, one bit at a time
 186   1        {
 187   2          DQ = 0;                                // pull DQ low to start timeslot
 188   2          DQ = val&0x01;
 189   2          delay1(5);                              // hold value for remainder of timeslot
 190   2          DQ = 1;

⌨️ 快捷键说明

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