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