说一下怎样去做一个遥控器,必须要买的东西: 2 片 STC12C5A60S2 单片机,2 个 NRF24L01 模块,一个电机驱动(如果要驱动功率较大的电机,不建议买 LN298,最好大功率一些的),两个 L7805 稳压管,1 个AMS1117-3.3 稳压芯片,两个摇杆电位器(注意有一个是要不能自动复位的,用于油门,另外一个要自动复位,用于转弯。还有一些电阻电容等,主要是用来构建一个最小单片机系统,使单片机运行起来。液晶屏不是必要的,这里我用的是 nokia5110 液晶屏,用来显示遥控车的电压和电量,当然电量不会很准确,是用单片机上的 A/D 转换器采集电池的电压,然后根据电压电量曲线得出电量的。
单片机源程序如下:
- #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); //发送数据 Transmit Tx buffer data
- delay(50);
-
- }
- }
复制代码
所有资料51hei提供下载:
Keil代码下载:
遥控船.rar
(137.82 KB, 下载次数: 116)
sldprt文件:
遥控器.rar
(8.7 MB, 下载次数: 136)
|