單片機源程序如下:
//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仿真程序
推薦閱讀
史海拾趣
在電子行業中,有許多偉大的企業(GREATECS公司,這里假設為泛指多個杰出電子企業)通過不同的路徑和策略實現了顯著的發展。以下是五個相關故事,每個故事均基于事實,旨在展示這些企業如何成長和壯大。
1. 通用電氣(General Electric, GE)的多元化擴張
通用電氣(GE)的故事始于1888年,由托馬斯·愛迪生創立,最初專注于電力和照明領域。隨著時間的推移,GE通過一系列的戰略并購和內部創新,逐漸擴展到電機、電動機制造、航空、醫療設備、核能等多個領域。在20世紀,GE成為全球最大的多元化企業之一,其業務遍布全球。特別是在杰克·韋爾奇擔任CEO期間(1981-2001),通過大規模的并購和擴張,GE的營業收入和市值顯著增長。然而,2008年金融危機后,GE面臨經濟困境,隨后進行了戰略調整,出售金融資產并重點發展核心業務,如今仍是全球領先的科技和工業公司之一。
2. 索尼(Sony)的創新之路
索尼公司成立于1946年,最初由井深大和盛田昭夫創立,起初是一家小型電子產品制造商。索尼的崛起得益于其持續的創新精神和對消費者需求的敏銳洞察。1958年,索尼推出了世界上第一臺便攜式晶體管收音機,開啟了便攜式電子產品的新時代。隨后,索尼又推出了Walkman便攜式音樂播放器、PlayStation游戲機等一系列革命性產品,這些產品不僅改變了人們的娛樂方式,也奠定了索尼在全球電子行業的領先地位。索尼的成功在于其不斷追求技術創新和產品質量,以及對市場趨勢的準確把握。
3. 三星電子的崛起
三星電子是韓國最大的電子企業,其發展歷程充滿了挑戰與機遇。起初,三星主要從事貿易和低端電子產品制造。然而,在20世紀80年代末至90年代初,三星決定實施“新經營”戰略,通過大規模投資研發、提升產品質量和品牌形象,實現了從低端制造商向高端科技企業的轉型。在半導體、智能手機、顯示面板等領域,三星取得了重大突破,成為全球市場的領導者。三星的成功在于其強大的研發能力、高效的供應鏈管理以及對市場變化的快速響應。
4. 英特爾(Intel)的芯片霸主地位
英特爾公司成立于1968年,最初是一家專注于半導體存儲器的初創企業。然而,隨著日本存儲器制造商的崛起,英特爾面臨了巨大的競爭壓力。在關鍵時刻,英特爾決定放棄存儲器業務,轉而專注于微處理器(CPU)的研發和生產。這一戰略轉型使英特爾迅速崛起為全球最大的CPU制造商,其“Intel Inside”計劃更是深入人心,成為個人電腦行業的標準配置。英特爾的成功在于其強大的技術創新能力、對市場需求的精準把握以及與全球合作伙伴的緊密合作。
5. 華為的技術突破與全球化戰略
華為作為中國電子行業的代表企業,其發展歷程充滿了傳奇色彩。起初,華為主要從事電信設備的研發和銷售。然而,隨著技術的不斷進步和市場需求的不斷變化,華為逐漸將業務擴展到智能手機、云計算、人工智能等多個領域。華為的成功在于其持續的技術研發投入、對全球市場的深入洞察以及靈活的市場策略。特別是在5G技術方面,華為取得了重大突破,成為全球領先的5G解決方案提供商。同時,華為還積極推動全球化戰略,與全球多個國家和地區的運營商建立了緊密的合作關系。
隨著技術的不斷進步和市場的不斷擴大,ARMKEIL Microcontroller Tools公司開始實施全球化戰略。公司不僅在歐洲和美國設立了研發中心和銷售網絡,還積極開拓亞洲市場,與多個國家和地區的合作伙伴建立了緊密的合作關系。通過全球化布局和市場拓展,ARMKEIL Microcontroller Tools公司的業務范圍不斷擴大,品牌影響力也逐漸提升。
這五個故事只是ARMKEIL Microcontroller Tools公司發展過程中的一部分。實際上,該公司的成長歷程充滿了無數的挑戰和機遇。正是憑借著對技術的不斷追求和對市場的敏銳洞察,ARMKEIL Microcontroller Tools公司才能在激烈的競爭中脫穎而出,成為嵌入式系統開發工具領域的佼佼者。
2007年10月,G24i在英國建立了DSSC的30MW試產線,這是全球范圍內的重要里程碑。這條生產線具備高效的生產能力,能夠在不到3小時的時間內制造出長達約800米的太陽能電池,生產速度高達每分鐘4米以上。這一成就不僅展示了G24i在規模化生產方面的實力,也為后續的商業化應用奠定了產能基礎。盡管初期商業化模組產品的轉換效率僅為3%,但G24i通過不斷優化生產工藝和降低成本,逐步提升了產品的市場競爭力。
隨著公司業務的不斷發展壯大,Globaltech開始著手進行全球化布局。公司在全球多個地區設立了研發中心和銷售中心,以便更好地服務全球客戶。同時,公司還注重可持續發展和社會責任,積極參與公益事業和環保活動。這些舉措不僅提升了公司的社會形象和品牌價值,也為公司的長期發展奠定了堅實的基礎。
以上五個故事展示了Globaltech Semiconductor Co., Ltd.在電子行業中的發展歷程和關鍵里程碑。通過技術創新、市場拓展、研發實力提升、戰略調整和全球化布局等措施,公司不斷壯大自身實力,并在全球半導體行業中占據了一席之地。
Helium公司成立于2013年,由Shawn Fanning、Amir Haleem和Sean Carey共同創立。在創立初期,Helium專注于物聯網無線網絡技術的研究,但并未迅速獲得市場關注。這一時期,電子行業正處于創新與轉型階段,物聯網作為新興領域展現出巨大潛力。Helium團隊預見到了物聯網的發展趨勢,但由于缺乏明確的商業模式,其網絡發展并未大規模鋪開。然而,這段時期的積累為Helium后續的技術突破和市場拓展奠定了堅實基礎。
進入21世紀后,E-T-A公司開始關注智能電路保護技術的研發。公司投入大量資源進行技術創新,成功推出了多款智能電路保護產品。這些產品不僅具有更高的安全性和可靠性,還能實現遠程監控和控制功能,為客戶提供更加便捷和高效的服務。
今天,電視機與視訊轉換盒應用中的大多數調諧器采用的都是傳統單變換MOPLL概念。這種調諧器既能處理模擬電視訊號也能處理數字電視訊號,或是同時處理這兩種電視訊號(即所謂的混合調諧器)。在設計這種調諧器時需考慮的關鍵因素包括低成本、低功耗、 ...… 查看全部問答∨ |
|
[ 摘 要]本文介紹了工業自動物流中A GV (自動導航小車) 的通訊解決方案。簡要介紹了無線數據通訊與工業控制系 統的集成方式, 主要討論關于A GV 無線通訊模塊的組成與實現以及部分軟件設計。… 查看全部問答∨ |
|
公司要我在WINCE下實現Direct3D應用,我以前沒用過EVC4.0,但用過VC6.0。在EVC中我只加進頭文件<d3dx9.0>后就發生以下錯誤: pogram Files\\Microsoft DirectX 9.0 SDK (December 2004)\\Include\\d3dx9math.inl(1578) : error C2065: \'sqrtf\ ...… 查看全部問答∨ |
內核起來了,但串口輸出停在Freeing init memory: 88K 移植linux2.6.22至pxa270基本成功了 nfs方式能將系統起來。 工具鏈為arm-none-linux-gnueabi busybox版本1.9.0。 啟動參數:boot root=/dev/nfs rw nfsroot=192.168.1.100:/rootfs ip=192.168.1.200::::: console=ttyS0,38400 netmac=00:cf:0a: ...… 查看全部問答∨ |
寫了個USB轉COM口的驅動,但是為何系統啟動過程中裝載完驅動就迅速卸載? 打印信息, USBToCOM::Process Attach USBToCOM::Process Detach sources文件 RELEASETYPE=PLATFORM TARGETNAME=ucom TARGETTYPE=DYNLINK DLLENTRY=DllEntry DEF ...… 查看全部問答∨ |