毕业论文 - 粮仓温度自动监测系统 - 图文(8)

2019-06-05 00:00

xxxx职业技专科毕业设计(论文)

status=NRF_WriteReg(STATUS,status);//清除自动重发标志 NRF_WriteReg(CONFIG,0X0E);//切换模式为发射模式 NRF_WriteReg(RF_CH ,0x0F);//设置频道 Delay(20);

buf[0]=P3;

NRF_WriteBuf(T_TX_PAYLOAD ,buf,data_width );//送发射数据 CE=0;

Delay(255); CE=1;

NRF_WCMD(FLUSH_RX);

Delay_ms(10);//等待发射完成

//status=NRF_ReadReg(FIFO_STATUS);//读TX_FIFO状态 //if(status&0x20)NRF_WCMD(FLUSH_TX);//清TX_FIFO NRF_WriteReg(CONFIG,0x0f);//设置配置寄存器 }

void NRF_RxPacket(uchar *buf)//接收数据包 {

uchar status; CE=1;

Delay(255);

NRF_WriteReg(CONFIG,0x0f);//设置配置寄存器 NRF_WriteReg(RF_CH ,0x0F);//设置频道

NRF_WriteReg(CONFIG,0x0f);//设置配置寄存器

status=NRF_ReadReg(STATUS);

if(status&0X40) {

NRF_ReadBuf(R_RX_PAYLOAD,buf,data_width);//接收数据 NRF_WriteReg(STATUS,status); P2=buf[0];//处理数据 P2=P2&0X7F;

NRF_WCMD(FLUSH_RX); //NRF_WCMD(FLUSH_TX); } }

\子函数

#ifndef __DHT11_H__

34

xxxx职业技专科毕业设计(论文)

#define __DHT11_H__ void ReadDHT(uchar *dat); #endif

#ifndef __LCD1602_H__ #define __LCD1602_H__ void LCD_CMD(uchar cmd); void LCD_Init();

void LCD_DAT(uchar add,uchar dat); void LCD_String(uchar add,uchar *dat); #endif

#ifndef __Define_H__ #define __Define_H__

/******************命令字*****************/ #define R_RX_PAYLOAD 0X61 #define T_TX_PAYLOAD 0XA0 #define FLUSH_TX 0XE1 #define FLUSH_RX 0XE2 #define REUSE_TX 0XE3 #define NOP 0XFF #define R_REG 0X00 #define T_REG 0X20

/*****************************************/ /*****************寄存器******************/

#define CONFIG 0x00 // 'Config' register address

#define EN_AA 0x01 // 'Enable Auto Acknowledgment' register address

#define EN_RXADDR 0x02 // 'Enabled RX addresses' register address #define SETUP_AW 0x03 // 'Setup address width' register address #define SETUP_RETR 0x04 // 'Setup Auto. Retrans' register address #define RF_CH 0x05 // 'RF channel' register address #define RF_SETUP 0x06 // 'RF setup' register address #define STATUS 0x07 // 'Status' register address

#define OBSERVE_TX 0x08 // 'Observe TX' register address #define CD 0x09 // 'Carrier Detect' register address #define RX_ADDR_P0 0x0A // 'RX address pipe0' register address #define RX_ADDR_P1 0x0B // 'RX address pipe3' register address #define RX_ADDR_P4 0x0E // 'RX address pipe4' register address #define RX_ADDR_P5 0x0F // 'RX address pipe5' register address #define TX_ADDR 0x10 // 'TX address' register address

#define RX_PW_P0 0x11 // 'RX payload width, pipe0' register address #define RX_PW_P1 0x12 // 'RX payload width, pipe1' register address #define RX_PW_P2 0x13 // 'RX payload width, pipe2' register address #define RX_PW_P3 0x14 // 'RX payload width, pipe3' register address

35

xxxx职业技专科毕业设计(论文)

#define RX_PW_P4 0x15 // 'RX payload width, pipe4' register address #define RX_PW_P5 0x16 // 'RX payload width, pipe5' register address #define FIFO_STATUS 0x17 // 'FIFO Status Register' register address /*****************************************/ #endif

#ifndef __NRF24L01_H__ #define __NRF24L01_H__

void NRF_RxPacket(uchar *buf);//接收数据包 void NRF_TxPacket(uchar *buf);//发射数据包 void NRF_Init(); #endif 主机程序:

#include #include\#include\

#define uchar unsigned char sbit beep=P2^2;

uchar dat0,dat1,dat2; uchar idata NRF_Dat[32]; uchar time=0;

void delay_10ms(void) //误差 0us {

unsigned char a,b,c; for(c=1;c>0;c--)

for(b=38;b>0;b--)

for(a=130;a>0;a--); }

void int0_init(void) {

IE0=0; EA=1; EX0=1; IT0=0; }

void baojing() {

if(dat0>=3&&dat1>=1) {

beep=0;

Delay(600); beep=1; Delay(50); }

36

xxxx职业技专科毕业设计(论文)

}

void main(void) {

static bit Flag=0; int0_init(); LCD_Init(); NRF_Init(); LCD_CMD(0x01); NRF_Init(); LCD_Init();

LCD_String(0x00,\ LCD_String(0x40,\ while(1) {

delay_10ms(); if(time>200) {

if(!Flag) {

LCD_String(0x00,\ LCD_String(0x40,\ }

Flag=1; } else {

Flag=0; time++; }

baojing(); } }

void INT0Interrupt(void) interrupt 0 {

extern uchar code asc[]; NRF_RxPacket(NRF_Dat); if(time>200) {

LCD_String(0x00,\ LCD_String(0x40,\ }

time=0;

37

xxxx职业技专科毕业设计(论文)

dat0=NRF_Dat[3]; dat2=dat0/100; dat1=dat0;

dat0=dat00/10;

if(dat2!=0)LCD_DAT(0x0C,asc[dat2]);//灭零 else LCD_DAT(0x0C,' '); LCD_DAT(0x0E,asc[dat1]); LCD_DAT(0x0D,asc[dat0]); LCD_DAT(0x0F,'C');

dat0=NRF_Dat[1]; dat2=dat0/100; dat1=dat0; dat1=dat0;

dat0=dat00/10;

LCD_DAT(0x4E,asc[dat1]); LCD_DAT(0x4D,asc[dat0]); LCD_DAT(0x4F,'%');

if(dat2!=0)LCD_DAT(0x4C,asc[dat2]);//灭零 else LCD_DAT(0x4C,' ');

}

38


毕业论文 - 粮仓温度自动监测系统 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:成本会计案例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: