單片機(jī)源程序如下:
//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) //------------------------------數(shù)碼管位選-------------------------------------- //#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) //***********************************數(shù)碼管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 // 讀取接收數(shù)據(jù)指令 #define WR_TX_PLOAD 0xA0 // 寫待發(fā)數(shù)據(jù)指令 #define FLUSH_TX 0xE1 // 沖洗發(fā)送 FIFO指令 #define FLUSH_RX 0xE2 // 沖洗接收 FIFO指令 #define REUSE_TX_PL 0xE3 // 定義重復(fù)裝載數(shù)據(jù)指令 #define NOP1 0xFF // 保留 //*************************************SPI(nRF24L01)寄存器地址**************************************************** #define CONFIG 0x00 // 配置收發(fā)狀態(tài),CRC校驗(yàn)?zāi)J揭约笆瞻l(fā)狀態(tài)響應(yīng)方式 #define EN_AA 0x01 // 自動(dòng)應(yīng)答功能設(shè)置 #define EN_RXADDR 0x02 // 可用信道設(shè)置 #define SETUP_AW 0x03 // 收發(fā)地址寬度設(shè)置 #define SETUP_RETR 0x04 // 自動(dòng)重發(fā)功能設(shè)置 #define RF_CH 0x05 // 工作頻率設(shè)置 #define RF_SETUP 0x06 // 發(fā)射速率、功耗功能設(shè)置 #define STATUS 0x07 // 狀態(tài)寄存器 #define OBSERVE_TX 0x08 // 發(fā)送監(jiān)測(cè)功能 #define CD 0x09 // 地址檢測(cè) #define RX_ADDR_P0 0x0A // 頻道0接收數(shù)據(jù)地址 #define RX_ADDR_P1 0x0B // 頻道1接收數(shù)據(jù)地址 #define RX_ADDR_P2 0x0C // 頻道2接收數(shù)據(jù)地址 #define RX_ADDR_P3 0x0D // 頻道3接收數(shù)據(jù)地址 #define RX_ADDR_P4 0x0E // 頻道4接收數(shù)據(jù)地址 #define RX_ADDR_P5 0x0F // 頻道5接收數(shù)據(jù)地址 #define TX_ADDR 0x10 // 發(fā)送地址寄存器 #define RX_PW_P0 0x11 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度 #define RX_PW_P1 0x12 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度 #define RX_PW_P2 0x13 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度 #define RX_PW_P3 0x14 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度 #define RX_PW_P4 0x15 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度 #define RX_PW_P5 0x16 // 接收頻道0接收數(shù)據(jù)長(zhǎng)度 #define FIFO_STATUS 0x17 // FIFO棧入棧出狀態(tài)寄存器設(shè)置 //************************************************************************************** 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); //*****************************************長(zhǎng)延時(shí)***************************************** 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(); //關(guān)閉中斷 UCSRB =0x98; //disable while setting baud rate UCSRA =0x20; UCSRC = 0x86; UBRRL =51; //set baud rate lo TIMSK = 0x00; //timer interrupt sources SEI(); //開(kāi)中斷 } //----------------------------接收中斷處理函數(shù)---------------------------------- #pragma interrupt_handler uart0_rx_isr:12 void uart0_rx_isr(void) { KEY0=UDR; UDR=KEY0; } /**************************************************************************************************** for(i=0; i}
上一篇:用帶ADC的avr單片機(jī)做的一款電壓檢測(cè)表
下一篇:Atmega64 LCD1602+proteus仿真程序
推薦閱讀最新更新時(shí)間:2025-05-31 09:51





設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無(wú)刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無(wú)線智能控制器的設(shè)計(jì)
- 基于PTR2000的無(wú)線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無(wú)人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- EVAL-ADG5248FEBZ,ADG5248F 過(guò)壓保護(hù) 8:1 多路復(fù)用器評(píng)估板
- EVAL-ADF7021DBZ3,基于 ADF7021 431 - 470 MHz ISM 頻段收發(fā)器的子板
- 使用 Analog Devices 的 LTC4162EUFD-SADM 的參考設(shè)計(jì)
- LT3091MPFE 產(chǎn)生極低輸出電壓的典型應(yīng)用
- 使用 Analog Devices 的 LT1173CN8 的參考設(shè)計(jì)
- AD9649-65EBZ,用于 AD9649BCPZ-65、單通道、14 位、65 MSPS 模數(shù)轉(zhuǎn)換器的評(píng)估板
- 帶有用于 NCV3063 1.5A 升壓開(kāi)關(guān)穩(wěn)壓器的外部 NMOS 晶體管的典型升壓應(yīng)用原理圖
- NE555八音電子琴
- KITPF4210EPEVB: Evaluation board- PF4210, Power Management IC for i.MX 8M
- 使用 NXP Semiconductors 的 ISP1582 的參考設(shè)計(jì)
- 宇稱電子發(fā)布8通道多閾值A(chǔ)SIC芯片:重構(gòu)激光雷達(dá)產(chǎn)業(yè)格局,開(kāi)啟“ASIC平權(quán)”時(shí)代
- 三星SDI與LGES將在美國(guó)設(shè)置磷酸鐵鋰電池生產(chǎn)線
- 福特汽車公司申請(qǐng)新專利 或?qū)⒋钶d車輛噪音控制系統(tǒng)
- 福特汽車申請(qǐng)新專利 福特Pro Power Onboard或新增安全模式
- 華為乾崑如何驅(qū)動(dòng)中國(guó)智能汽車產(chǎn)業(yè)共創(chuàng)?
- 激光雷達(dá)VS純視覺(jué),小米小鵬隔空交鋒
- 機(jī)器人實(shí)現(xiàn)空中變形 飛行與地面行駛模式無(wú)縫切換
- -35℃直充技術(shù)顛覆革新,邢東鋰電引領(lǐng)低溫電池進(jìn)入“直充時(shí)代”!
- 硬核解讀:人形機(jī)器人跑“半馬”映射出哪些產(chǎn)業(yè)問(wèn)題
- V2X 連接器產(chǎn)品綜述
- Efinix宣布推出三款RISC-V內(nèi)核處理器
- 美的攜手肖特研發(fā)團(tuán)隊(duì)用玻璃設(shè)計(jì) 智能家電新風(fēng)格
- 疫情后機(jī)器人行業(yè)新機(jī)遇
- 大眾將向新款豪華級(jí)SUV提供創(chuàng)新型車燈系統(tǒng)IQ.LIGHT LED矩陣車
- 激光雷達(dá)類型:TOF雷達(dá)VS三角測(cè)距雷達(dá)
- 平井一夫是如何讓巨虧的索尼創(chuàng)造出了歷史最高利潤(rùn)
- 中美爭(zhēng)奪5G,到底是在爭(zhēng)奪什么?
- 100億資金鏈危機(jī),金立會(huì)是下一個(gè)樂(lè)視嗎?
- 2017年中國(guó)公共WiFi安全報(bào)告:一二線城市WiFi更安全
- 未來(lái)兩個(gè)月,高通將面臨歷史上最艱難時(shí)期