历史上的今天
返回首页

历史上的今天

今天是:2025年03月03日(星期一)

正在发生

2020年03月03日 | 基于51单片机的无线温湿度控制系统

2020-03-03 来源:51hei

发射_DHT11程序

//宏定义

#define uchar unsigned char 

#define uint unsigned int


//头函数

#include

#include

//无线模块

#include "api.h" 

#include "nRF24L01P.h"

#include "DHT11.h"



//LED 管脚定义

sbit TXLED_R=P1^3;

sbit RXLED_Y=P1^5;



//主机询问命令

uchar CMD[]={0xaa,0xbb,0xcc,0xdd};


//主函数

void main()

{

        TXLED_R=0;                                          //初始化LED

        RXLED_Y=0;

        init_io();                              //无线初始化IO

        RX_Mode();                              //设置为接收模式

        TXLED_R=1;

        RXLED_Y=1;

        //循环执行

        while(1)

        {

                sta = SPI_Read(STATUS);          //读状态寄存器

            if(RX_DR)                                     //判断是否接受到数据

                {

                        SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH);  //从RX FIFO读出数据

                        flag = 1;

                        RXLED_Y=0;                          //打开接收指示灯

                }

                SPI_RW_Reg(WRITE_REG + STATUS, sta);  //清除RX_DS中断标志

                if(flag)                              //接受完成

                {

                        flag = 0;                        //清标志

                        //命令为主机询问

                        if(RX_BUF[0]==CMD[0]&&RX_BUF[1]==CMD[1]&&RX_BUF[2]==CMD[2]&&RX_BUF[3]==CMD[3])

                        {

                                //打开接收成功指示

                                //无线答应信号湿度 温度        

                                RH();                                //DHT11读取                

                                TX_BUF[0]=0xaa;

                                //T温度

                                TX_BUF[1]=U8T_data_H;

                                //RH湿度

                                TX_BUF[2]=U8RH_data_H;

                                TX_BUF[3]=0xdd;

                                delay_ms(100);

                                RXLED_Y=1;                        //关闭接受射指示灯

                                TXLED_R=0;                        //打开发射指示灯

                                TX_Mode(TX_BUF);        // 把nRF24L01设置为发送模式并发送数据

                                Check_ACK(1);        // 等待发送完毕,清除TX FIFO

                                delay_ms(100);        

                                //发送成功指示

                                TXLED_R=1;                        //关闭发射指示灯

                                RX_Mode();                           // 设置为接收模式                

                        }

                }

        }

}


接收_温湿度控制程序

//宏定义

#define uchar unsigned char 

#define uint unsigned int



//头函数

#include

#include

//屏幕函数调用

#include "Lcd.h"   

//无线模块

#include "api.h" 

#include "nRF24L01P.h"

//继电器定义

sbit jiangwen=P3^5;

sbit shengwen=P3^4;

sbit choushi=P3^3;

sbit jiashi=P3^2;

//LED 管脚定义

sbit TXLED_R=P1^3;

sbit RXLED_Y=P1^5;

//蜂鸣器

sbit Feng=P1^2;

//蜂鸣器闪烁标志位

bit shan=0;

#include "KEY.h"




//主机询问命令

uchar CMD[]={0xaa,0xbb,0xcc,0xdd};

uchar Mode=0;

uchar temp=0;

uchar KK=0;

//报警温湿度

uchar TNumber=30,RHNumber=50,TX=20,HX=40;


//主函数

void main()

{

        TH0=0x4b;

        TL0=0xff;//赋初值

        TMOD=0x01;//设置工作方式

        EA=1;//打开中断总开关

        ET0=1;//打开允许开关

        TR0=1;

        //LCD初始化显示

        Init_LCD();

        delay_ms(250);

        TXLED_R=0;                                          //初始化

        RXLED_Y=0;

        init_io();                           //无线初始化IO

        RX_Mode();                           //设置为接收模式

        TXLED_R=1;

        RXLED_Y=1;

        /////////////////////////////////////////////

        TXLED_R=0;                                          //发送指示灯

        ////////////////////////////////////////////////////////////////////////////////

        //循环显示

        while(1)

        {

                TXLED_R=0;                                          //发送指示灯        

           TX_ACK();                                      //发送询问信号        

                sta = SPI_Read(STATUS);                  //读状态寄存器

                TXLED_R=1;                                          //发送指示灯        

                if(RX_DR)                                           //判断是否接受到数据

                {

                        SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH);  // 从RX FIFO读出数据

                        flag = 1;

                }

                delay_ms(100);

                SPI_RW_Reg(WRITE_REG + STATUS, sta);  // 清除RX_DS中断标志

                if(flag==1)                            // 接受完成

                {

                        Mode=0;

                        flag=0;

推荐阅读

史海拾趣

Fascomp公司的发展小趣事

为了进一步提升技术实力和市场竞争力,Fascomp积极寻求与国际知名企业的技术合作。通过与多家跨国公司的联合研发项目,Fascomp成功吸收和借鉴了国际先进的技术和管理经验。此外,公司还积极拓展海外市场,产品远销欧美、亚洲等多个国家和地区,进一步提升了公司的国际化水平。

ELDECO公司的发展小趣事

随着环保意识的不断提高,ELDECO公司积极响应国家号召,将绿色环保理念融入产品设计和生产过程中。公司采用环保材料和节能技术制造ELD产品,减少了对环境的污染和能源消耗。同时,公司还推广绿色出行理念,鼓励运输企业采用更环保的运输方式。通过这些措施,ELDECO公司不仅提高了企业的社会责任感,还为推动绿色交通发展做出了积极贡献。

广州盛炬(GZSJ)公司的发展小趣事

在激烈的市场竞争中,ELDECO公司始终坚持质量至上的原则。公司建立了严格的质量管理体系和检测机制,确保每一台出厂的ELD产品都符合高质量标准。同时,公司还注重售后服务体系建设,为客户提供及时、专业的技术支持和解决方案。正是凭借过硬的产品质量和优质的售后服务,ELDECO公司的ELD产品赢得了客户的广泛认可和信赖。

Applied Micro Circuits (MACOM)公司的发展小趣事

Applied Micro Circuits(MACOM)公司的历史可以追溯到其创立之初。MACOM最初名为Microwave Associates,成立于上世纪某个时期,以磁控管作为首创产品,主要应用于微波雷达领域。随着技术的不断进步,公司逐步扩展产品线,推出了包括真空管、高功率PIN二极管/晶体管和移相器等一系列产品。然而,上世纪九十年代,由于经营不善,MACOM被AMP公司收购,随后又经过多次转手,最终成为Tyco旗下的一部分。

Global Connector Technology公司的发展小趣事
继电器的参数设置不正确,导致无法正确识别断相故障。
D1 International Inc公司的发展小趣事

随着技术的不断成熟,D1 International Inc公司开始积极拓展市场。公司不仅在国内市场取得了显著的成果,还成功打入国际市场。与此同时,D1 International Inc公司也注重与其他企业的战略合作。通过与知名电子制造商的合作,D1 International Inc公司的产品线得到了极大的丰富,同时也提升了公司的品牌影响力。

问答坊 | AI 解惑

51单片机C语言应该怎样入门

之前我是用汇编的,现在想学一下C语言,不知道从何学起。…

查看全部问答>

需要一个北京地区的兼职linux编程人员

需要一个北京地区的兼职linux编程人员,要求可以独立完成下列开发, 不符合条件请勿打扰,以免浪费你我时间 要求熟悉MINIGUI,具体编程内容: 从COM口读入数据,在14英寸以上显示器上显示如下图形界面: 屏幕正中间一个圆形,圆形里面显示从串 ...…

查看全部问答>

HR说让回去看看ARM,配哪个操作系统好呢???

额刚刚签的工作。HR说让回去看看ARM。也是一点都没有接触过啊 。晕死。配哪个操作系统好呢???…

查看全部问答>

山东省2010电子设计大赛群,速加啊,咱讨论讨论!!!

本帖最后由 paulhyde 于 2014-9-15 08:54 编辑 山东省2010电子设计大赛群,速加啊,咱讨论讨论!!!  116389549 山东省2010电子设计大赛群,速加啊,咱讨论讨论!!!  116389549 山东省2010电子设计大赛群,速加啊,咱讨论讨论!!! &n ...…

查看全部问答>

LED照明发展中五个亟待解决的问题

  LED照明发展中五个亟待解决的问题 ——色温范围、照明标准、亮度范围、照明总均匀度和眩光控制   最合适的LED照明灯具色温范围,应该是接近太阳自然白光的色温范围才是最科学的选择;较低照射强度的自然白光,就可以达到其他非自然 ...…

查看全部问答>

cc2430重连的问题

我用的是CC2430模块,用了一个网关,一个路由,4个终端节点组网成功过后,重启网关或路由设备,怎样改写程序,才能让终端设备自动重新连接到网关呢?我是过NV_RESTORE这个编译选项,不过貌似没有什么用。用没有人已经解决这个问题,给一个指点。…

查看全部问答>

··请教PCB板子外形和定位孔设置的问题,谢谢··

    我用得是AD6.9,在做板子的时候,需要做这么一个槽,   用快捷方式T-V-T,设置之后,用3D看没问题,     可是做GEBER文件的时候,这里没显示要钻孔,只显示是禁止布线层, 还用这种方式做了几个定位孔 ...…

查看全部问答>

2013年MSP430版块建设规划-by wstt

1、持续的DIY和原创激励在MSP430版块上建立EEworld MSP430月度最佳项目评选活动,该活动每月评选一次,选出一个月中最佳的DIY项目或者原创项目。基本的活动流程如下:每个月的28日为该月度参选项目的参评截止日期。凡是在上个月28日之后至本月28日 ...…

查看全部问答>

我这个简单程序发送发任何值,收到的都是00

这是代码: #include __CONFIG( FCMEN_OFF & IESO_OFF & CLKOUTEN_OFF & BOREN_OFF & CPD_OFF & CP_OFF & MCLRE_ON & PWRTE_OFF & WDTE_ON & FOSC_INTOSC); //__CONFIG( FCMEN_OFF & IESO_OFF & CLKOUTEN_OFF & BOREN_ON & CPD_OFF & CP_OFF & M ...…

查看全部问答>

精密电压源+DDS交流信号源PCB(99se)

精密电压源+DDS交流信号源PCB(99se) 延续ADI DIY活动及瑞萨DIY活动…

查看全部问答>