欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
2.4G無線雙向收發(fā)系統(tǒng)單片機(jī)源程序與PCB文件
[打印本頁]
作者:
偉民電子
時間:
2017-9-20 20:52
標(biāo)題:
2.4G無線雙向收發(fā)系統(tǒng)單片機(jī)源程序與PCB文件
2.4G無線收發(fā)程序
pcb文件如下:
0.png
(42.44 KB, 下載次數(shù): 79)
下載附件
2017-9-21 00:20 上傳
0.png
(51.49 KB, 下載次數(shù): 74)
下載附件
2017-9-21 00:20 上傳
單片機(jī)源程序如下:
/*
2.4G無線雙向收發(fā)模塊源程序
(C)西安電子科技大學(xué) 編寫:郭世忠 謝金波 版本:V5.3 日期:2015/02/02
相對V5.1 將看門狗清狗語句由主循環(huán)結(jié)尾處移至開始處。解決單片機(jī)先按鍵,后上電,造成首次看門狗隨機(jī)復(fù)位,系統(tǒng)頻繁重啟問題。
相對V5.2 把重復(fù)15次發(fā)送中的SetRX_Mode()取消,放到最后,只留一句。
*/
//---------------------------------用戶配置區(qū)--------------------------------------------
#define LOCAL_LED_ON //1.本地LED是否點亮,注釋掉本句即可禁止本地LED顯示
//---------------------------------------------------------------------------------------
#define ADD1 50 //0-255
#define ADD2 34 //0-255
#define ADD3 65 //0-255
#define ADD4 83 //0-255 //2.用戶使用的4*8bit=32bit地址
//---------------------------------------------------------------------------------------
//----------------------------------以下代碼請勿修改!-----------------------------------
#include "c8051f330.h"
#include "nRF24L01.h"
#include "config.h"
#include "key.h"
#define TIMER0_RELOAD_HIGH (65535-5150)/256 //定時器0的裝入值
#define TIMER0_RELOAD_LOW (65535-5150)%256 //系統(tǒng)時鐘3.0625MKHz,12分頻,20.00ms:理論裝載值5104,實際裝載值5150
//系統(tǒng)時鐘3.0625MKHz,12分頻,10.00ms:理論裝載值2552,實際裝載值2585
//系統(tǒng)時鐘3.0625MKHz,12分頻, 5.00ms:理論裝載值1276,實際裝載值1280
//系統(tǒng)時鐘3.0625MKHz,12分頻,25.00ms:理論裝載值6380,實際裝載值6475
//系統(tǒng)時鐘3.0625MKHz,12分頻,30.00ms:理論裝載值7656,實際裝載值7736
/*定義LED和震動電機(jī)相應(yīng)的驅(qū)動端口*/
sbit MOTOR=P0^0; //振動電機(jī)
sbit LED1=P1^3;
sbit LED2=P1^4; //四個LED端口
sbit LED3=P1^5;
sbit LED4=P1^6;
unsigned char TxBuf[3]={1,2,3};
unsigned char RxBuf[3]={1,2,3};
unsigned char motor_flag=0,motor_shake_times=0,delay_count=0;
unsigned char tf=0,getdata=0;
unsigned char get_key_time=0;
unsigned char Enable_Get_Ack=0;
unsigned char LED_Time_Out=0;
unsigned char Enable_Clear_LED=0;
unsigned char receive_counter=0;
/****************************************************************************
* 名 稱:delay_20ms()
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明: 使用定時器準(zhǔn)確延時20ms
****************************************************************************/
void delay_20ms( unsigned char time )
{
delay_count=0;
while(delay_count<time); //裝值1,理論 20ms,實測 20ms
//裝值2,理論 40ms,實測40.4ms
//裝值3,理論 60ms,實測 60ms
//裝值4,理論 80ms,實測 80ms
//裝值5,理論100ms,實測 100ms
}
/****************************************************************************
* 名 稱:delay_1ms()
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明: 簡單延時1ms
****************************************************************************/
void delay_1ms( unsigned int time )
{
unsigned int i,j;
for(j=0;j<time;j++)
for(i=0;i<325;i++); //裝值 1,實測 1ms
//裝值 2,實測2.08ms
//裝值 3,實測3.12ms
//裝值 4,實測4.08ms
//裝值 5,實測5.12ms
//裝值10,實測10.2ms
}
/****************************************************************************
* 名 稱:MOTOR_SHAKE()
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明: 振動電機(jī)振動驅(qū)動函數(shù),利用移位進(jìn)行驅(qū)動
****************************************************************************/
void MOTOR_SHAKE( void )
{
unsigned char temp;
if(motor_shake_times!=0)
{
temp=motor_shake_times&0x01;
MOTOR=temp;
motor_shake_times=motor_shake_times>>1;
}
else
{
MOTOR=0;
}
}
/****************************************************************************
* 名 稱:MOTOR_SCAN()
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明: 利用定時器0進(jìn)行的振動電機(jī)振動掃描函數(shù)
****************************************************************************/
void MOTOR_SCAN( void )
{
if(motor_flag==20)
{
motor_flag=0;
MOTOR_SHAKE();
}
}
/****************************************************************************
* 名 稱:MOTOR_ON()
* 入口參數(shù):電機(jī)震動次數(shù)
* 出口參數(shù):無
* 說 明: 開啟電機(jī)振動,相當(dāng)于賦值
****************************************************************************/
void MOTOR_ON( unsigned char cishu )
{
motor_shake_times=cishu;
}
/****************************************************************************
* 名 稱:Timer0_ISR()
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明: 定時器0中斷處理函數(shù)
****************************************************************************/
void Timer0_ISR( void ) interrupt 1
{
TH0=TIMER0_RELOAD_HIGH;
TL0=TIMER0_RELOAD_LOW;
get_key_time++;
delay_count++;
motor_flag++;
LED_Time_Out++;
Key_ScanIO();
MOTOR_SCAN();//電機(jī)20ms掃描一次
}
/****************************************************************************
* 名 稱:IRQ_ISR()
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明: 外部中斷處理函數(shù),用于處理無線模塊的收發(fā)及狀態(tài)轉(zhuǎn)換
****************************************************************************/
void IRQ_ISR( void ) interrupt 0
{
switch(ReadInterrupt_Status())
{
case 1:{EA=0;
nRF24L01_RxPacket(RxBuf);
ClearInterrptFlag();
EA=1;
if(RxBuf[2]!=90)
{
if(receive_counter<250)
receive_counter++;
else
receive_counter=2;
}
getdata=1;
}
break; //接收到數(shù)據(jù)中斷
//case 2:{EA=0;ClearInterrptFlag();SetRX_Mode();delay_1ms(1);EA=1;}break; //發(fā)送成功中斷
case 2:{EA=0;ClearInterrptFlag();EA=1;}break; //發(fā)送成功中斷
case 3:{EA=0;ClearInterrptFlag();SetRX_Mode();delay_1ms(1);EA=1;}break; //最大發(fā)射次數(shù)到,即發(fā)送失敗中斷
default:{EA=0;ClearInterrptFlag();SetRX_Mode();delay_1ms(1);EA=1;}break;//其他無關(guān)量
}
}
/****************************************************************************
* 名 稱:Send_Data()
* 入口參數(shù):無
* 出口參數(shù):無
* 說 明: 發(fā)送端數(shù)據(jù)發(fā)送函數(shù),連續(xù)發(fā)送15次,函數(shù)值由數(shù)組直接傳遞
****************************************************************************/
void Send_Data( void )
{
nRF24L01_TxPacket(TxBuf); //連發(fā)15次
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
2.4G無線雙向收發(fā)系統(tǒng).rar
(207.09 KB, 下載次數(shù): 59)
2017-9-20 20:50 上傳
點擊文件名下載附件
2.4G
下載積分: 黑幣 -5
作者:
xi-xi
時間:
2019-6-14 22:09
文件不全啊,謹(jǐn)慎下載
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1