标题: 用89C51单片机控制LCD1602显示多级菜单,使用汇编实现,求思路 [打印本页]

作者: 十点差三分    时间: 2021-5-24 21:42
标题: 用89C51单片机控制LCD1602显示多级菜单,使用汇编实现,求思路
用89C51单片机控制LCD1602显示多级菜单,使用汇编实现,求思路
LCD1602实现多级菜单,滚动显示菜单选项,二级菜单就可以了,
按键控制确认或返回,有没有大佬给个思路,救救孩子。

~Q9_6GJ55YR8QL)3FHFZ~66.png (39.82 KB, 下载次数: 126)

~Q9_6GJ55YR8QL)3FHFZ~66.png

作者: 十点差三分    时间: 2021-7-28 09:47
这个问题我已经解决,用LCD1602显示,然后找一个标志地址,当按上下键的时候,标志地址里的标志位加一或减一,通过改变标志位来改变LCD显示的TAB,然后再输出就可以了
作者: 1051798957    时间: 2021-7-31 17:04
弄两个菜单函数,使用楼上说的按上下键,搞个变量累加,根据变量值来选择显示菜单页面的光标
作者: 1051798957    时间: 2021-7-31 17:06
////////////菜单切换及选择/////////////////////////////////////////////////////////////////////////////////////////////////////////////// while(1){   button();                         //按键扫描          if(n1==0){                           // 返回/上                    n4=n4-1;                 if(n4<0)          { n4=11;  }                                                                           if(n4<=3)         { LcmClearTXT();  LcmClearBMP();  for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu[i]);    }  } //菜单选择                 if(n4>3 & n4<=7)  { LcmClearTXT();  LcmClearBMP();  for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu1[i]);   }  }                  if(n4>7)          { LcmClearTXT();  LcmClearBMP();  for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu2[i]);   }  }  //                if(n4<=3)         { LcmClearTXT();  highlight(0,liney,8,0);   for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu[i]);    }  }  //                if(n4>3 & n4<=7)  { LcmClearTXT();  highlight(0,liney,8,0);   for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu1[i]);   }  }  //                if(n4>7)          { LcmClearTXT();  highlight(0,liney,8,0);   for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu2[i]);   }  }                                                                                                                                  if(n4==0 | n4==4 | n4==8  ){ liney=0;  } //光标位置                                                                 if(n4==1 | n4==5 | n4==9  ){ liney=1;  }                                                                  if(n4==2 | n4==6 | n4==10 ){ liney=2;  }                                                                  if(n4==3 | n4==7 | n4==11 ){ liney=3;  }                                                                            highlight(0,liney,8,255);     //放置光标                                                                                                           }           if(n2==0){                           // 下                     n4=n4+1;                                                          if(n4>11)         { n4=0;  }                                                                                  if(n4<=3)         { LcmClearTXT();  LcmClearBMP();  for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu[i]);    }  }                  if(n4>3 & n4<=7)  { LcmClearTXT();  LcmClearBMP();  for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu1[i]);   }  }                  if(n4>7)          { LcmClearTXT();  LcmClearBMP();  for(i=0;i < 4;i++){  LCD_ShowString(i,0,menu2[i]);   }  }                                                                                                                          if(n4==0 | n4==4 | n4==8  ){ liney=0;  }                                                                  if(n4==1 | n4==5 | n4==9  ){ liney=1;  }                                                                  if(n4==2 | n4==6 | n4==10 ){ liney=2;  }                                                                  if(n4==3 | n4==7 | n4==11 ){ liney=3;  }                                                                           highlight(0,liney,8,255);     //放置光标                                                                            }                                          if(n3==0){                           // 确认                    if(n4==0) {         LcmClearBMP();   LcmClearTXT();   goto HB;}                     if(n4==1) {         LcmClearBMP();   LcmClearTXT();   goto HC;}                     if(n4==2) {         LcmClearBMP();   LcmClearTXT();   goto HD;}                   if(n4==3) {         LcmClearBMP();   LcmClearTXT();   goto HE;}                   if(n4==4) {         LcmClearBMP();   LcmClearTXT();   goto HF;}                   if(n4==5) {         LcmClearBMP();   LcmClearTXT();   goto HG;}                   if(n4==6) {         LcmClearBMP();   LcmClearTXT();   goto HH;}                           if(n4==7) {         LcmClearBMP();   LcmClearTXT();   goto HI;}                           if(n4==8) {         LcmClearBMP();   LcmClearTXT();   goto HJ;}                   if(n4==9) {         LcmClearBMP();   LcmClearTXT();   goto HK;}                   if(n4==10){         LcmClearBMP();   LcmClearTXT();   goto HL;}                           if(n4==11){         LcmClearBMP();   LcmClearTXT();   goto HM;}                                                                                          }
作者: 1588848    时间: 2021-8-24 23:22
用汇编实现多级菜单是痛苦的选择
作者: hi等你    时间: 2023-5-26 10:58
1588848 发表于 2021-8-24 23:22
用汇编实现多级菜单是痛苦的选择




我这个也是多级菜单吧,上下四个选项,也是汇编,也不难写啊,用个寄存器写入对应的数据而已

作者: 风抓不住过往    时间: 2025-3-19 16:48
hi等你 发表于 2023-5-26 10:58
我这个也是多级菜单吧,上下四个选项,也是汇编,也不难写啊,用个寄存器写入对应的数据而已

想问问你们碰到error A51: TARGET OUT OF RANGE这种错误的时候都怎么解决啊
作者: 偶尔不开心    时间: 2025-3-20 07:50
风抓不住过往 发表于 2025-3-19 16:48
想问问你们碰到error A51: TARGET OUT OF RANGE这种错误的时候都怎么解决啊

中转 先跳到中间 再跳转目标
作者: wufa1986    时间: 2025-3-20 17:28
先用C写完,然后点kel模拟调试,就会自动生成汇编,复制过来忽悠一下就行了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1