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

📄 text2.c

📁 本系统采用AT89C51控制MAX038产生波形的频率范围和类型
💻 C
字号:

/*   P2.5接A1,P2.4接A0,P1接数码管段选
P3.0 P3.1 P3.4 P3.3分别接片选*/

#include<reg52.h>
#include<absacc.h> 

#define uchar unsigned char
#define ushort unsigned short
	uchar inckeytemp;			// 增1按键标志位 
	uchar deckeytemp;			// 减1按键标志位 
	uchar temp;					// DA转换输入数据位 
	int g;
	int s;
	int b;
	int q;
	uchar disp_data[]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f};
	ushort disp_data1[]={1572,1862,1942,1802,1662,1792,1852,1782};
	char disp_q;				//显示数据千位
	char disp_b;				//显示数据百位
	char disp_s;				//显示数据十位
	char disp_g;				//显示数据个位
	char Red_data;
	char Yellow_data;
	char Green_data;
	sbit P3_0=P3^0;
	sbit P3_1=P3^1;
	sbit P3_3=P3^3;
	sbit P3_4=P3^4;
	sbit P3_6=P3^6;

	/*	初始化函数 */

void initial(void)		
{
	EA=1;
	EX0=1;
	IT0=1;
	P0=0xff;
	P1=0xff;
	P2=0xff;
	P3=0xff;
	disp_q=0;
	disp_b=0;
	disp_s=0;
	disp_g=0;
	temp=0x03;
	Red_data=0;
	Yellow_data=0xff;
	Green_data=0xff;
}

	
/* 延时函数 */

void delay(uchar t)            
{
	while(t--);
}

	/*	D/A转换函数 */

void DAconvertion(void)		
{
	P2_0=0;
	P3_6=0;
	P0=temp;
}

/*	波形选择函数 外中断0 */

void wchoose_int0(void)	interrupt 0 using 0		
{
	if(0==P2_5)
	{
		if(1==P2_4)
		{
			P2_4=0;					//方波
			Yellow_data=Red_data=1;
			Green_data=0;
			delay(0x10);
		}
		else if(0==P2_4)
	 	{
			 P2_5=1;				//正弦波
			 Yellow_data=Green_data=1;
			 Red_data=0;
			 delay(0x10);
		}
	}
	else if(1==P2_5)
	{	 
		 P2_5=0;
		 P2_4=1;					//三角波
		 Green_data=Red_data=1;
		 Yellow_data=0;
		 delay(0x10);
	 }
}


/* 显示数据处理函数 */

void display_data(void)     
{
	ushort temp_data;			//
	temp_data=disp_data1[temp];
	g=temp_data%10;
	s=(temp_data%100)/10;
	b=(temp_data%1000)/100;
	q=temp_data/1000;
	disp_g=disp_data[g];
	disp_s=disp_data[s];
	disp_b=disp_data[b];
	disp_q=disp_data[q];
}

	/*	显示函数 */

void display(void)		
{
	char i=0xff;
	while(i--)
	{
		P1=disp_g;			//送个位显示数据
		P3_0=0;
		delay(0x20);
		P3_0=1;
		P1=disp_s;			//十位
		P3_1=0;
		delay(0x20);
		P3_1=1;
		P1=disp_b;			//百位
		P3_4=0;
		delay(0x20);
		P3_4=1;
		P1=disp_q;			//千位
		P3_3=0;
		delay(0x20);
		P3_3=1;
		P2_1=Green_data;
		P2_2=Yellow_data;
		P2_3=Red_data;
	}
}

	/* 更新显示函数 */

void updata_disp(void)
{
	display_data();
	display();
}


/* 中心频率调节函数 */

void midfrequency(void)		
{	
	if(1==inckeytemp)
	{
		temp++;
		inckeytemp=0;
	}
	if(1==deckeytemp)
	{
		temp--;
		deckeytemp=0;
	}
}

	/*	键盘扫描函数 */

void keyscan(void)			
{
	if(0==P2_7)
	{
		delay(0x10);
		while(0==P2_7);
		{
			inckeytemp=1;			//增加键按下标志位
			midfrequency();
			DAconvertion();
		}
	}
	if(0==P2_6)
	{
		delay(0x10);
		while(0==P2_6);
		{
			deckeytemp=1;			//减键按下标志位
			midfrequency();
			DAconvertion();
		}
	}
	updata_disp();
}

void main(void) 
{

  	initial();
	DAconvertion();
	while(1)
	{
		keyscan();
	}
}

⌨️ 快捷键说明

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