3.2简易计算器
3.2.1功能简介
用单片机作为主控芯片,通过矩阵键盘进行数据输入,进行相应的加、减、乘、除的运算,并在LCD上显示相应的结果,主要功能特点如下:
(1)LCD的第一行显示运算式子,第二行显示运算结果,在任何时候按下AC清零按键时候,都必须退出当前计算,返回初始状态,等下新的一次运算。
(2)当运算完第一次完整的计算以后,可以在不按任何按键的情况下,进行新的一轮运算,若运算完一次运算后继续按运算符按键,则利用之前一次的结果作为第一个算数,直接等待第二运算数的输入并完成计算,即可进行连续运算。
(3)可根据用户需要开启或关闭LCD显示
(4)可进行开方运算、可进行任意次方的运算,即能进行x的y次方的运算。
3.2.2原理简介
1.LCD1602液晶屏原理图
图2.2 液晶显示模块
LCD1602,工业字符型液晶,能够同时显示16x02即32个字符(16
列2行),故简称1602。
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
6
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。
1602LCD 液晶具有功耗低、显示内容丰富、清晰,显示信息量大,显示速度较快,界面友好等而得到广泛应用,因此使用1602液晶显示屏,可以方便的显示多种字符,特别适用于单片机计算器的双行显示。 液晶显示模块的设计:
2.矩阵键盘原理图
图2.3 矩阵键盘
计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。 另外本设计还制定了四个独立按键,在任何时候按下AC清零键或关闭显示键,都必须退出当前操作,数据清零,准备下一次的运算,故应采用独立键盘产生下降沿输入给单片机外部中断处理。
7
5. 编程思想 5.1 DS1302时钟:
数字钟需要能够实现五个功能。在模式一时正常显示当前时间,模式二是能够对当前时间进行调整,模式三是能够对当前日期进行显示和调整。模式四是能够对当前星期进行显示和调整,模式五主要用来设置闹钟时间。
按键功能设计。K1是功能模式选择,K1是单片机外部中断0,采用下降沿触发方式,接收外来中断。K2是调整确认键,对时间、日期的修改操作,需要按下K2进行确认,K2键也是外部中断采用下降沿中断。K3、K4、K5按照时、分、秒十进制数字进行调整,对日、月、年十进制数字进行调整,K5对星期进行调整。
七段数码管显示部分,显示时间时采用24进制,时分秒之间用短连接符隔开。显示日期时,年份只显示后两位,年月日之间也用短连接符隔开,在调整时间和日期时为了加以区别调时时数码管显示全零,而调日期时由于日期没有0月0日,所以数码管显示为00-01-01。
本程序为了能够让闹钟音乐和数码管扫描同时进行,采用定时器扫描,通过定时器扫描对应数码管应该显示数字,再通过位控制来循环扫描,从而显示时间或日期。
在主程序中应该对外部中断和定时器进行初始化,同时对调整过后的数据写入DS1302,并从DS1302中读取当前模式所需数据。主程序中还应该实现当前时间与闹钟时间的对比,如果相等的话则调用闹钟程序,否则不操作。
8
5.2简易计算器:
根据课程要求和设计指标,本系统采用MCS-51系列单片机作为主控机,通过拓展必要的外围电路,实现对计算器的设计,具体设计思路如下:
(1) 由于要显示运算式和结果,为了达到良好的显示效果,本系统采用
LCD1602液晶显示屏作为显示模块。
(2) 计算器一般包含数字键(0~9),符号键(+、-、×、÷)、小数点
按键,等号按键,故采用4*4矩阵键盘结合键盘扫描技术容易达到要求,并且电路和程序也比较简单。
(3) 执行过程:开机显示‘0’,等待按键输入,当键入数字,在LCD上
显示出来,计算器内部吧数据储存起来,并等待下一按键输入,当键入+、-、×、÷运算符,计算器在内部进行转换,得到第一运算数,然后等待再次输入数值,按等于号就在LCD上显示结果,如果继续按下+、-、×、÷运算符,则直接利用第一次运算的结果进行下一次运算。
(4) AC清零功能:在运算的任何时候键入AC键,则把数据清零,等待
下一次运算。为了实现此功能,本系统采用AC按键外部中断输入,运用中断技术,随时对计算器进行清零。
(5) 开方和多次方运算功能的实现:采用独立按键,再检测运算符的时候
也检测这两个按键,一旦符合按下则进行开方或者多次方运算,程序可通过条用“math.h”头文件中的sqrt和pow函数实现。
(6) 错误提示:当输入超过范围时,则停止输入,等待输入运算符;当除
数为0时,计算器会在LCD上提示错误;当被开方数小于0时,提示错误。
鉴于本设计的计算器的难度以及功能的要求,在本设计中决定使用语言功能丰富、表达能力强、使用方便灵活、可移植性好的C语言编写软件,这样有利于减轻工作量和代码量,提高设计效率。若使用汇编语言编写程序,会出现汇编语言无法表达、移植困难等问题,而且对于开方和多次方的运算,汇编语言难以表达和设计,这是设计是很不利。
9
6、 程序框图
外部中断0外部中断1模式2?模式循环加一对应当前显时选择调整示位在有效分位范围内加1秒模式是否是调节模式打开外部中断1用于调节数字关闭外部中断1模式3?对应当前显示位在时选择调整分有效范围位内加1秒左图写入DS1302模式4?时选择调整位秒对应闹钟记录位在有效范围内加1分不处理
图5.1 DS1302时钟的程序框图
10