#include<reg52.h>
#include<intrins.h>
#define u8 unsigned char
#define u16 unsigned int
//15系列新增寄存器
sfr IAP_DATA=0xc2;
sfr IAP_ADDRH=0xc3;
sfr IAP_ADDRL=0xc4;
sfr IAP_CMD=0xc5;
sfr IAP_TRIG=0xc6;
sfr IAP_CONTR=0xc7;
sfr AUXR=0x8e;
sfr T2H=0xd6;
sfr T2L=0xd7;
sfr IE2=0xaf;
sfr P1ASF=0x9d;
sfr ADC_CONTR=0xbc;
sfr ADC_RES=0xbd;
sfr ADC_RESL=0xbe;
sfr P5=0xc8;
sfr P0M0=0x94;
sfr P1M0=0x92;
sfr P2M0=0x96;
sfr P3M0=0xb2;
sfr P4M0=0xb4;
sfr P1M1=0x91;
sfr P_SW1 = 0xA2; //外设功能切换寄存器1
sfr CMOD=0xd9;
sfr CCON=0xd8;
sfr CCAPM0=0xda;
sfr CCAPM1=0xdb;
sfr CCAPM2=0xdc;
sfr CCAP0H=0xfa;
sfr CCAP1H=0xfb;
sfr CCAP2H=0xfc;
sfr CL=0xe9;
sfr CH=0xf9;
sfr PCA_PWM0=0xf2;
sfr PCA_PWM1=0xf3;
sfr PCA_PWM2=0xf4;
/**************************************************************************/
//引脚定义
sbit LED=P1^0; //定义指示灯
sbit CH1=P3^7; //定义8个通道输出
sbit CH2=P3^6;
sbit CH3=P3^5;
sbit CH4=P3^4;
sbit CH5=P3^3;
sbit CH6=P3^2;
sbit CH7=P3^1;
sbit CH8=P3^0;
sbit MDO=P1^5; //定义无线模块的管脚
sbit SCK=P1^7;
sbit CE=P5^5;
sbit IRQ=P1^4;
sbit MDI=P1^6;
sbit CSN=P5^4;
/**************************************************************************/
u8 code random[100]={4,1,3,2,2,1,0,0,2,2,2,3,4,1,2,1,4,3,3,4,//随机跳频序列
2,0,2,2,3,1,2,3,2,2,2,4,2,4,0,3,4,2,3,1,
0,3,1,3,3,0,2,0,4,3,3,3,3,3,4,1,1,4,3,0,
1,0,3,2,3,2,3,3,4,4,1,3,0,0,3,1,3,3,3,0,
3,3,4,1,2,4,1,3,0,1,3,4,4,3,2,3,1,2,3,3};
//数据保存
bit Data_change;
u8 xdata TEMP_DATA[50];
//无线通信
u8 rx[11]; //接收的11字节数据
u8 tx[11];
u8 m;
u8 hopping_turn,hopping_num,hopping_count;
u8 xdata address[5];
u8 code address_0[5]={'L','O','V','E','!'};//使用LOVE作为对频暗语
u8 hopping[5]={10,35,60,85,110};
bit first,restar;
bit connecting,lose;
bit jump_1,jump_2,jump_mode;
u8 NRF_error;
u8 TX_power=3;
//通道输出
u16 xdata timer1=0,timer2=0,timer3=0,timer4=0,timer5=0;
u8 xdata rx_num=0,receive=0;
u8 xdata Light_LED=0;
u16 xdata out_control_data[8]={511,511,80,511,511,511,511,511};
u16 CH_data[8]={0,1024,0,1024,0,1024};
u16 data buff[8];
u16 temp1,temp2;
u8 t_output;
//电压检测
u8 t_adc;
u16 adc1,adc2;
long idata last_adc1,last_adc2;
u16 voltage_bec,voltage_total;
//PPM
u8 t_PPMout;
u8 T_h,T_l;
bit PPM_OUT;
bit CH1_SW,CH2_SW,CH3_SW,CH4_SW,CH5_SW,CH6_SW,CH7_SW,CH8_SW;
bit CH1_PWM,CH2_PWM,CH7_PWM;
//SBUS
bit SBUS;
u8 t_sbus;
u8 xdata Sbus_buff[25],Sbus_tx[25];
u16 xdata Sbus_data[8];
/**************************************************************************/
//延时函数
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 12;
j = 168;
do
{
while (--j);
} while (--i);
}
void delay_ms(u8 i)
{
while(i--)
Delay1ms();
}
/**************************************************************************/
//ROM存储
u8 EEPROM_read(u8 address_H,u16 address_L) //读数据
{
IAP_CMD=0x01;
if(address_L>255)
{
IAP_ADDRH=address_H+1;
IAP_ADDRL=address_L-255;
}
else
{
IAP_ADDRH=address_H;
IAP_ADDRL=address_L;
}
IAP_TRIG=0x5a;
IAP_TRIG=0xa5; _nop_();
return IAP_DATA;
}
void EEPROM_write(u8 address_H,u16 address_L,u8 byte) //写入数据
{
IAP_CMD=0x02;
IAP_DATA=byte;
if(address_L>255)
{
IAP_ADDRH=address_H+1;
IAP_ADDRL=address_L-255;
}
else
{
IAP_ADDRH=address_H;
IAP_ADDRL=address_L;
}
IAP_TRIG=0x5a;
IAP_TRIG=0xa5; _nop_();
}
void EEPROM_clean(u8 address_H) //擦除数据
{
IAP_CMD=0x03;
IAP_ADDRH=address_H;
IAP_ADDRL=0;
IAP_TRIG=0x5a;
IAP_TRIG=0xa5;_nop_();
}
u8 EEPROM_test(u8 address_H)
{
IAP_CONTR=0x83;
EEPROM_clean(address_H);
EEPROM_write(address_H,0,0x88);
if(EEPROM_read(address_H,0)==0x88)
{
EEPROM_clean(address_H);
EEPROM_write(address_H,0,0x55);
if(EEPROM_read(address_H,0)==0x55)
{
return 1;
}
}
return 0;
}
void DATA_read()
{
u8 i;
u16 sum=0,sum_read;
IAP_CONTR=0x83;
for(i=0;i<40;i++)
{
TEMP_DATA[i]=EEPROM_read(0,i);
sum+=TEMP_DATA[i];
}
sum_read=EEPROM_read(0,40);//读校验和
sum_read<<=8;
sum_read+=EEPROM_read(0,41);
if(TEMP_DATA[0]!=0xab||sum!=sum_read)//比较校验和
{
first=1;
}
else
{
hopping[0]=TEMP_DATA[1];
hopping[1]=TEMP_DATA[2];
hopping[2]=TEMP_DATA[3];
hopping[3]=TEMP_DATA[4];
hopping[4]=TEMP_DATA[5];
address[0]=TEMP_DATA[6];
address[1]=TEMP_DATA[7];
address[2]=TEMP_DATA[8];
address[3]=TEMP_DATA[9];
address[4]=TEMP_DATA[10];
out_control_data[0]=TEMP_DATA[11];
out_control_data[0]<<=8;
out_control_data[0]+=TEMP_DATA[12];
out_control_data[1]=TEMP_DATA[13];
out_control_data[1]<<=8;
out_control_data[1]+=TEMP_DATA[14];
out_control_data[2]=TEMP_DATA[15];
out_control_data[2]<<=8;
out_control_data[2]+=TEMP_DATA[16];
out_control_data[3]=TEMP_DATA[17];
out_control_data[3]<<=8;
out_control_data[3]+=TEMP_DATA[18];
out_control_data[4]=TEMP_DATA[19];
out_control_data[4]<<=8;
out_control_data[4]+=TEMP_DATA[20];
out_control_data[5]=TEMP_DATA[21];
out_control_data[5]<<=8;
out_control_data[5]+=TEMP_DATA[22];
out_control_data[6]=TEMP_DATA[23];
out_control_data[6]<<=8;
out_control_data[6]+=TEMP_DATA[24];
out_control_data[7]=TEMP_DATA[25];
out_control_data[7]<<=8;
out_control_data[7]+=TEMP_DATA[26];
PPM_OUT=TEMP_DATA[27];
CH1_PWM=TEMP_DATA[28];
CH2_PWM=TEMP_DATA[29];
CH7_PWM=TEMP_DATA[30];
CH1_SW=TEMP_DATA[31];
CH2_SW=TEMP_DATA[32];
CH3_SW=TEMP_DATA[33];
CH4_SW=TEMP_DATA[34];
CH5_SW=TEMP_DATA[35];
CH6_SW=TEMP_DATA[36];
CH7_SW=TEMP_DATA[37];
CH8_SW=TEMP_DATA[38];
SBUS=TEMP_DATA[39];
}
IAP_CONTR=0;
}
void DATA_save()
{
u8 i;u16 sum;
TEMP_DATA[0]=0xab;
TEMP_DATA[1]=hopping[0]; //修改目标模型数据
TEMP_DATA[2]=hopping[1];
TEMP_DATA[3]=hopping[2];
TEMP_DATA[4]=hopping[3];
TEMP_DATA[5]=hopping[4];
TEMP_DATA[6]=address[0]; //修改目标模型数据
TEMP_DATA[7]=address[1];
TEMP_DATA[8]=address[2];
TEMP_DATA[9]=address[3];
TEMP_DATA[10]=address[4];
TEMP_DATA[11]=out_control_data[0]>>8;
TEMP_DATA[12]=out_control_data[0];
TEMP_DATA[13]=out_control_data[1]>>8;
TEMP_DATA[14]=out_control_data[1];
TEMP_DATA[15]=out_control_data[2]>>8;
TEMP_DATA[16]=out_control_data[2];
TEMP_DATA[17]=out_control_data[3]>>8;
TEMP_DATA[18]=out_control_data[3];
TEMP_DATA[19]=out_control_data[4]>>8;
TEMP_DATA[20]=out_control_data[4];
TEMP_DATA[21]=out_control_data[5]>>8;
TEMP_DATA[22]=out_control_data[5];
TEMP_DATA[23]=out_control_data[6]>>8;
TEMP_DATA[24]=out_control_data[6];
TEMP_DATA[25]=out_control_data[7]>>8;
TEMP_DATA[26]=out_control_data[7];
TEMP_DATA[27]=PPM_OUT;
TEMP_DATA[28]=CH1_PWM;
TEMP_DATA[29]=CH2_PWM;
TEMP_DATA[30]=CH7_PWM;
TEMP_DATA[31]=CH1_SW;
TEMP_DATA[32]=CH2_SW;
TEMP_DATA[33]=CH3_SW;
TEMP_DATA[34]=CH4_SW;
TEMP_DATA[35]=CH5_SW;
TEMP_DATA[36]=CH6_SW;
TEMP_DATA[37]=CH7_SW;
TEMP_DATA[38]=CH8_SW;
TEMP_DATA[39]=SBUS;
sum=0;
for(i=0;i<40;i++)
{
sum+=TEMP_DATA[i];
}
TEMP_DATA[40]=sum>>8;//写入校验和
TEMP_DATA[41]=sum;
IAP_CONTR=0x83;
EEPROM_clean(0);
for(i=0;i<42;i++)
{
EEPROM_write(0,i,TEMP_DATA[i]);
}
IAP_CONTR=0;
}
/**************************************************************************/
//NRF24L01
u8 SPI(u8 byte)
{
u8 i;
for(i=0;i<8;i++)
{
MDI=(byte&0x80);
SCK=1;
byte<<=1;
byte|=MDO;
SCK=0;
}
return byte;
}
void REG_write(u8 address,u8 command)
{
CSN=0;
SPI(0x20+address);
SPI(command);
CSN=1;
}
void FIFO_write(u8 DATA_OUT[],u8 lengh)
{
u8 i;
CSN=0;
SPI(0xa0);
for(i=0;i<lengh;i++)
SPI(DATA_OUT[i]);
CSN=1;
}
void FIFO_read(u8 DATA_IN[],u8 lengh) //读取接收数据缓冲区
{
u8 i;
CSN=0;
SPI(0x61); //读取命令
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
萝莉3代航模遥控器与接收器的原理图 PCB DXP工程文件及keil程序源码和固件,可做为你的学习设计参考。 12通道发射机原理图 12通道接收机原理图 8通接收PCB原理图工程 8通接收原理图.pdf 六_八通接收A10.5程序工程 六通接收机原理图.jpg 萝丽三代6通接送机A10.5源码.c 萝丽三代遥控器正式A版固件.hex 萝丽三代遥控器正式A版程序代码.rar 萝丽新版6通接收机A版固件.hex 萝丽新版6通接收机A版程序.c 萝丽旧版12通接收机兼容A版程序.c 萝丽旧版6通接收机兼容A版程序.c 萝莉三代新发射机正式版本原理图.pdf 遥控器以及六_12通接收原理图PCB
资源推荐
资源详情
资源评论
收起资源包目录
萝莉3代航模遥控器与接收器的原理图 PCB DXP工程文件及keil程序源码和固件.zip (61个子文件)
萝丽航模遥控器与接收的原理图DXP工程及keil程序源码和固件
萝丽三代遥控器正式A版固件.hex 127KB
8通接收原理图.pdf 190KB
萝丽三代遥控器正式A版程序代码.rar 29KB
萝丽三代6通接送机A10.5源码.c 26KB
萝丽新版6通接收机A版程序.c 16KB
萝丽旧版6通接收机兼容A版程序.c 14KB
12通道接收机原理图
12通道接收机(1).pdf 217KB
萝丽新版6通接收机A版固件.hex 11KB
六_八通接收A10.5程序工程
kkk.c 26KB
gggg_uvopt.bak 55KB
gggg.lnp 39B
kkk.LST 73KB
gggg.uvproj 13KB
gggg 52KB
gggg.hex 18KB
gggg_uvproj.bak 13KB
gggg.M51 62KB
gggg.plg 175B
kkk.OBJ 63KB
gggg.uvopt 55KB
萝丽旧版12通接收机兼容A版程序.c 16KB
六通接收机原理图.jpg 68KB
遥控器以及六_12通接收原理图PCB
遥控器以及六_12通接收原理图.SchDoc 357KB
遥控器以及六_12通接收PCB.PcbDoc 8.02MB
遥控器以及六_12通接收原理图.pdf 508KB
萝莉三代新发射机正式版本原理图(20160420修正版).pdf 317KB
8通接收PCB原理图工程
8通接收
History
8通接收.~(2).PrjPCB.Zip 5KB
8通接收.~(7).SchDoc.Zip 11KB
8通接收.~(9).PcbDoc.Zip 532KB
8通接收.~(8).PcbDoc.Zip 532KB
8通接收.~(12).PcbDoc.Zip 534KB
8通接收.~(14).PcbDoc.Zip 533KB
8通接收.~(8).SchDoc.Zip 11KB
8通接收.~(1).SchDoc.Zip 9KB
8通接收.~(6).SchDoc.Zip 11KB
8通接收.~(16).PcbDoc.Zip 533KB
8通接收.~(13).PcbDoc.Zip 533KB
8通接收.~(1).PrjPCB.Zip 4KB
8通接收.~(15).PcbDoc.Zip 533KB
8通接收.~(11).PcbDoc.Zip 534KB
8通接收.~(9).SchDoc.Zip 11KB
8通接收.~(7).PcbDoc.Zip 533KB
8通接收.~(5).SchDoc.Zip 11KB
8通接收.~(1).PcbDoc.Zip 15KB
8通接收.pdf 190KB
8通接收.PrjPCBStructure 49B
8通接收.OutJob 4KB
8通接收.PcbDoc.htm 4KB
Project Logs for 8通接收
8通接收 PCB ECO 2017-5-3 16-58-50.LOG 4KB
8通接收 PCB ECO 2017-6-26 14-42-10.LOG 2KB
8通接收 PCB ECO 2017-6-26 14-40-50.LOG 3KB
8通接收 PCB ECO 2017-6-26 15-03-27.LOG 292B
8通接收 PCB ECO 2017-6-26 14-54-50.LOG 189B
8通接收 PCB ECO 2017-6-26 14-41-31.LOG 2KB
8通接收 PCB ECO 2017-6-26 14-45-58.LOG 3KB
8通接收.SchDoc 91KB
__Previews
8通接收.SchDocPreview 46KB
8通接收.PcbDocPreview 41KB
8通接收.PrjPCB 39KB
8通接收.PcbDoc 831KB
12通道发射机原理图
12通道发射机.pdf 312KB
共 61 条
- 1
SKCQTGZX
- 粉丝: 88
- 资源: 5819
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现夜间车牌识别程序(1).rar
- 基于matlab实现图像处理,本程序使用背景差分法对来往车辆进行检测和跟踪.rar
- 基于matlab实现视频监控中车型识别代码,自己写的,希望和大家多多交流.rar
- sdk.config
- 基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
- 基于matlab实现配电网潮流 经典33节点 前推回代法潮流计算 回代电流 前推电压 带注释.rar
- 基于matlab实现模拟退火遗传算法的车辆调度问题研究,用MATLAB语言加以实现.rar
- 基于matlab实现蒙特卡洛的的移动传感器节点定位算法仿真代码.rar
- 华中数控系统818用户说明书
- 基于matlab实现卡尔曼滤波器完成多传感器数据融合 对多个机器人的不同传感器数据进行融合估计足球精确位置.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页