转自:http://bbs.cepark.com/index.php?fromuid=28800 CEPARK 电子园
前言:本次实验的目的是利用现有的CEPARK-51的实验板写一个简单的计算器的程序,实现的功能比较简单,主要目的是锻炼一下写程序的逻辑性。
我们知道一个计算器最基本的按键应该有16个,包括加减乘除四个运算按键、0到9十个数字键、一个等号键和一个清零键。但是现在存在的问题是在我们的CEPARK-51的板子上只有8个按键,那么我们怎么解决呢?思路是这样的,既然谈到按键,那么按键的几种使用形式便有不同的作用,比如短按,长按,双击等等。我们只需要16个键的功能所以我们在这里只需要区分长按和短按就可以了。
好的,开始我们的正题。
在CEPARK-51的板子上有八个按键,我的功能划分如下:
长按与短按的区分大概以500ms来区分,也就是说,比如你想计算2*5=10,那么先输入数字2的时候请长按实验板上的1号键,然后长按6号键,然后短按3号键,然后按8号键。这时数码管上将显示数字10.当然我的程序是这样写的,这取决于你程序的写法。每个人可以有自己的定义,甚至你可以加上双击的功能这样的话你可以放进去按键音或者其他的功能。
然后再说一下结果的显示问题,加法一切照常显示;减法的话考虑到会出现负数,如果结果是负数那么负号“-”将会被显示在最前面一位,不是负数的话最前面一位不显示;如果是乘法,那么显示结果也将正常显示;除法的话,最后一位是商,最前一位是余数。如果没有余数那么最前一位不显示。
(注:最前一位指数码管的第一位,最后一位指数码管的第四位)
实验原理部分:
(一)
区分按键的长按与短按:一般情况下,我们长按的按键时间我取做500毫秒,如果多于此值将会被认为是一次长按,响应的数码管将接收到长按的数值。不足500毫秒的按键动作将会被认为是短按。
(二)
显示部分:每次只能接收到一位数据,如果在按下操作符之前连续按下多个键,那么最后一次按键之前的键值将会被覆盖。
(三)
操作:需要长按才能实现的键请尽量长按,如果你不嫌麻烦你可以一直按着,原因请参见原程序。
程序不是很长,有兴趣的可以自己先写一下试试,个人觉得只要能区分开长按和短按基本上问题也就解决了。
转自:http://bbs.cepark.com/index.php?fromuid=28800 |