打印
[匠人手记]

50分请教匠人个被困扰很久摸不着头脑的按键问题,先谢过啦

[复制链接]
5747|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangzk|  楼主 | 2010-7-20 15:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wangzk 于 2010-7-20 15:57 编辑

“小”按键。“大”问题。不怕匠人笑话,这个按键我想了很久都没什么思路。怕被人笑话,身边有没什么高手,发帖请教都不敢了:L   匠人的《按键漫谈》我也看了  只怪自己笨额   匠人提供一种思路就行了  
  匠人gg先听偶慢慢道来

2009072810182066.gif (11.37 KB )

2009072810182066.gif

相关帖子

沙发
wangzk|  楼主 | 2010-7-20 15:41 | 只看该作者
本帖最后由 wangzk 于 2010-7-20 16:09 编辑

4×4矩阵键盘  那本单片机教科书都会有的接法   俗的要死
先说我想要用这些按键的功能:
1:0~9,10个阿拉伯数字按键。系统是12864液晶显示。 若无按键按下,界面显示0000.这个是没有疑问的。“设置”键按下,液晶界面要接收数字,怎么去接收呀??
例如数字按键“1”键按下。液晶显示1000。然后如果是数字键“2”键(当然也有可能是其他键)按下,液晶显示“1200”.依次接收4位阿拉伯数字。
困惑我的就是这么个简单的功能了。
2:“左”“右”方向键  
3:“确认”,“清零”,“设置”键
4×4键盘怎么去实现这些功能按键,我同样也是摸不着头脑。幸好单片机IO口够用,我就接了几个独立式按键当作功能键。避开4×4键盘(现在一看见这个字眼心里就发毛:funk: ,惹不起还躲不起)。4*4键盘常用的是 行列扫描法。我也是采用的这种方法。
系统中需要多次用到“确认”键,那么就用到一次“确认”键,查询一次扫描程序吗。总觉得这样还不如把它单拉出来  给他“独立”起来

使用特权

评论回复
板凳
程序匠人| | 2010-7-20 17:44 | 只看该作者
这个很好实现,大概思路如下:

首先,每个按键都编个号,我们称为“键值”或“键号”。对于数字键盘,键号最好是与键盘数字相互关联,比如,“1”键的键号就是1,“2”键的键号就是2。这样是为了后续程序的方便性。至于如何读键,这个大概不需要我教吧?所以这一步略过。

读到了键号后,如何实现你说的功能。其实关键在于你的心中要有一个“状态机”(这也是我曾经在一些手记中介绍过的)。用状态机的思路去解析这个问题,将非常简单。

1、在RAM中设立一个状态字(变量),意义如下:

  0=不可调节
  1=调节千位
  2=调节百位
  3=调节十位
  4=调节个位

2、程序开始时,未按键,状态=0,也就是说这个时候不可设置

3、“设置”键按下,令状态=1

4、任意数字键(0~9)按下,把该数字传递给当前激活的调节位;然后令状态+1,并判断状态是否>4,如是,则令状态=0(退出设置)

5、“左”“右”方向键,其实就是选择调节位吧?如是,则只要令状态+1或-1即可;

6、“确认”键,直接保存设置内容,并令状态=0

7、“清零”键,直接清除设置内容,并令状态=1

使用特权

评论回复
地板
wangzk|  楼主 | 2010-7-20 17:52 | 只看该作者
谢匠人  感觉可以结贴了

使用特权

评论回复
5
程序匠人| | 2010-7-20 17:53 | 只看该作者
补充:请参阅《匠人手记》(纸版)第49页  《基于状态机思路的程序调度机制》。并重点理解第50页的那个流程图。

使用特权

评论回复
6
wangzk|  楼主 | 2010-7-20 17:55 | 只看该作者
本帖最后由 wangzk 于 2010-7-20 17:56 编辑

哈哈  《匠人手记》明天到货   刚刚在taobao 拍下的!  花了30大洋,还包运费 希望能帮上一点忙:loveliness:  

做实验去   有结论了  再总结一下

使用特权

评论回复
7
程序匠人| | 2010-7-20 17:55 | 只看该作者
啊,就这样捞了50分?盛情难却!盛情难却啊……:victory::);P:lol:D

使用特权

评论回复
8
wangzk|  楼主 | 2010-7-20 17:58 | 只看该作者
啊,就这样捞了50分?盛情难却!盛情难却啊……:victory::);P:lol:D
程序匠人 发表于 2010-7-20 17:55
  还卖了 一本《匠人手记》 :lol

使用特权

评论回复
9
程序匠人| | 2010-7-20 18:00 | 只看该作者
   还卖了 一本《匠人手记》 :lol
wangzk 发表于 2010-7-20 17:58


呵呵,我以为你本来已经有了呢。倒没想到要推销。。。。

使用特权

评论回复
10
wangzk|  楼主 | 2010-7-20 18:07 | 只看该作者
呵呵,我以为你本来已经有了呢。倒没想到要推销。。。。
程序匠人 发表于 2010-7-20 18:00
期待  《匠人笔记》。。。。。明天应该能到。。。

使用特权

评论回复
11
jiabin1024| | 2010-7-21 09:02 | 只看该作者
匠人讲的通俗易懂!!!!

使用特权

评论回复
12
seabada| | 2010-7-21 09:29 | 只看该作者
也学习了,以前的实验做的是数码管显示

使用特权

评论回复
13
ylsiw| | 2010-7-21 10:00 | 只看该作者
学习了

使用特权

评论回复
14
zhiyonghe| | 2010-7-21 10:55 | 只看该作者
《匠人笔记》笔记???
他老人家都是用手,拿笔多麻烦,直接用手蘸墨水写;P
《 匠人手记》

使用特权

评论回复
15
xuyiyi| | 2010-7-21 11:33 | 只看该作者
呵呵!
祝LZ又上了层楼!

使用特权

评论回复
16
程序匠人| | 2010-7-21 11:35 | 只看该作者
《匠人笔记》笔记???
他老人家都是用手,拿笔多麻烦,直接用手蘸墨水写;P
《 匠人手记》
zhiyonghe 发表于 2010-7-21 10:55


哥蘸的不是墨水,是血水……

使用特权

评论回复
17
wangzk|  楼主 | 2010-7-21 16:20 | 只看该作者
to  匠人gg:
在您指导下  今天终于 做出来了!     谢谢 匠人gg !
看来编程还是思想最重要呀!

使用特权

评论回复
18
程序匠人| | 2010-7-21 17:36 | 只看该作者
to  匠人gg:
在您指导下  今天终于 做出来了!     谢谢 匠人gg !
看来编程还是思想最重要呀!
wangzk 发表于 2010-7-21 16:20


如此一来,我那50分也就拿得心安理得了。:victory: :lol :D :) :P ;P

使用特权

评论回复
19
wangzk|  楼主 | 2010-7-22 11:55 | 只看该作者
《匠人手记》到啦 嘎嘎

0722114600.jpg (12.11 KB )

0722114600.jpg

使用特权

评论回复
20
xuyiyi| | 2010-7-22 13:43 | 只看该作者
恭喜恭喜!
恭喜LZ, 熟读三遍《匠人手记》,再加上活学活用。
这世上第二个匠人将诞生了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://huiqianxi.taobao.com]http://huiqianxi.

91

主题

680

帖子

0

粉丝