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

📄 main.c

📁 89S51单片机并行驱动AD9851的程序
💻 C
字号:
#include "regx51.h"
#include "AD9851.h"


//typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong; 	
				 
unsigned char test0[5]={0x01,0x0F,0xCD,0x6E,0x9E};	//10  MHz

unsigned char code KeyCode[]=
				{0xe7,0xd7,0xdb,0xdd,0xb7,0xbb,0xbd ,0x77,
				 0x7b,0x7d,0x7e,0xbe,0xde,0xee,0xed,0xeb,      //键盘编码
				};

ulong Frequency;

void Delay1ms(uint t)
{
	uchar x;
	for(x=0;x<120;x++)
		for( ;t>0;t--);
}

unsigned char GetKey()              //键盘扫描
{
	unsigned char temp1, temp2, key, i;
	P3=0xF0;

	if(P3==0xF0) return 0xFF;         //没有按键返回0xFF
	Delay1ms(15);                     //消除抖动
	if(P3==0xF0) return 0xFF;
	temp1=P3;
	P3=0x0F;
	temp2=P3;
	key=temp1|temp2;
	for(i=0; i<16; i++)
	if(key==KeyCode[i])
	{	
		P3=0xF0;
		while(P3!=0xF0);
		return i;
	}
          					//返回对应的按键值
	return 0xFF;            //没有相应编码返回0xFF
}


/*
uchar GetKey()
{
	P3 = 0xF0;
	tmp = P3&0xF0;
	if(tmp != 0xF0)
	{
		Delay(30);
		if(P3 == tmp)
		{
			P3 = 0xF;
			tmp2 = P3&0xF;

			tmp = tmp | tmp2;
			return tmp;
			
		}
	}
}
	  */




void PerformKey()
{
	uchar KeyValue;
	float delta;

	KeyValue = GetKey();
	switch(KeyValue)
	{
		case 0 :
			delta = -0.1;
			break;

		case 1 :
			delta = 0.1;	  
			break;

		case 2 :
			delta = -1;
			break;

		case 3 : 
			delta = 1;
			break;
		
		case 4 : 
			delta = -10;
			break;

		case 5 :  
			delta = 10;
			break;
		
		case 6 :	  
			delta = -100;
			break;

		case 7 :	   
			delta = 100;
			break;

		case 8 :	   
			delta = -1000;
			break;

		case 9 :	   
			delta = 1000;
			break;

		case 10 :	   
			delta = -10000;
			break;

		case 11 :	   
			delta = 10000;
			break;

		case 12 :	   
			delta = -100000;
			break;

		case 13 :	   
			delta = 100000;
			break;

		case 14 :	   
			delta = -1000000;
			break;

		case 15 :	   
			delta = 1000000;
			break;

		default:
			break;
	}	   
	if(KeyValue != 0xFF)
	{
		Frequency = Frequency + delta;
		SendFreq( Frequency );
	}
}

void SetAD9851(unsigned char SetByte[])

{
   CLK_DDS=0;
   P0 = SetByte[0];
   CLK_DDS = 1;
   CLK_DDS = 0;		
   P0 = SetByte[1];
   CLK_DDS = 1;
   CLK_DDS = 0;
   P0 = SetByte[2];
   CLK_DDS = 1;
   CLK_DDS = 0;
   P0 = SetByte[3];
   CLK_DDS = 1;
   CLK_DDS = 0;
   P0 = SetByte[4];
   CLK_DDS = 1;
   CLK_DDS = 0;
     UPDATE=0;
     UPDATE=1;
}

void main()
{
	Frequency = 1000;
	InitDDSport();
	SendDefault();  //初始输出1KHz
//	SetAD9851(test0);
	while(1)
	{
        Delay1ms(20);	 
		PerformKey();
	}

}

⌨️ 快捷键说明

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