標(biāo)題: 12位AD模數(shù)轉(zhuǎn)換(TLC2543驅(qū)動(dòng)) [打印本頁(yè)]

作者: 407871699    時(shí)間: 2017-1-22 11:35
標(biāo)題: 12位AD模數(shù)轉(zhuǎn)換(TLC2543驅(qū)動(dòng))
該驅(qū)動(dòng)多增加了一次寫(xiě)端口地址,目的是讀取需要的端口值。
因?yàn)锳D操作時(shí),寫(xiě)地址后要再下次才能讀上次的數(shù)據(jù)。
(這在輸入的模擬信號(hào)是多端口時(shí),避免邏輯錯(cuò)誤。
當(dāng)然也可以采取其他方式避免這種邏輯錯(cuò)誤)



#include<reg52.h>
#include <intrins.h>

sbit AD_OUT=P3^2;         //從 2543讀數(shù)據(jù)
sbit AD_IN =P3^3;         //輸出信號(hào)to 2543
sbit AD_CS =P3^4;         //片選2543
sbit AD_CLK=P3^5;         //時(shí)鐘信號(hào)
sbit AD_EOC=P3^7;//無(wú)用

void AD2543_ini()         //初始化2543
{
        AD_CS=1;
        AD_CLK=0;
}

unsigned int Read2543(unsigned char port)        //port為準(zhǔn)備讀取的端口
{
unsigned int ad=0,n;//變量ad為返回值,n為臨時(shí)變量(用于端口操作)
unsigned char i;

AD_CLK=0;      //clk先給0,避免出錯(cuò)
AD_CS=0;       //片選,0有效
n=port;           //用n來(lái)操作端口port,目的是寫(xiě)2次端口地址,這樣回來(lái)的才是真正的端口ad值
n<<=4;          //先偏移4,讓地址到高位
for(i=0;i<12;i++)   //輸入12位端口地址(其實(shí)前4位是地址,后8位都是0)
        {
          AD_IN=(bit)(n&0x80);  //高位(第8位)輸出。(串口模式)
          AD_CLK=1;  
          AD_CLK=0;
          n<<=1;       //左移1位。利用循環(huán)逐位輸出
        }
AD_CS=1;        //關(guān)閉片選
          {_nop_();_nop_();_nop_();_nop_();}         //緩沖一下
        {_nop_();_nop_();_nop_();_nop_();} //緩沖
               
AD_CS=0;  //再次片選
n=port;     //再次寫(xiě)端口地址
n<<=4;
for(i=0;i<12;i++)
        {
          AD_IN=(bit)(n&0x80);
          AD_CLK=1;
          AD_CLK=0;
          n<<=1;
        }
AD_CS=1;   //停止
          {_nop_();_nop_();_nop_();_nop_();}
        {_nop_();_nop_();_nop_();_nop_();}

AD_CS=0;                 //片選。開(kāi)始讀取數(shù)據(jù)
for(i=0;i<12;i++)     //12位循環(huán)
        {
        ad<<=1;         //先左移1位
          if(AD_OUT) ad|=0x01;  //判斷:如AD_OUT為1,則ad低位賦值1
          AD_CLK=1;
          AD_CLK=0;
        }
AD_CS=1;             //結(jié)束讀數(shù)據(jù)
       
return(ad);           //返回值ad
}


作者: 407871699    時(shí)間: 2017-1-25 21:03
自己頂一個(gè)。這個(gè)對(duì)新手很有用的
作者: admin    時(shí)間: 2017-2-12 23:20
好資料,51黑有你更精彩!!

作者: 橘生淮南則為橘    時(shí)間: 2019-4-22 14:51
多謝!幫助
作者: 咚咚咚哈    時(shí)間: 2019-5-9 16:45
控制字的第三位和第四位都是零嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1