久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2014|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

智能風(fēng)扇+藍(lán)牙控制

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:262057 發(fā)表于 2017-12-15 15:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <at89x51.h>
typedef unsigned char u8;
typedef unsigned int u16;

sbit DQ = P2 ^ 6;  //定義端口DQ

sbit led1    =P2^0;
sbit led2    =P2^1;
sbit led3    =P2^2;
sbit led4    =P2^3;
sbit pwm  = P2^4;
sbit IN3     =P1^0;
sbit IN4     =P1^1;
sbit beep    =P1^5;
u8 r_buf; //藍(lán)牙接收到的字符存儲(chǔ)緩沖區(qū)
sbit RxD   =P3^0;
sbit TxD   =P3^1;
unsigned char r_buf ;
unsigned char tx[10]={0,0,0x2E,0,0,0,0,0xDF,0x43,0x0A};
unsigned char time=0 ;
//unsigned code table[]={0xc0,0xfa,0xa4,0xb0,0x9a,0x91,0x81,0xf8,0x80,0x90};
unsigned char                 gao_dianping =0;
unsigned code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
                        0xf8,0x80,0x90};
        unsigned char a;
/********************************************************************
* 名稱 : Delay()
* 功能 : 微秒級(jí)延時(shí)函數(shù)
***********************************************************************/
void Delay(int num)//延時(shí)函數(shù)
{
        while(num--) ;
}
/********************************************************************
* 名稱 : Delaynms()
* 功能 : 毫秒級(jí)延時(shí)函數(shù)
***********************************************************************/
void Delaynms(unsigned int di) //延時(shí)
{
        unsigned int da,db;
        for(da=0;da<di;da++)
                   for(db=0;db<100;db++);
}

void sound()                           //蜂鳴器
{
        u8 i=100;
        while(i--)
        {
                beep=~beep;
                Delaynms(5);
        }
}
void dianji80 ()
{
while(1)
{
IN3=1;
  Delay(40);
IN4=0;
Delay(10);
if(tx[0]<3)
break;
}
}

void dianji50()
{
while(1)
{
IN3=1;
  Delay(10);
IN4=0;
Delay(10);
if(tx[0]<3)
break;
}
}
void dianji30 ()
{
while(1)
{
IN3=1;
  Delay(30);
IN4=0;
Delay(70);
if(tx[0]<3)
break;
}
}

/********************************************************************
* 名稱 : Init_DS18B20()
* 功能 : 初始化ds1820
***********************************************************************/       
void Init_DS18B20(void)//初始化ds1820
{
        unsigned char x=0;
        DQ = 1;    //DQ復(fù)位
        Delay(8);  //稍做延時(shí)
        DQ = 0;    //單片機(jī)將DQ拉低
        Delay(80); //精確延時(shí) 大于 480us
        DQ = 1;    //拉高總線
        Delay(14);
        x=DQ;      //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
        Delay(20);
}

/********************************************************************
* 名稱 : ReadOneChar()
* 功能 : 從DS18B20讀取一節(jié)數(shù)據(jù)
***********************************************************************/
unsigned char ReadOneChar(void)//讀一個(gè)字節(jié)
{
        unsigned char i=0;
        unsigned char dat = 0;
        for (i=8;i>0;i--)
        {
                DQ = 0; // 給脈沖信號(hào)
                dat>>=1;
                DQ = 1; // 給脈沖信號(hào)
                if(DQ)
                dat|=0x80;
                Delay(4);
        }
        return(dat);
}/********************************************************************
* 名稱 : WriteOneChar()
* 功能 : 對(duì)DS18B20寫一節(jié)數(shù)據(jù)
***********************************************************************/
void WriteOneChar(unsigned char dat)//寫一個(gè)字節(jié)
{
        unsigned char i=0;
        for (i=8; i>0; i--)
        {
                DQ = 0;
                DQ = dat&0x01;
                Delay(2);
                DQ = 1;
                dat>>=1;
        }
}

/********************************************************************
* 名稱 : ReadTemperature()
* 功能 : 讀取數(shù)據(jù)  轉(zhuǎn)換溫度
***********************************************************************/
void ReadTemperature(void)//讀取溫度
{
        unsigned char a=0;
        unsigned char b=0;
        unsigned char Data_L=0;
        unsigned char num=0;

        Init_DS18B20();

        WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作
        WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
        Init_DS18B20();
        WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作
        WriteOneChar(0xBE); //讀取溫度寄存器

        a=ReadOneChar();  //讀低8位
        b=ReadOneChar(); //讀高8位

    tx[0] = (a/16+b*16)/10;      //整數(shù)部分


        tx[1] = (a/16+b*16)%10;

    Data_L=a&0X0F;
    for(num=3;num<7;num++)                 //小數(shù)部分
   {
      Data_L=Data_L*10;                                 //10           //100                //40                 //80
     tx[num]=Data_L/16;                         //0          //6                        //2                         //5
      Data_L=Data_L%16;                                 //10           //4                        //8
        }

}
/********************************************************************
* 名稱 : Display_SMG()
* 功能 : 數(shù)碼管顯示函數(shù)
***********************************************************************/
void Display_SMG(void)
{
   unsigned char a;
   for(a=0;a<=50;a++)
   {
           P0=table[tx[0]];
           P2_0 = 0;
           Delaynms(5);
           P2_0 = 1;
       
           P0=(table[tx[1]])&0x7f;
           P2_1 = 0;
           Delaynms(5);
           P2_1 = 1;
       
           P0=table[tx[3]];
           P2_2 = 0;
           Delaynms(5);
           P2_2 = 1;
       
           P0=table[tx[4]];
           P2_3 = 0;
           Delaynms(5);
           P2_3 = 1;
   }
}
void InitUART() //串口初始化9600
{
//初始化串口定時(shí)器9600
        TMOD = 0x20;
        //PCON = 0x00;
        SCON = 0x50;
        ET1=0;   
    TH1 = 0xFD;
    TL1 = 0xFD;
        TR1 = 1;
        ES = 1;
        EA = 1;
}


/*********************************************************************
* 名稱 : main()
* 功能 : 主函數(shù)
***********************************************************************/
void main(void)
{              


   InitUART();
//        IN3=0;
//        IN4=0;
//        beep=1;
//        Init_DS18B20();
IN3=1;
Delay(40);
IN4=0;
         gao_dianping=0;
        while(1)
        {
         //unsigned int a=10000;
        ET0 = 1;   //to中斷允許位
    TMOD &=0Xf1;
        TH0 = 0xec;             //定時(shí)器T0設(shè)置參數(shù)
        TL0 = 0x78;               
        TR0 = 1;       
         //gao_dianping=100;
                ReadTemperature();         //讀取溫度               
                Display_SMG();          //顯示
                }
}
void UARTInterrupt(void) interrupt 4 //串口接收字符
{       
  if(RI)
   {

           RI = 0;
            r_buf=SBUF ;
          if (r_buf=='1')
            gao_dianping=3 ;
         if (r_buf=='2')
                   gao_dianping =50;
         if (r_buf=='3')
                  gao_dianping =80;
           SBUF=r_buf;
       while(!TI);
        TI = 0;
       //add your code here!
        }
}
void time0_int(void) interrupt 1
{
        time++;         //time 為中斷次數(shù)
        TH0 = 0xec;
        TL0 = 0x78;                                       
        if(time<gao_dianping )    //high次中斷后電平由高電平變成高電平
                pwm=1;
         if(time >gao_dianping)  //period 相當(dāng)于周期,保持不變的
        {        pwm = 0;
        }
        if (time>100)
        {
                time=0;
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美一区二区三区四区 | 成人精品一区 | 国产麻豆乱码精品一区二区三区 | caoporn免费在线视频 | 999热在线视频 | www.国产精品| 精品视频久久久久久 | 99re免费 | 嫩草懂你的影院入口 | 特黄级国产片 | 欧美成年人视频在线观看 | 欧美成视频| 久草网站| 国产黄色精品 | 91精品一区二区三区久久久久 | 久久亚洲欧美日韩精品专区 | 午夜久久久| 中国xxxx性xxxx产国 | 一区二区三区四区在线 | www.日日夜夜 | av在线二区 | 99精品免费在线观看 | 91啪亚洲精品 | 久草视频在 | 成人免费淫片aa视频免费 | 国产一区久久 | 亚洲美乳中文字幕 | 香蕉久久久 | 日韩在线观看中文字幕 | av片在线播放 | 日韩一区二区在线视频 | 国产高清一区二区三区 | 在线视频一区二区三区 | 在线观看成人av | 黄色一级视频 | 亚洲一二三区不卡 | 国产免费av在线 | 欧美日韩成人影院 | 欧美日韩午夜精品 | 日韩av免费在线观看 | 一区视频在线 |