昨日完成了nRF2401的操控,今日想把A/D收集的模仿类型发送出去,由于手头上暂时没有D/A处理模块,所以只操练了下A/D收集,无线数据传输。今后合作D/A可以做个无线耳塞。先发个图上来
以下是源程序:
/***********************************************************/
/*nRF2401学习板V1.0 */
/*创建人 :郑 文(ClimberWin) 日期:2010-02-18 */
/*功用描绘:nRF2401无线数据传输 */
/*芯片 :STC89C51RC晶振 11.0592M */
/*版别 :V1.0 */
/***********************************************************/
//测验OK,功用描绘:
//8个LED接在P0口,低电平有用
//按键1是LED加 按键2LED减 按键3 LED全亮 按键4 LED全灭
//两块相同的板子可以经过无线操控完成LED显现同步,串口输出数据
//增加串口发送数据给单片机再无线发送
//修正日期:2010年2月19日,换成STC12C5410AD作为发射,AD收集的数据发射出去
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
void init_rs232(void); //串口初始化
/*****************************************/
/* 串口通讯初始化设置 */
void init_rs232(void)
{
AUXR=74; //设置波特率是一般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 ; //开转化电源设置转化速度为1080个时钟周期转化一次,挑选AD0通道
delayms(20); //稍做延时,大于1ms就可以
/*I/O口作为AD运用,设置漏极开路形式*/
P1M0=1;
P1M1=1;
}
void main(void)
{
uchar temp;
uint ad_temp; //AD数据保存的地址
delayms(1000);//开机延时
STC12C5410AD_int();
nRF2401_Da
init_rs232(); //串口初始化
TI=1; //串口发射有用
nRF2401_config(); //nRF2401初始化装备
delayms(100);
speakertest(); //蜂鸣器叫一声
nRF2401_Transmit_Mode(); //设置为发送形式
nRF2401_Transmit_Da
nRF2401_Receive_Mode(); //设置为接纳形式
SBUF=0x55; //串口输出0x55 测验是否有正确的串口数据
delayms(100);
while (1)
{
ADC_CONTR|=0x08; //开端AD转化(ADC_START=1)
ADC_CONTR|=0x02; //挑选AD2通道
while(!(ADC_CONTR & 0x10));//判别AD是否转化完毕
ADC_CONTR&=0xef;//转化完毕后标志位ADC_FLAG清零
ad_temp=ADC_LOW2;
ad_temp=ad_temp+ ((uint)ADC_DA
temp= ad_temp/4;
delayms(50);
nRF2401_Da
nRF2401_Transmit_Mode(); //设置为发送形式
nRF2401_Transmit_Da
nRF2401_Receive_Mode(); //设置为接纳形式
}
}