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

📄 tlc2543.c

📁 串行AD TLC 2543 与8051单片机的接口
💻 C
字号:
#include <reg52.h>
#define BYTE unsigned char
#define WORD unsigned int
#define START P1^5 
#define AIN0 0X40 //address and modern
#define AIN1 0X41
#define AIN2 0X42
#define AIN3 0X43
#define AIN4 0X44
#define AIN5 0X45
#define AIN6 0X46
#define AIN7 0X47
#define AIN8 0X48
#define AIN9 0X49
#define AINA 0X4a
#define VINB 0X4b   //200
#define VINC 0X4c   //000
#define VIND 0X4d  //3FF
code BYTE SHOWCODE[]={0x02,0x9e,0x24,0x0c,0x98,0x48,
                    //  0    1    2    3    4     5
                      0x40,0x1e,0x00,0x08,0x10,0xc0,
                      //6    7    8   9     A    B
                     0x62,0x84,0x60,0x70,0xff,0xfc};
                     //C    D    E    F  10(灭) -

sbit CLOCK       =P1^0;
sbit AD_EOC      =P1^1;
sbit AD_CS       =P1^2;
sbit DATA_OUT    =P1^3;
sbit ADDR_IN     =P1^4;
void delay1ms(WORD x);
WORD TLC2543(BYTE);
WORD computer(WORD[9]);
void showX(WORD);//bit 16 or 10 0=10
WORD r;
void main(void)
{WORD x[9];
 int i;
BYTE addrx;
EA=0;
while(START==0)
{
delay1ms(3);
addrx=AIN7;
for(i=0;i<9;i++)
{
 x[i]=TLC2543(addrx);
}
r=computer(x);
showX(r);
delay1ms(10);
/////////
delay1ms(10);
delay1ms(100);
delay1ms(100);
delay1ms(10);
addrx=AIN0;
for(i=0;i<9;i++)
{
 x[i]=TLC2543(addrx);
}
r=computer(x);
showX(r);
delay1ms(10);
delay1ms(100);
delay1ms(100);
delay1ms(10);
}
}

WORD TLC2543(BYTE x)
{
WORD   i,volt;
BYTE   al=0,ah=0;
CLOCK=0;
AD_CS=0;
for(i=0;i<8;i++)/*address select and moden control*/
  {ADDR_IN=(bit)(x&0x80); CLOCK=1;  CLOCK=0;x<<=1;}
for(i=0;i<4;i++)   /*waite 4 clock*/ 
  {CLOCK=1;  CLOCK=0;}
  AD_CS=1;
  while(AD_EOC==0);
  AD_CS=0;
for(i=0;i<4;i++) /*read d11--d8*/
  {DATA_OUT=1;CLOCK=1;ah<<=1;
   if(DATA_OUT==1)
   ah|=0x01;
   CLOCK=0;}     
for(i=0;i<8;i++) /*read d7--- d0*/
  {DATA_OUT=1;CLOCK=1;al<<=1;
  if(DATA_OUT==1)
  al|=0x01;
  CLOCK=0;}
  AD_CS=1;
  volt=(WORD)ah;volt<<=8;volt|=al;/*computer volt value*/
  return(volt); 
}

WORD computer(WORD x[9])
  {int i,temp;
   WORD sum=0;
   for(i=1;i<8;i++)
     {if(x[0]>x[i])
        {temp=x[0]; x[i]=temp;x[0]=x[i];}
      if(x[9]<x[i])
        {temp=x[0]; x[i]=temp;x[0]=x[i];}
     }
   for(i=1;i<8;i++) 
      {sum=sum+x[i];}
   r=sum/8  ;   
  return(r);
  }
  
void showX(WORD b)
{

TI=0;
SBUF=SHOWCODE[(b%0x100)%0x10];
while(TI==0);
TI=0;
SBUF=SHOWCODE[(b%0x100)/0x10];
while(TI==0);
TI=0;
SBUF=SHOWCODE[b/0x100];
while(TI==0);
}

void delay1ms(WORD x)
  {
    WORD j;
     ;
     ;
     ;
     while(x--!=0)
     
     {
     for(j=0;j<80;j++)
     ;}
   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -