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

立即注冊 登錄
返回首頁

uid:262057的個人空間

日志

藍牙+智能風扇元源代碼

已有 869 次閱讀2017-12-15 15:48

#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; //藍牙接收到的字符存儲緩沖區
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()
* 功能 : 微秒級延時函數
***********************************************************************/
void Delay(int num)//延時函數
{
while(num--) ;
}
/********************************************************************
* 名稱 : Delaynms()
* 功能 : 毫秒級延時函數
***********************************************************************/
void Delaynms(unsigned int di) //延時
{
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復位
Delay(8);  //稍做延時
DQ = 0;    //單片機將DQ拉低
Delay(80); //精確延時 大于 480us
DQ = 1;    //拉高總線
Delay(14);
x=DQ;      //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
Delay(20);
}

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

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

Init_DS18B20();

WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器

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

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


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

    Data_L=a&0X0F;
    for(num=3;num<7;num++) //小數部分
   {
      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()
* 功能 : 數碼管顯示函數
***********************************************************************/
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
{
//初始化串口定時器9600
TMOD = 0x20;
//PCON = 0x00;
SCON = 0x50; 
ET1=0;   
    TH1 = 0xFD;
    TL1 = 0xFD;
TR1 = 1;
ES = 1;
EA = 1;
}


/*********************************************************************
* 名稱 : main()
* 功能 : 主函數
***********************************************************************/
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;             //定時器T0設置參數
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 為中斷次數
TH0 = 0xec;
TL0 = 0x78;
if(time<gao_dianping )    //high次中斷后電平由高電平變成高電平
pwm=1;
if(time >gao_dianping)  //period 相當于周期,保持不變的
{ pwm = 0;
}
if (time>100)
{
time=0;
}
}


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

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

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: 91精品国产综合久久久久久 | 中文字幕一级 | 日韩欧美中文字幕在线观看 | 成人在线免费 | 九九久久国产 | 国产区在线看 | 国产一级视频在线观看 | 国产精品大全 | 一区二区三区小视频 | 日日摸天天添天天添破 | 久久亚洲一区 | 古装人性做爰av网站 | 亚洲天堂二区 | 人干人人 | 一区二区不卡视频 | 日本五月婷婷 | 国产色片在线 | 性一爱一乱一交一视频 | 国产成人免费网站 | 男女午夜激情视频 | 日韩在线免费看 | 国产成人精品一区二区在线 | 久久网一区二区 | 久久久久国产一区二区三区 | 天天躁日日躁狠狠躁2018小说 | 亚洲欧美一区二区三区视频 | 亚洲视频中文字幕 | 久久精品com | 在线视频久久 | 欧美黄色一区 | 精品欧美一区二区在线观看视频 | 久久精品二区亚洲w码 | 欧美日韩视频在线 | 免费能直接在线观看黄的视频 | 免费成人在线网站 | 日本精品一区二区三区视频 | 伊人影院在线观看 | 99久久精品国产一区二区三区 | 日本视频一区二区三区 | 欧美一区二区三区在线观看 | 亚洲免费大片 |