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

📄 1820.lst

📁 这个是1820的测稳程序
💻 LST
字号:
C51 COMPILER V7.50   1820                                                                  08/30/2006 10:22:09 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 1820
OBJECT MODULE PLACED IN 1820.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1820.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************************/
   2          /*     程序名:DS18B20测温程序                                                      */
   3          /*                                                                                  */
   4          /*     晶振:12.0 M                                        CPU型号:AT89S52         */
   5          /*                                                                                  */                    
             -                         
   6          /*                                                                                  */
   7          /*     功能描述: 将实验板上J6的5脚和J7的5脚(均自上往下数)用短路帽连接!           */
   8          /*                                      用数字温度传感器DS18B20就可以实时检测室温值                                         */
   9          /*                                                                                  */
  10          /*     http://www.mculover.net                                                      */
  11          /*     http://www.mculover.net/bbs                                                  */
  12          /*                                                                                                                                                      */
  13          /*                                                                                  */
  14          /*                                                湘灵电子工作室 版权所有           */                    
             -             
  15          /*                                                         2006-03-20               */
  16          /************************************************************************************/ 
  17          #include <reg51.h>
  18          
  19          sbit DQ = P1 ^ 4;  //定义端口DQ
  20          sbit P2_4 =P2 ^ 4;
  21          sbit P2_5 =P2 ^ 5;
  22          sbit P2_6 =P2 ^ 6;
  23          sbit P2_7 =P2 ^ 7;
  24          
  25          unsigned char code LEDData1 [ ] = {0xc0, 0xf9, 0xa4, 
  26                                                                                  0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};//0-9数字
  27          unsigned char code LEDData2 [ ] = {0x40, 0x79, 0x24, 
  28                                                                                  0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10}; //0.-9.LED数值
  29          
  30          /**********************************************************************************/
  31          void Delay(unsigned int num)//延时函数
  32          {
  33   1              while( num-- );
  34   1      }
  35          
  36          /**********************************************************************************/
  37          Init_DS18B20(void)//初始化ds1820
  38          {
  39   1              unsigned char x = 0;
  40   1      
  41   1              DQ = 1;    //DQ复位
  42   1              Delay(8);  //稍做延时
  43   1      
  44   1              DQ = 0;    //单片机将DQ拉低
  45   1              Delay(80); //精确延时 大于 480us
  46   1      
  47   1              DQ = 1;    //拉高总线
  48   1              Delay(14);
  49   1      
  50   1              x = DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
  51   1          Delay(20);
  52   1      }
  53          
C51 COMPILER V7.50   1820                                                                  08/30/2006 10:22:09 PAGE 2   

  54          /**********************************************************************************/
  55          ReadOneChar(void)//读一个字节
  56          {
  57   1              unsigned char i = 0;
  58   1              unsigned char dat = 0;
  59   1      
  60   1              for (i = 8; i > 0; i--)
  61   1              {
  62   2                      DQ = 0; // 给脉冲信号
  63   2                      dat >>= 1;
  64   2                      DQ = 1; // 给脉冲信号
  65   2      
  66   2                      if(DQ)
  67   2                              dat |= 0x80;
  68   2                      Delay(4);
  69   2              }
  70   1      
  71   1              return (dat);
  72   1      }
  73          
  74          /**********************************************************************************/
  75          WriteOneChar(unsigned char dat)//写一个字节
  76          {
  77   1              unsigned char i = 0;
  78   1              for (i = 8; i > 0; i--)
  79   1              {
  80   2                      DQ = 0;
  81   2                      DQ = dat&0x01;
  82   2                      Delay(5);
  83   2      
  84   2                      DQ = 1;
  85   2                      dat>>=1;
  86   2              }
  87   1      }
  88          
  89          /**********************************************************************************/
  90          Read_Disp_Temperature(void)//读取并显示温度
  91          {
  92   1              unsigned int a = 0, b = 0, c = 0, t = 0;
  93   1              float tt = 0;
  94   1      
  95   1              Init_DS18B20();
  96   1              WriteOneChar(0xCC); // 跳过读序号列号的操作
  97   1              WriteOneChar(0x44); // 启动温度转换
  98   1      
  99   1              Init_DS18B20();
 100   1              WriteOneChar(0xCC); //跳过读序号列号的操作
 101   1              WriteOneChar(0xBE); //读取温度寄存器
 102   1      
 103   1              a = ReadOneChar();
 104   1              b = ReadOneChar();
 105   1      
 106   1              t = b;
 107   1              t <<= 8;
 108   1              t = t | a;
 109   1      
 110   1              tt = t * 0.0625;
 111   1              t = tt * 10 + 0.5; //放大10倍输出并四舍五入
 112   1      
 113   1              a = t / 100;              //十位
 114   1              b = t / 10 - a * 10;      //个位 
 115   1              c = t - a * 100 - b * 10; //小数位
C51 COMPILER V7.50   1820                                                                  08/30/2006 10:22:09 PAGE 3   

 116   1      
 117   1              P0 = 0xc6;  //显示"C"字符
 118   1              P2_4 = 0;
 119   1              Delay(300);
 120   1              P2 =0xff;
 121   1      
 122   1              P0 = LEDData1[c];  //显示小数位
 123   1              P2_5 = 0;
 124   1              Delay(400);
 125   1              P2 =0xff;
 126   1      
 127   1              P0 = LEDData2[b];  //显示个位
 128   1              P2_6 = 0;
 129   1              Delay(400);
 130   1              P2 =0xff;
 131   1      
 132   1              P0 = LEDData1[a];  //显示十位
 133   1              P2_7 = 0;
 134   1              Delay(400);
 135   1              P2 =0xff;
 136   1      }
 137          
 138          /**********************************************************************************/
 139          void main(void)
 140          {
 141   1              while(1)
 142   1              {
 143   2                      Read_Disp_Temperature();
 144   2              }
 145   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    388    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   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 + -