查看: 2967|回复: 2

利用CEPARK-51的实验板做一个简易计算器

[复制链接]

该用户从未签到

发表于 2009-5-25 17:08:46 | 显示全部楼层 |阅读模式
分享到:
 

转自:http://bbs.cepark.com/index.php?fromuid=28800     CEPARK 电子园
前言:本次实验的目的是利用现有的CEPARK-51的实验板写一个简单的计算器的程序,实现的功能比较简单,主要目的是锻炼一下写程序的逻辑性。
       我们知道一个计算器最基本的按键应该有16个,包括加减乘除四个运算按键、09十个数字键、一个等号键和一个清零键。但是现在存在的问题是在我们的CEPARK-51的板子上只有8个按键,那么我们怎么解决呢?思路是这样的,既然谈到按键,那么按键的几种使用形式便有不同的作用,比如短按,长按,双击等等。我们只需要16个键的功能所以我们在这里只需要区分长按和短按就可以了。
 
 
       显示部分是采用的数码管显示,这样显示可以方便一些。注意看我们的标题,我们要做的是简易计算器,只能实现10以内的加减乘除,如果各位朋友想实现更强大的计算功能,在我看来以这样的按键数量及布局方式是很难的,若使用自制的键盘布局可以得到更好的功能,有兴趣的朋友请参见我以前DIY计算器的帖子,地址:http://bbs.cepark.com/viewthread.php?tid=2717&extra=page%3D1 。这个可以实现浮点数的运算以及对结果的遥控。


 
       好的,开始我们的正题。



CEPARK-51的板子上有八个按键,我的功能划分如下:
 
 
长按与短按的区分大概以500ms来区分,也就是说,比如你想计算2*5=10,那么先输入数字2的时候请长按实验板上的1号键,然后长按6号键,然后短按3号键,然后按8号键。这时数码管上将显示数字10.当然我的程序是这样写的,这取决于你程序的写法。每个人可以有自己的定义,甚至你可以加上双击的功能这样的话你可以放进去按键音或者其他的功能。


 
       然后再说一下结果的显示问题,加法一切照常显示;减法的话考虑到会出现负数,如果结果是负数那么负号“-”将会被显示在最前面一位,不是负数的话最前面一位不显示;如果是乘法,那么显示结果也将正常显示;除法的话,最后一位是商,最前一位是余数。如果没有余数那么最前一位不显示。


 
       (注:最前一位指数码管的第一位,最后一位指数码管的第四位)


 
       实验原理部分:


 
(一)
区分按键的长按与短按:一般情况下,我们长按的按键时间我取做500毫秒,如果多于此值将会被认为是一次长按,响应的数码管将接收到长按的数值。不足500毫秒的按键动作将会被认为是短按。


 
(二)
显示部分:每次只能接收到一位数据,如果在按下操作符之前连续按下多个键,那么最后一次按键之前的键值将会被覆盖。


 
(三)
操作:需要长按才能实现的键请尽量长按,如果你不嫌麻烦你可以一直按着,原因请参见原程序。


 
程序不是很长,有兴趣的可以自己先写一下试试,个人觉得只要能区分开长按和短按基本上问题也就解决了。


 
转自:http://bbs.cepark.com/index.php?fromuid=28800

cepark.rar

204.69 KB, 下载次数: 0

回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2009-7-28 10:39:39 | 显示全部楼层

RE:利用CEPARK-51的实验板做一个简易计算器

嗯。。来看看!!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-10-20 14:11:10 | 显示全部楼层

RE:利用CEPARK-51的实验板做一个简易计算器

好!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2025-1-5 10:16 , Processed in 0.137313 second(s), 20 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.