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

📄 9851.c

📁 DDS集成芯片AD9851的应用
💻 C
字号:
#include<reg52.h>
#include<INTRINS.H>
#include "viic_c51.h"
#include "zlg7290.h"
#include "9851.H"

#define CH 0xA4

typedef unsigned char BYTE;

BYTE count=0;
code BYTE disp_buf[41][3]={{0x00,0x86,0x1f},{0x01,0x86,0x1f},{0x02,0x86,0x1f},{0x03,0x86,0x1f},{0x04,0x86,0x1f},
					       {0x05,0x86,0x1f},{0x06,0x86,0x1f},{0x07,0x86,0x1f},{0x08,0x86,0x1f},{0x09,0x86,0x1f},
						   {0x00,0x87,0x1f},{0x01,0x87,0x1f},{0x02,0x87,0x1f},{0x03,0x87,0x1f},{0x04,0x87,0x1f},
						   {0x05,0x87,0x1f},{0x06,0x87,0x1f},{0x07,0x87,0x1f},{0x08,0x87,0x1f},{0x09,0x87,0x1f},
						   {0x00,0x88,0x1f},{0x01,0x88,0x1f},{0x02,0x88,0x1f},{0x03,0x88,0x1f},{0x04,0x88,0x1f},
						   {0x05,0x88,0x1f},{0x06,0x88,0x1f},{0x07,0x88,0x1f},{0x08,0x88,0x1f},{0x09,0x88,0x1f},
						   {0x00,0x89,0x1f},{0x01,0x89,0x1f},{0x02,0x89,0x1f},{0x03,0x89,0x1f},{0x04,0x89,0x1f},
						   {0x05,0x89,0x1f},{0x06,0x89,0x1f},{0x07,0x89,0x1f},{0x08,0x89,0x1f},{0x09,0x89,0x1f},
						   {0x00,0x80,0x01}
						  };
code BYTE Frequency[41][5]={{0,0,0x0D,0x1B,0x71},{0,0,0x0D,0x53,0x5E},{0,0,0x0D,0x8B,0x4B},{0,0,0x0D,0xC3,0x37},{0,0,0x0D,0xFB,0x24},
							{0,0,0x0E,0x33,0x10},{0,0,0x0E,0x6A,0xFD},{0,0,0x0E,0xA2,0xE9},{0,0,0x0E,0xDA,0xD6},{0,0,0x0F,0x12,0xC2},
							{0,0,0x0F,0x4A,0xAF},{0,0,0x0F,0x82,0x9C},{0,0,0x0F,0xBA,0x88},{0,0,0x0F,0xF2,0x75},{0,0,0x10,0x2A,0x61},
							{0,0,0x10,0x62,0x4E},{0,0,0x10,0x9A,0x3A},{0,0,0x10,0xD2,0x27},{0,0,0x11,0x0A,0x13},{0,0,0x11,0x42,0x00},
							{0,0,0x11,0x79,0xED},{0,0,0x11,0xB1,0xD9},{0,0,0x11,0xE9,0xC6},{0,0,0x12,0x21,0xB2},{0,0,0x12,0x59,0x9F},
							{0,0,0x12,0x91,0x8B},{0,0,0x12,0xC9,0x78},{0,0,0x13,0x01,0x65},{0,0,0x13,0x39,0x51},{0,0,0x13,0x71,0x3E},
							{0,0,0x13,0xA9,0x2A},{0,0,0x13,0xE1,0x17},{0,0,0x14,0x19,0x03},{0,0,0x14,0x50,0xF0},{0,0,0x14,0x88,0xDC},
							{0,0,0x14,0xC0,0xC9},{0,0,0x14,0xF8,0xB6},{0,0,0x15,0xC0,0xA2},{0,0,0x15,0x68,0x8F},{0,0,0x15,0xA0,0x7B},
							{0,0,0x15,0xD8,0x68}
						   };

void AD9851RST(void)
{
	BYTE i=10;
	WCLK=0;
	RESET=1;
    while(i--){
		WCLK=1;
		_nop_();
		WCLK=0;
	}
	WCLK=1;
	i=10;
	RESET=0;
	WCLK=0;
	while(i--){
		WCLK=1;
		_nop_();
		WCLK=0;
	}
}

void init()
{
	TMOD=0x01;
	TH0=0x0b;
	TL0=0xdc;
	EA=1;
	ET0=1;
	RESET=1;
    delayMS(100);
	RESET=0;
	delayMS(100);
	RST7290=1;
	delayMS(100);
	RST7290=0;
	delayMS(100);
	RST7290=1;
}
void KeyTime(void) interrupt 1
{
	TH0=0x0b;
	TL0=0xdc;
	if (count < 100){
		count++;
	}
}
void bell(BYTE i,BYTE j)
{
   BELL=0;
   delayMS(i);
   delayMS(i);
   delayMS(i);
   BELL=1;
   delayMS(j);
   delayMS(j);
   delayMS(j);
}
void up_freq(BYTE ch)
{
	FQUD=0;
	WCLK=0;
	P0=Frequency[ch][0];
	WCLK=1;
	_nop_();
	WCLK=0;
	P0=Frequency[ch][1];
	WCLK=1;
	_nop_();
	WCLK=0;
	P0=Frequency[ch][2];
	WCLK=1;
	_nop_();
	WCLK=0;
	P0=Frequency[ch][3];
	WCLK=1;
	_nop_();
	WCLK=0;
	P0=Frequency[ch][4];
	WCLK=1;
	_nop_();
	WCLK=0;
	_nop_();
	FQUD=1;
}
void main()
{
	BYTE ch,ch_temp,i;
	init();
	i=IRcvStr(CH,0x00,&ch,1);
	ch_temp=ch;
	up_freq(ch);
	delayMS(255);
	delayMS(255);
	for(i=0;i<3;i++){
		ZLG7290_SendBuf(disp_buf[ch],3);
		delayMS(255);
		delayMS(255);
		delayMS(255);
		delayMS(255);
		delayMS(255);
	}
	while(1){
		if(UP==0||DOWN==0){
			delayMS(255);
			if(UP==0){
				TR0=0;
				if(++ch_temp>40)
					ch_temp=0;
				bell(100,0);
				delayMS(255);
			    delayMS(255);
				delayMS(255);
				count=0;
				TH0=0x0b;
				TL0=0xdc;
				TR0=1;
			}
			if(DOWN==0){
				TR0=0;
				if(--ch_temp>40)
					ch_temp=40;
				bell(100,0);

				delayMS(255);
			    delayMS(255);
				delayMS(255);
				count=0;
				TH0=0x0b;
				TL0=0xdc;
				TR0=1;
			}
		}
		if(ch!=ch_temp)
			ZLG7290_SendBuf(disp_buf[ch_temp],3);
		if(count==100){
			ch=ch_temp;
			ISendStr(CH,0x00,&ch,1);
			bell(100,50);
			bell(50,50);
			bell(100,50);
			count=0;
			TR0=0;
			count=0;
			up_freq(ch);
		}
	}
}

⌨️ 快捷键说明

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