1. AD:模拟数字转换---将模拟信号转换为计算机可操作的数字信号;(有时也称作ADC)
DA:将计算机输出的数字信号转换为模拟信号;
2. 运算放大器(运放):具有很高放大倍数的放大电路单元;内部集成了差分放大器、电压放大器、功率放大器三级放大电路;
常见运放电路:
DA原理:
AD把模拟转换成数字:读出光敏电阻、热敏电阻、可调电阻
main.c
#include <REGX52.H>
#include "LCD1602.h"
#include "Delay.h"
#include "XPT2046.h"
unsigned int ADValue;
void main()
{
LCD_Init();
LCD_ShowString(1,1,"ADJ NTC RG");
while(1)
{
ADValue=XPT2046_ReadAD(XPT2046_XP); //可调电阻
LCD_ShowNum(2,1,ADValue,3);
ADValue=XPT2046_ReadAD(XPT2046_YP); //热敏电阻
LCD_ShowNum(2,5,ADValue,3);
ADValue=XPT2046_ReadAD(XPT2046_VBAT); //光敏电阻
LCD_ShowNum(2,9,ADValue,3);
Delay(10);
}
}
XPT2046.C
#include <REGX52.H>
sbit XPT2046_CS=P3^5;
sbit XPT2046_DCLK=P3^6;
sbit XPT2046_DIN=P3^4;
sbit XPT2046_DOUT=P3^7;
unsigned int XPT2046_ReadAD(unsigned char Command)
{
unsigned char i;
unsigned int ADVAlue=0;
XPT2046_DCLK=0;
XPT2046_CS=0;
for(i=0;i<8;i++)
{
XPT2046_DIN=Command&(0x80>>i);
XPT2046_DCLK=1;
XPT2046_DCLK=0;
}
for(i=0;i<16;i++)
{
XPT2046_DCLK=1;
XPT2046_DCLK=0;
if(XPT2046_DOUT){ADVAlue|=(0x8000>>i);}
}
XPT2046_CS=1;
return ADVAlue>>8;
}
XPT2046.H
#ifndef _XPT2046__H_
#define _XPT2046__H_
#define XPT2046_XP 0x9C
#define XPT2046_YP 0xDC
#define XPT2046_VBAT 0xAC
#define XPT2046_AUX 0xEC
unsigned int XPT2046_ReadAD(unsigned char Command);
#endif