资源简介

利用DS18B20温度传感器检测温度,再根据温度的变化改变风扇的转速。
也可以利用按键实现手动控制风扇转速。

资源截图

代码片段和文件信息


#include “reg52.h“ 
#define uchar unsigned char 
#define uint unsigned int 
#define Disdata  P0         // 段码入口 
sbit DQ=P3^4; // 温度输入口 
sbit BUZ=P2^0;
sbit BUZ1=P3^7;
sbit DC1=P2^2;  //直流电机输入口
sbit DC2=P2^3;   
sbit KEY1=P2^4;
sbit KEY2=P2^5;  
sbit KEY3=P2^6;          
uint temp;        // variable of temperature  定义一个变量 
char tem1=35tem2=0;              
uchar flag1flag=0timer=0flag3=1;                // 定义一个标志标志温度是负还是正1为负0为正 
sbit DIN=P0^7;              // 小数点控制  
#define  discan  P1         // 数码管位选扫描 
uchar h;                    // 定义变量 

unsigned char code table[]={0xc00xf90xa40xb00x990x920x820xf80x800x900xff0xbf};  
//共阳数码管段码表           “0“  “1“  “2“  “3“  “4“  “5“  “6“  “7“  “8“  “9“ “灭“  “-“ 
unsigned char code table1[]={0x400x790x240x300x190x120x020x780x000x10};//带小数点的编码 
//共阳数码管带小数点段码表    “0“  “1“  “2“  “3“  “4“  “5“  “6“  “7“  “8“  “9“  
uchar data temp_data[2]={0x000x00};//读出温度暂放 
uchar data Dis_play[5]={0x000x000x000x000x00};//显示单元数据,共4个数据和一个运算暂用 
uchar code ditab[16]={0x000x010x010x020x030x030x040x040x050x060x060x070x080x080x090x09}; 
//小数部分对应十进制   “0“  “1“  “2“  “3“  “4“  “5“  “6“  “7“  “8“  “9“  “A“  “B“  “C“  “D“  “E“  “F“ 
uchar code scan_con[4]={0x010x020x040x08};    //列扫描控制字 
uchar data temp_wea[]={0x000x00};

/***************************************/ 
/*        延时子程序                   */ 
/***************************************/ 
 void delay(uint i)      //delay    
   { 
      while(i--); 
   } 

/************************************************/ 
/*          初始化ds18b2子函数*                 */ 
/************************************************/ 
 void Init_DS18B20(void) 
  { 
     uchar x=0; 
     DQ = 1;               //DQ复位 
     delay(8);             //稍做延时 
     DQ = 0;               //单片机将DQ拉低 
     delay(80);            //精确延时 大于 480us 
     DQ = 1;               //拉高总线 
     delay(14); 
     x=DQ;                 //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 
     delay(20); 
  } 

/*************************************************/ 
/*              读字节子函数                     */ 
/*************************************************/ 
 ReadOneChar(void) 
  { 
     uchar i = 0; 
     uchar dat = 0; 
   for (i=8;i>0;i--) 
    { 
      DQ = 0;              // 给脉冲信号 
      dat>>=1;             // 数据右移一位 
      DQ = 1;              // 给脉冲信号 
      if(DQ)               // DQ为1 
      dat|=0x80;          // 读出数据 
      delay(4);            // 延时 
     } 
   return(dat); 
  } 

/*************************************************/
/*               定时器0初始化  */
/*************************************************/ 
void timer0_init(void)
{
TMOD=0x01;               //定时器0工作于方式1
TH0=(65536-100)/256;
TL0=(65536-100)%256;
TR0=1;
ET0=1;
EA=1;
}
/*************************************************/ 
/*               写字节子函数                    */ 
/*************************************************/ 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     129290  2012-04-09 20:39  温控风扇\Backup Of 原理图.DBK

     文件     128823  2012-04-09 20:05  温控风扇\Last Loaded 原理图.DBK

     文件     132725  2012-04-10 21:46  温控风扇\原理图.DSN

     文件       1054  2012-07-31 13:01  温控风扇\原理图.PWI

     文件      14339  2012-04-18 21:17  温控风扇\温控风扇

     文件      10532  2012-04-18 21:16  温控风扇\温控风扇.c

     文件       3493  2012-04-18 21:17  温控风扇\温控风扇.hex

     文件         33  2012-04-18 21:17  温控风扇\温控风扇.lnp

     文件      22497  2012-04-18 21:17  温控风扇\温控风扇.LST

     文件      22579  2012-04-18 21:17  温控风扇\温控风扇.M51

     文件      16950  2012-04-18 21:17  温控风扇\温控风扇.OBJ

     文件        156  2012-07-31 09:44  温控风扇\温控风扇.plg

    .......     55230  2012-07-31 09:44  温控风扇\温控风扇.uvopt

     文件      13248  2012-03-06 21:24  温控风扇\温控风扇.uvproj

    .......     55232  2012-06-26 11:29  温控风扇\温控风扇_uvopt.bak

     文件          0  2012-03-06 21:22  温控风扇\温控风扇_uvproj.bak

     目录          0  2012-07-31 13:01  温控风扇

----------- ---------  ---------- -----  ----

               606181                    17


评论

共有 条评论