基于NRF24L01无线模块的一个模拟智能家居系统。用单片机+24L01做的
包含单发送模块,接收模块,主控模块的源码
单片机源程序如下:
- /***************************************** `
- 创建:陈志强
- 时间:2010.6.12
- 功能:NRF24L01射频模块C文件(发射部分)
- *****************************************/
- #include"stc15.h"
- #include"Allhead.h"
- uchar i=0;
- uchar j,t;
- uchar RxDate[4]={0};
- void sys_init()
- {
- P0M1=0x00;
- P0M0=0xff; //推挽输出,否则不稳定
- TMOD=0X00;
- TH0=TL0=0Xfc;
- TR0=1;
- ET0=1;
- PT0=1; //设置为高优先级中断,保证LED正常显示,
- PX1=1;
- IT1=1;
- EX1=1; //红外中断
- EA=1;
- }
- void main()
- {
- sys_init();
- NRF24L01Int();
- DS1302Set(); //初始化1302
-
- while(1){
- NRFSetRXMode();
- if(send_flag)
- {
- NRFSetTxMode(TxDate);//发送温度
- while(CheckACK()); //检测是否发送完毕
- send_flag=0;
- NRFSetRXMode();
- }
- if(NRFRevDate(RxDate))
- {
- if(RxDate[0]==5)
- {
- for(j=0;j<4;j++)
- for(t=0;t<32;t++)
- event_code[j][t]=kaimen[j][t];
- }
- else
- {
- for(j=0;j<4;j++)
- for(t=0;t<32;t++)
- event_code[j][t]=kaimen1[j][t];
- }
- NRFSetRXMode();
- }
- ds1302_load();
- Delay(2);
- }
- }
- /********************LED屏幕刷新**************/
- void timer0_init() interrupt 1
- {
- if(++i==16) i=0;
- load_data(i);
- EN=1; //消除改变595数据时产生的阴影
- send595();
- P0=i; //行选时CLK为0,不影响595寄存器数据。
- EN=0;
-
-
- }
复制代码
所有资料51hei提供下载:
基于NRF24L01无线模块的一个模拟智能家居系.rar
(387.39 KB, 下载次数: 155)
|