下載/瀏覽

Download Report

Transcript 下載/瀏覽

油電混合雙燃料腳踏車
之控制系統之無線傳輸
指導教授:陳沛仲老師
姓名:楊崇信
P2.6
P2.7
Throttle open
Throttle close
Throttle motor
P2.5
8051
Starter
motor
Driver motor
P1
Driver
A/D
Handle signal
Throttle motor
angle
P3.5
Sensor
P3.6
P3.7
left switch
rightl switch
RF24L01無線通訊
主程式
while(1)
{
if(KEY1 ==0 )
{
LED1 = 0;
TxBuf[1] = 1 ;
tf = 1 ;
}
if(KEY2 ==0 )
{
LED2 = 0;
TxBuf[2] = 1 ;
tf = 1 ;
}
if (tf==1)
{
nRF24L01_TxPacket(TxBuf);
TxBuf[1] = 0x00;
TxBuf[2] = 0x00;
tf=0;
Delay(1000);
LED1 = 1;
LED2 = 1;
}
SetRX_Mode();
if(nRF24L01_RxPacket(RxBuf))
{
if(RxBuf[1]==1)
{
LED1 = 0;
}
if(RxBuf[2]==1)
{
LED2 = 0;
}
Delay(1000);
LED1 = 1;
LED2 = 1;
}
RxBuf[1] = 0x00;
RxBuf[2] = 0x00;
}
}
接收副程式
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
unsigned char revale=0;
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);
CE = 1;
dalay130us();
sta=SPI_Read(STATUS);
if(RX_DR)
{
CE = 0;
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);
revale =1;
}
SPI_RW_Reg(WRITE_REG+STATUS,sta);
return revale;
}
發射副程式
void nRF24L01_TxPacket(unsigned char * tx_buf)
{
CE=0;
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH);
SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);
SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a);
SPI_RW_Reg(WRITE_REG + RF_CH, 0);
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);
CE=1;
nerDelay_us(10);
}