基于单片机的简易计算器设计Word文件下载.docx
- 文档编号:22441649
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:30
- 大小:66.01KB
基于单片机的简易计算器设计Word文件下载.docx
《基于单片机的简易计算器设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的简易计算器设计Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是它只能做加减运算。
1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。
此后,一直到20世纪50年代末才有电子计算器的出现。
第一章设计原理及要求
1.1设计方案的确定
本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器程序运行来完成加、减、乘和除的简单计算功能。
本设计运算模块由AT89C51实现,数据输入模块由4*4矩阵键盘电路实现,输出数据模块由LCD显示电路实现,再外加一个时钟电路和一个复位电路完成整个简易计算器的设计。
1.2系统的设计方案
本设计由以下几部分组成:
AT89C51单片机系统(运算模块)、键盘电路、显示电路、时钟电路和复位电路构成,计算器系统框图如图1-1所示。
图1-1计算器系统框图
1.3系统的设计要求
为了更好地实现系统的功能,硬件电路的设计应该遵循以下原则:
1、优化硬件电路
采用软件设计与硬件设计相结合的方法。
尽管采用软件来实现硬件系统的功能时,也许响应的时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;
但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。
所以,在设计本系统的时候,在满足可靠性和实时性的前提下,尽可能地通过软件来实现硬件功能。
2、可靠性及抗干扰设计
根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。
而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。
因此,系统的设计思想是在满足功能的情况下争取较少数量的芯片。
3、灵活的功能扩展
功能扩展是否灵活是衡量一个系统优劣的重要指标之一。
一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。
进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。
对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。
根据提出的系统设计方案,结合以上三条原则,确定了系统硬件的设计。
计算器主要由以下一些功能模块组成:
非编码键盘模块、运算模块(单片机内部)和LCD液晶显示模块等。
该系统的硬件设计采用了模块化的设计方法。
AT89C51单片机、LCD液晶显示屏显示电路和键盘电路是整个电路的核心,它们能实现系统的功能要求。
简易计算器主要包括:
键盘电路、运算电路和输出显示电路。
第二章硬件模块设计
在本设计中主要用到的硬件:
单片机AT89C51、液晶显示屏LCD1602、4*4矩阵键盘。
单片机AT89C51的硬件资源分配:
(1)P3口:
作为输入口,与键盘连接,实现数据的输入;
(2)P0、P2口:
作为输出口(P2口为高位,P0口为低位),控制LCD液晶显示屏显示数据的结果;
(3)P1口和部分P3口:
作为液晶显示屏LCD1602显示输出。
2.1单片机AT89C51
本设计所用单片机采用AT89C51单片机,它兼容于MCS-51系列单片机,而且具有1000次可擦写的FLASHMEMORY,方便于系统的开发以及参数的修改。
尽管它是8位机,但它的处理精度完全满足系统的设计要求。
该种单片机的最高频率可达到24MHz。
在12MHz时,其处理速度完全达到设计要求,AT89C51的实物图及引脚图如图2-1所示。
图2-1单片机AT89C51实物图及引脚图
2.1.1AT89C51芯片的特点
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机,他的特点如下:
1、与MCS-51兼容
2、1000写/擦循环
3、4K字节可编程闪烁存储器
4、数据保留时间:
10年
5、全静态工作:
0Hz-24Hz
6、三级程序存储器锁定
7、128*8位内部RAM
8、32可编程I/O线
9、两个16位定时器/计数器
10、5个中断源
11、可编程串行通道
12、低功耗的闲置和掉电模式
13、片内振荡器和时钟电路
2.1.2管脚说明
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写“1”时,被定义为高阻输入。
P0口能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0口输出原码,此时P0口外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入“1”后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口是一个内部提供上拉电阻的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
当作为输出时,P2口的管脚被外部拉低,将输出电流,这是由于内部上拉的缘故。
当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收和输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL),这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口。
P3口管脚备选功能如下:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX时ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取值期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间只管外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器,注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此时只管内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.1.3振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
晶体振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.1.4芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下表示静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM、定时器、计数器、串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
2.2键盘控制模块
计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×
4个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
2.2.1矩阵键盘的工作原理
键盘可分为两类:
编码键盘和非编码键盘。
编码键盘是较多按键(20个以上)和专用驱动芯片的组合;
当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。
通用计算机使用的键盘就是编码键盘。
在智能仪器中,使用并行接口芯片8279或串行接口HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可在芯片资料中得到。
当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。
而非编码键盘成本低廉。
从简易和成本角度出发,本设计选用的是非编码键盘。
如图2-2所示。
一般由16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。
其矩阵图所对应的仿真图如图2-3所示。
图2-2矩阵键盘内部电路图图2-3矩阵键盘布局图
2.2.2键盘电路主要器件介绍
为了进一步节省单片机I/O口资源,我们在设计中使用了MM74C922芯片。
MM74C922是一款4*4键盘扫描IC,它可检测到与之相连的4*4键盘的按键输入,并通过数据输出口将按键相应的编码输出。
其引脚图如图2-4所示。
图2-4MM74C922芯片引脚图
MM74C922引脚说明:
(1)Y1-Y4(脚1-脚4):
4*4键盘第一列至第四列。
(2)X1-X4(脚11、10、8、7):
4*4键盘第一行至第四行。
(3)DOA-DOD(DataoutA-D,脚14-17):
按键之BCD码输出,其中DOA为LSB,DOD为MSB。
(4)VCC(脚18):
电源脚,+3V至+15V
(5)GND(脚9):
接地管脚
(6)OSC(Oscillator,脚5):
键盘扫描电路之频率所需外加电容的引脚。
(7)KBM(KeyboardMask,脚6):
内部消除开关弹跳电路所外加电容的引脚。
(8)OE(OutputEnable,脚13):
芯片使能脚,接低电位可使芯片使能。
(9)DA(DataAvailable,脚12):
数据有效输出脚。
任一按键按下时,此脚位会输出高电位,按键释放后此脚又会恢复为低电位。
如图2-5所示,在本设计中,计算器输入键盘的4条行线、4条列线分别连接到MM74C922的X1-X4、Y1-Y4引脚,MM74C922的数据输出口与单片机的P2口相连,MM74C922的DA引脚经过一个非门连接到单片机的/INT0脚,当MM74C922检测到键盘输入时,DA产生高电平,与之相连的/INT0检测到低电平,给单片机一个中断,单片机从P2口的低四位读入键盘上按下的按键值。
图2-5键盘接口电路图
2.3LCD显示模块
本设计采用LCD液晶显示器来显示输入输出数据。
通过D0-D7引脚向LCD写指令字或写数据以使LCD实现不同的功能或显示相应数据。
LCD引脚图如图2-6所示。
图2-6LCD1602引脚图
LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,在实际使用中是否带背光并无多大差别,两者尺寸差别如图2-7所示。
图2-7LCD背光和不带背光的尺寸对比图
2.3.1显示电路
当系统需要显示少量数据时,采用LCD液晶显示屏进行显示是一种经济实用的方法。
P1口作为液晶显示的数据端口,P3.4-P3.6口作为其控制端口,控制LCD液晶显示屏显示输出数据。
显示电路图如图2-8所示。
图2-8LCD液晶显示电路
2.3.2LCD1602主要技术参数
显示容量:
16×
2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×
4.35(W×
H)mm
2.3.3引脚功能说明
LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2-1所示。
表2-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
背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
2.4运算模块(单片机控制)
AT89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是一些特殊的功能,通过使用单片机编写的程序可以实现高智能、高效率以及高可靠性!
因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。
另外系统还包括时钟电路和复位电路。
第三章软件设计
3.1功能介绍
实际运用中人们熟悉的计算器,其功能主要如下:
1、键盘输入;
2、显示数值;
3、加、减、乘、除四则运算;
4、对错误输入和输出的控制及提示。
3.2系统流程图
在软件设计中程序分别要完成键盘输入检测、LCD初始化及显示、算术运算和错误处理及输出等功能。
对主程序进行初始化,其他的程序选择模块式的方式。
首先对每个模块进行调试,当模块调试成功后,逐一地加入主程序中,最后完成整个软件部分的设计。
系统流程图如图3-1所示。
图3-1系统流程图
3.3程序
本设计程序采用C语言编程,程序分为多个模块,由主程序、键值转换和LCD系列程序等模块组成。
具体程序见附录。
第四章系统调试
4.1软件介绍
4.1.1KeiluVision2仿真软件简介
KeiluVision2是德国Keil公司开发的基于Windows平台的单片机集成开发环境,它包含一个高效的编译器、一个项目管理器和一个MAKE工具。
其中KeilC51是一种专门为单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语言媲美。
KeiluVision2的界面如图4-1所示,KeiluVision2允许同时打开、浏览多个源文件。
图4-1KeiluVision2的界面
4.1.2protues简介
protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上着名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
它是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年已经增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器,界面图如图4-2所示。
图4-2protues界面图
4.2软件调试
4.2.1软件分析及常见故障
在此次设计中使用KeiluVision2和Proteus软件仿真,其中使用KeiluVision2软件汇编源程序,使用Proteus软件对硬件电路进行模拟。
正确连接电路图,使其能按照题目要求及设计初衷正常工作。
从库里正确拾取元器件,认真合理地连线,做到不缺件,不缺线,选取合适的元件参考值,使其能正常工作。
通过编译,连接程序。
使其生成.hex文件,并连入连好的Proteus图中。
测试该计算器是否能正常工作。
若不能,首先要检查有没有漏掉元器件,元器件是否都连接好。
其次,要看元件各引脚是否都连接正确,有无接反的。
最后要看元件的参考值是否选择合理,电源电压是否能带动元器件正常工作。
常见故障:
1、逻辑错误:
它是由设计错误或加工过程中的工艺性错误所造成的。
这类错误包括错线、开路、短路等。
2、元器件失效:
有两方面的原因:
一是器件本身已损坏或性能不符合要求;
二是组装错误造成元件失效,如电解电容、集成电路安装方向错误等。
3、可靠性差:
因其可靠性差的原因很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;
走线和布局不合理也会引起系统可靠性差。
4、电源故障:
若样机有电源故障,则加电后很容易造成器件损坏。
电源故障包括电压值不符合设计要求,电源引线和插座不对,功率不足,负载能力差等。
调试方法:
包括多级调试和联机调试。
在调试过程中要针对可能出现的故障认真分析,直至检查出原因并排除。
本次硬件调试过程中,对所出现的问题进行了认真的分析和改正,最后能够很好的达到设计要求的效果。
系统仿真图如图4-3所示。
图4-3系统仿真图
4.2.2仿真结果演示
下面以加、减、乘和除分别做仿真演示:
(1)加法:
以258和825作为加数和被加数运算,结果为1083。
加法仿真结果图如图4-4所示。
图4-4加法仿真结果图
(2)减法:
以7654321和1234567作为被减数和减数运算,结果为6419754。
减法仿真结果图如图4-5所示。
图4-5减法仿真结果图
(3)乘法:
以694和123作为乘数和被乘数运算,结果为85362。
乘法结果仿真图如图4-6所示。
图4-6乘法结果仿真图
(4)除法:
以1250和5作为被除数和除数运算,结果为250。
除法结果仿真图如图4-7所示。
图4-7除法结果仿真图
由以上四种运算结果可知软件仿真均正确,没有显示错误。
4.3硬件调试
在protues里面把硬件图画好,把所有元器件的参数都设置好,程序在keil里面生成.hex文件,然后在protues里单片机芯片中导入此文件,运行一切正常后开始准备焊接硬件。
在焊接硬件过程中首先得准备好所有必备的东西,比如所需元器件和焊接所用工具等。
在焊接前应先在面包板上把硬件插好调试,接通电源看能否显示出结果,如果元器件都是好的并且结果可以显示出,就可以焊接了。
如果显示不出来再检查各个器件是否有损坏,并用万用表挨个检查,直至一切显示正常再焊接。
在焊接时要注意相邻焊点不能粘在一起,连接线不能太长,并且注意焊点的虚焊、假焊。
在使用电烙铁时温度不能太高也不能太低,一般在350度左右,温度太低容易形成冷焊点,太高则会烧坏电路板。
电路板焊接好以后首先测试一下各个元器件是否正常,焊点有无虚焊、连焊、假焊等现象,检查没有问题以后接通电源查看LCD显示是否正常,如果一切显示没有问题把硬件妥善保管,防止不小心损坏。
硬件电路实物图如图4-8所示。
图4-8硬件电路实物图
结束语
通过这次简易计算器的设计,很大程度的提高了我的理解力和动手能力,也拓宽了知识面。
在图书馆和网上查阅资料使我了解了更多的资料,也方便了我们以后的使用。
在查询的资料中让我对单片机有了更深入的了解,能把学到的知识用活,而不只局限于理论
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 简易 计算器 设计