
我给你一个参考,是完全可以采集到数据的,是ATMEGA64的, 希望可以帮助到您。
void adc_init(void) //AD通道初始化
{
ADCSRA = 0x00;
ADMUX = 0x60; //ACC参考电压,左对齐
ACSR |= 0x80; //关闭模拟比较器
ADCSRA = 0x85; //使能ADC,中断未使能,32分频
}
unsigned int get_ad(unsigned char chanel) //启动一次AD转换,查询方式,改变chanel可采集不同通道电压
{
unsigned int temp=0,temp1=0,temp2=0;
CLI();
if(chanel>7)
{
return 0;
}
ADMUX=0x60;
ADMUX |=chanel;
ADCSRA |=0x40;
while(!(ADCSRA&0x10));
ADCSRA |= 0x10;
temp2 = ADCL;
temp1 = ADCH;
temp = (temp1<<4)|temp2;
SEI();
return temp;
}
/sendtimebetweenbeatswitha/在LCD12864上显示BPM
}
delay(138);9;Set/发送并处理原始脉搏传感器数据
if(QS==true){//fadeRateVariableto255tofadeLEDwithpulse
sendDataToProcessing(B;Qi++){
delay(1000);}
if(Pressure<100){
beep=0;}}
if(BPM<60|BPM>100){
for(i=0;i<显示信息4
while(1)
{
sendDataToProcessing(}
}
}
//AD转换结果result
ADC_CONTR&=0xf8;/依次执行写入 *** 作
{
putchar(ucStr3[i]);
}
for(i=0;
_nop_();/延时196ms
LCD_disp_list_char(4,DisBuff2);设置ADCCONTR控制寄存器后;/S确定发现一个心跳
fadeRate=255,0;/voidledFadeToBeat(){
//,BPM);///analogWrite(fadePin,fadeRate);/:GetADCResult
函数功能:获取AD转换结果函数
入口参数;,Signal);
sys_init();
beep=1;
LCD12864_DisplayOneLine(0x80,ucStr1);//,255);//prefix
QS=false;/,IBI),4;/resettheQuantifiedSelfflagfornexttime
LCD_disp_list_char(2:BYTEch(通道选择)
返回值:result(A///依次执行写入 *** 作
{
putchar(ucStr2[i]);
}
for(i=0、CHS1、CHS0(清除通道选择)
_nop_();//显示信息1
LCD12864_DisplayOneLine(0x90,ucStr2);//keepLEDfadevaluefromgoingintonegativenumbers!
/B}
for(i=0;i<3;i++)
{
putchar(DisBuff[i]);/清除ADC控制寄存器ADCCONTR的CHS2,DisBuff);/16;i++)/和心率
sendDataToProcessing(setLEDfadevalue
//,要加4个空 *** 作延时才可以正确读到ADCCONTR寄存器的值
_nop_();4;i++)//,4;i++){
delay(1000);}
if(BPM<60|BPM>100){
beep=0;i<16;/i++)//8;
}
for(i=0;Q/}
/
函数名称;显示信息2
LCD12864_DisplayOneLine(0x88,ucStr3);//ledFadeToBeat();显示信息3
LCD12864_DisplayOneLine(0x98,ucStr4);//i<16;}
for(i=0;i<
unsignedintGetADCResult(BYTEch)
{unsignedintresult;//依次执行写入 *** 作
{
putchar(ucStr1[i]);/fadeLED
/i<16;fadeRate=constrain(fadeRate;i++)///发送一个fadeRate-=15;//D转换结果)
备注:无
/
_nop_();
ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;//开ADC电源,选择AD转换速率,并选择AD通道,开始AD转换
_nop_();//设置ADCCONTR控制寄存器后,要加4个空 *** 作延时才可以正确读到ADCCONTR寄存器的值
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR&ADC_FLAG));//等待AD转换结束
ADC_CONTR&=~ADC_FLAG;//关闭ADC
result=ADC_RES;//将AD转换结果的高两位赋给result
result=result<<8;//将result循环左移8位
result+=ADC_RESL;//将AD转换结果的底8位加高两位共10位给result
returnresult;//返回10位AD转换结果
}
voidsendDataToProcessing(charsymbol,intdat){
putchar(symbol);//symbolprefixtellsProcessingwhattypeofdataiscoming
printf(\"%drn
ADC(模数/数字转换器)的性能测试软件有很多,下面列举一些比较常用的:
1 ADCTest:ADCTest是一款由美国ADI公司开发的测试软件,用于测试ADI公司的模数/数字转换器。它具有自动测试和手动测试两种模式,可以用于测试分辨率、采样率、信噪比等参数。
2 SPIStorm:SPIStorm是一款由美国Crossware Tools公司开发的测试软件,用于测试模数/数字转换器和其他器件。它可以测试转换器的分辨率、采样率、线性范围、失真等性能参数,并可以输出测试结果。
3 LabVIEW:LabVIEW是一款由美国National Instruments公司开发的测试软件,用于测试多种电子器件。它可以测试数据采集卡、模数/数字转换器等器件,并可以进行自动化测试。
4 MATLAB:MATLAB是一款由美国Mathworks公司开发的数学软件,用于数学计算和数据分析。它提供了丰富的测试工具箱,包括信号处理工具箱和数据采集工具箱,可以用于模数/数字转换器的性能测试。
5 ADCPro:ADCPro是一款由美国Texas Instruments公司开发的测试软件,用于测试TI公司的模数/数字转换器。它可以测试转换器的分辨率、采样率、线性范围、失真等性能参数,并能够生成详细的测试报告。
以上只是一些常用的ADC性能测试软件,具体可根据实际需求选择使用。
最近需要用一款高精度的ADC,选择了TI的ADS1256,现将学习过程中的主要内容整理列出,与大家共同探讨,若有错误还请指正
暂时就涉及到这些,互相交流学习,有没注意到的地方还请指教~
P1ASF是选择哪个口模拟AD转换功能,(1<<ADC_CH0)(ADC_CH0相当于0)故P1ASF第0位被置1,选择P10为模拟通道。
第二个是对ADC_CONTR寄存器进行了设置,(1 << 7)将第八位置1,(1 << 5)将第六位置1,ADC_CONTR = ADC_360T | ADC_ON 将ADC_CONTR寄存器第六位和第八位置1,具体功能就是开启AD转换,选择转换速度。
如有不对请指正!
以上就是关于我第一次用AVR单片机,麻烦AVR高手帮忙看看我写的AVR ADC程序不能采到数据,问题在哪,谢谢!全部的内容,包括:我第一次用AVR单片机,麻烦AVR高手帮忙看看我写的AVR ADC程序不能采到数据,问题在哪,谢谢!、谁有pulsesensor心率传感器,的c语言程序,带注释的。在线等挺急的、adc性能测试软件有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)