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

📄 temprature.lst

📁 本人写的利用c8051f330单片机开发的系统的程序,包括驱动ds18b20功能和hd7279的驱动,保证能用!
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   TEMPRATURE                                                            04/09/2008 00:06:15 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEMPRATURE
OBJECT MODULE PLACED IN temprature.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.exe temprature.c DB OE

stmt level    source

   1          #include "C8051F330.h"
   2          
   3          #define         TRUE 1
   4          #define         FALSE 0
   5          #define         ADC0START ADC0CN|=0x10;
   6          
   7          #define Set_Bit(BIT) (BIT = 1) /*定义置1函数*/
   8          #define Clear_Bit(BIT) (BIT = 0) /*定义清0函数*/
   9          
  10          
  11          
  12          sbit    ChouYang=P0^1;                          //臭氧控制位
  13          sbit    JiaRe_Disp=P0^4;                        //加热灯显示位
  14          sbit    FengShan_Disp=P0^5;                     //排风灯显示位
  15          sbit    JiaRe=P0^7;                                     //加热控制位
  16          sbit    ChouYang_Disp=P1^1;                     //臭氧显示位
  17          sbit    FengShan=P1^0;                          //风扇控制位
  18          sbit    Kong=P1^2;
  19          
  20          sbit    DQ=P0^6;
  21          
  22          sbit    Hd7279_Key=P0^0;                                //7279按键识别信号      
  23          sbit    Hd7279_CS=P1^4;                                 //7279片选
  24          sbit    Hd7279_Clk=P1^5;                                //7279时钟                              
  25          sbit    Hd7279_Data=P1^7;                               //7279信号
  26          
  27          unsigned char n,a=0;
  28            char TemperatureSet,TemperatureNow;   //温度
  29           char TimeSet,TimeNow=0x00;                                             //时间
  30          //static unsigned char TemperatureTemp,TimeTemp;
  31          unsigned char KeyValue;                                 //按键值
  32          static unsigned int Time_Inc=0,Time_Inc_30S=0,Time_Inc_5S=0;
  33          static unsigned char Display_Select;                    //Display_Select=0(显示当前温度);Display_Select=1(显示设定温度);
  34          static unsigned char Time_Change;                               //Time_Change=0(30s定时);Time_Change=1(5s定时)
  35          static unsigned char ChouYang_Flag,JiaRe_Flag,FengShan_Flag;            //标志位
  36          /*ChouYang_Flag(01:开启臭氧排放;02:臭氧指示灯亮;04:臭氧指示灯闪烁)*/
  37          /*JiaRe_Flag(01:加热开启;02:加热指示灯亮;04:加热指示灯闪烁)*/
  38          /*FengShan_Flag(01:排风开启;02:排风指示灯亮;04:排风指示灯闪烁)*/
  39          bit isnewdata;
  40          unsigned int kk=0;
  41          float temp=0.0;
  42          float count=0.0;
  43          char Control_Auto;
  44          char Control_Flag;
  45          char FengShan_Time,JiaRe_Time;
  46          
  47          char Int_Flag=0;
  48          char CInt_Flag=0;
  49          char Temperature_Flag=0;
  50          
  51          
  52          void initial(void);
  53          void timer_init(void);
  54          void adc0_Rx(void);//对滑动变阻器采样
  55          void delayus(unsigned int x);
C51 COMPILER V7.06   TEMPRATURE                                                            04/09/2008 00:06:15 PAGE 2   

  56          
  57          void Temperature_Display(unsigned char tempr);//显示当前温度
  58          void Time_Display(unsigned char );              //显示当前时间
  59          void init_18B20(void);//初始化18B20
  60          void write_18B20(unsigned char x);//向18B20写数据
  61          unsigned char read_18B20(void);//读取18B20数据
  62          
  63          void Write_Hd7279(unsigned char,unsigned char); /*定义HD7279写函数*/
  64          unsigned char Read_Hd7279(unsigned char); /*定义HD7279读函数*/
  65          void Send_Byte(unsigned char); /*定义HD7279发送字节函数*/
  66          unsigned char Receive_Byte(void); /*定义HD7279接收字节函数*/
  67          void Short_Delay(void); /*定义短延时函数*/
  68          void Long_Delay(void); /*定义长延时函数*/
  69          void System_Initial(void);              //设定初始设定
  70          
  71          void Control_Key_Check(void);                           //检查控制按键
  72          void Up_Down_Check(void );                      //检查是否在增加减少温度/时间值
  73          void ChouYang_Check(void);
  74          void LED_Flash(void);
  75          void delayms(int);
  76          
  77          void main(void)
  78          {
  79   1              float sumTemp=0.0;
  80   1              unsigned char index=0;
  81   1              int sign=1,i;
  82   1              int a=0;
  83   1              delayus(50);
  84   1              System_Initial();
  85   1              initial();
  86   1      
  87   1              timer_init();
  88   1              delayus(100);
  89   1              EA=1;                           //开中断
  90   1              for(i=0;i<0x200;i++)
  91   1                      Send_Byte(0xa4); /*HD7279复位*/
  92   1              Write_Hd7279(0x98,0x0f); /*HD7279启动消隐功能,能提高灯的亮度*/
  93   1              Send_Byte(0x88);
  94   1              Send_Byte(0xff);                        //LED停止闪烁
  95   1              delayms(1000);
  96   1              TimeNow=TimeSet;
  97   1              Temperature_Display(TemperatureNow);
  98   1      
  99   1              while(1)
 100   1              {
 101   2                      
 102   2                      Time_Display(TimeSet);                                          //显示当前时间
 103   2                      if(Display_Select==0)                                           //显示当前温度
 104   2                              Temperature_Display(TemperatureNow);            
 105   2                      if(Display_Select==1)                                   //显示设定温度
 106   2                              Temperature_Display(TemperatureSet);
 107   2                                                              
 108   2                      Up_Down_Check();                                                        //检查是否在增加减少温度/时间值
 109   2                      ChouYang_Check();
 110   2                                      
 111   2                      if(Control_Flag==1)
 112   2                      {
 113   3                              Control_Flag=0;
 114   3                              Control_Auto=1;
 115   3                      
 116   3                      }
 117   2      
C51 COMPILER V7.06   TEMPRATURE                                                            04/09/2008 00:06:15 PAGE 3   

 118   2                      if(Control_Auto==0)
 119   2                      {
 120   3                              if(Temperature_Flag==1)
 121   3                              {               
 122   4                                      if((TemperatureNow>TemperatureSet+5))
 123   4                                      {
 124   5                                              JiaRe=0;                                                                //停止加热
 125   5                                      
 126   5                                      
 127   5                                              delayms(100);
 128   5                                              FengShan=1;                                                             //排风
 129   5                                      
 130   5                                      }
 131   4                                      LED_Flash();
 132   4      
 133   4                                      if((TemperatureNow<TemperatureSet-5))
 134   4                                      {
 135   5                                              FengShan=0;
 136   5                                              delayms(100);
 137   5                                              JiaRe=1;                                                                //开始加热
 138   5                              
 139   5                                      
 140   5                                      }
 141   4                                      Temperature_Flag=0;
 142   4                              }        
 143   3                       }
 144   2                       if(Control_Auto==1)
 145   2                      {
 146   3                               
 147   3                       Control_Key_Check();
 148   3                      }
 149   2      
 150   2      
 151   2      
 152   2      
 153   2      
 154   2              }               
 155   1      }
 156          
 157          void delayus(unsigned int x)
 158          { 
 159   1              while(x)
 160   1              {
 161   2                      x--;
 162   2              }
 163   1      }
 164          
 165          void delayms(int x)
 166          {
 167   1              int i;
 168   1              for(i=0;i<1000;i++)
 169   1              delayus(x);
 170   1      }
 171          void System_Initial(void)                       //设定初始设定
 172          {
 173   1              ChouYang=0;                                     //臭氧不开
 174   1              ChouYang_Disp=0;                        //臭氧指示关闭
 175   1              JiaRe=0;                                        //加热关闭
 176   1              JiaRe_Disp=0;                           //加热指示关闭
 177   1              FengShan=0;                                     //风扇关闭
 178   1              FengShan_Disp=0;                        //风扇指示关闭
 179   1              ChouYang_Flag=0;                        //臭氧标志位清零
C51 COMPILER V7.06   TEMPRATURE                                                            04/09/2008 00:06:15 PAGE 4   

 180   1              JiaRe_Flag=0;                           //加热标志位清零
 181   1              FengShan_Flag=0;                        //排风标志位清零
 182   1              KeyValue=0xff;
 183   1      
 184   1              TimeSet=45;                             
 185   1              TemperatureSet=30;                              //30
 186   1              TemperatureNow=0;
 187   1              Display_Select=0;
 188   1      
 189   1              Int_Flag=0;
 190   1              
 191   1              Control_Auto=0;
 192   1              FengShan_Time=0;
 193   1              JiaRe_Time=0;
 194   1              Control_Flag=0;
 195   1      
 196   1      
 197   1      }
 198          
 199          void initial(void)
 200          {
 201   1              PCA0MD=0x00;//禁用看门狗
 202   1      
 203   1              P0MDIN=0xF3;                                            //P0.2,P0.3配置为模拟输入(晶振)
 204   1              P0MDOUT=0xBE;                                           
 205   1              P0SKIP=0x0C;                                            //P0.2,P0.3配置为模拟输入
 206   1      
 207   1              P1MDIN=0xFF;                                            //所有P1口配置为数字I/O口
 208   1              P1MDOUT=0xFF;
 209   1              P1SKIP=0x00;                                            //推挽输出
 210   1      
 211   1              XBR0=0x00;
 212   1              XBR1=0x40;
 213   1              
 214   1              //*/使用内部高频时钟
 215   1              OSCICL=0xFF;
 216   1              OSCICN=0x80;//系统时钟15/8M
 217   1              CLKSEL=0x00;
 218   1              //*/
 219   1              //*/切换到外部振荡器
 220   1              OSCXCN=0x67;
 221   1              for(n=0;n<255;n++);
 222   1              while(0==(OSCXCN&0x80))
 223   1              {
 224   2              }
 225   1              CLKSEL=0x01;//外部振荡器
 226   1              OSCICN=0x00;            //禁止内部振荡器
 227   1              //*/
 228   1              //初始化ADC0
 229   1              
 230   1              //
 231   1              IT01CF=0x00;            //使P0.0(HD7279_Key)为中断(INT0),低电平有效
 232   1      
 233   1              IT0=1;                  //边缘触发
 234   1      //      TCON&=0xFE;
 235   1      
 236   1              EX0=1;
 237   1      
 238   1      
 239   1      

⌨️ 快捷键说明

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