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

📄 main.c

📁 C8051F310单片机控制ADS7812源码
💻 C
字号:
#include <C8051F310.H>
#include <intrins.h>

sbit 	daclk = P3^4;
sbit  	da	  = P2^7;
sbit	convn = P2^6;
sbit	csn		= P2^5;
sbit	busyn	= P2^4;

sbit    led1 = P2^3;			//right
sbit	 led2 = P2^2;
sbit	 led3 = P2^1;
sbit	 led4 = P1^7;			//left

sbit	RL1 = P0^6;
sbit	RL2 = P0^5;
sbit	sw = P0^7;

sbit	key1 = P3^1;
sbit 	key2 = P3^2;
sbit	key3 = P3^3;

code char  table[16] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void display(char buf,char num)
{
char i;
	led1=led2=led3=led4=1;
	if(buf>0x0f)
	{
		buf = 0x0;
	}
	i = table[buf];
	P1 = i;
	switch(num)
	{
		case 0:
			led4 = 0;
		break;
		case 1:
			led3 = 0;
		break;
		case 2:
			led2 = 0;
		break;
		case 3:
			led1 = 0;
		break;
		default:
			led1=led2=led3=led4=1;
		break;
	}
}

void ad_init()
{
	csn = 0;
	daclk =0 ;
	da = 1;
	convn = 1;
	busyn = 1;
	
}
void ad_conv()
{
		
	csn = 0;
	daclk = 0;
	da = 1;
	busyn = 1;
	convn = 0;
	_nop_;
	_nop_;
	convn = 1;

}
int read_ad()
{
char i,j;
int tmp=0;
	for(i = 0;i<16;i++)
	{
		tmp=tmp<<1;
		daclk = 1;
		_nop_;
		_nop_;
		_nop_;
		
		_nop_;
		daclk = 0;
		if(da)
		{
			//tmp=tmp|(0x0001<<i);
			tmp=tmp+1;
		}
		_nop_;
	//	_nop_;
	//	_nop_;
		
	//	tmp=tmp<<1;
	}
//	tmp=tmp<<1;
	return(tmp);
}
void sys_init()
{
	sw = 1;
	key1 = key2 = key3 = 1;
	led1 = led2 = led3 = led4 = 1;
	RL1 = 0;
	RL2 = 0;
}
void T2buf(int t,char* buf)
{
	*buf = (t>>12)&0x000f;
	*(buf+1) = (t>>8)&0x000f;
	*(buf+2) = (t>>4)&0x000f;
	*(buf+3) = t&0x000f;
}
void delay()
{
char i,j;
	for(i=0;i<4;i++)
		for(j = 0;j<20;j++);
}
void main()
{
char dbuf[4]={0,1,2,3};
char ledn=0;
char dly =0;
char Flag_Ad = 0;
char Flag_Key1 = 0;
char Flag_Key2 = 0;
char Flag_Key3 = 0;
int Temp=0;
int Tbuf[10];
long Tsum =0;
char Tnum = 0;
char num=0;
char keynum1=0;
char keynum2=0;
char keynum3=0;
		   XBR1   = 0x40;
		   PCA0MD = 0X00;	//CLOSE WDT
		   P3MDOUT = 0X10;
		   P0MDOUT = 0X60;
		   P2MDOUT = 0X60;
		   
	ad_init();
	sys_init();
	while(1)
	{
		
		if(busyn)
		{
			if(Flag_Ad==0)
			{
				ad_conv();
				Flag_Ad = 1;
			}
			else
			{
			//if(++Tnum>=100)
			{
			Tnum=0;
				Temp = read_ad();
				Flag_Ad = 0;
			}
			}
		}
		
		//--------------------------------------
		if(!key1)
		{
			if(++keynum1>=1)
			{
				keynum1 = 0;
				Flag_Key1 = 1;
			}
		}
		else if(!key2)
		{
			if(++keynum2>=1)
			{
				keynum2 = 0;
				Flag_Key2 = 1;
			}
		}
		else if(!key3)
		{
			if(++keynum3>=1)
			{
				keynum3 = 0;
				Flag_Key3 = 1;
			}
		}
		//----------------------------------------
		if(Flag_Key1 && key1)
		{
			RL1 = 0;
			RL2 = 0;
			Flag_Key1 = 0;
		}
		else if(Flag_Key2 && key2)
		{
			RL1 = 1;
			RL2 = 0;
			Flag_Key2 = 0;
		}
		else if(Flag_Key3 && key3)
		{
			RL1 = 0;
			RL2 = 1;
			Flag_Key3 = 0;
		}
		//----------------------------------------
		display(dbuf[ledn],ledn);
		dly++;
		if(dly>=10)
		{
			dly = 0;
			ledn ++;
			if(ledn	>= 4)
			{
				ledn = 0;
				if(++num>=50)
				{
					num=0;
					T2buf(Temp,dbuf);
				}
			}
		}
		delay();
	}
}
				
		
		
		
		
		
		
						
	

⌨️ 快捷键说明

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