标题:
有没有大佬能帮我把这个单片机程序多加点注释,看不懂
[打印本页]
作者:
1826928931
时间:
2020-9-14 17:28
标题:
有没有大佬能帮我把这个单片机程序多加点注释,看不懂
#include "STC12C5A60S2.h"
#include"HW_Printf.h"
#include "BH1750.h"
#include"Sys_Setting.h"
#include "HW_iic.h"
#include <intrins.h>
#include <math.h>
#include<stdio.h>
void delaytime(u16 ms)
{
u16 i=0;
u16 j=0;
for(i=0;i<ms;i++)
{
for(j=0;j<110;j++);
}
}
void delay(unsigned int i)
{
while(i--);
}
void delay_ms(unsigned int i)
{
while(i--)
delay(90);
}
void Delay10u()
{
unsigned char i;
_nop_();
_nop_();
_nop_();
i = 24;
while (--i);
}
void Delay18ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 1;
j = 194;
k = 159;
do
{
do
{
while (--k);
} while (--j);
}while (--i);
}
sbit TRH = P2^0;//温湿度传感器DHT11数据接入
int TH_temp,TL_temp,RH_temp,RL_temp,CK_temp,respond,com_data,temp;
//-------dht11函数区---------
char DHT11_rec_byte()
{
char i;
com_data=0;
for(i=0;i<=7;i++)
{
respond=2;
while((!TRH)&&respond++);
Delay10u();
Delay10u();
Delay10u();
if(TRH)
{
temp=1;
respond=2;
while((TRH)&&respond++);
}
else
temp=0;
com_data<<=1;
com_data|=temp;
}
return(com_data);
}
/****************************************************************************/
//湿度读取子程序
//温度高8位== TH_data
//温度低8位== TL_data
//湿度高8位== RH_data
//湿度低8位== RL_data
//校验 8位 == CK_data
//调用的程序有 delay();, Delay_5us();,RECEIVE();
/***************************************************************************/
void DHT11_receive()
{
//主机拉低18ms
TRH=0;
Delay18ms();
TRH=1;
//DATA总线由上拉电阻拉高 主机延时50us
Delay10u();
Delay10u();
//delay_us();delay_us();delay_us();delay_us();
//主机设为输入 判断从机响应信号
TRH=1;
//判断DHT11是否有低电平响应信号 如不响应则跳出,响应则向下运行
if(!TRH)
{
respond=2;
//判断DHT11发出 80us 的低电平响应信号是否结束
while((!TRH)&& respond++);
respond=2;
//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
while(TRH && respond++);
//数据接收状态
RH_temp = DHT11_rec_byte();
RL_temp = DHT11_rec_byte();
TH_temp = DHT11_rec_byte();
TL_temp = DHT11_rec_byte();
CK_temp = DHT11_rec_byte();
TRH=1;
}
}
void main()
{
u16 Rec_Val = 0;
Uart1_Init();
Init_BH1750();
delaytime(100);
DHT11_receive(); //温湿度读取
while(1)
{
Single_Write_BH1750(0x01); // power on
Single_Write_BH1750(0x10); // H- resolution mode
delay(500);
Rec_Val = Multiple_read_BH1750();
DHT11_receive(); //温湿度读取
delay(100);
printf("**************************\n");
printf("The light value is %d \n",Rec_Val);
delaytime(2000);
printf("The tempature is:%d\n",(int)TH_temp);
delaytime(2000);
printf("The humdity is:%d\n",(int)RH_temp);
delaytime(2000);
printf("**************************\n");
delaytime(8000);
}
}
作者:
打画大饼的lowB
时间:
2020-9-16 15:05
虽然我也看不懂,但是我猜是一个单片机控制的温湿度计
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1