[匠人手记] 匠人师傅,能不能讲讲LCD和按键的程序规划

[复制链接]
4990|13
 楼主| kbgyzp 发表于 2008-11-26 01:19 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;有好多的界面,每个界面又要面对不同的参数设置,有逐位设置的,有上翻下翻直接设置的,每个参数位数又可能不一样,还有的参数设置后需要保存到24CXX,有的参数设置后需要执行某个动作,有的参数设置后要调用某个初始化操作,比如改变串口波特率,或时间等;还有每个参数设置还有可能存在上限和下限...<br />&nbsp;&nbsp;&nbsp;迄今位置还没发现在单片机中有关于KEY和LCD结合的比较好用的程序框架和结构,匠人大侠有什么高招?<br />&nbsp;&nbsp;&nbsp;我本来规划的感觉还不错,可后来越来越发现当初的设计满足不了设置的要求,结果越写越乱,在这地方怎么做到模块化设计呢?
程序匠人 发表于 2008-11-26 08:31 | 显示全部楼层

方法是有的,就是状态机

象这种一键多义型键盘+LCD/LED。最佳解决方案应该就是状态机方法。建议你看看《匠人手记》中关于规划的部分。
 楼主| kbgyzp 发表于 2008-11-26 09:26 | 显示全部楼层

谢谢您

书在家里,今天回家一定好好研究
 楼主| kbgyzp 发表于 2008-11-26 21:10 | 显示全部楼层

您的这个图对我很有启发,可脑子还很乱

继续拜读您的大作中。。。
程序匠人 发表于 2008-11-26 21:57 | 显示全部楼层

建议

<br />看看&nbsp;<b>匠人手记网络版:从零开始玩转PIC&nbsp;之&nbsp;旋转时钟</b>&nbsp;<br />里面关于显示的部分,相当于一个实际例子。虽然是LED的,但和LCD是相通的。
 楼主| kbgyzp 发表于 2008-12-4 18:42 | 显示全部楼层

今天终于想通了,谢谢匠人大师!

状态机的思路真是好啊!
starlite_jason 发表于 2008-12-8 09:12 | 显示全部楼层

LZ的这种情况,还是用菜单结构比较好,

  
 楼主| kbgyzp 发表于 2008-12-18 19:02 | 显示全部楼层

菜单结构是用大量的Case吗?

用大量的Case在这里并不适合,楼上能细说下吗?<br />用状态机程序相对原来的这部分减少了60%的程序量,而且更清晰了
xwj 发表于 2008-12-18 19:06 | 显示全部楼层

不是用Case,而是用函数指针 + 状态机

  
avocationA 发表于 2008-12-29 20:59 | 显示全部楼层

和楼主碰到相同的问题!!

而是用函数指针&nbsp;+&nbsp;状态机!!!!!!1&nbsp;对&nbsp;状态机&nbsp;还是比较迷糊
starlite_jason 发表于 2009-1-5 11:43 | 显示全部楼层

当然不是用CASE

如XWJ所说,主要应用函数指针,举个例子:<br />typedef&nbsp;struct&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;CurrentItem;<br />&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;PrevItem;<br />&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;NextItem;<br />&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;FatherItem;<br />&nbsp;&nbsp;&nbsp;&nbsp;BYTE&nbsp;ChildItem;<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;(*DisplayOperate)(void);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;(*LeftOperate)(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;(*RightOperate)(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;(*UpOperate)(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;(*DownOperate)(void);<br />&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;(*EnterOperate)(void);<br />}MENULIST;<br />根据这个结构体,建立一个大的菜单数组,那么你的所有操作,显示,都变的很清晰
baiyunfei.k.f 发表于 2011-12-4 16:56 | 显示全部楼层
:victory:
雁舞白沙 发表于 2012-2-28 09:14 | 显示全部楼层
定义显示数组

判断数组位置

提取执行数组

结果判断数组
gool 发表于 2012-3-8 14:42 | 显示全部楼层
学习中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

473

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部