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

📄 1820.lst

📁 本人收集的一些C语言程序
💻 LST
字号:
C51 COMPILER V7.50   1820                                                                  02/25/2006 15:26:57 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 1820
OBJECT MODULE PLACED IN 1820.OBJ
COMPILER INVOKED BY: e:\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          /*     功能描述: 将实验板上的J4第3个(从左至右)的跳线帽插上!                     */
   8          /*                                      用数字温度传感器DS18B20就可以实时检测室温                                           */
   9          /*                                                                                  */
  10          /*     http://www.mculover.net                                                      */
  11          /*     http://www.mculover.net/bbs                                                  */
  12          /*                                                                                                                                                      */
  13          /*                                                                                  */
  14          /*                                                湘灵电子工作室 版权所有           */                    
             -             
  15          /*                                                         2006-02-20               */
  16          /************************************************************************************/ 
  17          #include <reg51.h>
  18          
  19          sbit DQ = P1 ^ 2;  //定义端口DQ
  20          
  21          unsigned char code LEDData1 [ ] = {0x41, 0xf5, 0x29, 
  22                                                          0x31, 0x95, 0x13, 0x03, 0x75, 0x01, 0x11};//0-9数字
  23          unsigned char code LEDData2 [ ] = {0x40, 0xf5, 0x28, 
  24                                                          0x30, 0x94, 0x12, 0x02, 0x74, 0x00, 0x10}; //0.-9.LED数值
  25          
  26          /**********************************************************************************/
  27          void Delay(unsigned int num)//延时函数
  28          {
  29   1              while( num-- );
  30   1      }
  31          
  32          /**********************************************************************************/
  33          Init_DS18B20(void)//初始化ds1820
  34          {
  35   1              unsigned char x = 0;
  36   1      
  37   1              DQ = 1;    //DQ复位
  38   1              Delay(8);  //稍做延时
  39   1      
  40   1              DQ = 0;    //单片机将DQ拉低
  41   1              Delay(80); //精确延时 大于 480us
  42   1      
  43   1              DQ = 1;    //拉高总线
  44   1              Delay(14);
  45   1      
  46   1              x = DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
  47   1          Delay(20);
  48   1      }
  49          
  50          /**********************************************************************************/
  51          ReadOneChar(void)//读一个字节
  52          {
  53   1              unsigned char i = 0;
C51 COMPILER V7.50   1820                                                                  02/25/2006 15:26:57 PAGE 2   

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

 116   1      
 117   1              P0 = LEDData1[c];  //显示小数位
 118   1              P2 = 0xfb;
 119   1              Delay(400);
 120   1      
 121   1              P0 = LEDData2[b];  //显示个位
 122   1              P2 = 0xfe;
 123   1              Delay(400);
 124   1      
 125   1              P0 = LEDData1[a];  //显示十位
 126   1              P2 = 0xf7;
 127   1              Delay(400);
 128   1      }
 129          
 130          /**********************************************************************************/
 131          void main(void)
 132          {
 133   1              while(1)
 134   1              {
 135   2                      Read_Disp_Temperature();
 136   2              }
 137   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    387    ----
   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 + -