找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2898|回复: 5
收起左侧

用89C51单片机控制LCD1602显示多级菜单,使用汇编实现,求思路

[复制链接]
ID:922838 发表于 2021-5-24 21:42 | 显示全部楼层 |阅读模式
1黑币
用89C51单片机控制LCD1602显示多级菜单,使用汇编实现,求思路
LCD1602实现多级菜单,滚动显示菜单选项,二级菜单就可以了,
按键控制确认或返回,有没有大佬给个思路,救救孩子。

~Q9_6GJ55YR8QL)3FHFZ~66.png
回复

使用道具 举报

ID:922838 发表于 2021-7-28 09:47 | 显示全部楼层
这个问题我已经解决,用LCD1602显示,然后找一个标志地址,当按上下键的时候,标志地址里的标志位加一或减一,通过改变标志位来改变LCD显示的TAB,然后再输出就可以了
回复

使用道具 举报

ID:435676 发表于 2021-7-31 17:04 | 显示全部楼层
弄两个菜单函数,使用楼上说的按上下键,搞个变量累加,根据变量值来选择显示菜单页面的光标
回复

使用道具 举报

ID:435676 发表于 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;}                                                                                          }
回复

使用道具 举报

ID:951974 发表于 2021-8-24 23:22 | 显示全部楼层
用汇编实现多级菜单是痛苦的选择
回复

使用道具 举报

ID:996773 发表于 2023-5-26 10:58 | 显示全部楼层
1588848 发表于 2021-8-24 23:22
用汇编实现多级菜单是痛苦的选择


LA1833.jpg

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表