简易计算器.docx

上传人:b****6 文档编号:3239635 上传时间:2022-11-20 格式:DOCX 页数:25 大小:809.78KB
下载 相关 举报
简易计算器.docx_第1页
第1页 / 共25页
简易计算器.docx_第2页
第2页 / 共25页
简易计算器.docx_第3页
第3页 / 共25页
简易计算器.docx_第4页
第4页 / 共25页
简易计算器.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

简易计算器.docx

《简易计算器.docx》由会员分享,可在线阅读,更多相关《简易计算器.docx(25页珍藏版)》请在冰豆网上搜索。

简易计算器.docx

简易计算器

湖南人文科技学院

课程设计报告

课程名称:

单片机原理及应用课程设计

设计题目:

简易计算器

系别:

通信与控制工程系

专业:

自动化

班级:

一班

学生姓名:

陈彬王冬林

学号:

****************

起止日期:

2012年12月24日~2013年01月06日

********

教研室主任:

岳周

指导教师评语:

 

指导教师签名:

年月日

成绩评定

项目

权重

成绩

1、设计过程中出勤、学习态度等方面

0.2

2、课程设计质量与答辩

0.5

3、设计报告书写及图纸规范程度

0.3

总成绩

教研室审核意见:

 

教研室主任签字:

年月日

教学系审核意见:

 

主任签字:

年月日

摘要

该简易计算器以STC89C52单片机为核心,显示模块数码管,利用C语言编写相应程序进行四位自然数的有效四则运算。

该计算器计算精度不高,只能实现简单的加减乘除,且有效数字位数有限。

该装置由STC89C52模块,4x4键盘(包括1~9,+,-,*,/等十六个字符),数码管组成。

STC89C52为主模块,其控制键盘及显示模块。

键盘可以实现数字及运算符号的输入,数码管可以进行人机交互,显示按下键盘所对应的字符以及显示运算结果。

此计算器采用浮点运算采用3字节二进制补码表示,有效数字6位。

对于输入输出,采用3字节BCD码浮点数格式,有效数字只有4位,因此最终有效数字只有4位。

可进行连续输入,例如:

1.23+4.56*8.23/234.8,但是运算结果为从左到右,这也是8位简易计算器的方式。

其可进行错误判断,溢出、除零等错误将显示一个字符E。

关键词:

STC89C52、C语言、数码管显示

 

简易计算器

1设计要求

设计一个简易计算器,要求能够进行简单的加减乘除运算,具体要求如下:

1.4X4键盘输入,LED显示。

2.浮点运算采用3字节二进制补码表示,有效数字6位。

对于输入输出,采用3字节BCD码浮点数格式,有效数字只有4位,因此最终有效数字只有4位。

3.可进行连续输入,例如:

1.23+4.56*8.23/234.8,但是运算结果为从左到右,这也是8位简易计算器的方式。

4.可进行错误判断,溢出、除零等错误将显示一个字符E。

5.由于键盘只有16个按键,安排如下:

  +---------------+

  |7|8|9|+|

  |4|5|6|-|

  |1|2|3|*|

  |0|.|=|/|

  +---------------+

图1设计要求

2方案论证与对比

2.1方案一

主控芯片采用STC89C52单片机,8255A为辅助扩展芯片(控制键盘信号采集以及数码管显示),采用普通数码管显示。

由于此方案采用了扩展芯片,程序设计较为复杂。

而且采用普通数码管显示,并不能显示“+”、“-”、“*”、“/”等运算符号。

系统原理框图如图2所示:

图2方案一系统方框图

2.2方案二

只采用STC89C52单片机,由此芯片直接控制显示屏以及键盘。

从而可以省去8255芯片,以节省资金。

显示屏采用的是1602的液晶显示屏。

采用液晶显示屏的优势是能够计算更多位的数值且能够显示出各种运算符号。

此方案可以减少设备费用,降低程序的复杂性,也能更好的显示出计算过程,人机互动性增强。

系统原理框图如图3所示。

 

图3方案二系统方框图

2.3方案对比与选择

以上两个方案都是可行的,都能实现简单的加减乘除功能。

两者的最大区别就在于方案二直接采用STC89C52芯片控制以及采用1602液晶屏显示,程序要简单易用易控制,而且能够很好的显示各种运算符号。

基于实用性,经济性,我们决定采用第二方案作为设计的整体方案。

3单元电路设计与计算

3.1主控芯片STC89C52

STC89C52是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用STC公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。

STC89C52具有如下特点:

40个引脚(引脚图如图3所示),4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,STC89C52RC设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

图4STC89C52芯片引脚图

VCC(40):

+5V;GND(20):

接地;P0口(39-32):

P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流;P1口(1-8):

P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流;P2口(21-28):

P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流;P3口(10-17):

P3口是8个带内部上拉电阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口;RST(9):

复位输入。

当振荡器复位时,要保持RST引脚2个机器周期的高电平时间;ALE/PROG(30):

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲;PSEN(29):

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在访问外部数据存储器时,这2次有效的PSEN信号将不出现;EA/VPP(31):

当EA保持低电平时,外部程序存储器地址为(0000H-FFFFH)不管是否有内部程序存储器。

FLASH编程期间,此引脚也用于施加12V编程电源(VPP);XTAL1(19):

反向振荡器放大器的输入及内部时钟工作电路的输入;XTAL2(18):

来自反向振荡器的输出;

3.2液晶显示模块

液晶显示模块选用长沙太阳人公司的1602液晶模块,2行*16列字符显示,并行8数据通信,可以满足本系统中显示的要求。

我在平时的练习中利用开发板已经调过液晶显示的模块,利用C语言模块的可移植性,直接将模块移植过来,根据实际情况更改数组内容,即可实现对本设计中需要显示的参数进行显示。

1602液晶与单片机的连接电路如下所示:

图51602液晶接口电路

1602采用标准的16脚接口,其中:

第1脚:

VSS为地电源

第2脚:

VDD接5V正电源

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时

对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器

调整对比度

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存

器。

第5脚:

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS

和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平

时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15~16脚:

空脚

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:

阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”

表1CGROM和CGRAM中字符代码与字符图形对应关系

1602液晶模块内部的控制器共有11条控制指令,如表2所示,

表2指令表

它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:

1为高电平、0

为低电平)

指令1:

清显示,指令码01H,光标复位到地址00H位置

指令2:

光标复位,光标返回到地址00H

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标

指令6:

功能设置命令DL:

高电平时为4位总线,低电平时为8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符

指令7:

字符发生器RAM地址设置

指令8:

DDRAM地址设置

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:

写数据

指令11:

读数据

1602液晶显示模块可以和单片机STC89C52直接接口,电路原理图如附图2所示。

3.3键盘检测模块

3.3.1键盘设置

键盘输入采用4*4的矩阵键盘。

4*4键盘分别与P3.0~P3.7相连。

P3.0~P3.3作为输入口(回送线),P3.4~P3.7作为输出口(扫描线)。

16个按键分别用于控制数字“0~9”以及数学运算符号“+、-、*、/”。

键盘模块电路如下图所示:

图6键盘模块电路

3.3.2键盘原理

当进行扫描时,扫描信号由列引脚输入键盘。

以1000、0100、0010和0001的顺序每次扫描不同的列,然后读取列引脚的信号就可以判断是哪个键被按下。

识别键盘上哪个键被压下的过程的扫描步骤:

1.检测是否所有键都都松开了,若没有则反复检测。

2.但所有键都松开了,再检测是否有键压下,若无键一下则反复检测。

3.如有键压下,要消除键抖动,确认有键压下。

4.对压下的键进行编码,将该键的行列信号转换成16进制码,由此确定哪个键被压下了。

如出现多键重按的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。

5.该键释放后,再回到2。

 

4系统工作流程

系统在开机上电后,系统处于等待状态,没有任何动作。

等待输入数字以及运算符号,一旦有相应的按键按下,系统就会执行相应的动作。

5详细仪器清单

表格1仪器清单

仪器名称

数量

STC89C52

1

1602液晶显示屏

1

按键

16

6总结与思考

电子设计正在当今社会发挥越来越重要的作用,其采用的软硬件结合技术也逐渐成熟,该模拟系统正是采用软硬相结合的方法实现的。

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1