📄 term.c
字号:
if((hz[0]>0xa0)&&(hz[1]>0xa0))
Write_HZ(x,y,hz[0],hz[1]);
x+=2;
strhz++;
}
}
void Write_StringChar(unsigned int x,unsigned int y,char *str)
{
while(1)
{
if(*str=='\0')break;
Write_Char(x++,y,*str++);
}
}
void Write_BackG(void)
{
draw_table();
}
void Write_Message(void)
{
Write_StringHZ(10,200,"啊");
}
void clr_scr()
{
unsigned int i=0;
en_lcd();
sed1335_write(csrdir_right,null,1);
sed1335_write(csrw,cur_set_ini1,2);
IO1SET=A0;
write_byte(mwrite);
for(i=0;i<9600;i++)
{
IO1CLR=A0;
write_byte(0x00);
}
}
void second_scr()
{
uint16 i,j;
en_lcd();
sed1335_write(csrdir_right,null,1);
sed1335_write(csrw,cur_set_ini2,2);
IO1SET=A0;
write_byte(mwrite);
IO1CLR=A0;
for(i=0;i<240;i++)
{
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=0;j<10;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=10;j<20;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=20;j<30;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=30;j<40;j++)
write_byte(~Row[i].Xbyte[j]);
}
}
void full_scr()
{
uint16 i,j;
en_lcd();
sed1335_write(csrdir_right,null,1);
sed1335_write(csrw,cur_set_ini1,2);
IO1SET=A0;
write_byte(mwrite);
IO1CLR=A0;
for(i=0;i<240;i++)
{
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=0;j<8;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=8;j<16;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=16;j<24;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=24;j<32;j++)
write_byte(~Row[i].Xbyte[j]);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=32;j<40;j++)
write_byte(~Row[i].Xbyte[j]);
}
}
void fill_bg(unsigned char background)
{
uint16 i,j;
en_lcd();
sed1335_write(csrdir_right,null,1);
sed1335_write(csrw,cur_set_ini2,2);
IO1SET=A0;
write_byte(mwrite);
IO1CLR=A0;
for(i=0;i<240;i++)
{
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=0;j<10;j++)
write_byte(background);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=10;j<20;j++)
write_byte(background);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=20;j<30;j++)
write_byte(background);
while((IO0PIN&LP)==0);
while((IO0PIN&LP)!=0);
for(j=30;j<40;j++)
write_byte(background);
}
}
void clear_buf()
{
uint16 i,j;
for(i=0;i<240;i++)
{
for(j=0;j<40;j++)
Row[i].Xbyte[j]=0;
}
}
/*******************************************************************
* 显示系统初始化 *
********************************************************************/
void lcd_ini()
{
IO0CLR=LCDRST;
DelayNS(10);
IO0SET=LCDRST;
DelayNS(10);
sed1335_write(system_set,system_set_ini,8);
sed1335_write(scroll,scroll_ini,9);
sed1335_write(scrform,scrform_ini,2);
sed1335_write(hdot_scr,hdot_scr_ini,2);
sed1335_write(ovlay,ovlay_ini,1);
sed1335_write(csrw,cur_set_ini1,2);
sed1335_write(csrdir_right,null,1);
clr_scr();
sed1335_write(disp_on,disp_on_ini,1);
sed1335_write(csrw,cur_set_ini1,2);
}
void reset()
{
buffadd=0; //SRAM缓冲区指针
csradd[0]=0; csradd[1]=0;
disp_mode=0;
lcd_ini();
X=0; Y=0;
}
void UART0_SendByte(uint8 dat)
{
U0THR=dat;
while((U0LSR&0x20)==0);
}
void Uart0_SendString(char *str)
{
while(1)
{
if(*str=='\0')break;
UART0_SendByte(*str++);
}
}
void Uart0_Rx(void)
{
Rx_Buff[Rx]=U0RBR;
Rx++;
}
void __irq IRQ_UART0(void)
{
if( 0x04==(U0IIR&0x0F) )
{
Uart0_Rx();
}
VICVectAddr=0x00;
}
void System_Ini(void)
{
UARTMODE uart0_set;
PINSEL0=0x00050005; //使能UART0 和UART1 为零Modem
PINSEL1=0x00400000;
IO0DIR=WR|LCDCS|LCDRST|LED1CON|X9313INC|X9313UD;
IO1DIR=P1PORT|A0|RD;
uart0_set.datab=8;
uart0_set.stopb=1;
uart0_set.parity=0;
UART0_Ini(115200,uart0_set);
VICIntSelect=0x00000000;
VICVectCntl0=0x26;
VICVectAddr0=(int)IRQ_UART0;
VICIntEnable=0x00000040;
Rd=0; Rx=0;
}
uint8 Read_Rx()
{
uint8 tmp;
if(Rx==Rd) {Rd=0; Rx=0;}
while(Rx==0)Delay(10);
tmp=Rx_Buff[Rd];
Rd++;
return(tmp);
}
void ENABLE_UART()
{
// VICIntEnable=0x000000c0;
}
/***************************************************************
* main program *
****************************************************************/
int main()
{
uint8 dat[3];
int xx[2],yy[2];
uint8 i;
System_Ini();
lcd_ini();
clear_buf();
Write_BackG();
second_scr();
clear_buf();
Write_Message();
for(i=0;i<200;i++)
write_dot(i,i);
full_scr();
X=0;Y=0;
adj_gray(0);
while(1){
dat[0]=Read_Rx();
if(sleep) {
sleep=0;
sed1335_write(system_set,system_set_ini,1);
sed1335_write(disp_on,disp_on_ini,1);
}
if(dat[0]==0x1b){
dat[0]=Read_Rx();
switch(dat[0]){
case 0x11://光标位置设定
dat[0]=Read_Rx();
dat[1]=Read_Rx();
disp_mode=1;
set_xy(dat[0],dat[1]);
break;
case 0x12://图形光标位置设定
dat[0]=Read_Rx()<<8;
dat[0]|=Read_Rx();
dat[1]=Read_Rx()<<8;
dat[1]|=Read_Rx();
disp_mode=0;
set_xy(dat[0],dat[1]);
break;
case 0x13: //
disp_mode=0;
dat[0]=Read_Rx();
dat[1]=Read_Rx();
xx[0]=dat[0]*256+dat[1];
dat[0]=Read_Rx();
dat[1]=Read_Rx();
yy[0]=dat[0]*256+dat[1];
dat[0]=Read_Rx();
dat[1]=Read_Rx();
xx[1]=dat[0]*256+dat[1];
dat[0]=Read_Rx();
dat[1]=Read_Rx();
yy[1]=dat[0]*256+dat[1];
draw_line(xx[0],yy[0],xx[1],yy[1]);
full_scr();
break;
case 0x14: //
disp_mode=0;
dat[0]=Read_Rx();
dat[1]=Read_Rx();
xx[0]=dat[0]*256+dat[1];
dat[0]=Read_Rx();
dat[1]=Read_Rx();
yy[0]=dat[0]*256+dat[1];
dat[0]=Read_Rx();
dat[1]=Read_Rx();
xx[1]=dat[0]*256+dat[1];
draw_circle(xx[0],yy[0],xx[1]);
full_scr();
break;
case 0x1a://光标右移 N格
dat[0]=Read_Rx();
// cursor_move(dat[0]);
break;
case 0x25://字体设置
dat[0]=Read_Rx();
if(dat[0]==0x51) {W_font=0; H_font=0;}
else if(dat[0]==0x52) {W_font=1; H_font=0;}
else if(dat[0]==0x53) {W_font=0; H_font=1;}
else if(dat[0]==0x54) {W_font=1; H_font=1;}
break;
case 0x20://清屏
// UART0_SendByte(0xff);
// clr_scr();
clear_buf();
full_scr();
disp_mode=1;
set_xy(0,0);
break;
case 0x09://复位
reset();
break;
case 0x16://背景清除并关闭
clear_buf();
fill_bg(0x00);
break;
case 0x17://背景填充
clear_buf();
fill_bg(0xff);
break;
case 0x18://对比度减
adj_gray(1);
break;
case 0x19://对比度加
adj_gray(0);
break;
case 0x21://睡眠状态
sed1335_write(sleep_in,null,1);
sleep=1;
break;
case 0x22://屏保状态
disp_mode=0;
dat[0]=Read_Rx();
// show_picture(dat[0]);
break;
case 0x1b://显示帮助
// disp_help();
break;
} //end of switch
} //end of if(ch==0x1b)
else if((dat[0]>=0x20)&&(dat[0]<0x80)){
if(disp_mode==0)
{
Write_GChar(X,Y,dat[0]);
}
else
{
Write_Char(X,Y,dat[0]);
}
full_scr();
}
else if(dat[0]>0xa0){
dat[1]=Read_Rx();
if(dat[1]>0xa0)
{
if(disp_mode==0)
{
Write_GHZ(X,Y,dat[0],dat[1]);
}
else
Write_HZ(X,Y,dat[0],dat[1]);
full_scr();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -