李新雪
摘要:本系统中央处理器由市场上较为成熟的51单片机来承担,51单片机价格低廉操作简单,外围接口丰富,可以很好的实现系统的各项功能要求,键盘输入部分采用4*4矩阵键盘来实现,16个按键分别完成0-9数字的输入和加、减、乘、除、等号、5個计算键的功能,最后一个按键实现清除计算内容的功能,显示单元采用LCD1602液晶显示屏显示,液晶显示效果相比数码管更加稳定,无闪烁同时显示字符内容丰富。
关键词:计算器;单片机;显示屏
1.计算器设计的任务和要求
本设计采用宏晶科技公司生产的STC89C52单片机作为系统的核心控制单元,然后以此单片机为基础结合外围所需的硬件电路,最后在硬件设计平台上完成软件代码的验证,最终完成简易数字计算器各项功能要求。此简易数字计算器主要电路模块包括:单片机最小系统、矩阵键盘电路、液晶LCD显示电路等单元组成。系统所使用的主要元器件包括:STC89C52单片机、4*4矩阵键盘、液晶显示屏LCD1602等。
本设计主要实现的功能和要求包括:(1)实现100000000以内的加法运算功能;(2)实现100000000以内的减法运算功能;(3)实现10000的乘法运算功能;(4)实现100000000的除法运算功能;(5)系统计算时输入数字和符号以及运算结果显示功能;(6)系统输入错误时具有清除的功能。
2.单片机最小系统设计
单片机为整个系统的控制核心,单片机型号的选择好坏直接会影响到整个系统设计的成败,因而选择一款合适的单片机对整个系统设计的成功与否起着至关重要的作用,目前市场上单片机种类型号千差万别,从基础的8位单片机到高端的64位单片机,价格从几元到上百元不等,选择单片机要首先要考虑价格因素,由于本系统设计是简易型计算器,因而功能相对较少,不需要较多的IO端口以及强大的存储空间,所以不需要选择价位较高的高端的单片机,考虑到目前市场上应用较为广泛的51位单片机完全能够达到设计的功能要求,因而本设计首选单片机是51单片机。宏晶科技公司生产的STC89C52单片机是目前国产单片机中性价比较高的型号,此单片机价格低廉,端口丰富完全兼容国外大品牌Atmel公司的AT89S52单片机,价格相比Atmel公司的单片机只有其价格的一般,鉴于以上分析,本文最终选择宏晶科技的STC89C52单片机作为简易计算器的主控单片机,STC89C52单片机的引脚图如图1所示。
单片机最小系统电路是整个计算器系统的核心,单片机最小系统电路设计的好坏直接决定整个系统的设计成败,因而在设计单片机最小系统电路之前一定要对单片机的工作原理有一个系统的学习,要知道单片机正常工作所需的必备条件,要了解单片机系统电路的组成以及各部分的主要功能。单片机最小系统电路一般由单片机、晶振电路、复位电路组成,此部分设计完成的电路如图2所示。
其中Y1为12M的晶体振荡器,选择12M是为了便于计算单片机运行的周期,Y1两端的电容 C1,C1 接在放大器的反馈回路中构成并联振荡电路。电容C1和C2应选择瓷片电容,至于电容容值的大小没有严格的限定,只是电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度的稳定性。如果使用石英晶体,推荐电容使用30pF士l0pF。
3.系统显示电路
主要包括单片机控制器、单片机P0口上拉电阻、LCD1602液晶显示器和对比度调节电阻器组成,此部分电路如图3所示。
液晶LCD1602的1脚为接地端,2脚为电源引脚,此款液晶显示器采用DC5V电压供电,此处VCC接5V电压,3脚为液晶显示器的对比度调节引脚,通过电阻R6接地,R6阻值可以选择2.2K到4.7K之间的电阻,也可以接4.7K的可调电位器接地,可通过改变此电阻的阻值大小来调节液晶的对比度;4脚、5脚、6脚为液晶片选控制引脚,分别连接到单片机的P1^0、P1^1、P1^2端口,7~14脚为数据接口,与单片机的P0口相连实现数据的传输,15、16脚为液晶的背光控制脚,分别接到电源和地,如果悬空不接则不使用背光。
按键输入电路用来完成密码的输入和修改,按键输入电路采用4*4矩阵键盘实现,矩阵键盘电路如图4所示。
4.系统矩阵键盘对应按键功能如图5所示。
如上图5所示,0-9位数字键,当运算时按下对应数字的按键即可输入相应数字,符号键“+”“-”“*”“/”“=”号对应计算器的运算功能键,当输入完相应的数字后按下对应的运算符后即可执行相应的计算操作,清除键指的是当运算过程中如果操作错误可以按下清除键完成对本次运算的清除功能,按下清除键以后即可进行再次运算操作。
当系统各部分电路设计完成后,需要对各部分电路进行总体汇总,然后对完整的电路进行可行性分析论证,在保证系统电路的完整性和可靠性的前提下方可进行下一步的软件设计以及成品组装,系统汇总完成的总体电路如图6所示。
图6为系统整体电路图,主要包括矩阵键盘输入电路,单片机最小系统电路以及液晶显示电路3大部分组成,考虑到计算器输入键盘部分由0-9共10个数字键,5个运算符号键,一个清除键,共需要16个按键,因而系统设计键盘输入部分采用4*4的矩阵键盘,共16个按键完成;显示界面采用LCD1602字符型液晶显示屏,LCD1602液晶能够显示2行32个字符,可以很好的满足系统设计的要求。
5.系统软件设计采用C语言编程,编译环境为Keil。
Keil c51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发系统,和汇编相比,C 在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil c51 软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil c51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
Keil C51 可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE 本身或其它编辑器编辑C 或汇编源文件,然后分别有C51 及A51 编辑器编译连接生成单片机可执行的二进制文件(.HEX),然后通过单片机的烧写软件将HEX 文件烧入单片机内。软件主要三个方面:一是初始化系统;二是数据采集;三是数据处理并进行显示。这三个方面的操作分别在主程序中来进行。程序采用模块化的结构,这样程序结构清楚,易编程和易读性好,也便于调试和修改。
6.系统的调试及问题
在调试过程中,曾遇到以下问题:
當硬件连接无误,在系统启动后液晶不显示,系统没有反应,经过分析这种情况有以下几种可能:第一,硬件电路中存在虚焊,或电路接线焊错;第二,芯片插反了导致电路短路;第三,液晶电路焊接错误。
遇到这种情况首先要用万用表检查芯片的供电电压是否为5V,如果不是就检查供电电路有没有问题。如果两端有电压就检查一下单片机有没有插反,通过逐步排查最终找到问题是因为单片机供电引脚虚焊造成的。
键盘输入显示乱码,和设计的键值不符,经检查发现矩阵键盘的行列端口定义与仿真接口定义不一致引起的,后重新修改端口问题得以解决。
初期系统显示不稳定,这有可能是系统电压不稳定,或者STC89C52芯片的31引脚EA引脚没有接高电平,经过排查发现系统电源电路中未加滤波电容,由于仿真电路不存在电源干扰问题,所以在仿真中可以稳定运行的情况下,根据仿真电路制作出的实物可能会出现由于外界干扰带来的系统工作不稳定情况,这种情况一般是由电源的干扰造成,可以通过增加电源端的滤波电容来解决这种问题。
7.总结:
本文采用STC89C52单片机设计完成了一款简易计算器的制作, 经过实际测试,功能稳定操作方便,能够达到计算器的基本功能要求,通过适当的包装和完善即可得到很好的推广和应用,此次设计对我具有很好的锻炼效果,但此次制作也有有待提高之处,比如数据处理方面,显示屏可以显示15位数字,去掉一位符号位,理论上可以实现两个7位数的加减乘除运算,但遗憾的是数据处理能力不足,未很好的解决乘法数据的处理,只能处理5位数与5位数的乘法,原因在于C语言运算符本身大小限制,程序方面也没有很好的思路解决这个问题。同时由于时间和费用的限制,此款计算器只是实现了计算器的基础功能,诸如开方等一些常用功能未能够实现。
参考文献:
[1]李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2005.
[2]康华光.电子技术基础模拟部分(第五版) [M].北京:高等教育出版社, 2005.
[3]阎石.数字电子技术基础(第四版)[M].北京:高等教育出版社,2005.
[4]白延敏.51单片机典型系统开发实例精讲[M].北京:电子工业出版社,2009.
[5]张齐.杜群贵.单片机应用系统设计技术[M].北京:电子工业出版社,2007.