專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

TLC549模數(shù)轉(zhuǎn)換C51程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2011年08月04日   【字體:
/*******************************************
  程序功能:將采集的模擬量數(shù)據(jù)轉(zhuǎn)換為數(shù)字量數(shù)
            據(jù), 并在P2口的流水燈上體現(xiàn)出來。
  涉及芯片:TLC549         
********************************************/

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit clock=P3^3;//時鐘線
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;//定義一個變量k,將在dout上采集的到的數(shù)據(jù)裝進K
   dout=1;//該地方置不置高電平都可以,應(yīng)為單片機的I/O口默認值為高點平
   for(i=0;i<8;i++)
    {
   if(dout)
    {
      k++;
    }
    k=k<<1;
    clock=1;//高電平期間采集dout線上的數(shù)據(jù)
    clock=0;
    delay(10);
 }
   return k;//返回值
 }

uchar shuchu_549()//數(shù)據(jù)得讀取
 {
   uchar date;
   cs=0;//片選低電平時數(shù)據(jù)有效
   date=read_549();//將read_549()函數(shù)中采集到的數(shù)據(jù)付給變量date
   cs=1;//片選拉高,表示數(shù)據(jù)讀取完畢
   delay(50);
   return date;//返回值
 }

void main()
 {
   while(1)
    {
   P2=shuchu_549(); 
 }
 }
/**********************************************
  詳細分析TLC549芯片時序圖:
    1、串行數(shù)據(jù)A7位先輸出(即最高位)A0位最后
    輸出。
 2、在每一次I/O clock的高電平期間DATA OUT線
    就產(chǎn)生有效輸出,每出現(xiàn)一次I/O clock信號
    并對8個字節(jié)數(shù)據(jù)輸出。一個周期出現(xiàn)8次 I/O
    clock信號并對8個字節(jié)輸出。
 3、在CS變?yōu)榈碗娖胶,最高位自動置于DATA OUT
    總線上。其余7位(A6~A0)在7個I/O clock下
    降沿由時鐘同步輸出。B7~B0以同樣的方式跟在
    其后。
 4、在片選CS變?yōu)榈碗娖胶?.4微秒I/O clock才允
    許跳變。
 5、在片選CS變?yōu)榈碗娖胶蟮綌?shù)據(jù)線DATA OUT線上
    輸出數(shù)據(jù)的時間間隔為1.2微秒;
 6、只要I/O CLOCK變高就可以讀取DATA OUT線上的
    數(shù)據(jù)。
     
 **********************************************/
關(guān)閉窗口

相關(guān)文章