51單片機做的一個很簡單的DS1302數字時鐘+DS18B20溫度檢測,加入了NRF24L01的無線模塊,將其數據發送到戰艦開發板。
STM32這邊直接用的做無線實驗時調好的代碼
51這邊溫度是1秒鐘一采集,無線發送也是定時一秒鐘,1602和TFT顯示可以實現同步。
1891fa2b3e3650d34d1edeb8dc532d79_926.jpg (73.26 KB, 下載次數: 52)
下載附件
2019-3-12 15:28 上傳
9f43f8b0af7337e8d9ee2cf81ba3c4db_636.jpg (77.97 KB, 下載次數: 42)
下載附件
2019-3-12 15:28 上傳
98dac799099823bd0b9344ca90d313c1_627.jpg (54.92 KB, 下載次數: 47)
下載附件
2019-3-12 15:28 上傳
單片機源程序如下:
- #include"delay.h"
- #include"sys.h"
- #include"usart.h"
- #include"wkup.h"
- #include"led.h"
- #include"key.h"
- #include"lcd.h"
- #include"spi.h"
- //#include"adc.h"
- //#include"dma.h"
- #include"wkup.h"
- #include"nrf24l01.h"
-
- const u8 Send_Buff[]="I have received the massege!";
- #define SIZE sizeof(Send_Buff)
-
- u8 Receive_Buff[32];
-
- int main(void)
- {
- delay_init();
- uart_init(9600);
- LCD_Init();
- LED_Init();
- KEY_Init();
- WKUP_Init();
- NRF24L01_Init();
- // ADC1_Init();
- // DMA1_Init();
- LCD_Clear(BLACK);
- POINT_COLOR=WHITE;
- BACK_COLOR=BLACK;
- LCD_ShowString(60,50,200,16,16,"WarShip STM32");
- LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");
- LCD_ShowString(60,100,200,16,16,"2013/12/15");
- while(NRF24L01_Check()) //檢查NRF24L01是否在位.
- {
- LCD_ShowString(60,130,200,16,16,"NRF24L01 Check Error!");
- delay_ms(200);
- LED0=~LED0;
- delay_ms(200);
- }
- LCD_Clear(WHITE);
- POINT_COLOR=RED;
- BACK_COLOR=WHITE;
- LCD_ShowString(60,50,200,16,16,"WarShip STM32");
- LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");
- LCD_ShowString(60,100,200,16,16,"2013/12/17");
- LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
- LCD_ShowString(60,150,200,16,16,"KEY0:Send ");
- LCD_ShowString(60,170,200,16,16,"KEY2:Receive");
- LCD_ShowString(60,200,200,16,16,"STATUS:");
- // ADC_SoftwareStartConvCmd(ADC1,ENABLE); //軟件啟動ADC
- // ADC_DMACmd(ADC1,ENABLE);//開始ADC_DMA傳輸
-
- while(1)
- {
- u8 keyval,sta,t,mode=0;
- keyval=KEY_Scan(0);
- if(keyval==1)
- {
- mode=1;//發送模式
- }
- else if(keyval==3)
- {
- mode=0;//接收模式
- }
- if(mode)
- {
- TX_Mode();
- LED1=0;
- sta=RF_TX_Pack((u8*)Send_Buff);
- LCD_ShowxNum(116,200,sta,3,16,0);
- if(sta&TX_OK)
- LCD_ShowString(60,230,200,16,16,(u8*)Send_Buff);
- }
- else
- {
- RX_Mode();
- LED1=1;
- sta=RF_RX_Pack((u8*)Receive_Buff);
- LCD_ShowxNum(116,200,sta,3,16,0);
- if(sta&RX_OK)
- LCD_ShowString(60,230,200,16,16,(u8*)Receive_Buff);
- }
- delay_ms(10);
- t++;
- if(t==50)
- {
- LED0=~LED0;
- t=0;
- }
- }
- }
復制代碼 轉載于www點openedv點com/posts/list/26309.htm
所有資料51hei提供下載:
STM32無線溫度接收.7z
(203.85 KB, 下載次數: 41)
2019-3-12 15:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
無線溫度采集.zip
(63.61 KB, 下載次數: 33)
2019-3-12 08:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
NRF24L01+寄存器及指令集.doc
(54.5 KB, 下載次數: 21)
2019-3-12 08:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|