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

📄 ad7890.c

📁 AD转换器AD7890驱动程序(KeilC51)
💻 C
字号:
#include "intrins.h"
#include "At89x51.h"
////////////////////////////////////
//晶体为11.0592MHz
///////////////////////////////////
#define CLK7219    P2_6
#define DIN7219    P2_5
#define CS7219     P2_7
////////////////////////////////////
/*#define SCLK7890    P1_0
#define DI7890  	P1_1
#define DO7890  	P1_1
#define TFS7890     P1_3
#define RFS7890     P1_4*/
#define SCLK7890    P1_1
#define DI7890  	P1_2
#define DO7890  	P1_2
#define TFS7890     P1_3
#define RFS7890     P1_4
////////////////////////////////////
void max7219(unsigned char ctr,unsigned char dat)
{
	char i;
	CS7219=0;
	_nop_();
	
	for(i=0;i<8;i++)
	{
		if(ctr&0x80)
			DIN7219=1;
		else
			DIN7219=0;
		CLK7219=1;
		ctr<<=1;
		CLK7219=0;
	}
	for(i=0;i<8;i++)
	{
		if(dat&0x80)
			DIN7219=1;
		else
			DIN7219=0;
		CLK7219=1;
		dat<<=1;
		CLK7219=0;
	}

	CS7219=1;
P1_0=~P1_0;
}
void Max7219Init()
{
///////////////////////////////////////////////////////
//7219初始化
	max7219(0x0C,0x01);    //shutdown register format 
	max7219(0x09,0xFF);    //decode mode code B 7-0
	max7219(0x0A,0x0F);    //intensity register format 
	max7219(0x0B,0x07);    //sacan limit register format 
	max7219(0x0F,0x00);    //display test register format 
}
unsigned int AD7890(unsigned char chan)
{
	unsigned char ctr;
	unsigned int result;
	char i;
	ctr=chan<<5;
	ctr&=0xE0;
	ctr|=0x10;
	TFS7890=0;
	for(i=0;i<8;i++)
	{
		SCLK7890=1;
		if(ctr&0x80)
			DI7890=1;
		else
			DI7890=0;
		SCLK7890=0;
		ctr<<=1;
	}
	TFS7890=1;
	for(i=0;i<20;i++)
		_nop_();
	result=0;
	DO7890=1;
	RFS7890=0;
	SCLK7890=1;
	for(i=0;i<16;i++)
	{	
		SCLK7890=0;
		if(DO7890)
			result|=0x01;
		SCLK7890=1;
		if(i!=15)
			result<<=1;
	}	
	RFS7890=1;
	result&=0xFFF;
P1_0=~P1_0;
	return result;
}
main()
{
	char i;
	int j;
	unsigned int addata;
	CLK7219=0;
	Max7219Init();
////////////////////////////////////////////////////////
 //display data
	max7219(0x01,0x01);   
	max7219(0x02,0x02);    
	max7219(0x03,0x03);     
	max7219(0x04,0x04);     
	max7219(0x05,0x05);     
	max7219(0x06,0x06);     
	max7219(0x07,0x07);     
	max7219(0x08,0x08);     
	while(1)
	{
		addata=AD7890(0x00);
		for(i=0;i<8;i++)
		{
			max7219(8-i,addata%10);    //转换成十进制显示
			addata/=10;
		}	
		P1_0=~P1_0;
		for(i=0;i<5;i++)
		for(j=0;j<31000;j++);

	}
}

⌨️ 快捷键说明

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