12864液晶菜单设计.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
12864液晶菜单设计

12864多级菜单设计看到网上有个视频,用的是12864做的菜单,很花哨,自己也心痒痒想做一个,收集了 很多关于这方面的东西,但是都是五花八门,没有一个完整的可以共大家参考的程序,所以决定写偏文章供大家参考,希望读者下去自己优化,改进。有什么不足之处还请多多包涵。好了,废话不多说,直接进入正题吧。1、首先定义一个机构体如下typedefstruct{uchar current;uchar up;//上键uchar down;//下键uchar enter;//确认键void (*current_operation)();} key_table;结构体包含5个变量,分别是函数的索引号即用户想要执行哪个函数的代号,然后有三个键,用户可以自己定义别的按键,最后一个是函数指针,即索引号对应的函数。然后在定义一个结构体数组,如下key_table code table[n]={{0,2,1,3,(*fun1)},{1,0,2,4,(*fun2)},{2,1,0,5,(*fun3)}, {3,0,6,3,(*fun4)},{4,1,6,4,(*fun5)}, {5,2,6,5,(*fun6)},{6,0,0,0,(*fun7)},............ };其中n为函数数组大小。下面详细介绍key_table code table[n]里面的值是怎么确定的。首先可以先这样定义该数组key_table code table[n]={{0,x,y,z,(*fun1)},{1,x,y,z,(*fun2)},{2,x,y,z,(*fun3)}, {3,x,y,z,(*fun4)},{4,x,y,z,(*fun5)}, {5,x,y,z,(*fun6)},{6,x,y,z,(*fun7)},............ };其中,x,y,z是未知数,先不确定,他们对应的是三个键按下要指示的索引值,如果四个键,就有四个未知数,在确定他们之前,必须要了解自己函数执行什么命令。加入开始时时执行数组里面的第一个即table[0],而想在此按上键执行函数fun6,那么table[0]里面需要这样设置{0,5,y,z,(*fun1)},同样,如果希望按下键执行fun7则需要设置为{0,x,6,z,(*fun1)},如果希望按确认键执行fun3则需要设置为{0,x,y,2,(*fun1)};如果上面三种情况都想要就设置为{0,5,6,2,(*fun1)}.其它数组元素一次类推。这一步做完了看主程序里面(主要是while(1)里面)。/*******************find index****************************/switch(key){case 0x44: func_index=table[func_index].up; //向上翻 break;case 0x24: func_index=table[func_index].enter;//回车break;case 0x14: func_index=table[func_index].down;//向下翻break;default:break;} current_operation_index=table[func_index].current_operation;(*current_operation_index)();//执行当前操作函数其中,key是返回的按键值,这个用户视情况而定,下面是详细的例子,主要是以结构体为基础设计的,以12864显示函数代替了用户需要的函数功能,只需要修改相应的函数和索引号,就可以达到任意界面切换了是小弟研究了还久才搞定的,虽然网上也有这些,但是都不够系统,只有基本的东西,这篇例子希望能够给读者一些有用的东西,仅供参考哦!:#include reg52.h#include fun.h#include lcd12864.h#include delay.h#define uchar unsigned charsbitkeydown=P0^0;sbitkeyenter=P0^1;sbitkeyup=P0^2;ucharfunc_index=0;void (*current_operation_index)();typedefstruct{uchar current;uchar up;//向上翻索引号uchar down;//向下翻索引号uchar enter;//确认索引号void (*current_operation)();} key_table;key_table code table[30]={{0,3,1,4,(*fun1)},//第一层,显示【清华大学】、北京大学、重庆三峡学院、返回{1,0,2,8,(*fun2)},//第一层,显示清华大

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档