用了4天做了个简单的电子钟。MCU:STC89C52RC,自带字库的12864液晶显示,没用画图功能。前三天都在痛苦的折腾二级菜单,从网上找了大量的资料,大部分都说用数据结构里的树来实现。无奈水平有限,看不懂,也不可能短时间内搞明白什么链表,树。终于在昨天下午想出来怎么用简单的switch case分支实现。
简单来说就是先确定你有几个界面,比如我的开机后显示时间,是界面0,按菜单键后出来菜单界面,是界面2,3个选项,分别对应界面3,4,5。然后用个大的switch()case语句。我用cur_level定义界面编号,switch(cur_level){}判断在不同界面下执行不同的函数。比如我在显示时间的界面时,cur_level=0;
switch(cur_level){
case 0:
key=0;
key=key_scan();
if(key==1)//按下菜单键
{
main_menu();//执行菜单显示函数,只执行一次
cur_level=1;//跳到菜单界面
}
break;
case 1:
key=0;
key=key_scan();//在菜单界面扫描按键
switch(key){
case 1://1为确定键,跳入菜单界面选项一
chang_time();//执行修改时间的函数
cur_level=2;//跳到界面2,主要执行修改时间的函数
break;//12864液晶跳转页面需要清屏,使用时需注意
//还有其他细节东西,需要自己根据实际情况进行调节
... ...
... ...
}
break;
}
//简单的举了个例子,不同界面之间就像这样跳转,比什么链表的容易理解多了。当然如果以后学会高端的会不屑这样,但我觉得对新手来说,
能用这种方法解决实际问题也是很大的收获。
这算是技术贴吧,第一次发,写的不好请见谅。
|