STC12C5A60S2 单片机的A/D转换c语言实例

STC12C5A60S2 单片机带有的 A/D 转换口在 P1 口,是 10 位的转换器,速度可达250kHz。结构如下:

当 AUXR1.1/ADRJ = 0 时,转换结果的组合如下:

当 AUXR1.1/ADRJ = 0 时,转换结果的组合如下:

STC12C5A60S2 的 AD 转换相关寄存器如下:

以下是一个测试 demo


\#include "intrins.h" void Delay(WORD n) { WORD x; while(n--){ x = 5000; while(x--); } } void InitADC() { P1ASF = 0xff; // 8 个通道都开 ADC_RES = 0; ADC_CONTR = ADC_POWER|ADC_SPEEDLL; Delay(2); } // 获取高 8 位的 adc 值 BYTE GetADCResH8bit(BYTE ch) { ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ADC_START|ch; _nop_(); _nop_();_nop_();_nop_(); // 等待转换完成 while(!(ADC_CONTR & ADC_FLAG)); ADC_CONTR &= ~ADC_FLAG; return ADC_RES; } // 获取 10 位 adc WORD GetADCRes(BYTE ch) { WORD res = 0; res = GetADCResH8bit(ch); res <<= 2; res |= ADC_LOW2; return res; } void main() { InitADC(); InitUart(); // 参考之前的章节 WORD res = GetADCRes(0); // 得到通道 0 的 adc 值 printf("adc: %d\n", (int)res); while(1); }

以上代码的功能就是再启动时,从通道 0 读取 adc 值,并将其通过 printf(可参考:stc 51 单片机使用 printf) 输出到串口。

阅读更多:   单片机
添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif