我要努力工作,加油!

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

单片机 向日葵智能 232℃ 0评论

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) 输出到串口。

转载请注明:xrk智能 » STC12C5A60S2 单片机的A/D转换c语言实例

喜欢 (1)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址