首页 理论教育零起点学习单片机多语言编程|独立键应用|按键功能线无电连接

零起点学习单片机多语言编程|独立键应用|按键功能线无电连接

【摘要】:所谓独立键,就是各个按键的功能线之间没有电的连接,每个按键独立存在。这种连接方法一只按键要占用一个接口。常用于键少的应用场合。若再次查询按键并没有闭合,则认为按键未被按下,无效。流程图的作用就是将一个应用任务转化为计算机的工作流程。这是用计算机解决应用问题的必要前提。对于任何程序,只有三种基本结构,即顺序结构、分支结构和循环结构。反复执行,则P1.0反复取反状态,表示程序执行正确。

所谓独立键,就是各个按键的功能线之间没有电的连接,每个按键独立存在。这种连接方法一只按键要占用一个接口。常用于键少的应用场合。作为机械按键还有一特点,即在刚按下或抬起时的瞬间,有极短时间的抖动,这种抖动会影响程序对按键状态的查询,导致误判。因此,在查键程序开始后第一次查询若获知按键按下,必须延时10~20ms再次查询,若再次查到按键被按下,才可确认。若再次查询按键并没有闭合,则认为按键未被按下,无效。具体流程如图4-10所示。

流程图的作用就是将一个应用任务转化为计算机的工作流程。这是用计算机解决应用问题的必要前提。这也被称为算法,是实际编程的依据。特别对较复杂的任务,一个好的流程图是非常重要的。对于任何程序,只有三种基本结构,即顺序结构、分支结构和循环结构。由于实现的任务不同,对每一个程序,可以包括一个或几个不同类型结构。对于一个流程图的实现,可以用不同的程序语言。由于程序语言的特点和功能不同,解决任务的能力也不同。

978-7-111-47138-7-Chapter04-104.jpg

图4-10 键消抖动流程图

1.【例4-37】 单键开合控制

(1)编辑C语言源程序

978-7-111-47138-7-Chapter04-105.jpg

978-7-111-47138-7-Chapter04-106.jpg

(2)编译

(3)执行

1)软仿真。

①单击“调试”图标,进入软调试状态。

②调出P2/P1窗口。使P2.0输入为0,相当于+1键按下,则P1.0=0,相当于灯D0亮。使P2.0输入为1,相当于+1键抬起,则P1.0=1,相当于灯D0灭。反复执行,则P1.0反复取反状态,表示程序执行正确。

2)下载到实验。按+1键,灯D0亮,键抬起。再按+1键,灯D0灭,键抬起。如此反复操作。当键抬起后,灯仍保持原状态。注意,使P2.0=0时,必须输入/输出全为0,若只输入为0,输出仍为1,等于键并未按下,无效(”√”表示1,“ ”空白表示0)。

(4)程序点评

本例练习按键控制。当查询到键按下时,进入功能执行。完成后必须再次查询键是否抬起。否则会出现错误。

2.【例4-38】 多键控制。按+1键,灯D0亮。按-1键,灯D1亮。按H键,灯D2亮。

(1)编辑C语言源程序

1)流程图,如图4-11所示。(www.chuimin.cn)

978-7-111-47138-7-Chapter04-107.jpg

图4-11 流程图

2)程序

978-7-111-47138-7-Chapter04-108.jpg

978-7-111-47138-7-Chapter04-109.jpg

注:程序注释中,INC为+1键,DEC为-1键,H为H键。

(2)编译

(3)执行

1)软仿真。

①单击“调试”→“开始/停止调试”进入调试状态,米黄色图标指向第5语句。

②单击“外部设备”→“I/O-Port”→“Port 1/Port 2”,显示P1及P2窗口,表示已经准备好观察条件。

③设P2.0=0。相当于按下+1键。

④单击“单步”,由于P2.0=0,所以a=0xFE成立,灯D0=0。

⑤重复点击“单步”,程序进入key_ up()。置P2.0=1,则表示键已抬起,跳出循环。

⑥按上述方法,可以模拟-1键和H键按下/抬起的效果,在此不再重复。

2)下载到目标机。按前述方法进行。程序执行后,按+1键,灯D0亮,抬起。按-1键,灯D1亮,抬起。按H键,灯D2亮,抬起。

(4)程序点评

通过端口模拟键的按下和抬起,证明程序可以完成预定任务。优点是在仿真环境下可以方便地反复运行,并修改程序,反复编译,直到程序达到预定目标,而且不必担心硬件质量的影响。