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

📄 tlc8031.c

📁 TI公司AD转换芯片TLC0831驱动程序,keil c编译通过,51单片机
💻 C
字号:
#include        <reg52.h>
#include        <intrins.h>

#define	uchar	unsigned char
#define uint	unsigned int

sbit	adcs	= P1^2;
sbit	adclk	= P1^0;
sbit	addt	= P1^4;


uchar adres;
uint admax;
uint admin;
uchar adcount;
uint adsum;
uchar nowtemp;
uchar t_adc;

/*******************************************************************/
unsigned char code temptab[]=
{
    99,98,97,96,95,94,93,92,91,90,
    89,89,88,87,86,85,85,84,83,82,
    82,81,80,80,79,78,78,77,77,76,
    75,75,74,73,73,72,71,71,70,70,
    69,69,68,68,67,67,66,66,65,65,
    64,64,63,63,62,62,61,61,60,60,
    59,59,59,58,58,57,57,57,56,56,
    55,55,54,54,53,53,52,52,51,51,
    50,50,50,49,49,49,48,48,48,47,
    47,47,46,46,45,45,45,44,44,43,
    43,42,42,41,41,41,40,40,40,39,
    39,39,38,38,38,37,37,36,36,36,
    35,35,34,34,34,33,33,32,32,31,
    31,30,30,30,29,29,28,28,27,27,
    27,26,26,26,25,25,24,24,23,23,
    23,22,22,21,21,20,20,20,19,19,
    19,18,18,17,17,16,16,15,15,14,
    14,13,13,12,12,11,11,10,10,9,
    8,8,7,7,6,5,5,4,3,3,
    2,1,1,0
};

/*******************************************************************/
void delay(void)
{
   _nop_();
   _nop_();
   _nop_();
}

/*******************************************************************/
unsigned char getad(void)
{
    unsigned int data k=0;
    unsigned char data i,j;
    adcs=1;
    delay();
    adclk=0;
    delay();
    adcs=0;
    adclk=1;
    delay();
    adclk=0;
    delay();
    adclk=1;
    delay();
    adclk=0;
    delay();
    for(i=0;i<8;i++)
    {
	delay();
	if (addt==1)  j=1;
	else j=0;
	k=(k<<1)|j;
	adclk=1;
	delay();
	adclk=0;
    }
    delay();
    adclk=1;
    delay();
    adclk=0;
    delay();
    adclk=1;
    delay();
    adclk=0;
    delay();
    adclk=1;
    adcs=1;
    return(k);
}

/*******************************************************************/
void adchand(void)
{
    if(t_adc==0)
    {
	t_adc=100;		/* 100毫秒 */
	adres=getad();
	if (adres>admax) 	admax=adres;
	else if(adres<admin)	admin=adres;
	adsum=adsum+adres;
	adcount--;
	if(adcount==0)
	{
	    adres=(unsigned char)((adsum-admax-admin)/8);
            if(adres>225)  nowtemp=0;
            else if(adres<32)  nowtemp=99;
            else
            	nowtemp=temptab[adres-32];
	    adsum=0;
	    admax=0;
	    admin=0xffff;
	    adcount=10;
	}
    }
}


void timer0(void) interrupt 1 using 1	/*1毫秒定时中断*/
/*定时器0*/
{
  TH0=0xfc;
  TL0=0x21;
  if (t_adc!=0) t_adc--;

}

/*******************************************************************/
void main()
{

	TMOD=0X21;
	TH0=0xfc;
	TL0=0x72;
	IE=0x02;
	TR0=1;
	EA=1;

	    adsum=0;
	    admax=0;
	    admin=0xffff;
	    adcount=10;
       while(1)
       {
	adchand();
	_nop_();
        }

}

⌨️ 快捷键说明

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