历史上的今天
返回首页

历史上的今天

今天是: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);

推荐阅读

史海拾趣

巴丁微公司的发展小趣事

深圳市巴丁微电子有限公司,简称巴丁微,自创立之初便专注于高性能模拟集成电路的研发与销售。公司的创始人及核心团队由一群在集成电路行业拥有丰富经验的专家组成,他们看中了电子行业的巨大潜力,决心以技术创新为驱动力,推动模拟集成电路的发展。

在创立初期,巴丁微面临着资金短缺、市场竞争激烈等诸多挑战。然而,凭借着对技术的深刻理解和不懈追求,巴丁微成功研发出了一系列具有竞争力的产品,并逐渐在电机驱动和电源管理等电子领域获得了市场认可。

联智(Celfras)公司的发展小趣事

为了扩大品牌影响力,联智积极参与国际展会和交流活动。例如,公司曾参加2020无线充电亚洲展,并设立展位与观众进行深入交流。这种面对面的交流方式使联智能够更直接地了解市场需求和行业动态,同时也为公司提供了展示自身技术和产品的机会。通过参与国际展会,联智不仅提升了品牌知名度,还建立了广泛的合作伙伴关系,为公司未来的发展奠定了坚实基础。

以上五个故事均基于公开资料对联智(Celfras)公司发展历程的简述,旨在展现公司在电子行业的成长和贡献。每个故事都尽量保持了客观性和中立性,避免了对公司的主观评价。

Anvo-Systems公司的发展小趣事

Anvo-Systems深知人才是企业发展的核心动力。因此,公司一直注重与高校和研究机构的合作,共同开展电子技术的研发与创新。通过与高校合作开展科研项目、设立奖学金等方式,Anvo-Systems吸引了大批优秀的人才加入公司。同时,公司还建立了完善的培训体系,为员工的职业发展提供了有力支持。这些举措不仅提升了公司的研发实力,也为公司的未来发展储备了丰富的人才资源。

Continental Industries公司的发展小趣事

在电子行业的初期,Continental Industries凭借其深厚的技术积累,成功研发出了一款固态继电器。这款继电器以其高度可靠性、长寿命和减少电磁干扰的特性,迅速在市场中占据了重要地位。公司不断投入研发资源,优化产品性能,逐渐在工业自动化和建筑环境控制领域树立起了技术领先的形象。

Electronicon Kondensatoren GmbH公司的发展小趣事

随着全球市场的不断变化和发展,ELECTRONICON积极实施国际化战略,拓展海外市场。公司在全球范围内建立了完善的销售和服务网络,为客户提供及时、高效的服务。未来,ELECTRONICON将继续秉承“质量为本、客户至上”的经营理念,不断创新和发展,为电子行业的繁荣做出更大的贡献。

Gardner Denver公司的发展小趣事

1976年,ELECTRONICON推出了采用金属化聚丙烯薄膜的电容器系列,这一创新技术为电容器行业带来了显著的空间和成本优势,进一步巩固了其在市场上的领先地位。随着技术的不断进步,ELECTRONICON的产品逐渐拓展至照明、电机和电力电子等多个领域。

问答坊 | AI 解惑

8051模拟i2c 双机通信

有谁做过8051模拟i2c 双机通信的啊,从机地址怎么确定啊!…

查看全部问答>

红外温度传感器的原理

现在,人们对自己的身体健康状况十分关注.都希望自己有一个好的身体。体温是人体的重要生理参数之一,对它的监测十分重要。市场上最流行的体温计是电子体温计,特别是非接触式红外体温计。目前国内开发的红外体温计主要有华中科技大学研制的“慧眼 ...…

查看全部问答>

ARM9线程冲突

    用arm9编写的两个线程,分别从串口和网口收数据。前者始终运行,后者每1.5秒运行一次。现在后者运行时前者不仅收不到数据,连时钟也发不出来。优先级都设置好的,奇了怪了,百思不得其解。盼望过路大侠指点迷津,谢谢!…

查看全部问答>

请教在arm7中怎样将数据存入flash中并读取

希望实现以下功能: 开机时,读取flash中的数据num,初始化程序 运行时,num的值会发生变化 运行结束时,将num的值存入flash中,共下次开机时使用 请教怎样才能将num的值存入flash中,并且可以读取 我使用的是周立功的easyram2131开发板, ...…

查看全部问答>

求助5402程序大于0x4000时装载出错问题

我的板子上外扩了一片sdram,如果代码少于0x4000时装载正常,大于就会报data verification at address 0x41dc,please verify targe memory and memory map. 我的cmd文件如下: -stack  1024 -heap   2048 /*************** ...…

查看全部问答>

关于lm3s系列 串口接收数据的问题

假如我串口接收FIFO设置为7/8的深度 并设置接收FIFO中断 和 接收超时中断   当我的串口接受的数据长度正好为14的整数倍时,就不会进入超时中断,请问有什么好的解决方法吗?…

查看全部问答>

UC3843的电源问题

求助,希望做开关电源的高手能够帮帮我,谢谢,帮我把UC3843的那些电容取值帮我算出来,比如C3,C4,C6,C11,C12!我自己弄出来的要么不起振,要么空载的功耗就有好几瓦,这开关电源的东西还真难整啊!谢谢各位大侠!…

查看全部问答>

【讨论】引脚中断须外置上拉/下拉电路?

配置引脚中断时,不能是数字输出模式,否则中断配置不成功。若想使用引脚内部上拉/下拉时,需配置为数字输出模式,否则上拉/下拉配置不成功。结论:引脚中断须外置上拉/下拉电路?…

查看全部问答>

【求助】MDK422下载出错 久查未决

求教,有没有人遇到类似问题或解决方法~~~~~~~~~~~~~~~~~~~~~~~~~~~ 【问题】:编辑、编译正确,但下载出问题,     【解决1:】MDK422设置正常,包括debug、utilities,但正常工程和自建工程区别就在下面, 为什么?这个 ...…

查看全部问答>

据说明天开始比赛的题都一样

本帖最后由 paulhyde 于 2014-9-15 04:01 编辑 我们老师说黑龙江那个是9天的题,所以难。咱们5日开始的题目一样,而且是3天的,难度和2011年全国那个差不多。 不知道各位有没有什么消息  …

查看全部问答>