共2条
1/1 1 跳转至页
AD,DA 紧急求助:AD与DA问题!
问
请教各位,大家都说说意见,新手没办法了! 情况是这样的::
我现在是用飞利浦的一款LPC915的芯片, 芯片里有4个AD和一个DA通道,我主要是用来利用这一
个芯片先把外接信号通过此片的一路AD然后同样利用此片的一路DA,信号输出,也就是一脚接信号输入,通过内部A
D,然后DA,信号就从另个引脚输出,大概是个100~200mv左右的随机信号,因为我想利用程序在内部进行一个信号峰
值的判断,然后输出一个平均的或者最高的!! 现在问题是这样理论上能不能成?? 还有就是我现在程序就只是利用
C编了一个AD然后DA两个模块的程序一并,可运行根本就没作用,从引脚给个固定〈VDD的电压信号输入,输出得不到那个信号电压
值???
请教各位,我上述有那些不妥之处? 不管多大多小的意见,我希望能都给意见,这个小小项目十一前要有结果,不然就挂了! 后附新手一简单程序:
//#include "reg915.h"
#define uchar unsigned char
// 特殊寄存器定义
sfr ADCON1 = 0x97;
sfr ADINS = 0xA3;
sfr ADMODA = 0xC0;
sfr ADMODB = 0xA1;
sfr AD1DAT0 = 0xD5;
//sfr AD1DAT1 = 0xD6;
//sfr AD1DAT2 = 0xD7;
sfr AD1DAT3 = 0xF5;
sfr P0M1 = 0x84;
sfr P0M2 = 0x85;
sfr PT0AD = 0xF6;
void delayNS(unsigned char no);
void ADC_Init();
void DAC_Init();
uchar ADValue;
main()
{
P0M1 = 0x02; //P0.1设置为仅为输入状态,P0.4设置为准双向模式。
P0M2 = 0x00; //
while(1)
{
ADC_Init();
delayNS( 10 );
DAC_Init();
delayNS( 10 );
}
}
void ADC_Init()
{
ADINS = 0x10; //AD10转换
ADMODA = 0x10; // 0001 0000 单次固定通道转换
PT0AD = 0x12; // P0.1设置为禁止数字输入。
ADMODB = 0x20; // 500Khz < ADC CLK < 3.3Mhz.
ADCON1 = 0x05; //立即启动转换模式
ADValue = AD1DAT0; //将AD转换获得的数据存入ADValue
delayNS( 10 );
ADCON1&= 0xF7; //清AD/DA转换完成标志位
}
void DAC_Init()
{
ADINS = 0x80; // AD13转换模式
ADMODA = 0x10; // 0001 0000 单次固定通道转换
PT0AD = 0x00; // P0.1和P0.4 设置为禁止数字输入。
ADMODB = 0x28; // 500Khz < ADC CLK < 3.3Mhz. 模/数转换置位
ADCON1 = 0x05; //立即启动转换模式
AD1DAT3 = ADValue; //AD0DAT3的值为DAC1输出的控制量
delayNS( 10 );
ADCON1&= 0xF7; //清AD/DA转换完成标志位
}
void delayNS(unsigned char no)
{
unsigned char i;
for(; no>0; no--)
{
for(i=0; i<1000; i++);
}
}
答 1: re这里有范例
http://www.zlgmcu.com/philips/philips-yingrong-lpc900.asp
另外,AD及DA不能同时使用,您使用AD的时候,DA就不行了.
使用DA的时候,AD就不行了,
所以这个流程您得自己考虑
也可以考虑 比较器做AD,比较器做DA. 答 2: 谢!! 首先,万分感谢,对新手的建议!! 资料我早已下了!关键是自己迷茫东西的不少!
如果AD 和DA不能同时在一块芯片上运用,是先用915上的比较器对
我输入的100~200mv左右的随机信号进行AD,然后利用915的DA 程序在内部进行一个信号峰值的判断,然后输出一个平均的或者最高.
按各位的有经验的人士来看, 是把AD放在芯片里, DA放在外围好? 还是DA放在芯片里, AD放在外围好? 那种实施更适合,
哎! 没办法, 周围这方面的人太少了,我也是个还正在成长的菜菜!!
答 3: 感觉原来方案已经是挂了! 对100~200mv左右的信号进行取平均或者取几秒的峰值,得出一个可以随信号变化的值。这本来是设计的初衷,现在觉得按我以前的想法似乎没法实现, 不知道大家有没有更好办法,要求用单片机! 希望大家能指教一番! 答 4: 有经验的请点见解哦----- 如果用单个915的芯片,实现上述要求,似乎不能,按原来我的想法AD后,直接把AD后的寄存器的值赋给DAC的输入,然后就可以在DAC输出引脚得到信号了!!!
现在我想AD还是用915做,但AD后是数字量,那个数字量 取平均或者取几秒的能用程序实现么 (数字量用程序可以控制比较得出最大值或平均么)? 但后续怎么转化成一个信号变化的电压值(比如可以直观的用万用表测的-----打个比方)?感觉在这2点上没有什么经验了!
我现在是用飞利浦的一款LPC915的芯片, 芯片里有4个AD和一个DA通道,我主要是用来利用这一
个芯片先把外接信号通过此片的一路AD然后同样利用此片的一路DA,信号输出,也就是一脚接信号输入,通过内部A
D,然后DA,信号就从另个引脚输出,大概是个100~200mv左右的随机信号,因为我想利用程序在内部进行一个信号峰
值的判断,然后输出一个平均的或者最高的!! 现在问题是这样理论上能不能成?? 还有就是我现在程序就只是利用
C编了一个AD然后DA两个模块的程序一并,可运行根本就没作用,从引脚给个固定〈VDD的电压信号输入,输出得不到那个信号电压
值???
请教各位,我上述有那些不妥之处? 不管多大多小的意见,我希望能都给意见,这个小小项目十一前要有结果,不然就挂了! 后附新手一简单程序:
//#include "reg915.h"
#define uchar unsigned char
// 特殊寄存器定义
sfr ADCON1 = 0x97;
sfr ADINS = 0xA3;
sfr ADMODA = 0xC0;
sfr ADMODB = 0xA1;
sfr AD1DAT0 = 0xD5;
//sfr AD1DAT1 = 0xD6;
//sfr AD1DAT2 = 0xD7;
sfr AD1DAT3 = 0xF5;
sfr P0M1 = 0x84;
sfr P0M2 = 0x85;
sfr PT0AD = 0xF6;
void delayNS(unsigned char no);
void ADC_Init();
void DAC_Init();
uchar ADValue;
main()
{
P0M1 = 0x02; //P0.1设置为仅为输入状态,P0.4设置为准双向模式。
P0M2 = 0x00; //
while(1)
{
ADC_Init();
delayNS( 10 );
DAC_Init();
delayNS( 10 );
}
}
void ADC_Init()
{
ADINS = 0x10; //AD10转换
ADMODA = 0x10; // 0001 0000 单次固定通道转换
PT0AD = 0x12; // P0.1设置为禁止数字输入。
ADMODB = 0x20; // 500Khz < ADC CLK < 3.3Mhz.
ADCON1 = 0x05; //立即启动转换模式
ADValue = AD1DAT0; //将AD转换获得的数据存入ADValue
delayNS( 10 );
ADCON1&= 0xF7; //清AD/DA转换完成标志位
}
void DAC_Init()
{
ADINS = 0x80; // AD13转换模式
ADMODA = 0x10; // 0001 0000 单次固定通道转换
PT0AD = 0x00; // P0.1和P0.4 设置为禁止数字输入。
ADMODB = 0x28; // 500Khz < ADC CLK < 3.3Mhz. 模/数转换置位
ADCON1 = 0x05; //立即启动转换模式
AD1DAT3 = ADValue; //AD0DAT3的值为DAC1输出的控制量
delayNS( 10 );
ADCON1&= 0xF7; //清AD/DA转换完成标志位
}
void delayNS(unsigned char no)
{
unsigned char i;
for(; no>0; no--)
{
for(i=0; i<1000; i++);
}
}
答 1: re这里有范例
http://www.zlgmcu.com/philips/philips-yingrong-lpc900.asp
另外,AD及DA不能同时使用,您使用AD的时候,DA就不行了.
使用DA的时候,AD就不行了,
所以这个流程您得自己考虑
也可以考虑 比较器做AD,比较器做DA. 答 2: 谢!! 首先,万分感谢,对新手的建议!! 资料我早已下了!关键是自己迷茫东西的不少!
如果AD 和DA不能同时在一块芯片上运用,是先用915上的比较器对
我输入的100~200mv左右的随机信号进行AD,然后利用915的DA 程序在内部进行一个信号峰值的判断,然后输出一个平均的或者最高.
按各位的有经验的人士来看, 是把AD放在芯片里, DA放在外围好? 还是DA放在芯片里, AD放在外围好? 那种实施更适合,
哎! 没办法, 周围这方面的人太少了,我也是个还正在成长的菜菜!!
答 3: 感觉原来方案已经是挂了! 对100~200mv左右的信号进行取平均或者取几秒的峰值,得出一个可以随信号变化的值。这本来是设计的初衷,现在觉得按我以前的想法似乎没法实现, 不知道大家有没有更好办法,要求用单片机! 希望大家能指教一番! 答 4: 有经验的请点见解哦----- 如果用单个915的芯片,实现上述要求,似乎不能,按原来我的想法AD后,直接把AD后的寄存器的值赋给DAC的输入,然后就可以在DAC输出引脚得到信号了!!!
现在我想AD还是用915做,但AD后是数字量,那个数字量 取平均或者取几秒的能用程序实现么 (数字量用程序可以控制比较得出最大值或平均么)? 但后续怎么转化成一个信号变化的电压值(比如可以直观的用万用表测的-----打个比方)?感觉在这2点上没有什么经验了!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |