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

📄 123.lst

📁 C51的温度检测河控制系统代码
💻 LST
字号:
C51 COMPILER V7.50   123                                                                   12/27/2007 12:59:21 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 123
OBJECT MODULE PLACED IN 123.OBJ
COMPILER INVOKED BY: D:\程序\keil750a\UV2\C51\BIN\C51.EXE 123.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h> 
   2          sbit bj1=P2^0;   //喇叭报警
   3          sbit ge=P2^7;    
   4          sbit shi=P2^6;
   5          sbit DQ =P2^3;   //定义通信端口
   6          unsigned char buf;
   7          //********************************************
   8          unsigned code tab[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40};
   9                              //0,    1,   2   3    4    5    6    7    8    9 
  10          void delay(unsigned int i);
  11          void delayms(); 
  12          void fasong();
  13          //*****************************
  14          /*********************************************************/
  15          void delayms() 
  16          
  17          {   unsigned char ms;
  18   1          unsigned char i ;
  19   1          while(ms--)
  20   1           {
  21   2              for(i=0;i<90;i++);
  22   2           }
  23   1      }
  24          //初始化函数
  25          Init_DS18B20(void)
  26          {
  27   1      unsigned char x=0;
  28   1        DQ = 1;    //DQ复位
  29   1        delay(8);  //稍做延时
  30   1        DQ = 0;    //单片机将DQ拉低
  31   1        delay(80); //精确延时 大于 480us
  32   1        DQ = 1;    //拉高总线12
  33   1        delay(14);
  34   1        x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
  35   1        delay(20);
  36   1      }
  37          //读一个字节
  38          ReadOneChar(void)
  39          {
  40   1      unsigned char i=0;
  41   1      unsigned char dat = 0;
  42   1      for (i=8;i>0;i--)
  43   1       {
  44   2        DQ = 0; // 给脉冲信号
  45   2        dat>>=1;
  46   2        DQ = 1; // 给脉冲信号
  47   2        if(DQ)
  48   2        dat|=0x80;
  49   2        delay(4);
  50   2       }
  51   1        return(dat);
  52   1      }
  53          //写一个字节
  54          WriteOneChar(unsigned char dat)
  55          {
C51 COMPILER V7.50   123                                                                   12/27/2007 12:59:21 PAGE 2   

  56   1      unsigned char i=0;
  57   1        for (i=8; i>0; i--)
  58   1       {
  59   2        DQ = 0;
  60   2        DQ = dat&0x01;
  61   2        delay(5);
  62   2        DQ = 1;
  63   2        dat>>=1;
  64   2       }
  65   1        delay(4);
  66   1      }
  67          //读取温度
  68          ReadTemperature(void)                                                
  69          {
  70   1        unsigned char a=0;
  71   1        unsigned char b=0;
  72   1        unsigned char t=0;
  73   1        Init_DS18B20();
  74   1        WriteOneChar(0xCC); // 跳过读序号列号的操作
  75   1        WriteOneChar(0x44); // 启动温度转换
  76   1        Init_DS18B20();
  77   1        WriteOneChar(0xCC); //跳过读序号列号的操作
  78   1        WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
  79   1        a=ReadOneChar();   //读取温度值低位
  80   1        b=ReadOneChar();   //读取温度值高位
  81   1        a=a>>4;            //低位右移4位,舍弃小数部分
  82   1        t=b<<4;            //高位左移4位,舍弃符号位
  83   1        t=t|a;             
  84   1        return(t);
  85   1      }
  86          void delay(unsigned int i)
  87            {
  88   1           while(i--);
  89   1          
  90   1        }
  91          void display_tempmain(unsigned char i)             //主程序温度显示函数
  92          {  P0=tab[i%10];
  93   1         shi=1;
  94   1         ge=0;  
  95   1         delay(1000);
  96   1         P0=tab[i/10];
  97   1         shi=0;
  98   1         ge=1;
  99   1      }
 100          //*************************************************
 101          
 102          void intcom(void) interrupt 4
 103          {
 104   1      ES=0;//关闭串口中断
 105   1      RI=0;//清除串行接收标志
 106   1      buf=SBUF;
 107   1      ES=1;//开串口中断
 108   1      }
 109          //*************************************************
 110          void InitSerial(void)
 111          {
 112   1              SCON = 0x50;    // setup serial port control 
 113   1              TMOD = 0x20;    // hardware (300 BAUD @12MHZ) 
 114   1              TH1  = 0x98;    // TH1
 115   1              TR1      = 1;           // Timer 1 on
 116   1              EA=1;
 117   1              ES=1; 
C51 COMPILER V7.50   123                                                                   12/27/2007 12:59:21 PAGE 3   

 118   1      }
 119          //***********************************************
 120          void main()
 121          {unsigned int temp;
 122   1            
 123   1        while(1)                         //主循环
 124   1       {
 125   2          temp=ReadTemperature();
 126   2          display_tempmain(temp);
 127   2              
 128   2              //fasong();
 129   2      
 130   2       }
 131   1      }
 132          
 133            void fasong()
 134            {
 135   1        InitSerial();
 136   1        while(1)
 137   1        {SBUF=(shi);
 138   2        delay(10);
 139   2        SBUF=(ge); 
 140   2        }}


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