ADC
開発ボード上のポテンショメータを調整する場合、デジタル チューブは、AD モジュールによって収集されたポテンショメータの電圧値を表示し、それに応じて変更することができます。
開発ボードには、フォトレジスタ、サーミスタ、ポテンショメータの 3 つのアプリケーションがあります。
一般にAD変換は、利用効率を上げるために複数の入力を持っています。
ADC は、アドレスのラッチとデコードによって、どちらの入力を使用するかを判断します。
オペアンプ、電圧コンパレータ、反転アンプ、ボルテージフォロアとして使用可能
T 型抵抗ネットワーク DA コンバーター:
ローパスフィルター:入力には直流と交流の2つの成分があり、ローパスフィルターを通して直流を取り出すことができます。ボルテージフォロアにより駆動能力が向上します。
d の値は固定されているため、d に従って a を調整するだけなので、da の方が簡単です。
ad 電圧の判断方法は?電圧値をある電圧と比較して、それよりも大きいか小さいかを比較し、徐々に近づいて近似値を見つけます。
解像度: 細かさ。たとえば、8 ビットの広告は 5v を 0 ~ 255 の範囲に変換できます。
変換速度: 最大サンプリング/セトリング周波数。
XPT2046はSPIを使用し、タイミングは立ち上がりエッジで入力され、立ち下がりエッジで出力され、入出力を実現できます。
シングルエンド モードを使用します (タッチ スクリーンのチェック ポイントの方が優れています)。
PD1=1 は内部基準電圧を採用し、内部電圧は 2.5v です。ADC マッピング範囲は 0~5v であることがわかっているため、1 の内部電圧は 0 の 5v の外部電圧ほど良くありません。
アドレス構成:
VBAT: バッテリー電圧。
AUX: 補助電圧。
XP YP: XY ポジティブ。
手順と広告変換を読む:
#define XPT2046_XP_8 0x9C // 1001 1100
#define XPT2046_YP_8 0xDC // 1101 1100
#define XPT2046_VBAT_8 0xAC // 1010 1100
#define XPT2046_AUX_8 0xEC // 1110 1100
#define XPT2046_XP_12 0x94 // 1001 0100
#define XPT2046_YP_12 0xD4 // 1101 0100
#define XPT2046_VBAT_12 0xA4 // 1010 0100
#define XPT2046_AUX_12 0xE4 // 1110 0100
unsigned int XPT2046_ReadAD(unsigned char command)
{
unsigned char i;
unsigned char temp=command;
unsigned int ADValue = 0;
XPT2046_DCLK = 0;
XPT2046_CS = 0;
for (i = 0; i < 8; i++)
{
XPT2046_DIN = temp >> 7;
temp <<= 1;
XPT2046_DCLK = 1;
XPT2046_DCLK = 0;
}
for (i = 0; i < 12; i++)
{
XPT2046_DCLK = 1;
XPT2046_DCLK = 0;
if (XPT2046_DOUT)
ADValue |= (0x0800 >> i);
}
XPT2046_CS = 1;
//for 12 bit:
if(command&0x08)return ADValue>>4;
else return ADValue;
}
void main()
{
unsigned int ADValue = 0;
LCD_Init();
LCD_ShowString(1, 1, "ADC NTC RG");
while (1)
{
ADValue = XPT2046_ReadAD(XPT2046_XP_8);//电位器
LCD_ShowNum(2, 1, ADValue, 3);
ADValue = XPT2046_ReadAD(XPT2046_YP_8);//热敏电阻
LCD_ShowNum(2, 5, ADValue, 3);
ADValue = XPT2046_ReadAD(XPT2046_VBAT_8);//光敏电阻
LCD_ShowNum(2, 9, ADValue, 3);
delayMs(10);
}
}
dac も pwm の原理を採用し、01 の周波数を変更してランプの明るさをシミュレートします (出力ポート: P2^1)。そのため、DACは交換できるため、広く使用されていません。