📄 main.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 + -