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

📄 main.c

📁 该设计采用ADC0832实现了四种波形的信号发生器的设计
💻 C
字号:
#include<reg51.h>
#include<LCD12864.h>
#include<wave.h>

#define uchar unsigned char
#define uint unsigned int

#define WAVE1 1
#define WAVE2 2
#define WAVE3 3
#define WAVE4 4

sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7;


uchar add=0;
uint DLY;

uchar ValueHZ[4]={0,0,0,0};

void IntKey()interrupt 0 using 1  //外部中断服务程序
{
	EA=0;
	if(k1==0)WaveSelect=WAVE1;
	if(k2==0)WaveSelect=WAVE2;
	if(k3==0)WaveSelect=WAVE3;
	if(k4==0)WaveSelect=WAVE4;
	if(k5==0){
		if(ValueHZ[add]==0)ValueHZ[add]=0;
		else ValueHZ[add]--;
		SetHZ=!SetHZ;
	}
	if(k6==0)StartOut=!StartOut;
	if(k7==0){
		if(ValueHZ[add]==9)ValueHZ[add]=9;
		else ValueHZ[add]++;
		SetHZ=!SetHZ;
	}
	if(k8==0){
		if(add!=3)add++;
		else add=0;
	}
	EA=1;
}

void HZ_to_DLY(void){		//计算延时常量函数
	float value;
	if((ValueHZ[0]!=0)||(ValueHZ[1]!=0)||(ValueHZ[2]!=0)){
		value=ValueHZ[0]*100+ValueHZ[1]*10+ValueHZ[2]*1;
		value=1000000/value;
		value/=3;
		if(WaveSelect==WAVE1)DLY=(unsigned int)value/2;
		if(WaveSelect==WAVE2)DLY=(unsigned int)value/250;
		if(WaveSelect==WAVE3)DLY=(unsigned int)value/500;
		if(WaveSelect==WAVE4)DLY=(unsigned int)value/170;
	}
	else DLY=0;
}

main(){
	uint i; 	

	EA=1;
	EX0=1;
	IT0=1;		  //开中断

	Init_12864();
	for(i=500;i>0;i--){
		delay2us(100);
	}

	DisControl();
			 
	while(1){
		if(WaveSelect==WAVE1)Wave1();
		if(WaveSelect==WAVE2)Wave2();
		if(WaveSelect==WAVE3)Wave3();
		if(WaveSelect==WAVE4)Wave4();

		maths(ValueHZ[0],5,0x04);
		maths(ValueHZ[1],13,0x04);
		maths(ValueHZ[2],21,0x04);
		Pagefirst(0x05);
		Linefirst(29);
		Wdata(0x04);
		maths(ValueHZ[3],31,0x04);

		old_WaveSelect=WaveSelect;
		old_SetHZ=SetHZ;

		HZ_to_DLY(); //得到延时常量

		while(1){
			if(old_WaveSelect!=WaveSelect){
				StartOut=0;
				Direction=0;
				break;
			}

			if(old_SetHZ!=SetHZ)break;

			if(StartOut==1){
				if(WaveSelect==WAVE1)WaveOut1(DLY);		 //0HZ-1MHZ
				if(WaveSelect==WAVE2)WaveOut2(DLY);		 //0HZ-1MHZ
				if(WaveSelect==WAVE3)WaveOut3(DLY);		 //0HZ-666HZ
				if(WaveSelect==WAVE4)WaveOut4(DLY);		 //0HZ-588HZ
			}
		}
	}
}

⌨️ 快捷键说明

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