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

📄 简易信号发生器.c

📁 简单的信号发生器设计
💻 C
字号:
#include<at89x52.h>
#define uchar unsigned char
#define uint unsigned int
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P37=P3^7;
uchar code sin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5
					,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5
					,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd
					,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda
					,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99
					,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51
					,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16
					,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00
					,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15
					,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e 
					,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 };
uchar Buff[8]={0};
uchar code comcode[8] = {0x7f,0xbf,0xdf,0xff,0xf7,0xfb,0xfd,0xfe};
unsigned char LED[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uchar n=0,x=0,a=0,b=0;
uint m=10;
//
//
void Delayms(uchar n)
{
	uchar i,j;
	for(i=0;i<n;i++)
	for(j=0;j<10;j++);
}
//
//
void sys_Init()
{
	TMOD = 0x15;
	
	TH0 = 0xfe;
	TL0 = 0x98;

	TR0 = 1;
	TR1 = 1;

	ET0 = 1;
	ET1 = 1;
	

	EA = 1;
}
//
//
void Display()			//显示函数
{
	uchar i;
	for(i=0;i<8;i++)
	{
		P0=0x00;
		P0=LED[Buff[7-i]];	  
		P2=comcode[i];
		Delayms(6);
	}
}
//
//
void Buchang()
{
	if(P32==0)
	{
		while(P32==0);
		{a++;if(a>3) a=0;}
	}
	switch(a)
	{
		case 0: n=10;break;
		case 1: n=20;break;
		case 2: n=50;break;
		case 3: n=100;break;
	}
}
//
//
void Pinglv()
{
	if(P33==0)
	{
		while(P33==0);
		switch(a)
		{
			case 0: m=m+10;break;
			case 1: m=m+20;break;
			case 2: m=m+50;break;
			case 3: m=m+100;break;
		}
	}
	if(P34==0)
	{
		while(P34==0);
		switch(a)
		{
			case 0: m=m-10;break;
			case 1: m=m-20;break;
			case 2: m=m-50;break;
			case 3: m=m-100;break;
		}
	}		
}
//
//
void Boxing()
{
	if(P35==0)
	{
		while(P35==0);
		b++;
		if(b>2)
		b=0;	
	}
	if(b==0)
	P1=sin[x];
	if(b==1)
	{
	   if(x<128)
	   P1=0x00;
	   else
	   P1=0xff;
	}
	if(b==2)
	{
		if(x<128)
		P1=x;
		else
		P1=x-128;	
	}	
}
//
//
void Huancun()
{
	Buff[0]=m/1000;
	Buff[1]=m%1000/100;
	Buff[2]=m%100/10;
	Buff[3]=m%10;
	Buff[5]=n/100;
	Buff[6]=n%100/10;
	Buff[7]=n%10;
}
//
//
void main()
{
	  sys_Init();
	  P36=0;
	  P37=0;
	  while(1)
	  {
	  		 Delayms(n);
			 Huancun();
			 Boxing();
			 Pinglv();
			 Buchang();
			 Display();
	  }
}
//
//
void Timer0() interrupt 1			  //定时器1
{
	TH0 = (65535-1000000/256/m)/256;
	TL0 = (65535-1000000/256/m)%256;
	x++;
	if(x>255)
	x=0;
}

⌨️ 快捷键说明

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