简易计算器的设计与实现
- 格式:docx
- 大小:602.15 KB
- 文档页数:27
沈阳航空航天大学
课程设计报告
课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现
院(系):
专业:
班级:
学号:
姓名:
指导教师:
完成日期:
沈阳航空航天大学课程设计报告第1章总体设计方案
第1章总体设计方案
1.1设计内容
本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计
算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6
位8段数码管上显示相应的结果。
设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择
内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段
共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的
编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬
件电路。
1.2设计原理
在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列
式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。
1)提出方案
以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。
2)总体方案实现
(1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时
10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键
盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码查表可的键值。并且将键值送入缓冲区。
(2)计算。从缓冲区中取出数据按照括号配匹算法解决符号优先级问题,如果有键值为“F”则清空缓冲区跳至开始处,否则调用汇编指令进行计算,结果送入缓冲区。
(3)显示。从缓冲区中取出数据查找段码表,将段码送入段码管。
1.3设计思路
采用汇编语言程序设计的方法结合硬件电路设计方法,利用Lab6000实验箱上已有芯片来实现计算器的各项功能。
1.4实验环境
硬件环境:Lab6000实验箱,PC机。
软件环境:WA VE应用软件。
第2章详细设计方案
2.1硬件电路设计
1)单片机8751
P0口作为存储器地址线的低8位,p2口作为地址线的高8位,采用定时器0作为键盘抖动时的10ms延时,采用外部设备与存储器统一编制方式。如图2.1所示。
图2.1单片机8751图
2)8段共阳极数码管
图为八段共阳极数码管的引脚图,从左到右数码管的段码分别为a,b,c,d,e,f,g 和小数点dp,高电平时点亮,这八位分别74LS374的Q0~Q7接,作为数码管的
段码锁存器,其CPU访问地址位09004。下边为位选端和阳极端,6个位选端分别与另一片74LS374的Q0~Q5,与此同时为了体现总线的复用性和硬件电路的简单性这6位位选线作为键盘的列线,CPU访问地址为09002H。如图2.2所示。
图2.2共阳极8段数码管图
3)键盘
键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。通用计算机使用的标准键盘就是编码键盘。当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。但大多数智能仪器和电子产品的按键数目都不太多(20个以内),为了降低成本和简化电路通常采用非编码键盘。非编码键盘的接口电路
有设计者根据需要自行决定,按键信息通过接口软件来获取。本课题需要的是16个按键,故选择用非编码键盘。键盘的行线与一片74LS245相连接作为键盘的扫描码,其CPU访问地址09001H。如图2.3所示。
图2.3简易计算器数据输入键盘图
4)74LS374
74LS374是地址锁存器,一片用来锁存键盘,数码管的地址,另一片用来锁存数码管的段码。如图2.4所示。
图2.474LS374图
5)74LS245
74LS245用来读取键盘的行码A0-A3分别与键盘的行线相连接;B0-B7分别与数据总线相连接。如图2.5所示。
图2.574LS245图
6)UNL2003A
UNL2003A相当于7个非门IN输入OUT输出,其中IN端接键盘的列线,OUT 端接数码管。如图2.6所示。
图2.6ULN2003A图
2.2主程序设计
主程序模块是边检测边显示的模块,一旦有按键按下(无论是按键抖动还是真的有按键按下)就转入键值读取模块,如果没有按键按下或是已经从键值读取模块返回,就继续从一个以30H为首地址的缓冲区中取出数据并转换成数码管的段码显示出来。主模块是一个死循环函数没有结束直至人为终止。主程序流程图如图2.7所示。
写入缓冲区返回主函数。流程图如2.8所示。
开始
延时10ms
有键按下
是
读取键值
延时10ms
按键放开
否
E键
否
是
否
缓冲区加一将键值存入
F键
是
清空缓冲区
调用计算函数
结束
图2.8键值读取模块图