基于51单片机的简易计算器设计.docx
《基于51单片机的简易计算器设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的简易计算器设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于51单片机的简易计算器设计
基于单片机的简易计算器设计
摘要
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。
计算机在人们的日常生活中是比较常见的电子产品之一。
可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计主要以80C51单片机为控制芯片,用C语言进行编程实现,通过4*4矩阵键盘控制,输出用液晶屏LCD1602显示,该计算器可以实现一般的加减乘除四则混合运算。
关键字:
80C51LCD16024*4矩阵键盘计算器
第一章绪论
1.1系统开发背景
随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。
电子产品的更新速度快就不足惊奇了。
计算器在人们的日常中是比较的常见的电子产品之一。
如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好的为各个行业服务,成了如今电子领域重要的研究课题。
1.2系统开发意义
今天,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店,办公室,学校……。
因此设计一款简单实用的计算器会有很大的实际意义。
1.3设计目的
通过本次硬件与软件相结合的实践,运用《单片机基础》、《MCS-51系列单片微型计算机及其应用》所学知识及查阅相关资料,完成简单专用计算器的设计,达到理论知识与实践更好的结合、提高综合运用所学知识和设计能力的目的。
通过本次设计训练,可以使我们在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计和按键操作有一个比较感性的认识,并具备一定程度的设计能力。
1.4设计任务
在本次设计实践中,主要完成如下方面的设计任务:
1)简要综述单片机技术发展的国内外现状及液晶屏显示和矩阵键盘基本原理;
2)掌握MCS-51系列某种产品(例如AT89S52)的最小电路及外围扩展电路的设计方法;
3)了解单片机数据转换功能及工作过程;
4)完成主要功能模块的硬件电路设计及必要的参数确定;
第二章单片机发展现状
2.1目前单片机的发展状况
单片机的发展趋势:
低功耗CMOS化;微型单片化;主流与多品种共存;单片机从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:
1)信低功耗CMOS化
MCS-51系列的8051推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
象80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径。
2)微型单片化
现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
3)主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。
所以C8051为核心的单片机占据了半壁江山。
而Microchip公司的PIC精简指令集(RISC)也有着强劲的发展势头,中国台湾的HOLTEK公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。
此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。
在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
2.1.1单片机的应用场合
智能仪器仪表
单片机用于各种仪器仪表,一方面提高了仪器仪表的使用功能和精度,使仪器仪表智能化,同时还简化了仪器仪表的硬件结构,从而可以方便地完成仪器仪表产品的升级换代。
如各种智能电气测量仪表、智能传感器等。
1)智能仪器仪表
机电一体化产品是集机械技术、微电子技术、自动化技术和计算机技术于一体,具有智能化特征的各种机电产品。
单片机在机电一体化产品的开发中可以发挥巨大的作用。
典型产品如机器人、数控机床、自动包装机、点钞机、医疗设备、打印机、传真机、复印机等。
2)实时工业控制
单片机还可以用于各种物理量的采集与控制。
电流、电压、温度、液位、流量等物理参数的采集和控制均可以利用单片机方便地实现。
在这类系统中,利用单片机作为系统控制器,可以根据被控对象的不同特征采用不同的智能算法,实现期望的控制指标,从而提高生产效率和产品质量。
典型应用如电机转速控制、温度控制、自动生产线等。
3)家用电器
家用电器是单片机的又一重要应用领域,前景十分广阔。
如空调器、电冰箱、洗衣机、电饭煲、高档洗浴设备、高档玩具等。
另外,在交通领域中,汽车、火车、飞机、航天器等均有单片机
的广泛应用。
如汽车自动驾驶系统、航天测控系统、黑匣子还有分
布式系统的前端模块等等。
2.2计算器系统现状
计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备组成。
低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。
高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。
键盘是计算器的输入部件,一般采用接触式或传感式。
为减小计算器的尺寸,一键常常有多种功能。
显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。
除显示计算结果外,还常有溢出指示、错误指示等。
计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。
为节省电能,计算器都采用CMOS工艺制作的大规模集成电路(见互补金属-氧化物-半导体集成电路),并在内部装有定时不操作自动断电电路。
计算器可选用的外围设备有微型打印机、盒式磁带机和磁卡机等。
2.3简易计算器系统介绍
本计算器是以51系列8051单片机为核心构成的简易计算器系统。
该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并把检测数据存储下来。
整个计算器系统的工作过程为:
首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入LCD显示。
整个系统可分为三个主要功能模块:
功能模块一,实时键盘扫描;功能模块二,LCD显示;功能模块三,计算。
第三章系统硬件设计及说明
为了更好的实现系统得功能,硬件电路的设计应该遵循以下原则:
1、优化硬件电路
采用软件设计与硬件设计相结合的方法;尽管采用软件来实现硬件系统的功能时,也许响应时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。
所以,在设计本系统得时候,在满足可靠性和实时性的前提下,尽可能的通过软件来实现硬件功能。
2、可靠性及抗干扰设计
根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。
而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。
因此,系统的设计思想是在满足功能的情况下力争使用较少数量的芯片。
3、灵活的功能扩展
功能扩展是否灵活是衡量一个系统优劣的重要指标。
一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。
进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。
对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。
根据第提出的系统设计方案,结合以上三条原则,确定了系统硬件的设计。
计算器主要由以下一些功能模块构成:
非编码键盘模块、LCD液晶显示屏模块等。
该系统的硬件设计采用了模块化的设计方法。
AT89S52单片机与LCD液晶显示屏显示电路是整个电路的核心,它们实现系统的功能要求。
简易计算器主要包括:
键盘电路,显示电路。
下图为总体硬件结构
前面叙述了该系统的设计说明,系统采用了比较简单的设计方案,所以该系统的硬件设计的总外围电路不会产生过多的干扰。
在下面的阐述中,对系统的外围电路分别予以介绍。
键盘部分采用编码键盘,显示部分采用LCD液晶显示屏完全能够很好的实现显示方面的要求。
3.1系统组成及总体框图
3.2AT89S52单片机介绍
图3.2.1-1单片机AT89S52
1、主要性能:
(1)•8031CPU与MCS-51兼容
•8K字节可编程FLASH存储器(寿命:
1000写/擦循环)
•全静态工作:
0Hz-33MHz
•三级加密程序存储器
•128*8位内部RAM
•32条可编程I/O线
•三个16位定时器/计数器
•八个中断源
•全双工UART串行通道
•低功耗的闲置和掉电模式
•掉电后中断可唤醒
•看门狗定时器
•双数据指针
•掉电标识符
•片内振荡器和时钟电路
(2)管脚说明:
VCC:
供电电压。
GND:
接地。
2、AT89S52的功能特性描述
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
此外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程Flash。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
4、AT89S52的编程方法
编程前,须按编程模式表设置好地址、数据及控制信号;顺序如下:
①在地址线上加上要编程单元的地址信号。
②在数据线上加上要写入的数据字节。
③激活相应的控制信号。
④将EA/Vpp端加上+12V编程电压。
⑤每对Flash存储阵列写入一个字节或每写入一个程序机密位,加上一个ALE/PROG编程脉冲。
每个字节写入周期是自身定时的,大多数约为50us。
改变编程单元的地址和写入的数据,重复①—⑤步骤,直到全部文件编程结束。
单片机的现状及发展方向:
单片机是为了工业控制需要满足而诞生的,是自动控制系统的核心部件,因而也主要用于工业控制、智能化仪器仪表、家用电器中。
它具有体积小,功能多、价格低、使用方便、系统设计灵活等优点,应用领域不断扩大,除了工业控制,智能化仪表,通讯,家用电器外,在智能化高档电子玩具产品中也大量采用单片机芯片作为核心控制部件。
由于单片机主要面向工业控制,工作环境比较恶劣,入高温,强电磁干扰,甚至含有腐蚀性气体,在太空中工作的单片机控制系统,还必须具有抗辐射能力,这决定了单片机CPU于通用微机CPU具有不同的技术特征和发展方向:
(1)可靠性高;
(2)控制功能往往很强,数值计算交叉;
(3)指令系统比通用微处理器慢的多;
(4)X系列芯片取代;
(5)抗干扰性强,工作温度范围宽。
3.3其它器件介绍及说明
3.3.1LCD1602液晶显示
字符型液晶显示模块是一种专用于显示字母、数字、符号等点阵式LCD,目
前常用16*1,16*2,20*2和40*2行等的模块。
下面以长沙太阳人电子有限公
司的1602字符型液晶显示器为例,介绍其用法。
一般1602字符型液晶显示器
实物如下图所示:
1602字符型液晶显示器实物图
1602LCD的基本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:
1602LCD尺寸图
LCD1602接口电路
1602LCD主要技术参数:
显示容量:
16×2个字符
芯片工作电压:
4。
5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表1所示:
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
表10-13:
引脚接口说明表
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器,因此,与AT89S52单片机的P2.0/A8相连接。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当
RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W
为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
因此,与AT89S52单片机的P2.1/A9相连接
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令,所以,与AT89S52单片机的P2.2/A10相连接
第7~14脚:
D0~D7为8位双向数据线,在本设计中,与AT89S52单片机的P0口和上拉电阻相连。
第15脚:
背光源正极。
第16脚:
背光源负极。
1602LCD的一般初始化(复位)过程
延时15mS
写指令38H(不检测忙信号)
延时5mS
写指令38H(不检测忙信号)
延时5mS
写指令38H(不检测忙信号)
以后每次写指令、读/写数据操作均需要检测忙信号
写指令38H:
显示模式设置
写指令08H:
显示关闭
写指令01H:
显示清屏
写指令06H:
显示光标移动设置
写指令0CH:
显示开及光标设置
3.3.24*4矩阵扫描按键
键盘可分为两类:
编码键盘和非编码键盘。
编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。
通用计算机使用的标准键盘就是编码键盘。
在智能仪器中,使用并行接口芯片8279或串行接口芯片HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。
当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。
非编码键盘成本低廉。
从成本角度出发,本设计选用的是非编码键盘。
键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。
键盘控制程序需完成的任务有:
监测是否有键按下,有键按下时,在无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。
矩阵按键扫描程序是一种节省IO口的方法,按键数目越多节省IO口就越可观,思路:
先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。
但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。
本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。
本键盘扫描程序的优点在于:
不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。
另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。
键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。
键盘控制程序需完成的任务有:
监测是否有键按下,有键按下时,在无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。
矩阵按键扫描程序是一种节省IO口的方法,按键数目越多节省IO口就越可观,思路:
先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。
但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。
本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。
本键盘扫描程序的优点在于:
不用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。
另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。
图3.3.2按键接线图
键值与功能对应表
键值
0
1
2
3
4
5
6
7
8
9
+
-
×
/
=
ON/C
功能
0
1
2
3
4
5
6
7
8
9
+
-
×
÷
=
清零
第四章PROTEUS模拟仿真
第五章系统硬件设计及说明
为了更好的实现系统得功能,硬件电路的设计应该遵循以下原则:
1、优化硬件电路
采用软件设计与硬件设计相结合的方法;尽管采用软件来实现硬件系统的功能时,也许响应时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。
所以,在设计本系统得时候,在满足可靠性和实时性的前提下,尽可能的通过软件来实现硬件功能。
2、可靠性及抗干扰设计
根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。
而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。
因此,系统的设计思想是在满足功能的情况下力争使用较少数量的芯片。
3、灵活的功能扩展
功能扩展是否灵活是衡量一个系统优劣的重要指标。
一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。
进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。
对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。
根据第提出的系统设计方案,结合以上三条原则,确定了系统硬件的设计。
计算器主要由以下一些功能模块构成:
非编码键盘模块、LCD液晶显示屏模块等。
第六章软件设计
6.1汇编语言和C语言的特点及选择
本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。
在单片机的应用系统程序设计时,常用的是汇编语言和C语言。
机硬件,程序可读性和可移植性比较差。
而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。
由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常的快。
用C语言来控制单片机无疑是一个理想的选择。
所以在本设计中采用C语言编写软件程序。
6.2源程序代码
#include//头文件
#defineuintunsignedint//
#defineucharunsignedchar
sbitlcden=P2^0;//定义引脚
sbitrs=P2^3;
sbitrw=P2^4;
sbitbusy=P0^7;
chari,j,temp,num,num_1;
longa,b,c;//a,第一个数b,第二个数c,得数
floata_c,b_c;
ucharflag,fuhao;//flag表示是否有符号键按下,fuhao表征按下的是哪个符号
ucharcodetable[]={
7,8,9,0,
4,5,6,0,
1,2,3,0,
0,0,0,0};
ucharcodetable1[]={
7,8,9,0x2f-0x30,
4,5,6,0x2a-0x30,
1,2,3,0x2d-0x30,
0x01-0x30,0,0x3d-0x30,0x2b-0x30};
voiddelay(ucharz)//延迟函数
{
uchary;
for(z;z>0;z--)
for(y=0;y<110;y++);
}
voidcheck()//判断忙或空闲
{
do{
P0=0xFF;
rs=0;//指令
rw=1;//读
lcden=0;//禁止读写
delay
(1);//等待,液晶显示器处理数据
lcden=1;//允许读写
}while(busy==1);//判断是否为空闲,1为忙,0为空闲
}
voidwrite_com(ucharcom)//写指令函数
{
P0=com;//com指令付给P0口
rs=0;
rw=0;
lcden=0;
check();
lcden=1;
}
voidwrite_date(uchardate)//写数据函数
{
P0=date;
rs=1;
rw=0;
lcden=0;
check();
lcden=1;
}
v