
AD为模拟信号转为数字信号,STC89C52RC使用了一个触摸屏芯片来实现模数转换,通信协议采用的是SPI通信协议。

SPI通信协议采用了四根线CS、DCLK、DIN、DOUT,其中CS是片选位,每个芯片独立,而其它三根线是所有芯片共用的。DCLK为时钟线,上升沿芯片从主机读数据,下降沿芯片向主机写数据。DIN是芯片从主机读数据的线,DOUT是芯片向主机写数据的线。
代码如下:
#include <REGX52.H>
sbit CS = P3^5;
sbit DIN= P3^4;
sbit DOUT = P3^7;
sbit DCLK = P3^6;
unsigned int AD_SPI(unsigned char address)
{
unsigned char i;
unsigned int Data;
DCLK = 0;
CS = 0;
for(i=0;i<8;i++)
{
DIN = address & (0x80>>i);
DCLK = 1;
DCLK = 0;
}
for(i=0;i<16;i++)
{
DCLK = 1;
DCLK = 0;
if(DOUT)
{
Data |= (0x8000>>i);
}
}
CS = 1;
if(Command&0x08)
{
return Data>>8;
}
else
{
return Data>>4;
}
}
下面为关键字的地址:
#define AD_XP_8 0X9C
#define AD_YP_8 0XDC
#define AD_AUX_8 0XEC
#define AD_VBAT_8 0XAC
#define AD_XP_16 0X94
#define AD_YP_16 0XD4
#define AD_AUX_16 0XE4
#define AD_VBAT_16 0XA4

STC89C52的DAC采用的是PWM波转为模拟信号,及将不同占空比的信号转为不同电压的模拟信号。用处不广泛。但可以实现降压的功能。