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

📄 main.c

📁 使用单片机控制FPGA完成直接数字频率合成(DDFS),采用Keil C51
💻 C
📖 第 1 页 / 共 2 页
字号:
#include"includes.h"
unsigned char code bo[]={0x10,0x60,0x01,0xE6,0x00,0xF8,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x18,0x08,0x00,
                         0x04,0x04,0xFF,0x40,0x30,0x8F,0x80,0x41,0x26,0x18,0x18,0x26,0x61,0xC0,0x40,0x00};//波

unsigned char code xing[]={0x40,0x42,0x42,0xFE,0x42,0x42,0xFE,0x42,0x42,0x40,0x10,0x88,0xE4,0x47,0x02,0x00,
                           0x80,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x84,0x42,0x21,0x10,0x08,0x0E,0x04,0x00};//形

unsigned char code xuan[]={0x40,0x40,0x42,0xCC,0x00,0x50,0x4E,0xC8,0x48,0x7F,0xC8,0x48,0x48,0x40,0x00,0x00,
                           0x00,0x40,0x20,0x1F,0x20,0x48,0x46,0x41,0x40,0x40,0x47,0x48,0x48,0x4E,0x40,0x00};//选

unsigned char code ze[]={0x08,0x08,0xFF,0x88,0x48,0x08,0x42,0x46,0x2A,0xD2,0x2A,0x46,0x42,0x80,0x80,0x00,
                         0x42,0x81,0x7F,0x00,0x00,0x08,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x08,0x08,0x00};//择

unsigned char code zheng[]={0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,
                            0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00};//正

unsigned char code xian[]={0x02,0xF2,0x12,0x12,0x3E,0x00,0x04,0x84,0x44,0xB5,0x86,0x84,0xE4,0x44,0x04,0x00,
                           0x01,0x23,0x41,0x81,0x7F,0x00,0x21,0x71,0x29,0x25,0x22,0x21,0x28,0x70,0x20,0x00};//弦

unsigned char code fang[]={0x08,0x08,0x08,0x08,0x08,0x08,0xF9,0x4A,0x4C,0x48,0x48,0xC8,0x08,0x08,0x08,0x00,
                           0x40,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x20,0x40,0x40,0x3F,0x00,0x00,0x00,0x00};//方

unsigned char code san[]={0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,
                          0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00};//三

unsigned char code jiao[]={0x00,0x40,0x20,0xF0,0x98,0x97,0x92,0x92,0xF2,0x92,0x9A,0x96,0x92,0xF0,0x00,0x00,
                           0x00,0x80,0x60,0x1F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x44,0x84,0x7F,0x00,0x00};//角

unsigned char code dang[]={0x00,0x00,0x40,0x42,0x5C,0x48,0x40,0x40,0x7F,0x40,0x50,0x4E,0x44,0xC0,0x00,0x00,
                           0x00,0x00,0x20,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x7F,0x00,0x00};//当

unsigned char code qian[]={0x08,0x08,0xE8,0xA8,0xA9,0xAE,0xEA,0x08,0x08,0xC8,0x0C,0x0B,0xEA,0x08,0x08,0x00,
                           0x00,0x00,0x7F,0x04,0x24,0x44,0x3F,0x00,0x00,0x1F,0x40,0x80,0x7F,0x00,0x00,0x00};//前

unsigned char code pin[]={0x20,0x3C,0x20,0x20,0xBF,0x24,0x24,0x00,0xF2,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
                          0x44,0x43,0x20,0x10,0x0B,0x04,0x43,0x40,0x27,0x18,0x07,0x08,0x10,0x27,0x60,0x00};//频

unsigned char code lv[]={0x00,0x0C,0x14,0xA4,0x04,0x64,0x35,0xAE,0x64,0x24,0x14,0xA4,0x14,0x04,0x04,0x00,
                         0x08,0x0A,0x09,0x08,0x08,0x0A,0x0B,0xFE,0x0A,0x0B,0x0C,0x08,0x09,0x0A,0x08,0x00};//率

unsigned char code kong[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

unsigned char code  mao[]={0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};//:

unsigned char code  K[]={0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00};//K

unsigned char code  H[]={0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20};//H

unsigned char code  z[]={0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00};//z

unsigned char code  one[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};//

unsigned char code  two[]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00};//

unsigned char code  three[]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00};//

unsigned char code  four[]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};//

unsigned char code  five[]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};//

unsigned char code  six[]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};//

unsigned char code  seven[]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00};//

unsigned char code  eight[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};//

unsigned char code  nine[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};//

unsigned char code  zero[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};//

unsigned char code  point[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00};

unsigned char code  gang[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80};//_

unsigned char wav[256];		   //波形数据
unsigned char addr[256];	   //地址数据
unsigned long K_value;              //K值
unsigned char P_value;              //P值
unsigned char key;
unsigned char flag;              //波形、频率设定标志位
unsigned char sur_flag;          //确定标志位
unsigned char wav_flag;          //波形选择标志位
unsigned char sao_flag;          //扫频输出
unsigned char fre_Sh_0,fre_Sh_1,fre_Sh_2,fre_Sh_3,fre_Sh_4,fre_Sh_5,fre_Sh_6,fre_Sh_7,fre_Sh_8;//显示各位数值
unsigned char Sh_0,Sh_1,Sh_2,Sh_3,Sh_4,Sh_5,Sh_6,Sh_7,Sh_8;      //显示各位标志

float freq_value;        //设定频率值


void main()	            
{

     SYSCLK_Init();
	 PORT_Init();

	 lcd_init();
     mydelay(10);
	 lcd_clr();


	 clr=0;
	 ena=0;
	 wren=0;
	 da=0;
	 clk=0;
	 key=0;
	 flag=0;
	 sur_flag=0;
	 wav_flag=1;
	 sao_flag=0;

	 fre_Sh_0=fre_Sh_1=fre_Sh_2=fre_Sh_3=fre_Sh_4=fre_Sh_5=fre_Sh_6=fre_Sh_7=fre_Sh_8=0;
	 Sh_0=Sh_1=Sh_2=Sh_3=Sh_4=Sh_5=Sh_6=Sh_7=Sh_8=0;

	 K_value=13107200;
	 P_value=0;
	 freq_value=0;


	 lcd_drawhanzimo(0,0,bo);
	 lcd_drawhanzimo(16,0,xing);
	 lcd_drawhanzimo(32,0,xuan);
	 lcd_drawhanzimo(48,0,ze);
	 lcd_drawnumber(64,0,mao);
	 lcd_drawhanzimo(48,0,zheng);
	 lcd_drawhanzimo(48,0,xian);
	 lcd_drawhanzimo(48,0,bo);				 //第一行显示:波形选择:    波


	 lcd_drawhanzimo(0,2,dang);
	 lcd_drawhanzimo(16,2,qian);
	 lcd_drawhanzimo(32,2,pin);
	 lcd_drawhanzimo(48,2,lv);
	 lcd_drawnumber(64,2,mao);                //第二行显示:当前频率:


	 lcd_drawnumber(0,4,zero);
	 lcd_drawnumber(8,4,zero);
	 lcd_drawnumber(16,4,zero);
	 lcd_drawnumber(24,4,zero);
	 lcd_drawnumber(32,4,point);
	 lcd_drawnumber(40,4,zero);
	 lcd_drawnumber(48,4,zero);
	 lcd_drawnumber(56,4,zero);
	 lcd_drawnumber(64,4,zero);
	 lcd_drawnumber(72,4,zero);
	 lcd_drawnumber(80,4,K);
	 lcd_drawnumber(88,4,H);
	 lcd_drawnumber(96,4,z);			     //第三行显示:0000.00000KHz

	  ena=0;
	  wtite_clr();
	  wav_count(wav_flag);
	  write_wav_addr();
	  write_fre();
	  mydelay(100);
	  ena=1;
	 while(1);
/*	 {
	     key=kbscan();
		 ans_key(key);
		 set_num(key);
		 if(sur_flag)
		 {
		    ena=0;
	        wtite_clr();
	        wav_count(wav_flag);
	        write_wav_addr();
		    write_fre();
		    mydelay(100);
		    ena=1;

		 }
		 if(sao_flag==1)
		 {
		     saom();
		 }
	 } */





	

}

void ans_key(unsigned char readkey)
{

	 if(readkey!=0)
	 {
	    if(readkey==0x18)	                             //波形选择按键
		{
		 	flag=1;
		    
		}
		else if(readkey==0x28)	                        //正弦波
		{
		     lcd_drawhanzimo(48,0,zheng);
	         lcd_drawhanzimo(48,0,xian);
		     wav_flag=0;
		}
		else if(readkey==0x48)						    //方波
		{	
		     lcd_drawhanzimo(48,0,fang);
	         lcd_drawhanzimo(48,0,kong);
		     wav_flag=1;
		}
		else if(readkey==0x88)						    //三角波
		{
		     lcd_drawhanzimo(48,0,san);

⌨️ 快捷键说明

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