标题:
基于51单片机的水塔智能水位控制系统 主机+从机程序 nRF24L01无线传输
[打印本页]
作者:
wm123456
时间:
2019-12-24 15:29
标题:
基于51单片机的水塔智能水位控制系统 主机+从机程序 nRF24L01无线传输
原理图
51hei.png
(43.51 KB, 下载次数: 51)
下载附件
2021-6-8 17:14 上传
单片机源程序如下:
#include<reg52.h>
#include"global_define.h"
#include"NRF24L01.h"
#include"Delay.h"
sbit LED = P2^0 ;
sbit DJ = P2^6 ;
unsigned int baojingzhi = 200;//默认50cm
unsigned char baojing[8];
unsigned char ge,shi,bai;
unsigned int shuiwei ;
idata unsigned char TxDate[TX_DATA_WITDH]={0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,11,12};
sbit bADcs=P2^5;
sbit bADcl=P2^4;
sbit bADda=P2^3;
unsigned char data1;
unsigned char flag_1s;
long Value;
unsigned char Value_buff[8];
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
TH0=(65536-1000)/256; //重新赋值 1ms
TL0=(65536-1000)%256;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
PT0=1; //优先级打开
}
long ad()//采样烟雾传感器的信号函数
{
unsigned char i;
//data1=0;
bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
bADcl=0;
bADda=1;
bADcl=1;
bADcl=0;//i down
bADda=1;
bADcl=1;
bADcl=0; // 2 down
bADda=0;
bADcl=1;
bADcl=0; // 3 down
bADda=1;
bADcl=1;
bADcl=0; // 4 down
for(i=8;i>0;i--)
{
data1<<=1;
bADcl=0;
bADcl=1;
if(bADda==1) data1|=0x01;
bADda=1;
}
bADcs=1;
Value=data1*1.0/256*500;
// Value=Value*K_MG_MV;
// Value=Value-5;
if(Value<0)Value=0;
return Value;
}
void DelayMs(uint time)
{
uint i,j;
for(i=time;i>0;i--)
for(j=112;j>0;j--);
}
void main()
{
// unsigned char buff[8];
uint num=0 ;
unsigned int Value_1;
DJ = 1;
Init_Timer0();
NRF24L01Int();
RevTempDate[0] = '2';
RevTempDate[1] = '0';
RevTempDate[2] = '0';
while(1)
{
ad();
Value_1 = Value;
if(Value_1<baojingzhi) // 当距离小于报警值时报警
DJ = 0 ;
else
DJ = 1;
NRFSetRXMode();//设置为接收模式
Delay_x_ms(20);
GetDate(); //开始接收数据
Delay_x_ms(20);
bai = RevTempDate[0]-'0'; //提取百位
shi = RevTempDate[1]-'0'; //提取十位
ge = RevTempDate[2]-'0'; //提取个位
baojingzhi = bai*100+shi*10+ge; //计算
if(flag_1s==1) //一秒发送一次水位值
{
flag_1s = 0;
Value_buff[0]=Value/100+'0';
Value_buff[1]=Value/10%10+'0';
Value_buff[2]=Value%10+'0';
Value_buff[3]= '\0';
NRFSetTxMode(Value_buff); //发送
while(CheckACK_RP()); //检测是否发送完毕,检测应答信号
Delay_x_ms(200);
}
}
// else num = 0;
}
/*------------------------------------------------
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
新建文件夹.7z
(237.84 KB, 下载次数: 112)
2019-12-24 19:45 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
asdzzg
时间:
2021-1-15 13:50
请问有原理图吗?
作者:
leiyutian
时间:
2021-5-12 16:30
楼主 从新上传下代码、代码编译警告5、发送和接收代码、谢谢啦!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1