?? tlc549測試.c
字號:
//功能:串行AD轉換器TL549進行一路模擬量的測量
//驅動TLC549,TLC549是串行8位ADC
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define Wait1us _nop_();
#define Wait2us {_nop_();_nop_();}
#define Wait4us {Wait2us;Wait2us;}
#define Wait8us {Wait4us;Wait4us;}
#define Wait10us {Wait8us;Wait2us;}
#define Wait30us {Wait10us;Wait8us;Wait4us;Wait2us;}
//定義TLC549串行總線操作端口
sbit CLK=P0^1;
sbit DAT=P0^2;
sbit CS=P0^3 ;
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
unsigned char code table1[]=
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//{0xdf,0x86,0xbb,0xaf,0xe6,0xed,0xfd,0x87,
//0xff,0xef,0xf7,0xfc,0xd9,0xbe,0xf9,0xf1};
uchar bdata ADCdata;
uchar i, AD_DATA;
sbit ADbit=ADCdata^0;
/********************************************************************
函 數 名:TLC549ADC()
功 能:A/D轉換子程序
說 明:讀取上一次A/D轉換的數據,啟動下一次A/D轉換
入口參數:無
返 回 值:無
設 計:yangm_cui 日 期:2008-03-19
修 改: 日 期:
***********************************************************************/
void delay()
{
uint i,j;
for(i=0;i<=5;i++)
for(j=0;j<=5;j++)
{;}
}
uchar TLC549ADC(void)
{
uchar i;
CS = 1; //芯片復位
CS = 0;
CS = 1;
// Clock = 0;
//Wait4us;
//CS = 0; //芯片起始
//Wait4us; //等待延時
//for (i = 0; i < 8; i ++) //輸入采樣轉換時鐘
//{
// Clock = 1;
// Wait1us;
// Clock = 0;
// }
CS = 1; //開始轉換
Wait30us; //等待轉換結束
CS= 0; //讀取轉換結果
Wait4us;
CLK=0;
DAT=1;
CS=0;
Wait4us;
for(i=0;i<8;i++)
{
CLK=1;
// delay();
// delay();
ADCdata<<=1; //AD轉換
ADbit=DAT;
CLK=0;
delay();
}
CS=1;
return (ADCdata);
}
void display()
{
P1=0xfb;
P2=table1[AD_DATA/100];
for(i=0xff;i>0;i--) //延時
{delay();}
for(i=0xff;i>0;i--) //延時
{delay();}
//P1=0xfd;
//P0=table1[(AD_DATA%100)/10];
//for(i=0xff;i>0;i--) //延時
//{delay();}
//for(i=0xff;i>0;i--) //延時
//{delay();}
//P1=0xfe;
//P0=table1[AD_DATA%10];
//for(i=0xff;i>0;i--) //延時
//{delay();}
//for(i=0xff;i>0;i--) //延時
//{delay();}
}
/********************************************************************
函 數 名:main()
功 能:主程序
說 明:
入口參數:無
返 回 值:無
設 計:yangm_cui 日 期:2008-03-19
修 改: 日 期:
***********************************************************************/
void main()
{
while(1)
{
// uchar i;
// uchar AD_DATA; //定義A/D轉換數據變量
AD_DATA=TLC549ADC(); //啟動一次A/D轉換
// CS=0;
for(i=1500;i>0;i--) //延時
{ delay();}
//AD_DATA=TLC549ADC(); //讀取當前電壓值A/D轉換數據
display();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -