本帖最后由 ??? 于 2013-4-28 13:16 编辑
由于学校运动会放假两天,继续做我的线性CCD采集系统,上次把CCD的基本采集原理说了一下,我的表达能力不是很好,附带的参考资料非常的详细,值得细细研究.
闲话少说,这次主要实现一个AD采集,并且把AD的值以点的形式绘制在A3BU开发板自带的液晶屏上.
参数说明: AD精度是8位
液晶点阵 128*32
采集模拟量 内部自带温度传感器
由于AD的采集值范围在0-255而我们的液晶屏只有128*32,我是采用横屏显示,即0-128是采集次数,将AD的值量化0-32为个区间.就是说将AD的值除以8就是所在的y坐标,当然也可以把AD的值量化为0-128,呵呵,这样看起来估计有点不舒服...
实现过程:
选择文件->新建->example project form asm ,选择好开发平台以及例程,点击OK即可.
这时会出现相应的例程,我们就可以参考这些例程来实现我们的想法了 我们再次新建一个空白工程,选择我们的开发平台
添加ASF库函数,或者说一些模块,添加进AD,LCD_7565GFX模块.
注意gfx有好几个模块,这里我们选着单色库,这个不用我说也知道为啥吧,接着我们对这个GFX进行一些设置选择c128*32选择finish.
时间有点小长,这段时间看看例程吧,我们可以发现需要定义两个结构体变量来实现配置, struct adc_config adc_conf; struct adc_channel_config adcch_conf; 这是我的定义变量 struct adc_config ADC0_Config; struct adc_channel_config ADC0_Channel_Config;// 然后进行一些资源的初始化,我直接复制过来了 board_init();// sysclk_init();//初始化时钟 pmic_init(); // gfx_mono_init();//初始化gfx cpu_irq_enable();//中断使能 紧接着就该配置自己的AD初始化了,由于我将来CCD采集的时候不需要AD中断,所以稍作修改,注意一下我的初始化屏蔽了AD中断和回调,我设置通道0的增益为1 adc_read_configuration(&ADCA, &ADC0_Config); adcch_read_configuration(&ADCA, ADC_CH0, &ADC0_Channel_Config); adc_enable_internal_input(&ADC0_Config, ADC_INT_BANDGAP); adc_set_conversion_parameters(&ADC0_Config, ADC_SIGN_OFF, ADC_RES_8,ADC_REF_VCC); //精度设置为8位无符号,参考电压VCC adc_set_clock_rate(&ADC0_Config,2000); //AD时钟频率配置 adc_set_conversion_trigger(&ADC0_Config, ADC_TRIG_MANUAL, 0, 0); adc_write_configuration(&ADCA,&ADC0_Config);// //adc_set_callback(&ADCA,&ADC0_FINISHI_INTER); adcch_set_input(&ADC0_Channel_Config,ADCCH_POS_PIN0, ADCCH_NEG_NONE,1);//设置管脚输入 //adcch_set_interrupt_mode(&ADC0_Channel_Config,ADCCH_MODE_COMPLETE);//设置中断模式
|