www.pudn.com > dds.rar > dds.c


#include "reg51.h" 
#include"stdio.h" 
 
#define SELECT_LCD()	CS0=0; CS1=1; CS2=0 
#define SELECT_NONE()	CS0=1; CS1=1; CS2=1 
#define Set0(x) x=0 
#define Set1(x) x=1  
 
sbit CS0 = P2^5 ; 
sbit CS1 = P2^6 ; 
sbit CS2 = P2^7 ; 
 
sbit Lcd_RW = P2^4 ; 
sbit Lcd_RS = P2^3 ; 
 
 
sbit DDS_FQ=P1^0; 
sbit DDS_CLK=P1^1; 
sbit DDS_DATA=P1^2; 
 
unsigned long ddsseg[15]={1432,2147,2863,7158,14317,21475,71583,143166,214748,715829,1431656,2147484,42949672,57266231,71582788}; 
/**********************   * 20 * 30 * 40 *100 * 200 * 300 * 1 K * 2 K * * 3 K * 10 K * 20 K *  30 K  * 600 K  * 800  K *  1  M  *****/ 
/*****************************函数声明************************************/ 
void LcdWrite(unsigned char value , bit RS); 
unsigned char LcdRead(bit RS); 
void LcdWriteCmd(unsigned char value , unsigned char attrib); 
void LcdWriteData(unsigned char value); 
unsigned char LcdReadData(); 
void LcdInit(void); 
void LocateXY(char x , char y); 
void PutChar(char x , char y , char value); 
void PutStr(char x , char y , char* str); 
/*--------------------------------------------------------------------------*/ 
/*------------------------------通用延时程序--------------------------------*/ 
 
void delay(unsigned int time)     // time*0.5ms延时 
{ 
   unsigned int i,j; 
 
   for(j=0;j31) 
		len++; 
	 
	/* 显示字符串 */ 
	for (i=0;i>1; 
	} 
	for(t=0;t<8;t++)//控制状态 
	{ 
		DDS_CLK=0; 
		if(control&0x01) 
			Set1(DDS_DATA); 
		else 
			Set0(DDS_DATA); 
		DDS_CLK=1; 
		control=control>>1; 
	} 
	DDS_FQ=1; 
} 
 
void Init_DDS() 
{ 
	Send(0x01,0x00000000); 
    delay(10); 
} 
 
void main() 
{    
     unsigned char i=0; 
     Init_DDS(); 
 
     LcdInit();  
     PutStr(0,0,"DDS"); 
     delay(2000); 
	while(1) 
         {		    
	       if(i==16) 
		      i=0; 
		   	Send(0x01,ddsseg[i]); 
               switch(i) 
		      { 
		           case 0: 
			               PutStr(0,0,"DDS    +10HZ"); 
				           PutStr(0,1,"    20   HZ"); 
				           break; 
		           case 1: 
					 
				           PutStr(0,0,"DDS    +10HZ"); 
				           PutStr(0,1,"    30   HZ"); 
				            break; 
			       case 2: 
	    		           PutStr(0,0,"DDS    +10HZ"); 
				           PutStr(0,1,"    40   HZ"); 
			               break; 
		           case 3: 
			               PutStr(0,0,"DDS   +100HZ"); 
		        		   PutStr(0,1,"   100   HZ");					 
				           break; 
			       case 4: 
			               PutStr(0,0,"DDS   +100HZ"); 
				           PutStr(0,1,"   200   HZ");					 
			               break; 
			       case 5: 
			               PutStr(0,0,"DDS   +100HZ"); 
				           PutStr(0,1,"   300   HZ");					 
			               break; 
			       case 6: 
			               PutStr(0,0,"DDS    +1KHZ"); 
			   	           PutStr(0,1,"    1   KHZ");					 
			               break; 
			       case 7: 
	           		       PutStr(0,0,"DDS    +1KHZ"); 
				           PutStr(0,1,"    2   KHZ");					 
				           break;  
		           case 8: 
			               PutStr(0,0,"DDS    +1KHZ"); 
				           PutStr(0,1,"    3   KHZ");					 
			               break; 
			       case 9: 
			               PutStr(0,0,"DDS   +10KHZ"); 
				           PutStr(0,1,"    10  KHZ");					 
				           break; 
			       case 10: 
			               PutStr(0,0,"DDS   +10KHZ"); 
			               PutStr(0,1,"    20  KHZ");					 
			               break; 
	   	           case 11: 
			               PutStr(0,0,"DDS   +10KHZ"); 
			       	       PutStr(0,1,"    30  KHZ");					 
		  	               break; 
			       case 12: 
			               PutStr(0,0,"DDS  +200KHZ"); 
				           PutStr(0,1,"   600  KHZ");					 
			               break; 
		 	       case 13: 
			               PutStr(0,0,"DDS  +200KHZ"); 
				           PutStr(0,1,"   800  KHZ");					 
			               break; 
			       case 14: 
		                   PutStr(0,0,"DDS  +200KHZ"); 
				           PutStr(0,1,"   1    MHZ");					 
			               break; 
			       default: break; 
 			    }		 
			i++; 
			delay(6000); 
	   } 
 
 }