关键词不能为空

当前您在: 主页 > 英语 >

免费英文翻译NRF24L01无线串口开发板程序详解

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-28 00:52
tags:

免费英文翻译-现代教育理论

2021年1月28日发(作者:harper)


1.


源程序开发环境建立



1.1


程序编译软件



编译软件用


keil C51


,打开安装文件,一路点击下一步即可完成。



1.2


程序下载软件



使用


STC ISP


下载软件。



2.


源程序文件整体结构


< p>
工程中,只有一个


main.c


文件,所有程序都 写在这个文件里面。


Reg51.h


是包含的头文件。是


不是非常简单!




3.


源程序执行流程




无线


数据处理


程序:




串口

数据处理


程序:




4.


串口配置函数



void serial_open(void)


{





SCON = 0X50;





AUXR |= 0X04;





TL2 = 0Xc0; // 9600





TH2 = 0Xfd;





AUXR|=0X10;


} < /p>


此串口配置函数,


利用


单片机

< p>
内部的


定时器


2


作为


波特率发生器



共用到

4


个寄存器:


SCON


AUXR TL2 TH2




SM0

< p>


SM1


的位决定串口工作的

4


种方式:



< br>程序中,


SCON=0X50


,即


SM0=0 SM1=1


,即串口工作在


< br>方式


1”



REN=1


,允许串口接收数


据。



TL2



TH2


< br>定时器


2


的高位和低位寄存器。






程序中 ,首先


AUXR|=0X40


,最后


A UXR|=0X10


。即首先把


T2x12


1


,然后把


T2R



1


。即


首先把

< p>
定时器


2


设置为


1T


模式,然后把


定时器


打开。



5.


串口发送数据函数



void senddata(uchar data_buf)


{





SBUF = data_buf;





while(!TI);





TI = 0;


}


用到了寄存器


SBUF


和寄存器


SCON


中的


TI


位。



SBUF


寄存器是串口收发数据缓存寄存器,放到这个寄存器中的数据,会通过串口发送出去,接


收到的串口数据,也会放到这个寄存器中。也就是串口接收和发送都是使用这个寄存器。



程序中,


SBUF=data_buf


,就是把


data_buf


给了


SBUF



单片机


自动把< /p>


SBUF


里面的数据发送


到串口。


TI


是串口发送数据完成标志位,当串口发送完一个数据,此位置


1


,置位后,需要通过软件



0


。所以通过


while(!TI)


,来检测


TI


位,达到检测串口是否发送完数据的目的 。当


TI



0


,程序会


停留在


while(!TI)


,不断检测;当


TI=1



while


括号里面的条件


=0


,退出

< p>
while


,程序向下执行。


TI=0

< p>



TI



0




6.


串口接收数据函数



bit WaitComm()


{








unsigned int i=0;





unsigned char j=0;












if(RI==1)



{








rece_buf[++j]=SBUF;











RI=0;








while(i<1000)








{









if(RI)











{












rece_buf[++j]=SBUF;














RI = 0;














i=0;














}











i++;








}








rece_buf[0] = j;














return 0;











}





else





{








return 1;












}


}


程序中,用到了


SBUF


寄存器和


SCON


寄存器中的


RI


位。



串口接收到数据,


RI


位置


1


,所以,通过判断


RI


位,就可以判断 是否接收到串口数据:


if(RI)



就是


if(RI==1)


的省略形式,因为

if


括号里面要的是逻辑真假,即


0



1


,所以可以省略。


< p>
程序中


i



j

< p>
用作计数器。


i


用来规定此次串口接收数据所用的 时间,这个时间就是个大概值;


j


用来计数此次串口一共接收到 了多少个字节。



程序中,通过


rec e_buf[0]=j


把一共接收到多少个字节存储到


rece _buf


中的第一个字节,通过


rece_buf[++i]= SBUF


把接收到的数据从


rece_buf

< br>数据的第二个字节依次放进去。



程序有返回值,如果返 回


0


,表示接收到数据,如果返回


1< /p>


,表示没有接收到数据。




初始化配置函数



void SPI_Init(void)


{





SPSTAT |= 0XC0;





SPCTL = 0XD0;


}


我们用的这款


51


单片机


STC15W404AS


内部有


SPI


通信模块。



引脚配置如下图所示:(红色方框中的引脚)




SS


是片选引脚,也可以叫做使能引 脚,也可以叫做从机选择引脚;



MOSI


是主机输出从机输入引脚;



MISO


是主机输入从机输出引脚;



SCLK


是通信


时钟

< br>引脚。



在我们的应用中,


单片 机


是主机,从机是


NRF24L01


芯 片。



程序中,用到了


2


个寄存器:


SPSTAT



SPCTL




这个寄存器的


bit6



bit7


是有效位,具体定义看上图。程序中,


SPSTAT|=0XC 0


,即向寄存器



bit6

< p>


bit7



1


,由上图定义知,我们在清这两个位,目的是不要让这两个位影响


SPI


通信。




程 序中,


SPCTL=0xD0


,即


SS IG=1 SPEN=1 MSTR=1


,剩下的位


=0





因为程序中,


SPR1 SPR0


位为


0


,所以选择了


CPU_CLK/4< /p>



时钟


,因为我们源程序规定的主


频是


22.1184MHz


主频,所以


SPI


速率就是


22.1184/4=5.5 296MHz



NRF24L01


芯片 规定的


SPI



信速率最大是


10MHz


,所以符合通信的要求。




这两个位的值是由


NRF24L01


的通信时序决定的。


NRF24L01



时序图


如下所示:





NRF24L01



时序图


得知,


SCK


时钟


引脚在空闲时应该是低电平,所以


CPO L=0




还可以看出来,数据是由前


时钟


沿采样,所以


CPHA=0





时序图


放大,看其中一部分,如下图:






NRF24L01



时序图



RORD


位的定义可知,数据的高位先发送,低位后发送,所以


RORD=0





我们选择的


SPI


口为主机模式,把


P1.2/S S


引脚当做普通


IO


口使用,通过拉低


P1.2


引脚来选


< br>NRF24L01





数据收发函数



uchar SPI_RW(uchar tr_data)


{


uchar i=0;



SPSTAT |= 0Xc0;


SPDAT=tr_data;


while(((SPSTAT&0X80)!=0X80)&&(i<20))


{


i++;


delay_ms(1);


}


return SPDAT;


}


SPI



双工通信


,接收一个数据的同时,就要发送一个数据,发送一个数据的同时,就要接收< /p>


一个数据。



SPDAT



SPI


数据寄存器,接收和发送的数据都放到这里面 。



程序里面,先把


状态寄存器


的位清


0


,然后把要发送的数据给了


SPDAT


,然后通过观察


SPI


状态寄存器


看是否发送完数据,最后把接收到的


SP I


数据返回。


免费英文翻译-现代教育理论


免费英文翻译-现代教育理论


免费英文翻译-现代教育理论


免费英文翻译-现代教育理论


免费英文翻译-现代教育理论


免费英文翻译-现代教育理论


免费英文翻译-现代教育理论


免费英文翻译-现代教育理论



本文更新与2021-01-28 00:52,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/575693.html

NRF24L01无线串口开发板程序详解的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文