单级菜单LCD12864

while(MyKey != NOKEY)//有键顺序执行
  {
  }
  /* Initializes the Menu state machine 【】*/
  Menu_Init();
  MenuItemIndex = 0; 
 
  /* Endless loop */
  while(1)
  {
    /* Check which key is pressed 【上下左右+sel】*/
    MyKey = Matrx_keyScan();
	
    /* If "UP" pushbutton is pressed 调整显示图标,记录对应菜单项,菜单级别和索引*/
    if(MyKey == UP)
    {   //【调整序号】
      if(MenuItemIndex > 0)
      {
        MenuItemIndex--;
      }
      else
      {
        MenuItemIndex = NumberOfMain_Items - 1;
      }
		//【根据调整后的索引号,调整显示内容的首尾序号,决定是否刷新】
		ItemIndex_Change_refresh(UP_Press);      
		
		DisplayMenu(LCD_refresh); 
		
		LCD_line_highlight=KEY_UP_highlight(LCD_line_highlight);	//【判断按下之后的索引,调整高亮】
     
    }
	/* If "DOWN" pushbutton is pressed */
    if(MyKey == DOWN)
    { //【调整序号】
      /* Test on the MenuItemIndex value before incrementing it */
      if(MenuItemIndex == (NumberOfMain_Items - 1))
      {
        MenuItemIndex = 0;
      }
      else
      {
        MenuItemIndex++;
      }
		//【调整显示索引号,调整显示内容的首尾序号,决定是否刷新】,1表示down,修改LCD_refresh
		ItemIndex_Change_refresh(DOWN_Press);
       
	  DisplayMenu(LCD_refresh); 
      
      LCD_line_highlight=KEY_DOWN_highlight(LCD_line_highlight);//【判断按下down之后的索引,高亮】
     
    }
  1. 调整序号
  2. 调整显示索引号,调整显示内容的首尾序号,决定是否刷新,只有特定索引配合按键才能调整显示内容。
  3. 屏幕显示4行信息
  4. 判断按下之后的索引,4行循环,高亮处理

菜单有14个选项,设计了16个,为了补足一个屏显示4行。

另,编译完文件之后,在工程目录Debug目录中的List目录中就会生成map文件,可以查看代码大小。

如果编译出现“ has already been declared in the current scope”,试着在h文件中增加相应声明,或者修改定义名称。

多个变量定义完毕,想把中间的一个变量设置为全局变量,拷贝到文件开头,结果后面的结构定义不断报错,说没有定义,反复查看百思不得其解。对有问题的语句大量注释,最后发现那个全局变量声明的时候已经赋值为0了,所以变成了

static uint8_t MyKey = 0,

实际上应该是

static uint8_t MyKey = 0;

粗心,基本功不够硬。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值