標題: nRF2401構(gòu)成的AD采集數(shù)據(jù)無線傳輸 [打印本頁]

作者: dzdiy    時間: 2015-4-11 17:57
標題: nRF2401構(gòu)成的AD采集數(shù)據(jù)無線傳輸
nRF2401構(gòu)成的AD采集數(shù)據(jù)無線傳輸,把A/D采集的模擬型號發(fā)送出去,實現(xiàn)A/D采集,無線數(shù)據(jù)傳輸。先發(fā)個圖上來。



以下是源程序:
/***********************************************************/

/*nRF2401學習板V1.0             */
/*創(chuàng)建人  :鄭 文(ClimberWin)           日期:2010-02-18   */
/*功能描述:nRF2401無線數(shù)據(jù)傳輸                 */
/*芯片    :STC89C51RC  晶振 11.0592M       */
/*版本    :V1.0             */
/***********************************************************/
//測試OK,功能描述:
//8個LED接在P0口,低電平有效
//按鍵1是LED加 按鍵2LED減  按鍵3 LED全亮 按鍵4 LED全滅
//兩塊同樣的板子能夠通過無線控制實現(xiàn)LED顯示同步,串口輸出數(shù)據(jù)
//添加串口發(fā)送數(shù)據(jù)給單片機再無線發(fā)送

//STC12C5410AD作為發(fā)射,AD采集的數(shù)據(jù)發(fā)射出去
#include <intrins.h>
#include <nRF2401.h>
#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

void init_rs232(void);           //串口初始化
/*****************************************/
/* 串口通信初始化設(shè)置 */
void init_rs232(void)
{
AUXR=74;       //設(shè)置波特率是普通51的12倍 ,允許AD中斷
SCON=0x50;
PCON=0x00;
TH1=0xFA;    //波特率 115200  22.1184MHZ 時候(F4 4800  FA 9600  FDH 9600)*12
TL1=0XFA;
TMOD=0X20;
TR1=1;   
}
void STC12C5410AD_int(void)

{
ADC_CONTR=0x80 ;  //開轉(zhuǎn)換電源 設(shè)置轉(zhuǎn)換速度為1080個時鐘周期轉(zhuǎn)換一次,選擇AD0通道
delayms(20);     //稍做延時,大于1ms就可以
/*I/O口作為AD使用,設(shè)置漏極開路模式*/
P1M0=1;
P1M1=1;
}

void main(void)
{
uchar temp;
uint ad_temp; //AD數(shù)據(jù)保存的地址
    delayms(1000);//開機延時
STC12C5410AD_int();
nRF2401_Data[0] = 0x55;
    init_rs232();  //串口初始化
    TI=1;          //串口發(fā)射有效
nRF2401_config(); //nRF2401初始化配置
    delayms(100);
speakertest();  //蜂鳴器叫一聲

nRF2401_Transmit_Mode();            //設(shè)置為發(fā)送模式
nRF2401_Transmit_Data(nRF2401_Data);//發(fā)送測試數(shù)據(jù)
nRF2401_Receive_Mode();             //設(shè)置為接收模式
SBUF=0x55; //串口輸出0x55 測試是否有正確的串口數(shù)據(jù)
delayms(100);
while (1)
{   
ADC_CONTR|=0x08;            //開始AD轉(zhuǎn)換(ADC_START=1)
ADC_CONTR|=0x02;            //選擇AD2通道  
   while(!(ADC_CONTR & 0x10)); //判斷AD是否轉(zhuǎn)換結(jié)束
ADC_CONTR&=0xef;//轉(zhuǎn)換結(jié)束后標志位ADC_FLAG清零

ad_temp=ADC_LOW2;
    ad_temp=ad_temp+  ((uint)ADC_DATA)<<2;
temp= ad_temp/4;
    delayms(50);
nRF2401_Data[0]=temp;
        nRF2401_Transmit_Mode();            //設(shè)置為發(fā)送模式
      nRF2401_Transmit_Data(nRF2401_Data);        //發(fā)送測試數(shù)據(jù)
     nRF2401_Receive_Mode();             //設(shè)置為接收模式
}
}






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1