STC单片机+nRF24L01萝莉控遥控器发射机加接收机

2019-12-03来源: 51hei关键字:STC单片机  nRF24L01  遥控器  发射机  接收机

本人亲测成功可用,感兴趣的可以试试,nRF24L01无线芯片和stc的51单片机构成

制作出来的实物图如下:
 

QQ图片20180831075104.png (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);

[1] [2] [3] [4] [5] [6]
关键字:STC单片机  nRF24L01  遥控器  发射机  接收机 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481784.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于51单片机的nrf24l01无线的接收和发射程序
下一篇:基于51单片机的简易电子琴课程设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STC单片机用户应用程序区和ISP监控程序区的区别
用户应用程序区(AP区):是指用户自己编写的程序区ISP监控程序区:ISP区是指芯片出厂时就已经固化在单片机内部的一段程序,STC单片机可以进行ISP串行下载程序,这就是因为芯片在出厂时已经在单片机内部固化了ISP引导码,程序首次上电时先会从ISP区开始执行代码,体现在实际实验中时,就是我们在下载程序时,先要点击下载软件界面上的下载,然后再开启单片机电源,当单片机检测到上位机有下载程序的需要时,便启用ISP下载功能给单片机下载程序。若经过短暂的时间没有检测到上位机有下载程序的需求,单片机便会从用户应用程序区(AP区)开始执行代码。
发表于 2019-06-03
STC单片机知识点
1.单片机内部三大资源:FLASH(程序存储空间也叫ROM),RAM(内存),SFR(特殊功能寄存器)。我们对单片机的操作基本都是对SFR的操作。2.stc89c52 特点:8K FLASH,512B RAM,1个UART,2个定时器,8个中断源,P0口无上拉功能。3.对FLASH的写操作,一般都是按页擦除,只有先把一页数据擦除后 才能写入,相当于先把数据清理后才能写。4.对于一款新的单片机,要用sizeof,测试char,short,int等类型所占的空间大小。
发表于 2019-06-03
STC单片机常用型号
一:STC15W204S系列有8脚、16脚,具体应用参考STC15系列单片机手册。二:STC15W401AS系列有SOP16、SOP20、SOP28,具体应用参考芯片手册。
发表于 2019-06-03
STC单片机常用型号
STC单片机下载不进程序及解决办法
网上收刮了一大圈,还是没有找到是什么原因。自己能想到的都想了, 主要包括以下几点:1.更换单片机芯片,(更换之后没有解决)2.检查单片机供电电压是否正常(单片机供电电压正常)3.检查ISP下载器是否损坏(经检查,没坏)4.检查ISP下载线的RXD,DXD到单片机的RXD,TXD引脚没有断开(经检查,正确)5.单片机晶振是否正确工作(经检查,正确)现附上此板子的电路图:于是请教苏工,苏工看了之后立马说,应该跟RXD,TXD连接的电阻有关系。因为R7和R12都直接跟VCC相连,在上电的瞬间,给单片机上电的同时,RXD和TXD会受到R7和R12的影响,会造成电流倒灌的情况,进而影响程序的下载,甚至是下载不进去。解决的办法就是把跟RXD
发表于 2019-05-20
STC单片机之我见(一)-----IO口
本文以STC12C5A60S2系列单片机为例来介绍:先介绍准双向口模式,其拉电流为200mA左右,比如P2.0口外接一个100欧电阻和小led灯珠。做实验的时候会发现灯珠的亮度其实很低,因为电流太小。当设置成强推挽输出时会发现灯珠明显比较亮,因为此时的电流已经达到了20mA.P2.0口直接用准双向口模式驱动蜂鸣器的时候,蜂鸣器不响,同样是因为电流太小,此时可以外加一个10K的电阻和一个三极管来驱动之;P2.0用强推挽模式时可直接驱动蜂鸣器响。小贴士:1.同时对8个IO口进行设置时,可用P2=0xFF的形式来赋值,也可以单独P2.0=0
发表于 2019-05-20
NRF24L01发射+接受程序实测通过
主控STC89C52RC晶振:11.0592while(NRF24L01_TxPacket(tmp_buf)!=TX_OK);  //发送失败则一直发送,直到对方接受成功为止     此句主要是检测发送信号发送完成自己做实验可取此句大家直接拿走吧,,不用谢单片机+nrf24l01接受源程序如下(主程序):/***********************小板测试时如果没有效果就将2.4G拔下,在插上,按下复位,再次发送数据即可如果发送数据时led闪烁,应该是发送数据的按键没有去抖***************************/#include<
发表于 2019-12-14
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved