/*******************************************程序功能:將采集的模擬量數(shù)據(jù)轉(zhuǎn)換為數(shù)字量數(shù)據(jù), 并在P2口的流水燈上體現(xiàn)出來(lái)。涉及芯片:TLC549 ********************************************/#includereg52.h>#define uint unsigned int#define uchar unsigned charsbit clock=P3^3;//時(shí)鐘線sbit dout=P3^4;//數(shù)據(jù)輸出端sbit cs=P3^5;//片選(低電平有效)void delay(uint t){ while(t--);}uchar read_549()//數(shù)據(jù)得采集{uint i;uchar k=0x00;//定義一個(gè)變量k,將在dout上采集的到的數(shù)據(jù)裝進(jìn)Kdout=1;//該地方置不置高電平都可以,應(yīng)為單片機(jī)的I/O口默認(rèn)值為高點(diǎn)平for(i=0;i8;i++){if(dout){k++;}k=k1;clock=1;//高電平期間采集dout線上的數(shù)據(jù)clock=0;delay(10);}return k;//返回值}uchar shuchu_549()//數(shù)據(jù)得讀取{uchar date;cs=0;//片選低電平時(shí)數(shù)據(jù)有效date=read_549();//將read_549()函數(shù)中采集到的數(shù)據(jù)付給變量datecs=1;//片選拉高,表示數(shù)據(jù)讀取完畢delay(50);return date;//返回值}void main(){while(1){P2=shuchu_549(); }}/**********************************************詳細(xì)分析TLC549芯片時(shí)序圖:1、串行數(shù)據(jù)A7位先輸出(即最高位)A0位最后輸出。2、在每一次I/O clock的高電平期間DATA OUT線就產(chǎn)生有效輸出,每出現(xiàn)一次I/O clock信號(hào)并對(duì)8個(gè)字節(jié)數(shù)據(jù)輸出。一個(gè)周期出現(xiàn)8次 I/Oclock信號(hào)并對(duì)8個(gè)字節(jié)輸出。3、在CS變?yōu)榈碗娖胶螅罡呶蛔詣?dòng)置于DATA OUT總線上。其余7位(A6~A0)在7個(gè)I/O clock下降沿由時(shí)鐘同步輸出。B7~B0以同樣的方式跟在其后。4、在片選CS變?yōu)榈碗娖胶?.4微秒I/O clock才允許跳變。5、在片選CS變?yōu)榈碗娖胶蟮綌?shù)據(jù)線DATA OUT線上輸出數(shù)據(jù)的時(shí)間間隔為1.2微秒;6、只要I/O CLOCK變高就可以讀取DATA OUT線上的數(shù)據(jù)。**********************************************/
評(píng)論