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

📄 ads7822.c

📁 关键字:LCD液晶显示屏 串行 并行 ST7920 RT12864
💻 C
字号:

#include <reg52.h>
#include "string.h"
#include <stdio.h>
char	buffer[2]={0x00,0x00};
bit	tempbit;
sbit cs = P2^7;
sbit dout= P2^6;
sbit dclk =P2^5;
typedef unsigned short int u_int; 
typedef unsigned char  u_char;
void delayms(u_int sec)			
	{
	u_int j;
	for(j=0;j<sec;j++)
		{
		j=j;
		j=j;
		}
		
	}
void delayUs(char n)
{
   n*=8;
   for(;n>0;n--);
}
void wputs(char s[]);
xdata char s[20];
xdata int value_bak;
xdata long tt;
int GetAdc(void)
	{
	int value=0;
    long int rt;
	long int tx;
    long k;
	u_char	i,j,num;
    delayUs(100);
	dout=1;				//设置DOUT端口为输入

	buffer[1]=0x00;
	buffer[0]=0x00;
	value=0;
	cs=1;

	num=0;
    dclk=0;
	delayUs(10);
    cs=0;
		
    for(j=0;j<2;j++)
		{
		  dclk=0;
	      delayUs(10);
	 	  dclk=1;
		  delayUs(10);
		  dclk=0;
		}
    delayUs(10);
	//wputs("\n\rA/D : ");
	//若DOUT值不是0,则AD出错
	if(dout!=0) 
	    {
		 dclk=0;
		 strcpy(s,"AdcErr");
		 return(0);
		}			
	
    //wputs("::");
	
	for(j=0;j<12;j++)
		{
		dclk=1;
		delayUs(20);
  	    dclk=0;
		delayUs(10);
	
        value=value<<1;
	    if(dout) value |= 1;
	    delayUs(10);
		}
    value  &=0xfff;
	value_bak =(value_bak*5 + value)/6;

    sprintf(s,"%d ",value_bak);
    return(value_bak);
	}

int Get_R_Str(void)
	{
    long int rt;
    long k;
	char sng=0;
    rt=((long)(value_bak-82)*194L)/40L;
	if( rt<0)
	        {
              rt=-rt;
              //sprintf(s,"-%d.%d ",(int)(rt/100L),(int)(rt%100L)); 
			}
    else ;//sprintf(s,"%d.%d ",(int)(rt/100L),(int)(rt%100L));
    return(0);
	}

struct t_R_table
{
   int t;
   long int R;  //R=Rt X 100
}  RtTab[15]=
{
   -100,-390,
   000,0,
   100,390,
   500,1950,
   1000,3900,
   1500,5840,
   2000,7780,
   2500,9730,
   3000,11680,   
   3500,13610,
   4000,15540,
   4500,17470,
   5000,19400,
   6500,25150,
   8000,30900
};



int Get_t_Str(void)
	{
    long int rt;
    long k;
    char i;
	char sng=0;
    rt=((long)(value_bak-82)*194L)/40L;
    for(i=1;i<15;i++)
	  {
	   if(  RtTab[i].R < rt ) continue;
	   else  break;
	   }
    if(i==14)
	   {
	     sprintf(s,"xxxxxx");
		 return(0);
		}
    k=(RtTab[i].t-RtTab[i-1].t)*1000L/(RtTab[i].R-RtTab[i-1].R);
	tt=RtTab[i-1].t+( (rt-RtTab[i-1].R)*k)/1000L;
	if(tt<0) 
	{
	  tt=-tt;
      tt +=5;
	  sprintf(s,"-%d.%d",(int)(tt/100L),(int)((tt/10)%10L));
	  }
    else 
	{
	  tt+=5;
	  sprintf(s,"%d.%d",(int)(tt/100L),(int)((tt/10)%10));
	 }
    return(0);
	}

⌨️ 快捷键说明

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