1. 程式人生 > >AD轉換 XPT2046

AD轉換 XPT2046

應用電路
應用電路

引腳功能描述
引腳

控制位命令
控制位命令

控制位元組各位描述
控制位元組

單端模式輸入配置
單端模式

差分模式輸入配置
差分模式

掉電和內部參考電壓選擇
掉電和內部參考電壓

應用電路
應用電路

AIN0:檢測轉換電位器模擬訊號,控制字命令暫存器值為0x94或者0xB4
AIN1:檢測轉換熱敏電阻模擬訊號,控制字命令暫存器值為0xD4
AIN2:要檢測轉換光敏電阻模擬訊號,控制字命令暫存器值為0xA4
AIN3:要檢測轉換AIN3通道上模擬訊號,控制字命令暫存器值為0xE4

數字介面
數字介面

前 8 個時鐘用來通過DIN引腳輸入控制位元組,接著的 12 個時鐘週期將完成真正的模數轉換,剩下的 3 個多時鐘週期將用來完成被轉換器忽略的最後位元組(DOUT置低)

舉例

sbit DOUT = P3 ^ 7;   //輸出
sbit CLK  = P3 ^ 6;   //時鐘
sbit DIN  = P3 ^ 4;   //輸入
sbit CS   = P3 ^ 5;   //片選

void SPI_Write(uchar dat)
{
    uchar i;
    CLK = 0;
    for(i=0; i<8; i++)
    {
        DIN = dat >> 7;     //放置最高位
        dat <<= 1;
        CLK = 0;            //上升沿放置資料

        CLK = 1
; } } uint SPI_Read(void) { uint i, dat = 0; CLK = 0; for(i = 0; i < 12; i++) //接收12位資料 { dat <<= 1; CLK = 1; CLK = 0; dat |= DOUT; } return dat; } uint Read_AD_Data(uchar cmd) { uchar i; uint AD_Value; CLK = 0; CS = 0
; SPI_Write(cmd); for(i = 6; i > 0; i--); //延時等待轉換結果 CLK = 1; //傳送一個時鐘週期,清除BUSY _nop_(); _nop_(); CLK = 0; _nop_(); _nop_(); AD_Value = SPI_Read(); CS = 1; return AD_Value; }