用12C5A60S2和RF905写一个无线发射和接收程序用12自带的SPI

发布者:心灵飞翔最新更新时间:2020-09-03 来源: 51hei关键字:12C5A60S2  RF905  无线发射  接收程序  SPI 手机看文章 扫描二维码
随时随地手机看文章

发送程序  
#include <12c5a60s2.h>
#include
#define FOSC 11059200L
#define BAUD (256-FOSC/32/9600)
#define uint unsigned int
#define uchar unsigned char
uchar data TxBuf[32];
uchar data RxBuf[32];
uchar bdata DATA_BUF;
/*     定义RF905                    */
#define WC  0x00 // 写配置寄存器指令
#define RC  0x10  // 读取配置寄存器命令
#define WTP 0x20  //写TX有效数据字节写操作全部从0开始
#define RTP 0x21 // 读TX有效数据字节写操作全部从0开始
#define WTA 0x22 // 写发送地址命令
#define RTA 0x23 // 读发送地址命令
#define RRP 0x24 // 读RX有效数据字节写操作全部从0开始
typedef struct RFConfig
{
uchar n;
uchar buf[10];
}RFConfig;
code RFConfig RxTxConf ={
10,
0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58
};
//这个结构的内容是NRF905的初始化数据。
// ch_no = 1;433MHz;正常运转,没有协议;接收,发送的地址是4字节/收发有效宽度为32字节;禁用外部时钟;晶振频率= 16MHz / / 8位CRC和使/*******************************************************************************************/
/*******************************************************************************************/
void delay(uchar z)
{
uint x,y;
for(x=z;x<0;x--)
  for(y=110;y>0;y--);
}
sbit SPISS=P1^4;
sbit MOSI=P1^5;
sbit MISO=P1^6;
sbit SCK=P1^7;     //主器件启动一次数据传输时自动产生8个SCK时钟周期信号给从机
sbit CSN=P1^1;
sbit DR=P2^1;
sbit AM=P2^2;
sbit CD=P2^4;
sbit PWR_UP=P2^5;
sbit TRX_CE=P2^6;
sbit TX_EN=P2^7;
/*******************************************************************************************/
/*******************************************************************************************/
//function InitIO();
/*******************************************************************************************/
void InitIO(void)
{
CSN=1;// SPI禁用
SCK=0;// SPI初始化时钟线高
DR=1;// 初始化DR输入
AM=1;// 初始化AM输入
PWR_UP=1;// nRF905芯片上电
TRX_CE=0;// 在待机模式下设置nRF905
TX_EN=0;// 在接收模式设置无线
}
/*******************************************************************************************/
void SetTXmode()
{
TRX_CE=1;
TX_EN=1;
delay(1);
}
/***********************************
funtion :write spi date
***********************************/
void Spi_write(uchar date)
{
DATA_BUF=date;
SPDAT=DATA_BUF;
while(!SPIF);
SPSTAT=SPIF|WCOL;
}
void Config905(void)
{
uchar i;
CSN=0;
Spi_write(WC);
for(i=0;i{
  Spi_write(RxTxConf.buf[i]);
}
CSN=1;
}
/***************************************
funtion: send 32 date
****************************************/
void TxPacket(void)
{
uchar i;
CSN=0;
Spi_write(WTP);
for(i=0;i<32;i++)
{
  Spi_write(TxBuf[i]);
}
CSN=1;
delay(5);
CSN=0;
Spi_write(WTP);
for(i=0;i<4;i++)
{
  Spi_write(TxBuf[i+5]);
}
CSN=1;
TRX_CE=1;
delay(5);
TRX_CE=0;
}
/***************************************
funtion: SPI init
****************************************/
void SPI_init(void)
{
SPCTL=0xfd;
SPSTAT=SPIF|WCOL;
SPDAT=0;
IE2|=ESPI;
EA=1;
}
/***************************************
funtion: uart init
****************************************/
void Uart_init(void)
{
TMOD=0x20;
AUXR=0x40;
TH1=TL1=BAUD;
SCON=0x50;
PCON=0X00;
TR1=1;
}
uchar RecvUart()
{
while(!RI)
RI=0;
return SBUF;
}
void SendUart(uchar dat)
{
while(!TI);
TI=0;
SBUF=dat;
}
void main()
{
InitIO();
Uart_init();
SPI_init();
Config905();
SetTXmode();
delay(500);// 延时
while(1)
{
  Scankey();
  TxPacket();
  if(DR)
   {
    beep=~beep;
    delay(1000);
   }   
}
}

关键字:12C5A60S2  RF905  无线发射  接收程序  SPI 引用地址:用12C5A60S2和RF905写一个无线发射和接收程序用12自带的SPI

上一篇:单片机INT0外部中断脉冲计数
下一篇:关于单片机连接ESP8266模块截取其回显内容

推荐阅读最新更新时间:2024-11-09 01:36

STM32CUBEMX(14)--SPI,TLC5947外部PWM移植
概述 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如 EEPROM,FLASH,实时时钟,AD转换器。 TLC5947是一款SPI接口的PWM脉宽调制24路LED驱动模块/RGB LED驱动器芯片,它能驱动24路的PWM。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板: 外部PWM模块就是淘宝上SPI接口的TLC5947模块。 选择芯片型号 使用STM32C
[单片机]
STM32CUBEMX(14)--<font color='red'>SPI</font>,TLC5947外部PWM移植
英飞凌推出高度集成的新型无线充电发射器IC,为功率高达50 W的充电应用提供理想选择
英飞凌推出高度集成的新型无线充电发射器IC,为功率高达50 W的充电应用提供理想选择 【2023 年 5 月 11 日,德国慕尼黑讯】无线充电已成为当今电池供电应用不可或缺的一部分,为各个行业的便携式产品带来了简单易用、对用户友好的使用体验。英飞凌科技股份公司推出了全新的WLC1150无线充电发射器IC,进一步扩大其无线充电(WLC)控制器IC产品阵容,为需要更强无线电源传输能力的应用提供高度集成、易于设计和经济高效的解决方案。此类应用主要包括工业级应用、医疗保健设备、机器人和无人机、吸尘器、电动工具、扩展坞以及支持Qi标准扩展电源配置文件(EPP)的智能手机充电器。 WLC1150发射器具有高能效、灵活的热管理设计
[电源管理]
英飞凌推出高度集成的新型<font color='red'>无线</font>充电<font color='red'>发射</font>器IC,为功率高达50 W的充电应用提供理想选择
STM32_ SPI主从通信
今天讲解“STM32F103SPI主从通信”,原本计划将这部分内容定在后面(第二阶段)来讲解,满足一位网友的问题“关于两块MCU的SPI通讯”,所以今天特地提前讲解了。 由于昨天讲解的是“SPI读写Flash”,MCU是作为SPI通信中的主机,今天主要讲解SPI通信的从机,我将我测试的主机和从机的代码分别打包供大家下载测试。 每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘): 主机:https://yunpan.cn/cPIJguDkjntYI访问密码 7bb6 从机:https://yunpan.cn/cPIJfZxr7D5Sk访问密码 f
[单片机]
STM32_ <font color='red'>SPI</font>主从通信
第48章 STM32F429的内部Flash和SPI Flash都使用MDK下载
48.1 初学者重要提示 SPI Flash的相关知识点可以看第31章和32章。 操作本章配套例子前务必先将SPI Flash的下载算法放到MDK安装目录。 本章节配套例子实现了将12点阵,16点阵,24点阵和32点阵中文全字库下载到外置SPI Flash。 注意不可以STM32F4的内部Flash和外部SPI Flash同时下载,依次下载即可,详情看此本章48.5和48.6小节即可。 48.2 内部Flash和SPI Flash都使用MDK下载的优势 通过这种方式,可以方便的更新SPI Flash中的数据,特别是全字库,图库,主题等资源文件的下载。 48.3 下载算法存放位置 编译例子:V6-025_SPI Flas
[单片机]
第48章 STM32F429的内部Flash和<font color='red'>SPI</font> Flash都使用MDK下载
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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