⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlc549测试.c

📁 详细描述了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 + -