wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

基于MSP430單片機驅動NRF24L01無線模塊接收C語言程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年04月23日   【字體:
        NRF24L01無線模塊在此程序中可以直接與MSP430單片機直接相連,單片機的電壓和無線模塊的電壓都是3.3V,
無需加阻流電阻。通信接口為單片機模擬的SP口,LC12864液晶屏主要是用作把接收到數據通過其顯示出來。
程序測試通過,可用!

//p4口為液晶屏

//p1口中斷

//nRF24L01無線通信

//p5.0  csn    

//p5.1  mosi

//p5.3  sck

//p5.2  miso

//p1.2  irq

//p5.7  ce

//ST7920串行控制128*64液晶

//rst  p4.3   復位

//rs   p4.0   片選

//rw   p4.1    數據

//E    p4.2    時鐘



#include <msp430x16x.h>

#include <string.h>



#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long



#define LCD_CLK_1   (P4OUT |=  BIT2)

#define LCD_CLK_0   (P4OUT &=~ BIT2)


#define LCD_D_1   (P4OUT |=  BIT1)

#define LCD_D_0   (P4OUT &=~ BIT1)


#define LCD_RST_1  (P4OUT |=  BIT3)

#define LCD_RST_0  (P4OUT &=~ BIT3)


#define LCD_CS_1 (P4OUT |= BIT0)

#define LCD_CS_0 (P4OUT &= ~BIT0)


#define TMP121_CS_1 (P5OUT |= BIT7)

#define TMP121_CS_0 (P5OUT &= ~BIT7)


#define TMP121_CLK_1 (P5OUT |= BIT3)

#define TMP121_CLK_0 (P5OUT &= ~BIT3)


#define send_1 (P2OUT |= BIT0)

#define send_0 (P2OUT &= ~BIT0)




#define CPU_F ((double)1000000) // MCLK=1MHZ主頻

#define Delayus_us(x) __Delayus_cycles((long)(CPU_F*(double)x/1000000.0))

#define Delayus_ms(x) __Delayus_cycles((long)(CPU_F*(double)x/1000.0))

#define Delayus_s(x) __Delayus_cycles((long)(CPU_F*(double)x/1.0))

uint  alldata[32],keyflg;

uchar char11[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

uchar busy='A',hang,lie,flash_flag,bostart;

uchar key0=0,key1='T',key2,boflg,flg,key2flg=0,tab1=1,newsflag1,newsflag2;

uchar key11,key12;

uint LCDL;

uchar tu[32][32]={0x00};

uint Rdata[8]={0},botu[98]={0x0000};


unsigned char Rx_Address[5]={100,101,102,103,104};//本機地址

unsigned char Rx_Buff[32]={7,8,9};

void Delayus(ulong ilinshi)

{ ulong ii;

 for(ii=0;ii<=ilinshi;ii++)

 {

  key0=key0;

 }

}

#define nRF24L01_CE_1   (P5OUT|= BIT7)

#define nRF24L01_CE_0   (P5OUT&=~BIT7)

#define nRF24L01_CSN_1  (P5OUT|= BIT0)

#define nRF24L01_CSN_0  (P5OUT&=~BIT0)

#define nRF24L01_SCK_1  (P5OUT|= BIT3)

#define nRF24L01_SCK_0  (P5OUT&=~BIT3)

#define nRF24L01_MOSI_1 (P5OUT|= BIT1)

#define nRF24L01_MOSI_0 (P5OUT&=~BIT1)


//SPI Commands

#define nRF24L01_R_REGISTER    0x00

#define nRF24L01_W_REGISTER    0x20

#define nRF24L01_R_RX_PAYLOAD  0x61

#define nRF24L01_W_TX_PAYLOAD  0xA0

#define nRF24L01_FLUSH_TX      0xE1

#define nRF24L01_FLUSH_RX      0xE2

#define nRF24L01_REUSE_TX_PL   0xE3

#define nRF24L01_NOP           0xFF


//NRF24L01寄存器地址

#define nRF24L01_CONFIG        0x00

#define nRF24L01_EN_AA         0x01

#define nRF24L01_EN_RXADDR     0x02

#define nRF24L01_SETUP_AW      0x03

#define nRF24L01_SETUP_RETR    0x04

#define nRF24L01_RF_CH         0x05

#define nRF24L01_RF_SETUP      0x06

#define nRF24L01_STATUS        0x07

#define nRF24L01_OBSERVE_TX    0x08

#define nRF24L01_CD            0x09

#define nRF24L01_RX_ADDR_P0    0x0A

#define nRF24L01_RX_ADDR_P1    0x0B

#define nRF24L01_RX_ADDR_P2    0x0C

#define nRF24L01_RX_ADDR_P3    0x0D

#define nRF24L01_RX_ADDR_P4    0x0E

#define nRF24L01_RX_ADDR_P5    0x0F

#define nRF24L01_TX_ADDR       0x10

#define nRF24L01_RX_PW_P0      0x11

#define nRF24L01_RX_PW_P1      0x12

#define nRF24L01_RX_PW_P2      0x13

#define nRF24L01_RX_PW_P3      0x14

#define nRF24L01_RX_PW_P4      0x15

#define nRF24L01_RX_PW_P5      0x16

#define nRF24L01_FIFO_STATUS   0x17



void IO_Init(void)   //初始化端口

{

 P2SEL = 0;

 P3SEL = 0;

 P4SEL = 0;

 P4DIR|=0x0f;              //P4.0,1,2,3=OUT

 P4OUT|=0x0f;

 P2DIR=0xfd;              //P2.1=in    qita=OUT

 P3DIR&=0xf7;              //p3.3=in

}

void Init_Port1(void)   //P1.0、P1.1為中斷,下降沿觸發

{  

   P1SEL=0;                         //設置為普通I/O口功能

   P1DIR=0;                         //設置為輸入方向

   P1IE=0;

   P1IES=0;                          

   P1IE|=BIT2;                           //打開中斷允許

   P1IES|=BIT2;                          //下降沿觸發

   P1IFG=0;                              //P1IES的切換可能使P1IFG置位,需清除

}



/*******************************************************************************/

//無線通信

void Init_nRF24L01_IO()

{

 nRF24L01_CE_0;

 nRF24L01_CSN_1;

 nRF24L01_SCK_0;

 nRF24L01_MOSI_0;

}

//NRF24L01的SPI寫時序

void nRF24L01SpiWrite(unsigned char byte)

{

unsigned char i;

nRF24L01_SCK_0;

Delayus(1);

for (i=0;i<8;i++) // Setup byte circulation bits

{

if ((byte&BIT7)==BIT7) // Put DATA_BUF.7 on data line

nRF24L01_MOSI_1; //MOSI=1;

else

nRF24L01_MOSI_0; //MOSI=0;

nRF24L01_SCK_1; // Set clock line high

Delayus(2);

byte=byte<<1;

nRF24L01_SCK_0; // Set clock line low

Delayus(2);

}

Delayus(1);

}


//NRF24L01的SPI讀時序

unsigned char nRF24L01SpiRead(void)

{

unsigned char i;

unsigned char temp=0;

nRF24L01_SCK_0;

Delayus(2);

for (i=0;i<8;i++) // Setup byte circulation bits

{

nRF24L01_SCK_1; // Set clock line high

Delayus(2);

temp=temp<<1; // Right shift DATA_BUF

if ((P5IN&BIT2)==BIT2)

{temp|=1;} // Read data

nRF24L01_SCK_0; // Set clock line low

Delayus(2);

}

Delayus(2);

return temp;

}


//

void nRF24L01_Flush_TX_FIFO(void)//Clear TX FIFO

{

nRF24L01_CSN_1;

nRF24L01_CSN_0;

nRF24L01SpiWrite(nRF24L01_FLUSH_TX);

nRF24L01_CSN_1;

}



//

void nRF24L01_Flush_RX_FIFO(void)//Clear RX FIFO

{

nRF24L01_CSN_1;

nRF24L01_CSN_0;

nRF24L01SpiWrite(nRF24L01_FLUSH_RX);

nRF24L01_CSN_1;

}


//

void nRF24L01SpiWriteReg(unsigned char SpiCommand,unsigned char Content)

{

nRF24L01_CSN_1;

nRF24L01_CSN_0;

nRF24L01SpiWrite(SpiCommand);

nRF24L01SpiWrite(Content);

nRF24L01_CSN_1;

}

//

void nRF24L01_Set_Rx_Address(unsigned char RX_Address_Pipex,unsigned char *Address,unsigned char Length)//Local

//Address

{

unsigned char i=0;

nRF24L01_CSN_1;

nRF24L01_CSN_0;

nRF24L01SpiWrite(RX_Address_Pipex);

for(i=0;i<Length;i++)

{

nRF24L01SpiWrite(*Address);

Address++;

}

nRF24L01_CSN_1;

}


//

void nRF24L01_Set_Tx_Address(unsigned char TX_AddressReg10,unsigned char *Address,unsigned char Length)//Remote

//Address

{

unsigned char i=0;

nRF24L01_CSN_1;

nRF24L01_CSN_0;

nRF24L01SpiWrite(TX_AddressReg10);

for(i=0;i<Length;i++)

{

nRF24L01SpiWrite(*Address);

Address++;

}

nRF24L01_CSN_1;

}


//

void nRF24L01_Read_Rx_Payload(unsigned char *DataBuff,unsigned char Length)//Payload Out

{

unsigned char i=0;

nRF24L01_CSN_1;

nRF24L01_CSN_0;

nRF24L01SpiWrite(nRF24L01_R_RX_PAYLOAD);

for(i=0;i<Length;i++)

{

*DataBuff=nRF24L01SpiRead();

DataBuff++;

}

nRF24L01_CSN_1;

}


//

void nRF24L01_Write_Tx_Payload(unsigned char *DataByte, unsigned char Length)//Payload IN

{

unsigned char i=0;

nRF24L01_CSN_1;

nRF24L01_CSN_0;

nRF24L01SpiWrite(nRF24L01_W_TX_PAYLOAD);

for(i=0;i<Length;i++)

{

nRF24L01SpiWrite(*DataByte);

DataByte++;

}

nRF24L01_CSN_1;

}


//

void nRF24L01_Transmit_Data(void)//Transmit Pulse

{

Delayus(10);

nRF24L01_CE_1;

Delayus(8000);

nRF24L01_CE_0;

}


//

void nRF24L01_RX_MODE(void)

{

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_CONFIG,0x3f);//Reflect DX_DR

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_EN_AA,0x00);////Disable auto_acknowledgment,6 pipes

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_EN_RXADDR,0x01);//Enabled RX Addresses.Enable data pipe 0

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_SETUP_AW,0x03);//RX/TX Address field width 5 bytes.

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_SETUP_RETR,0x00);//Re-Transmit disabled.

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_RF_CH,0x02);//RF Channel.

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_RF_SETUP,0x06);//Air Data Rate 1Mbps.RF_PWR:0dBm.LNA Gain 0.

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_RX_PW_P0,0x03);//Pipe0 1 Bytes Payload.

nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_STATUS,0x4e);//Reset_Rx_DS

}


/******************************************************************************************************************/

//以下是液晶屏顯示程序


void Write_command(uchar x)

{

   uchar b,i=0;

   Delayus(3);

   b=x;

   LCD_CS_1;  //cs=1;

   LCD_D_1;  //data=1;

   for(i=0;i<5;i++)   //5 個連續1 '11111'

   {

       LCD_CLK_0;  //clk=0

       LCD_CLK_1; ;  //clk=1

   }        

   LCD_CLK_0;  //clk=0

   

   LCD_D_0;  //data=0;

   for(i=0;i<3;i++)  //RS,RW,0           Rs="Rw"=0   //寫命令

   {

       LCD_CLK_0;  //clk=0

       LCD_CLK_1; ;  //clk=1

   }        

   ////////////////////////////////////上面是發送一個完整的啟動數據'11111000'

   for(i=0;i<4;i++)      //發送高4位

   {

      if((x&0x80)?1:0)   //1

        LCD_D_1;  //data=1;

      else

        LCD_D_0;  //data=0;

       LCD_CLK_0;  //clk=0

      LCD_CLK_1; ;  //clk=1

      x=x<<1;

    }

    LCD_D_0;  //data=0;

   for(i=0;i<4;i++)  //RS,RW,0    發送4個0;

   {

       LCD_CLK_0;  //clk=0

       LCD_CLK_1; ;  //clk=1

   }        

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

   for(i=0;i<4;i++)      //發送低4位

   {

      if((b&0x08)?1:0)   //1

        LCD_D_1;  //data=1;

      else

        LCD_D_0;  //data=0;

      LCD_CLK_0;  //clk=0

      LCD_CLK_1; ;  //clk=1

      b=b<<1;

    }

   

   LCD_D_0;  //data=0;

   for(i=0;i<4;i++)  //RS,RW,0    發送4個0;

   {

      LCD_CLK_0;  //clk=0

      LCD_CLK_1; ;  //clk=1

   }        

   

   LCD_CS_1;  //cs=1;

   Delayus(15);

}

void Write_data(uchar x)

{

   uchar b,i=0;

   Delayus(3);

   b=x;

   LCD_CS_1;  //cs=1;

   LCD_D_1;  //data=1;

   for(i=0;i<5;i++)   //5 個連續1 '11111'

   {

       LCD_CLK_0;  //clk=0

       LCD_CLK_1; ;  //clk=1

   }        

   

   LCD_CLK_0;  //clk=0    //RW=0

   LCD_D_0;  //data=0;

   LCD_CLK_1;   //clk=1

   

   LCD_CLK_0;  //clk=0    //RS=1

   LCD_D_1;  //data=0;

   LCD_CLK_1;   //clk=1

   

   LCD_CLK_0;  //clk=0    //0

   LCD_D_0;  //data=0;

   LCD_CLK_1;   //clk=1

////////////////////////////////////上面是發送一個完整的啟動數據'11111010'

   for(i=0;i<4;i++)      //發送高4位

   {

      if((x&0x80)?1:0)   //1

        LCD_D_1;  //data=1;

      else

        LCD_D_0;  //data=0;

      LCD_CLK_0;  //clk=0

      LCD_CLK_1;   //clk=1

      x=x<<1;

    }

    LCD_D_0;  //data=0;

   for(i=0;i<4;i++)  //RS,RW,0    發送4個0;

   {

      LCD_CLK_0;  //clk=0

      LCD_CLK_1; ;  //clk=1

   }        

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

   for(i=0;i<4;i++)      //發送低4位

   {

      if((b&0x08)?1:0)   //1

        LCD_D_1;  //data=1;

      else

        LCD_D_0;  //data=0;

      LCD_CLK_0;  //clk=0

      LCD_CLK_1; ;  //clk=1

      b=b<<1;

    }

   

   LCD_D_0;  //data=0;

   for(i=0;i<4;i++)  //RS,RW,0    發送4個0;

   {

      LCD_CLK_0;  //clk=0

      LCD_CLK_1; ;  //clk=1

   }        

   

   LCD_CS_1;  //cs=1;

   Delayus(15);

}


void CLEAR()

{

 Write_command(0x30);

 Write_command(0x01);

 Write_command(0x34);

 Write_command(0x30);

}

void drclear(void)

{

//以下是清繪畫RAM

 uchar i,j;

 Write_command(0x34);

   for(j=0;j<32;j++)

   {

    for(i=0;i<32;i++)

      {

       tu[i][j]=0x00;

     }

   }  

   for(j=0;j<32;j++)

   {

    for(i=0;i<16;i++)

      {

       tu[i][j]=0x00;

       Write_command(0x80+j);  //設定垂直坐標

       Write_command(0x80+i);  //設定水平坐標

       Write_data(0x00);  //放入數據高字節

       Write_data(0x00);  //放入數據低字節

     }

   }  

}


void LCD_Init()

{

LCD_RST_0;    //rst=0

Delayus(100);

LCD_RST_1;    //rst=1

Delayus(100);

Write_command(0x30);

Delayus(20);

Write_command(0x30);

Delayus(20);

Write_command(0x30);

Write_command(0x30);

//--------------

Write_command(0x0c);

//Write_command(0x0C);

Delayus(10);

Write_command(0x01);

Delayus(20);

Write_command(0x06);

/*

//以下是清繪畫RAM

 uchar i,j;

 Write_command(0x34);

   for(j=0;j<32;j++)

   {

    for(i=0;i<16;i++)

      {

       Write_command(0x80+j);  //設定垂直坐標

       Write_command(0x80+i);  //設定水平坐標

       Write_data(0x00);  //放入數據高字節

       Write_data(0x00);  //放入數據低字節

     }

   }  

*/

}

void writechar(uchar x, uint chinese)

{

Write_command(0x30);

Write_command(x);

Write_data(chinese);

}


void writechinese(uchar x,const char *p)

{

uint i;

i=strlen(p);

Write_command(x);

for(;i;i--)

Write_data(*(p++));    

}

void hexdisp(uchar f1)

{

   Write_data('0'+f1+7*(f1/10));

}

void hex4(uint f2)

{

uchar f1;

f1=(f2&0xf000)>>12;

hexdisp(f1);

f1=(f2&0x0f00)>>8;

hexdisp(f1);

f1=(f2&0xf0)>>4;

hexdisp(f1);

f1=f2&0x0f;

hexdisp(f1);

}

void liney(uchar x,uchar y,uchar l)  //在(x,y)向下開始顯示長度為l(<=16)的豎線

{

 uchar l1,i;

 uint x1=0x00,x2=0x00,ix=x/16;

 l1=x-ix*16;

 if (l1<8)

 {

   x1=0x80>>l1;

 }

 else

 {

  x2=0x80>>(l1-8);

 }

 for (i=0;i<l;i++)

 {

   tu[2*ix][y+i]=x1|tu[2*ix][y+i];

   tu[2*ix+1][y+i]=x2|tu[2*ix+1][y+i];  

       Write_command(0x80+y+i);  //設定垂直坐標

       Write_command(0x80+ix);  //設定水平坐標

       Write_data(tu[2*ix][y+i]);  //放入數據高字節

       Write_data(tu[2*ix+1][y+i]);  //放入數據低字節

       Delayus(100);

  }

}

void linex(uchar x,uchar y,uchar l)  //在(x,y)向右開始顯示長度為l(<=16)的水平線

{

 uint l1,l2,x1,x2,x3=0x00,x4=0x00,ix=x/16;

 l1=x-ix*16;

 if(l+l1<=8)

 {

  l2=8-l-l1;

 x1=0xff>>(l1+l2);

 x1=x1<<l2;

 x2=0x00;

 }

 else if(l+l1<=16)

 {

 if (l1<8)

 {

 l2=16-l-l1;

 x1=0xff>>l1;

 x2=0xff<<l2;

 }

else

 {

 l2=16-l-l1;

 x1=0x00;

 x2=0xff>>(l2+l1-8);

 x2=x2<<l2;

 }

 }

 else

 {

  if (l1<8)

 {

 x1=0xff>>l1;

 x2=0xff;

 }

else

 {

 l2=l1-8;

 x1=0x00;

 x2=0xff>>l2;

 }

 if(l+l1<=24)

 {

  l2=24-l-l1;

  x3=0xff<<l2;

  x4=0x00;

 }

 else

 {

 l2=32-l-l1;

 x3=0xff;

 x4=0xff<<l2;

 }

 }

 tu[2*ix][y]=x1|tu[2*ix][y];

 tu[2*ix+1][y]=x2|tu[2*ix+1][y];

 tu[2*ix+2][y]=x3|tu[2*ix+2][y];

 tu[2*ix+3][y]=x4|tu[2*ix+3][y];

       Write_command(0x80+y);  //設定垂直坐標

       Write_command(0x80+ix);  //設定水平坐標

       Write_data(tu[2*ix][y]);  //放入數據高字節

       Write_data(tu[2*ix+1][y]);  //放入數據低字節

       Write_data(tu[2*ix+2][y]);  //放入數據高字節

       Write_data(tu[2*ix+3][y]);  //放入數據低字節

}

/**************************************************************************/

//數據采集

//溫度讀取

unsigned long ReadOp(void)

{ ulong dat=0;

uint k=12,TEMPTMP=0;

TMP121_CS_1;

TMP121_CLK_1;

Delayus_ms(1);

TMP121_CS_0;  

Delayus_ms(1);

do

{

TMP121_CLK_0;

dat=dat<<1;

Delayus_ms(1);

TEMPTMP=P5IN&0x04;

Delayus_ms(1);

dat|=TEMPTMP;

TMP121_CLK_1;

Delayus_ms(1);

}while(k--);

TMP121_CS_1;

dat=dat<<1;

return dat;

}

//光照讀取

uint light()

{

 uint lt;

 lt=P3IN&0x08==0x08;

 return lt;

}

/**************************************************************************/

//數據轉換

 

ulong convert()

{ ulong buffer,a,x;

 uint k,c,y;

 x=ReadOp();

 y=light();

 x&=0xfff8;  //取溫度前13位

 y=y<<2;       //光照信息

 a=x|y;

 buffer=a;

 for(k=16;k>0;k--)

 {

   c^=a&0x0001;   //奇偶校驗

   a=a>>1;

 }

 buffer=buffer|c;

 return buffer;

}

/******************************************************************/

//收發

void send_bit1()

{

 send_1;

 Delayus(500);

 send_0;

 Delayus(500);

}


void send_bit0()

{

 send_0;

 Delayus(1000);

}


void send_data()

{

  int k;

  ulong buffer2;

  buffer2=convert();

  for(k=16;k>0;k--)//發送數據位

   {

     if(buffer2&0x01==0x01)

       send_bit1();

    else

       send_bit0();

       buffer2=buffer2>>1;

    }

}


void send_adrs(uint z)

{ int k;

 uint buffer1=z;

 for(k=16;k>0;k--)//發送地址位

   {

     if(buffer1&0x01==0x01)

       send_bit1();

    else

       send_bit0();

       buffer1=buffer1>>1;

    }

}


uint recieve_adrs()

{

 int k,a;

 uint buffer1=0x0000,b=0x0000;

 Delayus(250);

 for(k=32;k>0;k--)

   {

   alldata[k]=P2IN&0x02;

   Delayus(1000);

  }

for(k=32;k>16;k--)

   {

   a=alldata[k];

   a=a>>1;

   b=b|a;

   b=b<<15;

   buffer1=buffer1>>1;

   buffer1=buffer1|b;

  }

 return buffer1;

}

ulong recieve_data()

{

 int k,a;

 ulong buffer2=0x0000,b=0x0000;

for(k=16;k>0;k--)

   {

   a=alldata[k];

   a=a>>1;

   b=b|a;

   b=b<<15;

   buffer2=buffer2>>1;

   buffer2=buffer2|b;

  }

 return buffer2;

}


/*************************************************************************/

//顯示數據

void print_tmp()

{

 ulong TEMP=0;

 int TEMPFLG=0;

 char TEMP1,TEMP2,TEMP3,TEMP4;

 TEMP = recieve_data()&0xfff8;

if(TEMP>0x8000)

{

  TEMP=TEMP>>3;

  TEMP=TEMP<<3;

  TEMP=0xffff-TEMP+1;

  TEMPFLG=1;

}

TEMP = TEMP*10;

TEMP = TEMP/128;

//    if( TEMP>35)

   //P1OUT &= ~BIT1;

//    Delayus_ms(700);

  TEMP1=char11[TEMP/1000];

  TEMP2=char11[TEMP%1000/100];

  TEMP3=char11[TEMP%100/10];

  TEMP4=char11[TEMP%10];

  if(TEMP1=='0')

  { if(TEMP2=='0')

    {

      if(TEMPFLG==1)

      writechar(0x90,'-');

      writechar(0x91,TEMP3);

      writechar(0x92,'.');

      writechar(0x93,TEMP4);

     }

    else

    {

     if(TEMPFLG==1)

     writechar(0x90,'-');

     writechar(0x91,TEMP2);

     writechar(0x92,TEMP3);

     writechar(0x93,'.');

      writechar(0x94,TEMP4);

    }

  }

  else

   

  {

    if(TEMPFLG==1)

   writechar(0x90,'-');

   writechar(0x91,TEMP1);

   writechar(0x92,TEMP2);

   writechar(0x93,TEMP3);

   writechar(0x94,'.');

   writechar(0x95,TEMP4);

  }

}

 


void print_light()

{

 ulong lgt;

 lgt=recieve_data()&0x0004;

 lgt=lgt>>2;

if(lgt)

   writechinese(0x98,"暗");

else

   writechinese(0x98,"亮");

}


void print_data()

{

 uchar num;

 num=char11[Rx_Buff[0]];

 writechar(0x90,num);

 num=char11[Rx_Buff[1]];

 writechar(0x91,num);

 num=char11[Rx_Buff[2]];

 writechar(0x92,num);

}

 

/********************************************************************************/

//鍵盤

void key_Init()

{

 P5SEL = 0;

 P6SEL = 0;

 P6DIR|=0xff;              //P6=OUT

 P5DIR=0x8b;              //P5.2、4、5、6=in,P5.0、1、3、7=out


}


void key_read()

{

 //第一排掃描

 P6OUT=0x18;

 Delayus(100);

 key0=P5IN&0x70 ;

  if (key0==0x30)

 {

   key11='1';

   if(keyflg==0)

   {

     CLEAR();

     writechinese(0x80,"單獨探測節點");

     writechinese(0x90,"1-選擇1#節點");

     writechinese(0x88,"2-選擇2#節點");

     writechinese(0x98,"g-返回主菜單");

     keyflg=1;

   }

   else if(keyflg==1)

   {

     CLEAR();

     writechinese(0x80,"尋檢1#節點");

     writechinese(0x90,"d-確認,g-返回");

     keyflg=2;

   }

   

   Delayus(30000);

 }

 

  if (key0==0x40)

 {

   key11='2';

   if(keyflg==0)

   {

     CLEAR();

     writechinese(0x80,"輪尋模式");

     writechinese(0x90,"d-確認,g-返回");

     keyflg=4;

   }

   if(keyflg==1)

   {

     CLEAR();

     writechinese(0x80,"尋檢2#節點");

     writechinese(0x90,"d-確認,g-返回");

     keyflg=3;

   }

     

 Delayus(30000);

 }

  if (key0==0x50)

 {

 key11='3';

 Delayus(30000);

  }

  if (key0==0x60)

 {

 Delayus(30000);

  key11='4';

 }


//第二排掃描

 P6OUT=0x20;

 Delayus(100);

 key0=P5IN&0x70 ;

  if (key0==0x30)

 {

   key11='5';

Delayus(30000);

   }


 

  if (key0==0x40)

 {

 key11='6';

Delayus(30000);

   }

  if (key0==0x50)

 {

 key11='7';

Delayus(30000);

   }

  if (key0==0x60)

 {

 key11='8';

 Delayus(30000);

  }


//第三排掃描

 P6OUT=0x28;

 Delayus(100);

 key0=P5IN&0x70 ;

  if (key0==0x30)

 {

 key11='9';

 Delayus(30000);

  }

 

  if (key0==0x40)

 {

 key11='A';

Delayus(30000);

   }

  if (key0==0x50)

 {

 key11='B';

 Delayus(30000);

  }

  if (key0==0x60)

 {

 key11='C';

Delayus(30000);

   }


  //第四排掃描

 P6OUT=0x30;

 Delayus(100);

 key0=P5IN&0x70 ;

  if (key0==0x30)

 {

 key11='D';

  if(keyflg==2)

 {

   CLEAR();

   writechinese(0x80,"發送1#節點請求");

   send_bit1();

   send_adrs(0x0001);

   _EINT();

   //發送1號節點請求

   

 }

 if(keyflg==3)

 {

   CLEAR();

   writechinese(0x80,"發送2#節點請求");

   send_bit1();

   send_adrs(0x0002);

   _EINT();

   //發送2號節點請求

 }

 if(keyflg==4)

 {

   CLEAR();

   writechinese(0x80,"發送1#節點請求");

   send_bit1();

   send_adrs(0x0001);

   keyflg=2;

 

   Delayus(20000);

   writechinese(0x80,"發送2#節點請求");

   send_bit1();

   send_adrs(0x0002);

   keyflg=3;

   _EINT();

 }

 Delayus(30000);

  }

 

  if (key0==0x40)

 {

 key11='E';

 Delayus(30000);

 }

  if (key0==0x50)

 {

 key11='F';

 Delayus(30000);

   }

  if (key0==0x60)

 {

 key11='G';

 CLEAR();

 writechinese(0x80,"江南大學");

 writechinese(0x90,"通信與控制工程");

 writechinese(0x88,"無線監測模擬裝置");

 Delayus(100000);

 CLEAR();

 writechinese(0x80,"選擇接受模式");

 writechinese(0x90,"1-單獨探測節點");

 writechinese(0x88,"2-輪巡模式");

 keyflg=0;

 Delayus(30000);

 Init_nRF24L01_IO();

 }


}



void print1(ulong x)

{

ulong cvt0,cvt1;  

 int k,i;

 char data[10];

 cvt0=x;

   for(k=4,i=0;k>0;k--,i++)

   {

     cvt1=cvt0&0x000f;

     data[i]=char11[cvt1%16];

     cvt0=cvt0>>4;

   }

   

   writechar(0x90,data[3]);

   writechar(0x91,data[2]);

   writechar(0x92,data[1]);

   writechar(0x93,data[0]);

}

/********************************************************************/

//主程序


void main(void)

{

 WDTCTL=WDTPW+WDTHOLD;

  _DINT();

  Init_Port1();

  IO_Init();

  LCD_Init();

  CLEAR();

 

 key11='M';

// LCDL='安';

 //漢字顯示示例

writechinese(0x80,"江南大學");

writechinese(0x90,"通信與控制工程");

writechinese(0x88,"無線監測模擬裝置");

Delayus(100000);

CLEAR();

writechinese(0x80,"調試接收模式");

//writechinese(0x90,"1-單獨探測節點");

//writechinese(0x88,"2-輪巡模式");

keyflg=0;

 bostart=0x00;

 boflg=0x00;

 key_Init();

 Init_nRF24L01_IO();

 nRF24L01_RX_MODE();

 nRF24L01_Set_Rx_Address(nRF24L01_W_REGISTER+nRF24L01_RX_ADDR_P0,Rx_Address,5);

 nRF24L01_Flush_RX_FIFO();

 nRF24L01_CE_1;

 _EINT();

do

{

key11='w' ;

key_read();

 

}while(1);


}

#pragma vector=PORT1_VECTOR

__interrupt void P1_ISR(void)

{

 _DINT();

 P1IFG=0;

   P1IE=0;

   P1IES=0;

  Delayus(500);

  CLEAR();

  writechinese(0x80,"正在接收");

//  print_data();

  nRF24L01SpiWriteReg(nRF24L01_W_REGISTER+nRF24L01_STATUS,0x4e);//Reset_Rx_DS

  nRF24L01_Read_Rx_Payload(Rx_Buff,3);

  nRF24L01_Flush_RX_FIFO();

  print_data();

  IO_Init();

  Init_Port1();

  _EINT();

}
關閉窗口

相關文章

中国女人内谢25xxxx免费视频| 午夜av不卡| 91精品国产色综合久久不8| 亚洲国产精品三区| 狠狠色噜噜狠狠色综合久| 亚洲视频日韩精品| 福利一区视频在线观看| 成人一区在线观看| 欧美喷水视频| 国产福利一区二区精品秒拍| xxxx在线视频| 亚洲精品男人| 超污黄色软件| 男人午夜视频| 一级黄色a视频| www.av成人| 亚洲成年人av| 男人天堂av片| 欧美亚洲另类久久综合| 国产精品成人播放| 蜜臀久久99精品久久久无需会员 | 天堂在线观看一卡二卡三卡四卡| 精品国产九九九| 久久久久久国产精品免费播放| 国模无码视频一区| 亚洲36d大奶网| 久久久久99精品成人片| 天堂精品一区二区三区| 97影院在线午夜| 国产精品精品久久久| 欧美黑人视频一区| xvideos成人免费中文版| 日韩精品亚洲元码| 亚洲成人aaa| 日韩一级片网站| 欧美色图片你懂的| 高跟丝袜一区二区三区| 亚洲综合激情小说| 亚洲丝袜自拍清纯另类| 国产日本欧美一区二区| 99精品欧美一区| 粉嫩绯色av一区二区在线观看 | 国产丝袜自拍| 国产激情视频在线播放| 波多野结衣av无码| 日韩经典在线观看| 久久r这里只有精品| 韩国三级hd中文字幕| 影音先锋人妻啪啪av资源网站| 午夜国产一区二区三区| 精品人妻一区二区三区四区在线| 少妇一晚三次一区二区三区| 国产免费一区二区三区四在线播放| 欧美日韩国产综合在线| 亚洲成人免费网站| 欧美国产乱子伦| 伊人久久一区| 亚洲综合伊人久久大杳蕉| 精品欧美不卡一区二区在线观看 | 秋霞影视一区二区三区| 欧美午夜在线播放| 国产美女视频一区二区| 亚洲精品观看| 美女视频亚洲色图| 国产99久久精品一区二区300| 亚洲人成网www| 视频国产一区| 一区二区三区网站| 一本色道久久综合一区 | 亚洲欧美精品伊人久久| 亚洲激情在线观看| 一色桃子一区二区| 久精品免费视频| 孩xxxx性bbbb欧美| 国产成人精品一区二区| 成人免费黄色网| 国产精品亚洲一区| 日本一区二区三区视频免费看| 亚洲欧洲一区二区| 岛国大片在线播放| 色哟哟精品视频| 国产情侣久久久久aⅴ免费| 韩国无码一区二区三区精品| 国产小视频自拍| 久久成人在线观看| 天天干,天天干| 朝桐光av在线一区二区三区| 亚洲人视频在线观看| 国产卡二和卡三的视频| 成人图片小说| 欧洲成人av| 91超碰免费在线| 国产日韩中文在线中文字幕| 国产91精品对白在线播放| 欧美高清不卡| 捆绑调教美女网站视频一区| www.成人网.com| 亚洲嫩草精品久久| 黄色成人91| 丝袜亚洲另类欧美综合| gogo大胆日本视频一区| 亚洲欧美日韩国产手机在线| 欧美日韩一区二区三区不卡| 亚洲男人天堂2019| 欧美一级大片视频| 久久久精彩视频| 色欲色香天天天综合网www| 成年网站免费在线观看| 老司机精品免费视频| 国产乡下妇女三片| 国产原创在线| 在线国产三级| 原纱央莉成人av片| 精品大片一区二区| 蜜臀精品久久久久久蜜臀| 日本一区二区免费在线观看视频| 红桃av永久久久| 精品亚洲一区二区三区| 国产成人精品视频| 亚洲美女自拍偷拍| 亚洲香蕉中文网| 亚洲天堂男人av| 性xxxx奶大欧美高清| a视频在线看| 澳门成人av网| 日韩免费特黄一二三区| 国产高清久久久| 欧美午夜视频在线观看| 中文字幕一区日韩电影| dy888夜精品国产专区| 欧美在线观看www| 美国一级黄色录像| www.色婷婷.com| 成人黄18免费网站| 美女av在线免费看| 国产精品二区不卡| 91在线视频在线| 欧美丰满高潮xxxx喷水动漫 | 亚洲综合在线一区二区| 久操视频免费在线观看| 色妇色综合久久夜夜| 亚洲校园欧美国产另类| 亚洲在线资源| 丝袜美腿成人在线| 偷拍亚洲欧洲综合| 欧美裸体男粗大视频在线观看| 国产一区精品在线| 亚洲一级片av| 免费黄色片视频| jizzjizz在线| 亚洲黄色网址| 亚洲美女网站| 亚洲综合成人网| 色婷婷综合久久久久| 久久久久成人精品免费播放动漫| 久久综合久久色| 日本在线视频中文字幕| 午夜高潮免费视频| www成人免费观看| 欧美天堂亚洲电影院在线观看 | 免费观看毛片网站| 在线看你懂得| 99国产精品免费网站| 激情五月激情综合网| 欧洲激情一区二区| 国产精品r级在线| 日韩中文字幕组| 秋霞av一区二区三区| 9自拍视频在线观看| 92国产精品| 玖玖视频精品| 欧美色偷偷大香| 国产日韩欧美综合| 天堂av8在线| 国产91视频在线| 久青草国产在线| 精品免费一区二区| 国产美女极品在线| 久久久久国产一区| 久草视频在线免费看| 九色porny丨精品自拍视频| 麻豆传媒在线完整视频| 99国产精品免费视频观看| 国产欧美日韩综合精品一区二区| 亚洲人成绝费网站色www| 亚洲国产日日夜夜| 在线国产电影不卡| 国产成人福利视频| 成人在线免费播放视频| 中文字字幕在线观看| 中文在线天堂库| 亚洲人亚洲人色久| 国产精品美女久久久久av爽李琼| 少妇高潮久久77777| 亚洲精品少妇一区二区| 久久青青草原亚洲av无码麻豆| 丰满少妇又爽又紧又丰满69| 超碰成人免费| 一色桃子久久精品亚洲| 68精品国产免费久久久久久婷婷| 免费日韩中文字幕| 欧美视频在线观看一区二区三区| 国产噜噜噜噜久久久久久久久| 免费97视频在线精品国自产拍| 欧美色图亚洲自拍| 91九色丨porny丨极品女神| 很黄很污的视频网站| 免费看日产一区二区三区 | 99久久综合国产精品二区| 精品一区在线看| 亚洲色图美腿丝袜| 僵尸世界大战2 在线播放| 亚洲天堂aaa| 国产在线更新| 老色鬼精品视频在线观看播放| 日韩hd视频在线观看| 日韩精品一区二区免费| 99热这里只有精品99| 国内高清免费在线视频| 韩国一区二区三区| 日韩午夜在线视频| 男人添女人下面免费视频| 久在线观看福利视频| 久久青草视频| 国产精品免费视频观看| 国产精品露脸自拍| 福利视频第一页| 欧美写真视频一区| 一区二区日本视频| 日韩极品精品视频免费观看| 免费观看美女裸体网站| 日本高清视频网站| 欧美日韩尤物久久| 欧美国产禁国产网站cc| 国产美女高潮久久白浆| 影音先锋男人资源在线观看| 午夜在线免费视频| 最新国产乱人伦偷精品免费网站| 日韩午夜激情免费电影| wwwwww欧美| www中文字幕| 成人影院中文字幕| 色婷婷综合视频在线观看| 亚洲高清视频一区| 国产欧美熟妇另类久久久 | 另类人妖一区二区av| 制服丝袜av成人在线看| 欧美污视频久久久| 中文天堂在线视频| 国产在线精彩视频| 国产日韩成人精品| a级国产乱理论片在线观看99| 日产亚洲一区二区三区| 浪潮av一区| 99久久精品免费| 国产精品久久久久秋霞鲁丝| 欧美日韩精品在线观看视频| 国模吧精品人体gogo| 2021中文字幕在线| 成人精品gif动图一区| 热久久免费国产视频| 亚洲一区电影在线观看| 在线视频1区2区| 99久久精品免费观看| 成人福利网站在线观看11| 国产成人一区二区三区影院在线| 日本高清在线观看| 国产精品久久久久久久久免费相片| 国产超碰91| jizz国产视频| 国产精品毛片av| 日韩一级片在线观看| 五月激情婷婷在线| 国产午夜电影| 国产综合一区二区| 国产欧美一区二区三区在线| 黄色av一级片| 欧美成人家庭影院| 欧美视频你懂的| 在线免费视频a| 91美女在线免费观看| 久久99九九99精品| 91精品久久久久久久久久久久久 | 91美女主播在线视频| 亚洲天堂成人在线观看| 在线码字幕一区| 国产精品理人伦一区二区三区| 午夜av一区| 久久成年人视频| 极品久久久久久| 交100部在线观看| 国产日韩亚洲| 色婷婷av在线| 国产色一区二区| 粉嫩高清一区二区三区精品视频| 在线观看国产精品视频| 国产一区二区三区精品在线观看| 色琪琪一区二区三区亚洲区| 国产精品免费入口| 找av导航入口| 国产在线精品不卡| 99中文视频在线| 欧美熟女一区二区| 99成人在线视频| 欧美第一黄色网| 日韩不卡在线播放| 影音欧美亚洲| 一日本道久久久精品国产| 中文字幕一区二区三三| 欧美激情一区二区三级高清视频| 国产亚洲成人精品| 97色婷婷成人综合在线观看| 精品久久久网站| 一色道久久88加勒比一| av手机在线观看| 欧美私人免费视频| 少妇搡bbbb搡bbb搡打电话| 欧美激情午夜| 欧美日韩一区二区三区在线免费观看| 亚洲中文字幕久久精品无码喷水| 992tv在线观看免费进| 日韩激情综合| 日韩欧美一区二区视频| 久久久视频6r| 欧美不卡高清一区二区三区| 欧美成人三级在线| 中文字幕第二区| 青草综合视频| 亚洲色无码播放| 日韩三级视频在线播放| 欧美日日夜夜| 欧美黑人xxxx| a视频免费在线观看| 国产一区欧美| 97久久夜色精品国产九色| 欧美成人免费视频a| 久久福利视频一区二区| 日本在线播放一区| 男人插曲女人视频免费| 国产亚洲一区二区三区在线观看| 国产精品久久久久久久乖乖| 亚洲色图图片网| 亚洲成在人线免费| 国产精品91av| 人人鲁人人莫人人爱精品| 亚洲精品videossex少妇| 精品无码一区二区三区电影桃花| 久久精品66| 91高清免费在线观看| 国产精品国产高清国产| 免费在线观看一区二区三区| 神马欧美一区二区| 夜色福利刺激| 精品国产乱码久久久久久天美| 国产又粗又猛又色| 99久久999| 欧美精品videossex88| 日韩一级片免费看| 精彩视频一区二区| 欧美视频在线观看视频| 国产高清在线观看| 欧美一区二区三区啪啪| 欧美片一区二区| 日韩免费特黄一二三区| 超碰在线97av| 国产成+人+亚洲+欧美+综合| 一区二区三区av电影| 中文字幕免费看| 久久久久久久久久久久久久久久久久久久| 午夜精品理论片| 国内精品免费视频精选在线观看| 91在线视频在线| 91香蕉国产线在线观看| 99久久婷婷国产综合精品首页 | 777久久久精品一区二区三区| h视频网站在线观看| 日韩欧美一卡二卡| www.com亚洲| 午夜亚洲福利在线老司机| 伊人av成人| 黄网站免费在线观看| 亚洲另类欧美自拍| 亚洲成人精品女人久久久| 国产麻豆成人精品| 久久久精品麻豆| 97精品国产99久久久久久免费| 久久久久久久一区二区| 精品a在线观看| 亚洲日本va在线观看| 国产精品天天干| 日韩综合网站| 视频一区视频二区视频| 五月婷婷在线视频| 亚洲欧美日韩国产精品| 无码精品一区二区三区在线| 久久综合丝袜日本网| 影音先锋资源av| 亚洲宅男一区| 久久99精品久久久久久水蜜桃 | 国产大奶视频|