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

📄 tlc1543.c

📁 51开发板的源程序
💻 C
字号:

#include "c51base.h" 

void some_nop()
{
	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
}

uint ADCRead(uchar port) //从TLC1543读取采样值,形参port是采样的通道号
{
	uint idata ad_value;
	uchar i;

	TCL1543_CLK=0;
	TCL1543_CS=0;
	port<<=4;
	for (i=0;i<4;i++) //把通道号打入1543
	{
		TCL1543_IN = (bit)(port&0x80);
		TCL1543_CLK=1;
		some_nop();
		TCL1543_CLK=0;
		port<<=1;
	}
	for (i=0;i<6;i++) //填充6个TCL1543_CLK
	{
		TCL1543_CLK=1;
		some_nop();
		TCL1543_CLK=0;
	}
	TCL1543_CS=1;
	some_nop();some_nop();some_nop();some_nop();some_nop();some_nop();
	some_nop();some_nop();some_nop();some_nop();some_nop();some_nop();
	some_nop();some_nop();some_nop();some_nop();some_nop();some_nop();
	some_nop();some_nop();some_nop();
	TCL1543_CS=0; //等待AD转换
	some_nop();some_nop();some_nop();

	ad_value = 0;
	for (i=0;i<10;i++) //取D9,D8
	{
		TCL1543_OUT=1;
		TCL1543_CLK=1;
		ad_value <<= 1;
		if (TCL1543_OUT) 
			ad_value|=0x01;
		TCL1543_CLK=0;
	} 
//	ad_value >>= 2;
	TCL1543_CS=1;
	return (ad_value);
} 




uchar GetTemper(uchar number)
{
	uint idata value;
	value = ADCRead(number);
//	printf("温度通道%d-%d\n",(int)number,(int)value);
	if(value<=275)
		value = 0;
	else if(value>=275 && value < 415)//0-15度
		value = (value-270)/10;  
    else if(value>=415 && value <580) //16-32度
		value = (value-263)/10; 
	else if(value>=580 && value <639) //33-39度
		value = (value-255)/10; 
	else if(value>=639 && value <679) //40-45度
		value = (value-245)/10; 
	else if(value>=679 && value <709) //46-47度
		value = (value-235)/10; 
	else if(value>=709 && value <737) //48-51度
		value = (value-225)/10; 
	else if(value>=737 && value <756) //52-55度
		value = (value-215)/10; 
	else if(value>=756 && value <769) //56-56度
		value = (value-205)/10; 
	else if(value>=769 && value <786) //57-59度
		value = (value-195)/10; 
	else if(value>=786 && value <798) //60-61度
		value = (value-185)/10; 
	else if(value>=798 && value <808) //60-61度
		value = (value-175)/10; 
	else if(value>=808 && value <818) //60-61度
		value = (value-165)/10; 
	else if(value>=818 && value <865) //60-61度
		value = (9*value-4656)/41; 
	else if(value>=865 && value <912) //75-90度
		value = (value-639)/3; 
//printf("温度通道%d-%d\n",(int)number,(int)value);
		
	return value;				    
}								     
		
						

⌨️ 快捷键说明

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