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

📄 display.h

📁 点菜系统 内置很多功能
💻 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 + -