欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
手機藍牙控制51單片機溫濕度檢測及繼電器澆水
[打印本頁]
作者:
sdfasdfasdfsdf
時間:
2018-5-31 21:25
標題:
手機藍牙控制51單片機溫濕度檢測及繼電器澆水
一個藍牙串口模塊,用51單片機通信。
0.png
(44.62 KB, 下載次數: 18)
下載附件
2018-6-1 01:42 上傳
單片機源程序如下:
#include <intrins.h>
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
#define Data_0_time 4
sbit rec = P2^1 ;
sbit out=P2^0;
u8 u8FLAG,k;
u8 u8count,u8temp;
u8 u8T_data_H,u8T_data_L,u8RH_data_H,u8RH_data_L,u8checkdata;
u8 u8T_data_H_temp,u8T_data_L_temp,u8RH_data_H_temp,u8RH_data_L_temp,u8checkdata_temp;
u8 u8comdata;
u8 outdata[5]; //定義發送的字節數
u8 indata[5];
u8 count, count_r=0;
u8 str[5]={"ok000"};
u8 flag =0;
u16 u16temp1,u16temp2;
void SendData(u8 *a)
{
outdata[0] = a[0];
outdata[1] = a[1];
outdata[2] = a[2];
outdata[3] = a[3];
outdata[4] = a[4];
count = 1;
SBUF=outdata[0];
}
void Delay(u16 j)
{ u8 i;
for(;j>0;j--)
{
for(i=0;i<27;i++);
}
}
void Delay_10us(void)
{
u8 i;
i--;
i--;
i--;
i--;
i--;
i--;
}
void COM(void)
{
u8 i;
for(i=0;i<8;i++)
{
u8FLAG=2;
while((!rec)&&u8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
u8temp=0;
if(rec)u8temp=1;
u8FLAG=2;
while((rec)&&u8FLAG++);
//超時則跳出for循環
if(u8FLAG==1)break;
//判斷數據位是0還是1
// 如果高電平高過預定0高電平值則數據位為 1
u8comdata<<=1;
u8comdata|=u8temp; //0
}//rof
}
void RH(void)
{
//主機拉低18ms
rec=0;
Delay(180);
rec=1;
//總線由上拉電阻拉高 主機延時20us
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
//主機設為輸入 判斷從機響應信號
rec=1;
//判斷從機是否有低電平響應信號 如不響應則跳出,響應則向下運行
if(!rec) //T !
{
u8FLAG=2;
//判斷從機是否發出 80us 的低電平響應信號是否結束
while((!rec)&&u8FLAG++);
u8FLAG=2;
//判斷從機是否發出 80us 的高電平,如發出則進入數據接收狀態
while((rec)&&u8FLAG++);
//數據接收狀態
COM();
u8RH_data_H_temp=u8comdata;
COM();
u8RH_data_L_temp=u8comdata;
COM();
u8T_data_H_temp=u8comdata;
COM();
u8T_data_L_temp=u8comdata;
COM();
u8checkdata_temp=u8comdata;
rec=1;
//數據校驗
u8temp=(u8T_data_H_temp+u8T_data_L_temp+u8RH_data_H_temp+u8RH_data_L_temp);
if(u8temp==u8checkdata_temp)
{
u8RH_data_H=u8RH_data_H_temp;
u8RH_data_L=u8RH_data_L_temp;
u8T_data_H=u8T_data_H_temp;
u8T_data_L=u8T_data_L_temp;
u8checkdata=u8checkdata_temp;
}
}
}
void UsartInit()
{
SCON=0X50; //設置為工作方式1
TMOD=0X20; //設置計數器工作方式2
PCON&=0X7f;
TH1=0XFd;
TL1=0XFd;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計數器
}
void main()
{
UsartInit(); // 串口初始?
//SendData(str) ; //發送到串口
Delay(1); //延時100US(12M晶振)
while(1)
{
if(flag==1)
{out=!out;
flag=0;
}
if(flag==2)
{
RH();
str[0]=u8RH_data_H;
str[1]=u8RH_data_L;
str[2]=u8T_data_H;
str[3]=u8T_data_L;
str[4]=u8checkdata;
SendData(str) ; //發送到串口
Delay(20000);
flag=0;
}
}
}
/*******************************************************************************
串口通信中斷函數
*******************************************************************************/
void Usart() interrupt 4
{
if(RI==1)
{
u8 receiveData;
receiveData=SBUF;
if(receiveData==0)flag=1;
else if(receiveData==1)flag=2;
RI = 0;//清除接收中斷標志位
}
if(TI==1) //發送中斷
{
TI=0;
if(count!=5) //發送完5位數據
{
SBUF= outdata[count];
count++;
}
}
}
復制代碼
所有資料51hei提供下載:
51單片機藍牙控制.zip
(71.21 KB, 下載次數: 49)
2018-5-31 21:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
大雪山
時間:
2019-6-6 21:20
大佬,請問有原理圖嘛
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1