1、 1 十进制加减法计算器单片机设计 一、设计目的 通过课程设计使学生更进一步掌握单片机原理与应用课程的有关知识, 提高用汇编语言 编程的能力,并将所学的内容加以综合。通过查阅资料,了解所学知识的应用情况。 二、课程设计要求 设计十进制加减法计算器。要求能(不同时)显示 3 位输入和 4 位输出。 要求程序实现功能 (1)十进制加减法计算:输入范围为(1999) ,该程序输入两个定点数,每个 3 位, 输出 4 位;A 为加,B 为减,C 为等于,输出为四位计算结果。数据输入采用规范化输入, 即必须输入 3 个数才算完成一个运算数的输入,两个运算数之间输入运算符 A 或者 B,输入 完成按 C
2、显示计算结果。 (2)计算器复位功能:DEL均为清零重启,任何时候按下DEL中一个将重新开始。 三、硬件设计 现实生活中人们熟知的计算器,其功能主要如下: (1)键盘输入; (2)数值显示; (3) 加、减运算(此次只要求加减) ;(4)对错误的控制及提示。 此次计算器设计的最终结果是使其工作流程为:开机不显示,等待键入数值,键入三个 数字,通过LCD显示出来,当键入+、-运算符,计算器在内部执行数值转换和存储,并等待 再次键入数值,当再键入三个数字将显示键入的数值,按等号就会在LCD上输出运算结果。 同时考虑到操作中可能出现的错误时,计算器会进行自动控制。 根据设计要求,选用8098 单片机
3、为主控机。通过扩展必要的外围接口电路,实现对计 算器的设计。此次设计的系统模块图如下, 单片机 运算模块 显示模块 输 入 模 块 2 具体设计考虑如下: 1、单片机工作时电源引脚外接电源,工作电压为 5V,同时本次设计通过内部振荡器和 时钟发生器产生时钟信号。 2、8098 单片机可寻址的存储器空间为 64K 空间,其内部仅带有只能用作寄存器的 256 个字节容量的 RAM,所以在此设计过程中,需要外接存储器芯片,我们选用容量足够大的 62128 存储器芯片。 3、本次设计的接口电路采用 8255 可编程并行 I/O 芯片, 8255A 具有通常意义的接口所 需要的基本功能, 有着很强的适应
4、性, 此次设计中它起的作用是将显示器和键盘与单片机连 接,通过向其控制寄存器送入控制字,以规定 8255 的工作方式和实现确定的功能,如本次 设计的电路图,8255 的 A 口、C 口均工作于输出方式,而 B 口工作于输入方式。 4、存储器芯片和 8255 芯片各都需要通过一个锁存器 74LS373 芯片和单片机连接, 锁存 器的作用是锁存单片机 P3 口送出的低 8 位地址码。 5、由于要设计的是简单的计算器,可以进行加减运算,对数字的大小范围要求不高, 故我们采用可以进行三位数字的运算,选用 4 片七段共阴极 LED 显示数据和结果。 6、键盘共设置 16 个键,为 44 分布,其中数字键
5、从第四排左起 09 共十个,接着是 加号键、减号键、等号键和三个清除键,所对应的键值分别是 A(+) 、B() 、C(=) 、和 D、 E、F(清除键) 。 键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,若无硬件去抖动电路 时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管 一次按键持续多长时间,仅执行一次按键功能程序。 本次设计读取键值采用按键扫描程序的方法, 思路是对键盘上的某一行送低电平, 其他 行为高电平, 然后读取列值。 若列值中有一位是低, 则表明该行与低电平对应列的键被按下; 否则,扫描下一行。本程序中,如果检测到某键按下了,就不再检测其
6、它的按键,这完全能 满足绝大多数需要,又能节省大量的 CPU 时间。 3 本次的电路设计在附图上。 四、软件设计 1、汇编语言 本次设计是由硬件电路和软件编程相结合, 虽然我们以前学过 C 语言, 而 且觉得这次设计用 C 语言会更加方便, 灵活, 但是汇编语言特别适合于实时控制系统这样的 应用场合, 作为学电气工程及其自动化专业的学生, 我们学习单片机的主要目的是将单片机 用于检测和控制领域,所以,选择用汇编语言进行本次设计将有助于提高我们的专业知识。 2、软件设计思路主要从以下几个方面考虑: (1)在主程序中先设置 8255 的工作方式, 初始化对需要存数值和标志位的存储单元清 零,并且位选不选中任何数码管,段选为#00H,即使 4 个数码管初始状态无显示。 (2)进入键盘扫描程序,先对最低行送低电平,其他行为高电平,然后读取列值。若 列值中有一位是低,则表明该行与低电平对应列的键被按下;否则,扫描上一行。当扫描到 有键按下,可以通过行首键值和列编号值之和来读取此按键的键值,不管有没有按键,扫描 一次返回主程序,进入键值处理程序中。 (3)若没有按键,则进入键值