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

📄 ds1820.lst

📁 DS1820智能温控系统,使用1602液晶显示,51单片机控制,KEIL开发
💻 LST
字号:
C51 COMPILER V8.08   DS1820                                                                01/12/2009 19:00:36 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE DS1820
OBJECT MODULE PLACED IN DS1820.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1820.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*---------------------------------------------------------------------------------
   2            
   3          ************************************ 程序功能说明 **********************************************
   4          单片机通过温度传感器读取当前温度显示在lcd1602上,lcd1602两位显示整数,两位显示小数;
   5          当前温度发生改变,lcd1602显示数值亦随之改变。
   6          ********************************************************************************************/
   7          
   8          #include "DS1820.h"
   9          /*****************************延时函数**************************/
  10          
  11          void delay_us (unsigned int us)  
  12          {
  13   1        while(us--);
  14   1      }
  15          
  16          void DS18b20_init(void)   //初始化
  17          {
  18   1        uchar flag=0;
  19   1        DQ = 1;
  20   1        delay_us(8);   //稍做延时
  21   1        DQ = 0;
  22   1        delay_us(80);   //精确延时 大于 480us
  23   1        DQ = 1;   //拉高总线
  24   1        delay_us(14);
  25   1        flag=DQ;
  26   1        delay_us(20);
  27   1      }
  28          /**********************从DS18B20读一字节***************/
  29          uchar readbyte(void) //读1字节
  30          {
  31   1        uchar i=0;
  32   1        uchar dat=0;
  33   1        for (i=8;i>0;i--)
  34   1        {
  35   2          DQ = 0;
  36   2          dat>>=1;
  37   2          DQ = 1;
  38   2          if(DQ)
  39   2          dat|=0x80;
  40   2          delay_us(4);
  41   2         }
  42   1        return(dat);
  43   1       }
  44          /***********************向DS18B20写一字节***********************/
  45          void writebyte(unsigned char dat) //写1字节
  46          {
  47   1        uchar i=0;
  48   1        for (i=8; i>0; i--)
  49   1        {
  50   2         DQ = 0;
  51   2         DQ = dat&0x01;
  52   2         delay_us(5);
  53   2         DQ = 1;
  54   2         dat>>=1;
  55   2         }
C51 COMPILER V8.08   DS1820                                                                01/12/2009 19:00:36 PAGE 2   

  56   1       delay_us(4);
  57   1      }
  58          /***********************CPU读取温度值***************************/
  59          void readtemp(void) //读取温度
  60          {
  61   1        uchar a=0,b=0;
  62   1        DS18b20_init();  //初始化
  63   1        writebyte(0xCC); // 跳过序列号
  64   1        writebyte(0x44); // 启动温度转换
  65   1        DS18b20_init();        //要重新初始化才可以读寄存器
  66   1        writebyte(0xCC);
  67   1        writebyte(0xBE); //读取温度寄存器等(共可读9个寄存器) 
  68   1                         //前两个就是温度,且第一个寄存器的低4位是小数点部分,
  69   1                                         //高四位和另外一个寄存器的低三位是整数部分,另外那个寄存器剩下的5位是符号位
  70   1        a=readbyte();   //低位
  71   1        b=readbyte();   //高位
  72   1        temper[0]=a&0x0f;
  73   1        a=a>>4;         //低位右移4位,舍弃小数部分
  74   1        temper[1]=b<<4;         //高位左移4位,舍弃符号位
  75   1        temper[1]=temper[1]|a;
  76   1        }
  77                     
  78          
  79          
  80          /********************************结束************************/


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