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

📄 main.c

📁 15寸
💻 C
字号:
#include <at89x52.h>
#include <string.h>
#include "lcd.h"

#define address 0x0aa
#define power 0x0ff
#define menu 0x0fa
#define up 0x0fd
#define enter 0x0fb
#define down 0x0fc

void clsconnect_key(void);
void power_key(void);
void manu_key(void);
void up_key(void);
void down_key(void);
void enter_key(void);

void init(void);

bit interruptFlag,onoroff_symbol;
bit osd, subosd;

unsigned char i = 1;
unsigned char dat[8]={50,50,50,50,50,50,50,50,};

unsigned char command,recommand;
unsigned char s[16];
unsigned char *chardat;
unsigned char *submenu[]={"voice","channel","bright","contrast","red","green","blue"};
extern void num2string(unsigned char number);
extern void lcd_string16(unsigned char position,unsigned char *str);

void main(void)
{
	lcd_init();
	lcd_string16(0,"STONESONIC");
	init();

	while(1)
	{
		if(interruptFlag==1)
		{
			interruptFlag=0;
			if(SM2)
			{
				if(command==address)
				{
					SM2=0;
					recommand = address;
					lcd_cls();
					lcd_string16(0,"485 connect");
					
					SBUF = recommand;
					while(~TI){}
					TI = 0;
					RI = 0;					
					
					EA = 1;
					REN = 1;
				}			
				else
				{
					lcd_cls();
					lcd_string16(0,"485 disconnect");
					TI = 0;
					RI = 0;
					
					EA = 1;
					REN = 1;
				}
			}
			else
			{
				if(RB8)
				{
					if(command == address)
					{
						clsconnect_key();
						SBUF = recommand;
						while(~TI){}
					}
					REN= 1;
					TI = 0;
					RI = 0;
					EA = 1;

				}
				else  
				{
					switch(command)
					{
						case power :
						power_key()	;break;				
						case menu :
						manu_key()	;break;				
						case up :
						up_key()	;break; 				
						case down : 
						down_key()	;break;				
						case enter :
						enter_key()	;break; 						
					}						
				SBUF = recommand;
				while(~TI){}
				TI = 0;
				RI = 0;
	
				EA = 1;
				REN = 1;
				}

			}
		}		
	}
}

void serial(void) interrupt 4 using 1
{
	EA=0;
	
	REN=0;

	command = SBUF;
	interruptFlag = 1;
	RI=0;
}

void clsconnect_key()
{
	SM2 = 1;
	lcd_cls();
	lcd_string16(0,"485 disconnect");
	recommand = address;

}

void power_key()
{
	onoroff_symbol = ~onoroff_symbol;
	lcd_cls();
	if(onoroff_symbol)lcd_string16(0,"POWER_ON");
	else
	{
		lcd_string16(0,"POWER_OFF");
	}
	recommand = onoroff_symbol | 0x80;
}

void manu_key()
{
	subosd=0;
	osd=~osd;
	lcd_cls();
	if(osd)lcd_string16(0,"OSD_ON");
	else
	{
		lcd_string16(0,"OSD_OFF");
	}
	recommand = osd |	0x0c0;	
}

void up_key()
{
	if(osd==1)
	{

		if(subosd==0)
		{
			i++;
			lcd_cls();

			if(i>7)i=0;
			recommand = dat[i];			

			num2string(dat[i]);
			strcat(s,submenu[i]);						   
			
			if(i==7)
			{
				lcd_string16(0,"OSD_ON");
				subosd=0;
			}
			else 
			{
				lcd_string16(0,s);
			}
		}	
		

		
		else if(subosd==1)
		{
			dat[i]++;
			
			if(dat[i]>100)dat[i]=0;
			recommand = dat[i];
			

			num2string(dat[i]);
			lcd_string16(0,s);
		}
	}
}

void down_key()
{
	if(osd==1)
	{

		if(subosd==0)
		{
			i--;
			lcd_cls();

			if(i<0) i = 0;
			recommand = dat[i];			

			num2string(dat[i]);
			strcat(s,submenu[i]);						   
			
			if(i==7)
			{
				lcd_string16(0,"OSD_ON");
				subosd=0;
			}
			else 
			{
				lcd_string16(0,s);
			}
		}
		
		else if(subosd==1)
		{
			dat[i]--;
			
			if(dat[i]<0)dat[i]=100;
			recommand = dat[i];
			EA=1;

			num2string(dat[i]);
			lcd_string16(0,s);
		}
	}
}

void enter_key()
{
	if(osd==1)
	{
		subosd=~subosd;
		recommand=0x0e0|subosd ;
	}
}

void init()
{
	interruptFlag=0;
	TI = 0;
	osd = 0;
	subosd = 0;
	
	SCON  = 0x0f0;                      /* mode 1: 8-bit UART, enable receiver   */
    TMOD  = 0x20;                      /* timer 1 mode 2: 8-Bit reload          */
	TH1   = 0x0f3;                      /* reload value 2400 baud                */
    TL1	  = 0x0f3;
	PCON  = 0x00;
	TR1   = 1;                         /* timer 1 run                           */
	TB8   = 1;
	ES    = 1;
	EA	  = 1;	
}

⌨️ 快捷键说明

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