單片機源程序如下:
//ICC-AVR application builder :
// Target : M16
// Crystal: 8.0000Mhz
#include #include //------------------------------------------------------------------------------ //--------------------------------NRF24L01接口定義-------------------------------- //------------------------------------------------------------------------------ //#define NRF24L01_MISO PB4 //輸入0 #define Hign_24L01_MISO PORTB |= (1 << PB4) #define Low_24L01_MISO PORTB &= ~(1 << PB4) #define Read_24L01_MISO PINB & (1 << PB4) //#define NRF24L01_MOSI PB2 //輸出1 #define Hign_24L01_MOSI PORTB |= (1 << PB2) #define Low_24L01_MOSI PORTB &= ~(1 << PB2) #define Read_24L01_MOSI PINB & (1 << PB2) //#define NRF24L01_CSN PB7 //輸出1 #define Low_24L01_CSN PORTB &= ~(1 << PB7) #define Hign_24L01_CSN PORTB |= (1 << PB7) //#define NRF24L01_SCK PB6 //輸出1 #define Hign_24L01_SCK PORTB |= (1 << PB6) #define Low_24L01_SCK PORTB &= ~(1 << PB6) #define Read_24L01_SCK PINB & (1 << PB6); //#define NRF24L01_CE PB5 //輸出1 #define Hign_24L01_CE PORTB |= (1 << PB5) #define Low_24L01_CE PORTB &= ~(1 << PB5) #define Read_24L01_CE PINB & (1 << PB5) //#define NRF24L01_IRQ PB3 //輸入 #define Hign_NRF24L01_IRQ PORTB |= (1 << PB3) #define Low_NRF24L01_IRQ PORTB &= ~(1 << PB3) #define Read_NRF24L01_IRQ PINB & (1 << PB3) //------------------------------數碼管位選-------------------------------------- //#define Display1 PA1 //輸出1 #define Hign_Display1 PORTA |= (1 << PA1); #define Low_Display1 PORTA &= ~(1 << PA1); //#define Display2 PA2 //輸出1 #define Hign_Display2 PORTA |= (1 << PA2); #define Low_Display2 PORTA &= ~(1 << PA2); //#define Display3 PA3 //輸出1 #define Hign_Display3 PORTA |= (1 << PA3); #define Low_Display3 PORTA &= ~(1 << PA3); //#define Display4 PA4 //輸出1 #define Hign_Display4 PORTA |= (1 << PA4); #define Low_Display4 PORTA &= ~(1 << PA4); //-------------------------------BELL蜂明器------------------------------------- #define Hign_BELL PORTD |= (1 << PD5) #define Low_BELL PORTD &= ~(1 << PD5) //-------------------------------JDQ繼電器-------------------------------------- #define Hign_JDQ PORTD |= (1 << PD7) #define Low_JDQ PORTD &= ~(1 << PD7) //***********************************數碼管0-9編碼******************************************* char seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段碼 char TxBuf[32]= { 0x01,0x02,0x03,0x4,0x05,0x06,0x07,0x08, 0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16, 0x17,0x18,0x19,0x20,0x21,0x22,0x23,0x24, 0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32, }; char sta,tf,KEY0; //*********************************************NRF24L01************************************* #define TX_ADR_WIDTH 5 // 5 uints TX address width #define RX_ADR_WIDTH 5 // 5 uints RX address width #define TX_PLOAD_WIDTH 32 // 20 uints TX payload #define RX_PLOAD_WIDTH 32 // 20 uints TX payload char TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //本地地址 char RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //接收地址 //***************************************NRF24L01寄存器指令******************************************************* #define READ_REG 0x00 // 讀寄存器指令 #define WRITE_REG 0x20 // 寫寄存器指令 #define RD_RX_PLOAD 0x61 // 讀取接收數據指令 #define WR_TX_PLOAD 0xA0 // 寫待發數據指令 #define FLUSH_TX 0xE1 // 沖洗發送 FIFO指令 #define FLUSH_RX 0xE2 // 沖洗接收 FIFO指令 #define REUSE_TX_PL 0xE3 // 定義重復裝載數據指令 #define NOP1 0xFF // 保留 //*************************************SPI(nRF24L01)寄存器地址**************************************************** #define CONFIG 0x00 // 配置收發狀態,CRC校驗模式以及收發狀態響應方式 #define EN_AA 0x01 // 自動應答功能設置 #define EN_RXADDR 0x02 // 可用信道設置 #define SETUP_AW 0x03 // 收發地址寬度設置 #define SETUP_RETR 0x04 // 自動重發功能設置 #define RF_CH 0x05 // 工作頻率設置 #define RF_SETUP 0x06 // 發射速率、功耗功能設置 #define STATUS 0x07 // 狀態寄存器 #define OBSERVE_TX 0x08 // 發送監測功能 #define CD 0x09 // 地址檢測 #define RX_ADDR_P0 0x0A // 頻道0接收數據地址 #define RX_ADDR_P1 0x0B // 頻道1接收數據地址 #define RX_ADDR_P2 0x0C // 頻道2接收數據地址 #define RX_ADDR_P3 0x0D // 頻道3接收數據地址 #define RX_ADDR_P4 0x0E // 頻道4接收數據地址 #define RX_ADDR_P5 0x0F // 頻道5接收數據地址 #define TX_ADDR 0x10 // 發送地址寄存器 #define RX_PW_P0 0x11 // 接收頻道0接收數據長度 #define RX_PW_P1 0x12 // 接收頻道0接收數據長度 #define RX_PW_P2 0x13 // 接收頻道0接收數據長度 #define RX_PW_P3 0x14 // 接收頻道0接收數據長度 #define RX_PW_P4 0x15 // 接收頻道0接收數據長度 #define RX_PW_P5 0x16 // 接收頻道0接收數據長度 #define FIFO_STATUS 0x17 // FIFO棧入棧出狀態寄存器設置 //************************************************************************************** void Delay(int s); void inerDelay_us(char n); void init_NRF24L01(void); char SPI_RW(char data); char SPI_Read(char reg); char SPI_RW_Reg(char reg, char value); char SPI_Read_Buf(char reg, char *pBuf, char uchars); char SPI_Write_Buf(char reg, char *pBuf, char uchars); void SetRX_Mode(void); char nRF24L01_RxPacket(char* rx_buf); void nRF24L01_TxPacket(char * tx_buf); //*****************************************長延時***************************************** void Delay(int s) { unsigned int i; for(i=0; i /****************************************************************************************** /*延時函數 /******************************************************************************************/ void inerDelay_us(char n) { for(;n>0;n--); } //------------------------------串口初始化-------------------------------------- void uart0_init(void) { CLI(); //關閉中斷 UCSRB =0x98; //disable while setting baud rate UCSRA =0x20; UCSRC = 0x86; UBRRL =51; //set baud rate lo TIMSK = 0x00; //timer interrupt sources SEI(); //開中斷 } //----------------------------接收中斷處理函數---------------------------------- #pragma interrupt_handler uart0_rx_isr:12 void uart0_rx_isr(void) { KEY0=UDR; UDR=KEY0; } /**************************************************************************************************** for(i=0; i}
上一篇:用帶ADC的avr單片機做的一款電壓檢測表
下一篇:Atmega64 LCD1602+proteus仿真程序
推薦閱讀最新更新時間:2025-05-31 09:51





設計資源 培訓 開發板 精華推薦
- EVAL-ADG5248FEBZ,ADG5248F 過壓保護 8:1 多路復用器評估板
- EVAL-ADF7021DBZ3,基于 ADF7021 431 - 470 MHz ISM 頻段收發器的子板
- 使用 Analog Devices 的 LTC4162EUFD-SADM 的參考設計
- LT3091MPFE 產生極低輸出電壓的典型應用
- 使用 Analog Devices 的 LT1173CN8 的參考設計
- AD9649-65EBZ,用于 AD9649BCPZ-65、單通道、14 位、65 MSPS 模數轉換器的評估板
- 帶有用于 NCV3063 1.5A 升壓開關穩壓器的外部 NMOS 晶體管的典型升壓應用原理圖
- NE555八音電子琴
- KITPF4210EPEVB: Evaluation board- PF4210, Power Management IC for i.MX 8M
- 使用 NXP Semiconductors 的 ISP1582 的參考設計