說一下怎樣去做一個遙控器,必須要買的東西: 2 片 STC12C5A60S2 單片機,2 個 NRF24L01 模塊,一個電機驅動(如果要驅動功率較大的電機,不建議買 LN298,最好大功率一些的),兩個 L7805 穩(wěn)壓管,1 個AMS1117-3.3 穩(wěn)壓芯片,兩個搖桿電位器(注意有一個是要不能自動復位的,用于油門,另外一個要自動復位,用于轉彎。還有一些電阻電容等,主要是用來構建一個最小單片機系統,使單片機運行起來。液晶屏不是必要的,這里我用的是 nokia5110 液晶屏,用來顯示遙控車的電壓和電量,當然電量不會很準確,是用單片機上的 A/D 轉換器采集電池的電壓,然后根據電壓電量曲線得出電量的。
0.png (46.63 KB, 下載次數: 75)
下載附件
2019-3-25 00:11 上傳
單片機源程序如下:
- #include <stc12c5a60s2.H>
- #include <intrins.h>
- #include <math.h>
- #include"2_4G.h"
- #include"stc12_ADC.h"
- #include"stc12_pwm.h"
- void delay(unsigned int k)
- {
- unsigned int i,j;
- for(i=0;i<k;i++)
- {
- for(j=0;j<121;j++)
- {;}
- }
- }
- void main(void)
- {
- uchar RxBuf[32]={0},TxBuf[32]; // 接收的數據 數組
- delay(500);
- init_NRF24L01() ; //模塊初始化
- Init_ADC();
- PWM_init();
- PWM_clock(2); // PCA/PWM時鐘源為定時器0的溢出
- while(1)
- {
- SetRX_Mode(); //設置成接受模式
- nRF24L01_RxPacket(RxBuf);
- delay(10);
-
- if(RxBuf[1]==0) //前進
- {
- up=1;
- dw=0;
- up1=0;
- dw1=1;
- PWM_start(RxBuf[2],RxBuf[3]);
- }
- else
- {
- if(RxBuf[0]==0)
- {
- up=1;
- dw=1;
- up1=1;
- dw1=1;
- }
- else //后退
- {
- up=0;
- dw=1;
- up1=1;
- dw1=0;
- PWM_start(RxBuf[0],RxBuf[0]);
- }
- }
- TxBuf[4]=(uchar)AD_av(0); //測鋰電池電壓
- nRF24L01_TxPacket(TxBuf); //發(fā)送數據 Transmit Tx buffer data
- delay(50);
-
- }
- }
復制代碼
所有資料51hei提供下載:
Keil代碼下載:
遙控船.rar
(137.82 KB, 下載次數: 116)
2019-3-24 15:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
sldprt文件:
遙控器.rar
(8.7 MB, 下載次數: 136)
2019-3-24 15:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|