历史上的今天
今天是:2024年12月03日(星期二)
2019年12月03日 | STC单片机+nRF24L01萝莉控遥控器发射机加接收机
2019-12-03 来源:51hei
本人亲测成功可用,感兴趣的可以试试,nRF24L01无线芯片和stc的51单片机构成
制作出来的实物图如下:


QQ图片20180831075104.png?imageView2/2/w/550 (3.12 KB, 下载次数: 31)
下载附件 保存到相册
2018-8-31 07:51 上传
单片机源程序如下:
#include #define u8 unsigned char #define u16 unsigned int sfr IAP_DATA=0xe2; sfr IAP_ADDRH=0xe3; sfr IAP_ADDRL=0xe4; sfr IAP_CMD=0xe5; sfr IAP_TRIG=0xe6; sfr IAP_CONTR=0xe7; sfr AUXR=0x8e; sfr BRT=0x9c; sbit LED=P2^2; //sbit LED=P2^3; sbit CH1=P2^1; sbit CH2=P2^0; sbit CH3=P1^7; sbit CH4=P1^6; sbit CH5=P1^5; sbit CH6=P1^4; sbit CH7=P1^3; sbit CH8=P1^1; sbit CHB=P1^0; sbit CHC=P3^7; sbit CHD=P2^7; sbit CHE=P2^6; sbit MDO=P3^5; sbit SCK=P2^4; sbit CE=P2^5; sbit IRQ=P3^4; sbit MDI=P3^3; sbit CSN=P3^2; sfr P1M1=0x92; sfr P3M1=0xb2; sfr P2M1=0x96; 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}; u16 timer1,timer2,timer3; u8 rx_num,receive; u8 rx[11]; //接收的11字节数据 u8 tx[11]; u8 m; u8 hopping_turn,hopping_num,hopping_count; //u8 missing_data[4]; u8 address[5]={0xe7,0xe7,0xe7,0xe7,0xe7}; 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; u16 CH_data[8]={0,1024,0,1024,0,1024}; u16 data buff[8]; u16 temp1,temp2; u8 t_output; u8 TX_power=3; bit LED_flash; bit out_control_change; u16 idata out_control_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(); } u8 EEPROM_read(u8 address) { IAP_CMD=0x01; IAP_ADDRH=0; IAP_ADDRL=address; IAP_TRIG=0x46; IAP_TRIG=0xb9; return IAP_DATA; } void EEPROM_write(u8 address,u8 byte) { IAP_CMD=0x02; IAP_DATA=byte; IAP_ADDRH=0; IAP_ADDRL=address; IAP_TRIG=0x46; IAP_TRIG=0xb9; } void EEPROM_clean(u8 address) { IAP_CMD=0x03; IAP_ADDRH=0; IAP_ADDRL=address; IAP_TRIG=0x46; IAP_TRIG=0xb9; } void DATA_read() { IAP_CONTR=0x82; if((EEPROM_read(0)!=0xe4)||(EEPROM_read(1)!=0xa5)) { first=1; } else { hopping[0]=EEPROM_read(2); hopping[1]=EEPROM_read(3); hopping[2]=EEPROM_read(4); hopping[3]=EEPROM_read(5); hopping[4]=EEPROM_read(6); address[0]=EEPROM_read(7); address[1]=EEPROM_read(8); address[2]=EEPROM_read(9); address[3]=EEPROM_read(10); address[4]=EEPROM_read(11); } if((EEPROM_read(12)!=0xe4)||(EEPROM_read(13)!=0xa5)) { out_control_data[0]=512; out_control_data[1]=512; out_control_data[2]=80; out_control_data[3]=512; out_control_data[4]=512; out_control_data[5]=512; out_control_data[6]=512; out_control_data[7]=512; } else { out_control_data[0]=EEPROM_read(14); out_control_data[0]<<=8; out_control_data[0]+=EEPROM_read(15); out_control_data[1]=EEPROM_read(16); out_control_data[1]<<=8; out_control_data[1]+=EEPROM_read(17); out_control_data[2]=EEPROM_read(18); out_control_data[2]<<=8; out_control_data[2]+=EEPROM_read(19); out_control_data[3]=EEPROM_read(20); out_control_data[3]<<=8; out_control_data[3]+=EEPROM_read(21); out_control_data[4]=EEPROM_read(22); out_control_data[4]<<=8; out_control_data[4]+=EEPROM_read(23); out_control_data[5]=EEPROM_read(24); out_control_data[5]<<=8; out_control_data[5]+=EEPROM_read(25); out_control_data[6]=EEPROM_read(26); out_control_data[6]<<=8; out_control_data[6]+=EEPROM_read(27); out_control_data[7]=EEPROM_read(28); out_control_data[7]<<=8; out_control_data[7]+=EEPROM_read(29); } IAP_CONTR=0; } void DATA_save() { IAP_CONTR=0x82; EEPROM_clean(0); EEPROM_write(0,0xe4); EEPROM_write(1,0xa5); EEPROM_write(2,hopping[0]); EEPROM_write(3,hopping[1]); EEPROM_write(4,hopping[2]); EEPROM_write(5,hopping[3]); EEPROM_write(6,hopping[4]); EEPROM_write(7,address[0]); EEPROM_write(8,address[1]); EEPROM_write(9,address[2]); EEPROM_write(10,address[3]); EEPROM_write(11,address[4]); if(out_control_change) { EEPROM_write(12,0xe4); EEPROM_write(13,0xa5); EEPROM_write(14,out_control_data[0]>>8);
史海拾趣
|
现在,人们对自己的身体健康状况十分关注.都希望自己有一个好的身体。体温是人体的重要生理参数之一,对它的监测十分重要。市场上最流行的体温计是电子体温计,特别是非接触式红外体温计。目前国内开发的红外体温计主要有华中科技大学研制的“慧眼 ...… 查看全部问答> |
|
希望实现以下功能: 开机时,读取flash中的数据num,初始化程序 运行时,num的值会发生变化 运行结束时,将num的值存入flash中,共下次开机时使用 请教怎样才能将num的值存入flash中,并且可以读取 我使用的是周立功的easyram2131开发板, ...… 查看全部问答> |
|
我的板子上外扩了一片sdram,如果代码少于0x4000时装载正常,大于就会报data verification at address 0x41dc,please verify targe memory and memory map. 我的cmd文件如下: -stack 1024 -heap 2048 /*************** ...… 查看全部问答> |
|
假如我串口接收FIFO设置为7/8的深度 并设置接收FIFO中断 和 接收超时中断 当我的串口接受的数据长度正好为14的整数倍时,就不会进入超时中断,请问有什么好的解决方法吗?… 查看全部问答> |
|
求助,希望做开关电源的高手能够帮帮我,谢谢,帮我把UC3843的那些电容取值帮我算出来,比如C3,C4,C6,C11,C12!我自己弄出来的要么不起振,要么空载的功耗就有好几瓦,这开关电源的东西还真难整啊!谢谢各位大侠!… 查看全部问答> |
|
配置引脚中断时,不能是数字输出模式,否则中断配置不成功。若想使用引脚内部上拉/下拉时,需配置为数字输出模式,否则上拉/下拉配置不成功。结论:引脚中断须外置上拉/下拉电路?… 查看全部问答> |
|
求教,有没有人遇到类似问题或解决方法~~~~~~~~~~~~~~~~~~~~~~~~~~~ 【问题】:编辑、编译正确,但下载出问题, 【解决1:】MDK422设置正常,包括debug、utilities,但正常工程和自建工程区别就在下面, 为什么?这个 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 04:01 编辑 我们老师说黑龙江那个是9天的题,所以难。咱们5日开始的题目一样,而且是3天的,难度和2011年全国那个差不多。 不知道各位有没有什么消息 … 查看全部问答> |




