当前位置:文档之家› 简易计算器课程设计

简易计算器课程设计

基于单片机的计算器的设计
摘要:本设计是一个实现加减乘除的计算器,它的硬件主要由四部分构成,一个8051单片机芯片,两个八段共阴极数码管,一个4*4键盘,它可以实现一位数的加减乘除运算。

显示部分:采用LED动态显示。

按键部分:采用4*4键盘。

采用软件识别键值,并执行相应的操作。

关键词:LED接口;键盘接口;8255A;汇编语言
一、概述
1.1设计要求及任务:
(1)设计4*4的键盘,其中10个数字键0~9,其余六个键“+”、“—”、“*”、“/”、“=”、和“C”键;
(2)设计两位LED接口电路;
(3)实现1位数的简单运算
1.2设计原理
(1)LED显示器接口技术
LED动态显示接口技术
(2)键盘显示技术
逐行(逐列扫描法)
二、系统总体方案和硬件设计
2.1计算器总体思想
显示部分:采用LED动态显示。

按键部分:采用4*4键盘。

采用软件识别键值,并执行相应的操作。

执行过程:开机显示零,等待键入数值,当键入数字,经通过数码管显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。

图1 系统设计框图
2.2硬件的选择与连接
图二硬件连接总图
2.2.1硬件选择
(1)由于本设计比较简单,因此选用内部含有4KBE2PROM的89C51单片机作为系统的核心。

(2)扩展输入/输出端口
在扩展输入/输出端口时,要求输入口能够缓冲,,输出口能够锁存。

常用小规模集成电路芯片74LS244或74LS245等扩展输入端口,用74LS273、74LS373、 74LS377扩展输出端口。

这种扩展方法的特点是电路简单,但功能单一、灵活性差。

因而常采用中规模的可编程并行接口芯片8255A扩展输入/输出端口。

(3)锁存电路采用74LS373
2.2.2接口设计
(1)单片机与8255A的接口设计
8255A中的数据总线缓冲器为三态双向数据缓冲存储器,用于将8255A的数据线
D0~D7和单片机的数据总线(P0口)连接,实现单片机和接口间的数据传送。

读写控制部件的接口设计
1、/CS为片选信号,接成低电平表示8255A
被选中。

/CS与P2.7相连,用P2口的最高位控制8255A是否工作。

即将P2.7控制为低电平。

2、RESET-复位信号,高电平有效,接在单片机的RST端。

3、/RD和/WR为读写控制信号,低电平有效。

分别将两个端口接单片机的/RD和/WR
4、A1和A0-端口选择信号,分别与单片机的低两位地址线P1.1和P1.0相连。

用于选择不同端口。

采用74LS373三态锁存器,用于分离P0口第八位地址线,将它的Q0和Q1口接至8255A的地址输入端A0和A1。

所以若将P1.2~P1.7和P2.0~P2.6全接为高电平,A口地址为07FFCH,B口地址为07FFDH,C口地址为07FFEH,控制字寄存器地址为07FFFH.
(2)LED显示电路的设计:
简易计算器需要2位8段码LED显示电路。

用8051单片机经8255A扩展2位8段码LED显示器,用8255A的A口作为段码(字形代码)数据口,PB0和PB1作位码口。

图三显示器接口电路
(3)键盘接口设计
89C51单片机经8255A扩展4*4行列式键盘,8255A的B口和C口用于扩展键盘接口,B口高4位作为输出口,C口低4位作为输入口。

设各口工作于方式零。

则8255A 的工作方式控制字为10000001(81H)键盘接口设计
图四键盘接口图
三、软件设计
3、1软件系统的功能
该设计能够实现1位的加减乘除和清零功能,利用实验箱上4*6键盘中前4列,即0-9,A-F键。

A,B,C,D分别为“+”“-”“*”“/”键,E是等于键,F清零。

其他是数字
键。

再利用实验箱上的LED显示器,对于即时按下的键和结果进行显示。

3.2系统流程总图
图五系统总流程图
3.3显示程序设计
LED显示器有共阴极和共阳极两种。

共阴极就是把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地,某端接高电平时才发亮。

共阳极则是把发光二极管的阳极连在一起构成公共阳极,使用时公共阳接十5V端。

某端接低电平时才发亮。

在此次设计中采用共阴极接法。

LED动态显示接口技术:动态显示中,任意时刻虽只有一位显示器被点亮,但当一个循环周期小于人的视觉暂留时间时,看上去与全部显示器持续点亮的效果相同。

从而提高数码管的利用效率,所以采用LED动态显示接口技术。

多位LED显示器接口电路需要有两个输出口,其中一个用于输出8条段控线(有小数点显示),另一个用于输出位控线,位控线的数目等于显示器的位数。

利用LED动态显示的方法,设置显示缓冲地址和循环次数,让两个数码管从左到右依次显示,之间要调用延时子程序,但延时时间小于人的视觉暂留。

程序流程图如下
图六显示程序设计流程图
3.4键盘识别程序设计
3.4.1原理与分析
1、测试是否有键按下:
①单片机I/O 口向所有列线输出低电平。

即向列口写入00H。

②然后输入各行线状态,即读输入口的字。

③比较:若行线状态全为高电平,则表明无键按下;若行线状态中有低电
平,则表明有键按下。

2、消抖动
3、扫描键盘以确定被按键的物理位置
4、计算键码
如果键号是按从左到右,从上到下的顺序编排的,按这种编排规律,各行的首
键号依次是 00H、08H、10H、18H,如列线按0~7的顺序编号,则可选用键码的计算公式为:
键码= 首键号十列号
5、等待键释放
实验箱提供6*4的小键盘,只使用前四列,即0-9,A-F键。

A,B,C,D分别为“+“-”“*”“/”键,E是等于键,F清零。

其他是数字键。

再利用实验箱上的LED显示器,对于即时按下的键和结果进行显示。

向列扫描码逐列输出低电平,然后从行码地址读回。

如果有键按下,则相应的行值应为低,如果无键按下,由于上拉电阻的作用,行码为高。

这样可以通过输出的列码和读取的行码判断按下的是什么键,在判断有键按下后,要有一定的延时,防止键盘抖动。

在接线时将KEY/LED CS 接到 CS0上,则列扫描地址为08002H,行扫描地址为08001H。

为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。

为了得到被按键的键码,现使用行扫描法识别按键。

3.4.2流程图
该程序可由两部分构成,首先扫描是否有键按下是执行TESTKEY程序,若有键按下则调用GETKEY程序,若无键按下则继续扫描按键程序直到有键按下。

图七键盘扫描程序的流程图
四、设计体会与总结
通过基于8051单片机简易计算器的设计,加深了我对单片机课程的了解,学以致用,不但回顾了过去所学,更使我了解了现在的不足,弥补了一些知识漏洞。

更重要的是在实际设计和试验中形成了更加科学合理的认识,不断形成更为合理和具有科学性的思想方式。

在这次设计中接住了互联网等途径查询相关信息,并在图书馆查阅了大量单片机资料。

这不但扩展了有关单片机领域的眼界,而且完善了以往的知识体系。

提高了运用知识的综合能力。

五、参考文献
【1】郭文川主编. 单片机原理与接口技术[M]. 北京:中国农业出版社,2007
【2】何利民。

MCS-51系列单片机应用系统设计【M】。

北京:北京航空航天大学出版社, 1990.143.-160。

【3】李华。

MCS-51系列单片机实用接口技术【M】。

北京:北京航空航天大学出版社, 1993.148.-158。

相关主题