新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > nRF2401學(xué)習(xí)板---AD采集無(wú)線發(fā)送

nRF2401學(xué)習(xí)板---AD采集無(wú)線發(fā)送

作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏
昨天實(shí)現(xiàn)了nRF2401的控制,今天想把A/D采集的模擬型號(hào)發(fā)送出去,因?yàn)槭诸^上暫時(shí)沒(méi)有D/A處理模塊,所以只練習(xí)了下A/D采集,無(wú)線數(shù)據(jù)傳輸。以后配合D/A可以做個(gè)無(wú)線耳塞。先發(fā)個(gè)圖上來(lái)

本文引用地址:http://butianyuan.cn/article/201611/316030.htm

以下是源程序:

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

//修改日期:2010年2月19日,換成STC12C5410AD作為發(fā)射,AD采集的數(shù)據(jù)發(fā)射出去
#include
#include
#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 時(shí)候(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個(gè)時(shí)鐘周期轉(zhuǎn)換一次,選擇AD0通道
delayms(20); //稍做延時(shí),大于1ms就可以
/*I/O口作為AD使用,設(shè)置漏極開路模式*/
P1M0=1;
P1M1=1;
}

void main(void)
{
uchar temp;
uint ad_temp; //AD數(shù)據(jù)保存的地址
delayms(1000);//開機(jī)延時(shí)
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ā)送測(cè)試數(shù)據(jù)
nRF2401_Receive_Mode(); //設(shè)置為接收模式
SBUF=0x55; //串口輸出0x55 測(cè)試是否有正確的串口數(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é)束后標(biāo)志位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ā)送測(cè)試數(shù)據(jù)
nRF2401_Receive_Mode(); //設(shè)置為接收模式
}
}



評(píng)論


技術(shù)專區(qū)

關(guān)閉