📄 display.h
字号:
/////*****************************************************************************************
///// 显示部分
extern int32 meu_count; //菜单记数
extern uint32 meu_block;
extern uint32 meu_page;
extern int32 meu_len;
extern int32 y,x;
extern uint8 display_buf[32];
extern uint8 display_string[16];
extern uint8 display_string_down[16];
extern uint8 input_buf_size;
extern uint8 focus_id_up;
extern uint8 Third[19];
///////////////////////////////////////////////////
///// 写数字列子
///// c:所要画的图
///// position:左右半屏选择 0->左半屏 1->右半屏
///// start_x,start_y:图的起始地址
///////////////////////////////////////////////////
void LCD12864_Darw_bmp(uint32 position, uint8 Start_x, uint8 Start_y,uint8 HalfOrAll_width)
{
uint8 a;
if(!position)
{
IOSET=CS1;
IOCLR=CS2;
}
else
{
IOCLR=CS1;
IOSET=CS2;
}
LCD_Set_XY(Start_x++, Start_y);//设置显示地址
for(a=0 ;a<HalfOrAll_width ;a++)
LCD12864_Write_code(1, display_buf[a]);
LCD_Set_XY(Start_x, Start_y);
for(a=HalfOrAll_width ;a<HalfOrAll_width*2 ;a++)
LCD12864_Write_code(1, display_buf[a]);
}
///////////////////////////////////////////////////
///// 菜单和固定字符的输出 x,y
///// 他将修改全局显示缓冲区 display_buf;
///////////////////////////////////////////////////
void fill_display_buf(uint32 migrate,uint8 banjiao)//8半角16全角
{uint32 block_migrate,pag_migrate;
uint8 i;
block_migrate=migrate%256;
pag_migrate=migrate/256;
if(banjiao==0)
Flash_Read(Hzk_position|pag_migrate<<8|block_migrate,display_buf,32);
if((banjiao!=0)&(migrate!=0x20))
for(i=0;i<16;i++)
display_buf[i]=BMP_NUM[migrate][i];
if(migrate==0x20)
for(i=0;i<16;i++)
display_buf[i]=0x00;
}
////////////////////////////////////////////////////
////反显
////////////////////////////////////////////////////
void fanxian(void)
{ uint8 z[32];
uint8 i;
for(i=0;i<32;i++)
z[i]=~display_buf[i];
for(i=0;i<32;i++)
display_buf[i]=z[i];
}
////////////////////////////////////////////////////////////////////
/////////打印需要全局缓冲区display_buf
///////////////////////////////////////////////////////////////////
void print(uint8 *display_str)
{uint8 i=0;
uint32 word_migrate;
while((display_str[i]!=0x0a))
{if((display_str[i]&0x80)==0x80)
{word_migrate=((display_str[i]-161)*94+display_str[i+1]-161)*32;
shouwei();
fill_display_buf(word_migrate,0);
if((focus_id_up==0)&(y==0))
fanxian();
if((focus_id_up==1)&(y==2))
fanxian();
i=i+2;
if(i<=8)
{LCD12864_Init();
LCD12864_Darw_bmp(0,y,x,16);
}
else
{LCD12864_Init();
LCD12864_Darw_bmp(1,y,x,16);
}
x=x+16;
}
if(((display_str[i]&0x80)==0)&(display_str[i]!=0x0A))
{if((display_str[i]==0x20)|(display_str[i]==0x0d))
fill_display_buf(display_str[i],1);
if(display_str[i]!=0x20)
fill_display_buf(display_str[i]-0x30,1);
if((focus_id_up==0)&(y==0))
fanxian();
if((focus_id_up==1)&(y==2))
fanxian();
if(i<8)
LCD12864_Darw_bmp(0,y,x,8);
else
LCD12864_Darw_bmp(1,y,x,8);
i=i+1;
x=x+8;
}
if(x>=120)
x=0;
}
y=y+2;
}
////*****************************************************************************************
///////////////////////////////////
/////读取要显示的字
////要的参数j地址用局部变量保存
////下次在传入:记住地址
///////////////////////////////////
void read_display_str_down(uint8 *display_stringx)
{
Flash_Read(meu_position|meu_page<<8|meu_block,display_stringx,16);
meu_block=meu_block+16;
if(meu_block==256)
{meu_page++;
meu_block=0;
}
}
void read_display_str_up(uint8 *display_stringx)
{if(meu_page!=0)
if(meu_block==0)
{meu_page--;
meu_block=256;
}
meu_block=meu_block-16;
// Flash_Read(meu_position|meu_page<<8|meu_block,display_stringx,16);
}
////////////////////////////////////////
/////////确认发送
/////////////////////////////////////////
void sendbuf()
{uint8 i;
uint8 send_picture[]=" 发送完毕\n";
uint8 sending[]=" 发送中 \n";
LCD12864_Init();
LCD12864_Clr();
y=2;x=0;
print(sending);
shouwei();
UART0_SendBuf(Third);
LCD12864_Init();
LCD12864_Clr();
y=2;x=0;
print(send_picture);
shouwei();
input_buf_size=0;
for(i=6;i<15;i++)
Third[i]=' ';
}
////////////////////////////////////////
///////按键上翻
////////////////////////////////////////
void up()
{uint8 i;
if(focus_id_up==1)
{focus_id_up=0;
if(meu_count>2)
meu_block=meu_block-32;
}
else
if(meu_count>2)
{for(i=0;i<16;i++)
display_string_down[i]=display_string[i];
read_display_str_up(display_string);
meu_count--;
if(meu_count==2)
meu_count=0;
}
}
/////////////////////////////////////
/////按键下翻
///////////////////////////////////////
void down(void)
{uint8 i;
if(focus_id_up==0)
{focus_id_up=1;
if(meu_count>2)
meu_block=meu_block+32;
if(meu_count==0)
{meu_block=meu_block+32;meu_count+=2;}
}
else
if(meu_count<meu_len)
{
for(i=0;i<16;i++)
display_string[i]=display_string_down[i];
read_display_str_down(display_string_down);
meu_count++;
}
}
////////////////////////////////////////
////输入缓冲
///////////////////////////////////////
void input(void)
{if(input_buf_size<=8)
{Third[input_buf_size+6]=keycode+0x30;
input_buf_size++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -