- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机控制简易计算器
基于单片机控制简易计算器摘要:本文论述了如何设计并制作一台基于单片机控制的简易计算器,简单介绍了51单片机的各种I/O接口电路的形式及工作原理,概括分析了计算器控制程序编写的一般思路,重点讲解了键盘扫描程序、LED动态显示程序的编写以及软、硬件联调的的方法。
关键词:单片机;计算器;矩阵键盘;动态显示;蜂鸣器
DOI: 10.3969/j.issn.1005-5517.2012.9.012
计算器功能要求
该计算器键盘上有10个“数字按键0~9”,6个“功能按键(+、-、*、/、=、AC)”。要求当“数字按键”按下时,对应的数值能显示出来;“功能按键”按下时,计算器能够计算输入的数值并显示结果;而且每个按键按下后,计算器都能发出“嘟”的一声。
硬件电路设计
为了实现上述功能,可采用多种电路方案,无论采用哪种形式,计算器都有三个基本的组成部分,即输入电路、输出电路与控制电路。
输入电路主要完成信息的采集,如图1所示,本文采用16键的4*4矩阵式键盘来实现,它由16个分别位于行和列的按键组成,其中4条列线分别接单片机的P1.0~P1.3,4条行线分别接单片机的P1.4~P1.7。
输出电路由显示部分和发声部分组成,如图2所示。其中显示部分采用的是两位LED数码管动态扫描显示电路,两个数码管均为共阳型,笔段a~dp分别接在一起,并与单片机的P0口相连,公共端分别受单片机的P2.0、P2.1控制;当CPU向P0口送出字型码时,两个数码管接收相同的字型码,但只有当P2.0或P2.1为低电平时,与数码管公共端相连的三极管才会导通,对应的数码管才会被点亮。发声电路由蜂鸣器实现,由于人耳能感觉到的音频范围约在20Hz~20kHz之间,可以利用程序使单片机的P2.2输出高、低变化的电平,则在该I/O口线上就能产生一定频率的矩形波,将此I/O口线接蜂鸣器后,蜂鸣器就能发出声音;由于单片机的I/O口线输出的电流不足以驱动蜂鸣器发声,因此需要在两者之间加入功率驱动电路,如三极管。
控制电路对输入的信息进行分析,按照计算器的功能要求实现相应的控制,可采用51系列单片机来实现。
装配好后的计算器场景图如图3所示。
图1 输入电路原理图
图2 输出电路原理图
程序设计
作为简易计算器,其功能就是将“数字按键”所对应的内容显示出来,在“功能按键”按下时,能够计算输入的数值并显示结果,并且在每个按键按下后,会发出“嘟”的一声。因此,计算器处理程序共分为键盘输入程序、LED动态显示程序、蜂鸣器发声程序以及运算处理程序四个部分。
键盘输入程序设计
(1)按键查询
单片机如何判断某一时刻是否有按键按下呢?可以采用中断或者查询方式。本文采用查询方式,先让行线输出全0、列线输出全1,然后读取各列线状态,若无按键按下,则列线就保持全1;若有任一按键按下,则该按键对应的列线就会被拉低为0,读取到的列线状态就不会全为1,据此就可以知道某一时刻是否有按键按下。
(2)按键去抖
机械式按键在按下时,通常伴随一定时间的触点机械抖动,若在触点抖动期间检测按键,可能会导致判断出错,即按键一次按下被错误地认为是多次操作。为使单片机CPU能正确地读出I/O口的状态,对每一次按键只作一次响应,就必须考虑如何去除抖动,常用软件法去抖动。即单片机获得I/O口为低的信息后,不是立即认定按键已被按下,而是延时10毫秒或更长一些时间后再次检测I/O口,如果仍为低,说明按键的确按下了。
(3)键盘扫描
确定有按键按下后,就要判断该按键所在行和列。通常采用行列扫描法,即用行线作输出线,列线作输入线。分别将每条行线置为低电平,而其它行线为高电平,如使P1.4-P1.7依次输出为1110、1101、1011、0111四组状态,在每组行状态输出时,读取列线P1.0-P1.3的状态信息,若全为1,说明为“0”这一行没有按键按下,接着输出下一组行状态并读取列线状态信息,直到列线不全为1为止。经这样逐行、逐列输出、读取后,就可以确定被按下的按键所在的行和列了。为了实现键盘的数据输入功能和命令处理功能,每个按键都有其处理子程序,因此每个按键都对应一个键值,键值可以根据需要任意定义。本设计要求的计算器键盘如图3中所示,我们可以让数字键依次定义为0~9,功能键分别定义为10~15,将键值存放在TAB表格中,如表1所示。当有按键按下时,根据行列扫描程序可以确定按键所在的行号和列号,然后使用查表指令,取得各按键对应的键值。
键盘扫描程序流程图如图4所示。
LED动态扫描显示程序设计
所谓动态扫描,是指采用分时方法,轮流控制各个数码管的公共端,使各个数码管依次轮流点亮,且循环往复,只要每
文档评论(0)