4位数计算器的设计
4位数加法计算器

安庆师范大学2014级单片机原理与应用课程设计报告课题名称4位数加法计算器的设计姓名吴昊天、伍浩然、王鹏、万吉学号070814018 070814008 070814005 070814001 院、系、部计算机学院物联网工程专业物联网工程指导教师汪文明2016 年6月6日一、设计任务及要求:设计任务:1、通过4*4矩阵键盘输入数字及运算符;2、可以进行4位十进制数以内的加法预算。
如果计算结果超出四位数,则全部显示“ E ;3、可以进行加减乘除所有运算;4、添加其他功能。
要求:首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。
在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。
然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。
最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。
最后写出设计报告。
指导教师签名:2016年6月6日、成绩指导教师签名:年月曰一、绪言 (1)二、系统设计 (1)2.1设计任务 (1)2.2方案比较与论证 (1)2.2.1系统整体流程图 (2)222单片机的选择方案论证 (2)2.2.3键盘选择方案论证 (2)2.2.4显示模块的选择方案论证 (2)2.2.5蜂鸣器的选择方案论证 (2)三、硬件电路设计 (2)3.1计算器的控制电路图 (2)3.2矩阵键盘的设计................................................ (3)3.3 LCD1602显示电路的设计 (3)3.4蜂鸣器驱动电路的设计 (4)3.5主要元器件选择 (4)四、程序流程图 (5)五、c语言程序设计 (5)六、计算器的仿真 (19)6.1Keil 调试 (19)6.2Proteus 调试 (19)七、结束语 (20)八、参考文献 (21)一、绪言近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。
单片机汇编4位有符号位加法

单片机汇编4位有符号位加法首先,我们需要了解有符号位加法的基本原理。
在计算机中,有符号数通常使用补码表示。
补码是一种能够同时表示负数和正数的编码方式,其计算方式如下:- 对于正数,其补码和原码相同;- 对于负数,其补码是其绝对值的原码取反后加1。
在单片机中,我们可以利用这种补码表示的特性来实现有符号位加法。
下面将介绍一种基于补码的有符号位加法实现算法。
首先,我们需要准备两个有符号数,分别表示为A和B。
这两个有符号数以补码的形式存储在内存中。
我们首先需要将这两个有符号数加载到通用寄存器中,以便进行加法运算。
接下来,我们使用通用寄存器进行加法运算。
在单片机汇编中,通用寄存器可以直接执行加法指令,因此我们不需要额外的算法实现来进行加法运算。
在加法运算完成后,我们得到了两个有符号数的和,存储在通用寄存器中。
接着,我们需要检查加法结果是否溢出。
在有符号位加法中,溢出是一个很重要的问题。
当两个有符号数相加时,可能会产生溢出,导致结果不准确。
在单片机汇编中,我们可以通过检查进位和溢出标志位来判断是否发生了溢出。
如果发生溢出,我们需要进行相应的处理,例如输出错误信息或者进行溢出处理。
最后,我们将加法结果存储回内存中,以便后续程序使用。
在存储结果时,需要注意将补码转换回原码,以确保结果的正确性。
在实际开发中,有符号位加法的实现还可能涉及其他问题,如数据类型转换、数据对齐、运算精度等。
针对这些问题,我们需要设计合理的算法和代码实现来保证程序的正确性和效率。
综上所述,实现单片机汇编4位有符号位加法需要一定的算法设计和代码实现。
只有通过合理的结构设计和精确的算法实现,才能确保有符号位加法的准确性和可靠性。
在实际开发中,我们需要充分了解有符号数的特性和补码表示法,以确保实现的正确性和稳定性。
4位数加法计算器要点

4位数加法计算器要点1.输入界面设计在设计4位数加法计算器的输入界面时,应该考虑到用户的使用习惯和操作体验。
界面应该简洁明了,避免过多的功能按钮和复杂的操作步骤。
主要包括两个输入框,用于输入两个4位数的数值,以及一个“计算”按钮用于开始计算。
2.数字输入检查在进行数字输入时,应该对输入的数据进行检查,确保输入的是正确的4位数。
可以对输入框设置限制,只允许输入0-9范围内的数字,并限制输入长度为4位数。
同时,还可以加入实时的输入验证功能,当输入不符合要求时,给予提示,并阻止继续输入。
3.数据计算在进行数据计算时,需要对两个4位数进行相应的运算。
可以采用逐位相加的方式进行计算,从最低位开始相加,逐位向前进位。
可以使用循环的方式进行计算,每次计算一位数的和,并记录进位值。
最后将各位数值和进位值相加,得到最终的结果。
4.精度处理在进行数值计算时,应该考虑到可能存在的相加溢出情况。
当两个4位数相加后超过了4位数的范围,会产生溢出。
在计算过程中,需要判断每一位数相加是否有进位,并将进位值累加到高位上。
最终的结果应该是一个5位数,其中第一位是进位值,后四位是相加的结果。
需要将最终结果进行处理,截取后四位数作为输出结果。
5.输入提示与结果显示在使用4位数加法计算器时,应该给予用户清晰的输入提示和结果显示。
当用户输入完毕后,可以在相应的位置显示用户输入的数值,以便核对和验证。
当用户点击“计算”按钮后,应该将计算结果显示在指定的位置上,并提醒用户计算完成。
同时,还可以增加重置按钮,用于清空输入和结果,方便用户进行下一次计算。
6.错误处理在输入和计算过程中,可能会出现一些错误情况,如输入非法字符、输入不完整等。
在设计4位数加法计算器时,应该考虑到这些错误情况,并进行相应的处理。
可以在出现错误时,给予用户明确的提示信息,并阻止继续计算,直到错误被修正。
综上所述,设计一个功能完善的4位数加法计算器需要注意以上要点。
通过合理的界面设计、输入检查、数据计算、精度处理、输入提示与结果显示以及错误处理,可以实现一个方便、准确、易用的4位数加法计算器。
PLC简易计算器设计

PLC简易计算器设计设计任务书可编程控制器》课程设计设计题目:电子计算器设计XXX:学号:专业(方向)年级:11级电气工程及其自动化学生姓名:word文档可自由复制编辑可编程控制器课程设计任务书一)设计题目电子计算器设计二)情况简介在人们日常生活中,买东西、记账、研究等等,凡是与数有关的,我们都可以用到计算器,可见计算器真的很重要。
本文中基于PLC设计的电子计算器比传统计算器更可靠,更方便,性能更好,更容易适应当今高速发展的社会,方便了人们的生活。
这次设计中,将选用西门子S7-200系列PLC,通过梯形图和编程指令两种手段来实现简易计算器的加减乘除功能。
基于PLC设计的电子计算器能够完成简单的加减乘除功能,并能够用七段数码管显示相应的数字及结果,同时也能指示相应的运算类型。
该计算器将采用梯形图编写来实现4位数范围内的加减乘除基本的四则运算。
PLC是一个可进行数模、模数转换,可进行定位控制等一个功能强大的工业控制器,具有高可靠性,以它为基础制作的计算器将具有很高的可靠性。
(三)设计要求1.由按键输入的数值显示在7段数码管上,但只限4位数。
2.按加、减、乘、除键时,第一次输入的值被存放在缓冲区中,当做被加、减、乘、除数,且加、减、乘、除相对的运算指示灯会亮。
3.接着输入一个数,之后若是按下“=”键,则此加、减、乘、除数被存放于另一个缓冲区中,与刚才输入的数做运算,且相对应的运算指示灯熄灭。
4.将运算结果显示在7段数码管上。
四)设计步骤1.查找资料,了解和分析题目所要求具体工程项目控制的过程。
2.确定I/O点数,选择PLC的型号,并根据需要进行硬件系统配置。
3.绘制外部I/O接线图及相干的电气原理图。
4.编程。
word文档可自由复制编辑5.调试。
6.编写设想说明书。
五)设想说明书请求①.完整的设想义务书。
②.确定I/O点数,选择PLC的型号,完成系统组态或硬件配置。
③.正确合理地进行编程元件的地址分配。
毕业设计(论文)-基于AT89C51单片机的简易计算器设计

计算器(Calculator)是微型电子计算机的一种特殊类型。
它与一般通用计算机的主要区别在于程序输入方式的不同。
计算器的程序一般都已经固定,只需按键输入数据和运算符号就会得出结果,很容易就能掌握。
而一般计算机的程序可以根据需要随时改动,或重新输入新的程序。
简易计算器主要用于加减乘除;科学计算器,又增添了初等函数运算(有的还带有数据总加、求平均值等统计运算)。
现代电子计算器首次问世是1963年。
那时的计算器是台式的,在美国波士顿的电子博览会上展出过。
与计算机相比,它小巧玲珑,计算迅捷,一般问题不必事先编写复杂的程序。
随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能机器人。
随着社会需求,计算器也从原有单一的数字加减计算演变为复杂的多种运算。
现在不在单一的在某一方面而是涉及到生活的方方面面.由于我对知识掌握的不够熟练,重点不够清楚,导致在重点与非重点处花费的时间不成比例,进度缓慢,这是设计没能全部完成的部分原因。
目前只做到按键与显示的结合(即在显示器上可以显示数字键还有命令键+-*/ =清零);加法子程序已经编写成功并严整无误,但在整体调试中未能圆满实现,本部分正在调试中。
等调试成功后,其它运算子程序的问题将迎刃而解。
引言 (1)目录 (2)1.简易计算器的设计方案 (3)1.1硬件部分设计方案 (3)1.2软件部分设计 (3)1.3 硬件设计原理图 (4)2. 简易计算器部分电路设计 (5)2.1 AT89C51常用指令 (5)2.2 显示及显示接口 (11)2.3 键盘、液晶显示的组合接口 (15)2.4 算术逻辑运算处理 (18)3.总设计电路及调试 (19)致谢 (21)参考文献 (22)1.简易计算器的设计方案1.1硬件部分设计方案1 单片机部分单片机以AT89C51来做为核心元器件。
4位数加法计算器

安庆师范大学2014级单片机原理与应用课程设计报告课题名称4位数加法计算器的设计姓吴昊天、伍浩然、王鹏、万吉名学0、0、0、0号院、系、计算机学院物联网工程部专物联网工程业指导教汪文明师2016年 6月 6日目录一、绪言 (1)二、系统设计 (1)设计任务 (1)方案比较与论证 (1)系统整体流程图 (2)单片机的选择方案论证 (2)键盘选择方案论证 (2)显示模块的选择方案论证 (2)蜂鸣器的选择方案论证 (2)三、硬件电路设计 (2)计算器的控制电路图 (2)矩阵键盘的设计 (3)LCD1602显示电路的设计 (3)蜂鸣器驱动电路的设计 (4)主要元器件选择 (4)四、程序流程图 (5)五、c语言程序设计 (5)六、计算器的仿真 (19)Keil调试 (19)Proteus调试 (19)七、结束语 (20)八、参考文献 (21)一、绪言近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。
本设计采用AT89C52单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。
数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
二、系统设计设计任务1、通过4*4矩阵键盘输入数字及运算符;2、可以进行4位十进制数以内的加法预算。
如果计算结果超出四位数,则全部显示“E”;3、可以进行加减乘除所有运算;4、添加其他功能。
51单片机计算器设计报告

目录一设计概述------------------------------------------3 二硬件电路图---------------------------------------3 三软件流程图---------------------------------------4 四结论------------------------------------------------11 五参考文献-------------------------------------------13一、1.1设计概述计算器通过编译,能实现简单的四位数加减及两位数的乘除,输入的数通过键盘给出,要求显示要操作的数,并显示结果,编译十进制跟十六进制之间转换的程序,实现十进制转十六进制,显示结果。
1.2功能说明简单的运算功能:当通过输入键盘数字时,能够在显示器上显示输出的数值,并且通过想实现的简单运算功能,实现计算器的加、减、乘、除,并将结果显示出来。
进制转换的功能:通过输入的十进制数,经过计算器的功能将其转换为十六进制数,并将结果显示出来。
二、硬件电路图主要程序流程说明:主程序首先进行初始化,设定一些变量及其意义,扫描键盘,当输入有0~9数字时,通过键盘的扫描程序,将数值赋给second并在显示器上来,当输入的是加减符号的时候,通过键盘的扫面程序,赋予OP相应值,并跳到运算部分,通过判断preop的值,执行相应的运算部分,将OP的值赋给preop并把second的值赋给first。
再一次通过输入0~9的数字,再一次经过键盘的扫描程序,输出second的值,最后通过输入键盘上的等号,右键盘扫描得出相应的OP,跳到运算部分,根据程序的流程,将第一个数的跟第二个数进行简单的加、减、乘、除运算,并将结果通过显示器输出。
同理,当需要进行进制之间的转换时,输入相应的数字,通过键盘的扫描不显示在显示器上,再通过控制,进制转换开关,如果进制转换开关置0 按下,就实现了进制之间的相互转换。
4位快速加法器设计原理

4位快速加法器设计原理快速加法器是一种计算器件,可以快速地对两个二进制数进行加法运算。
相对于一般的加法器,它具有更高的速度和效率。
本文主要介绍4位快速加法器的设计原理。
1.基本概念在二进制加法中,加法器通过对两个二进制数分别进行逐位相加的方法,得到它们的和。
二进制加法的基本规则如下:0+0=0;1+0=1;0+1=1;1+1=0(进位1)。
在四位二进制数的加法中,每位相加可以得到一个位和进位两位。
4位快速加法器在计算时需要考虑到位和进位两个方面。
2.快速加法器的组成4位快速加法器可以由4个1位全加器和1个2位全加器组成。
1位全加器的输出等于输入A、B和进位C的和。
输出S等于(A xor B) xor C,进位C 等于AB+C(A xor B)。
2位全加器是由两个1位全加器和一个2选1选择器组成。
输入A和B分别与这两个全加器相连,进位C输入到这两个全加器的进位端。
选择器的选择信号是两个输入和上一个全加器的进位,选择器的输出连接到2位全加器的进位输出。
3.原理图4位快速加法器的原理图如下所示:每个1位全加器都由具有相同运算功能的逻辑门电路组成。
在1位全加器中,输入A、B和进位C分别与XOR、AND和OR门相连,这些门的输出再次进行逻辑运算得到输出S和新的进位C。
2位全加器由两个1位全加器和一个2选1选择器组成。
选择器的选择信号是上一个1位全加器的进位和两个输入的和。
这两个1位全加器的进位输出也分别与这个选择器相连。
4.流程图4位快速加法器的计算流程图如下所示:将输入的两个4位二进制数的第0位分别输入到1位全加器1和2中。
这两个全加器的进位C0均为0,得到第0位的位和(S0)和进位(C1)。
然后,将输入的两个4位二进制数的第1位分别输入到1位全加器3和4中。
全加器3的进位C1为1,因为它是在第0位加法器的进位C1的基础上进行的。
全加器4的进位C2为全加器3的进位C2与两个输入的和的2选1选择器输出的结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要 01 总体任务 (1)1.1设计目的 (1)1.2设计内容和要求 (1)1.3 设计思路 (1)2 设计原理分析 (2)2.1 计算器的工作原理 (2)2.1.1 计算器的工作流程 (2)2.1.2 编程实现控制 (2)2.1.3 功能拓展 (2)2.2 单片机计算器的基本构成及原理 (2)3硬件电路的设计 (4)3.1系统硬件总电路构成及原理 (4)3.2硬件电路的部分组成元器件的简介 (4)3.2.1AT89C51单片机 (4)3.2.2 八段LED数码管 (4)3.2.3 矩阵键盘 (6)3.3 元器件清单 (7)3.4 电路原理图 (7)4 系统程序的简单设计 (8)4.1 程序方框图 (8)4.2 计算器程序 (8)5 系统的仿真调试 (15)6 课程设计总结 (16)参考文献 (17)本文论述了单片机4位数加法计算器的设计,从对设计任务的分析到画电原理图到编程和最后的仿真调试,都进行了一个简单的描述。
在设计过程中,采用Keil软件编写源程序,用Protues 7 professional的ISIS 7 professional软件画电原理图并且仿真,通过对编程时的编译和对仿真结果现象的观察,不断地对源程序以及电原理图的修改,最后成功设计出了一个能够进行4位数加法运算的计算器。
该计算器通过4×4的矩阵键盘输入数字及运算符,若运算结果超过4位十进制数,则显示为E;另外,也能进行减法、乘法以及除法的运算,在进行减法运算时,若运算结果小于零,则显示其绝对值;进行除法运算时,若除数等于零,则显示E。
关键词:计算器;单片机;数码管;矩阵键盘1 总体任务1.1设计目的1.通过单片机课程设计,熟练掌握c语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
2.通过4位数加法计算器的设计,掌握c语言编程的基本语法,和简单程序的编写,最终提高我们的逻辑抽象能力。
1.2设计内容和要求内容:设计一个4位数加法计算器要求:该计算器通过4×4的矩阵键盘输入数字和运算符,能进行4位十进制以内的正数的加、减、乘、除的运算,如果运算结果超过4位十进制数,4位数码管全部显示为E。
1.3 设计思路1.先熟悉实验原理,了解计算器的工作过程及其显示,了解计算器电原理图的组成元器件。
2.了解各元器件的工作原理。
3.在keil软件里编写程序,用Protues 7 professional的ISIS 7 professional软件绘制电原理图,并进行仿真,通过对仿真现象的观察,修改原理图或程序,直到满足设计要求为止。
2 设计原理分析2.1 计算器的工作原理2.1.1计算器的工作流程计算器是对键盘输入的数字及运算符等信号进行分析和处理,最后通过数码管显示出结果的计算工具。
当然,在输入数字的同时,数码管也是会显示出输入的数字的,其整个工作流程图如图2.1所示。
外界输入数字或运算符微处理器处理并运算显示器显示结果图2.1 计算器的工作流程图2.1.2编程实现控制通过编写程序,实现对输入信号的识别、输入数字的显示以及运算结果的显示。
2.1.3 功能拓展在进行减法运算时,若运算结果小于0,数码管显示其绝对值;在进行除法运算时,若除数等于0,数码管显示EEEE。
2.2 单片机计算器的基本构成及原理AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
它能进行简单的运算,通过编写程序,可以让它完成对输入信号的识别、处理以及显示等功能。
它完全能满足4位加法计算器的要求,能够完成对键盘输入信号的识别、处理等功能。
据此,本设计系统以单片机位核心,连接成最小系统,由键盘输入模块和4位数码管输出模块等组成,系统放入总体方框图如图2.2所示。
键盘输入最小系统外围接口电路单片机数码管显示图2.2系统的总体方框图键盘作为整个系统的输入端口,单片机是整个系统的核心,兼有识别信号和处理等功能,而数码管是整个系统的输出部分,用于显示输入的数字和运算后的结果。
3硬件电路的设计3.1系统硬件总电路构成及原理实现本设计要求的具体功能,可以选用AT89C51单片机及外围器件构成最小控制系统,4×4的矩阵键盘和4位共阳极的数码管组成。
其中4×4的矩阵键盘是用来输入信号的,而4位共阳极的数码管是用来显示输入的数字及运算结果的。
3.2硬件电路的部分组成元器件的简介3.2.1AT89C51单片机AT89C51单片机是80C51类型中的一种,其基本型包含CPU系统、存储器系统和I/O 口及其他功能单元。
单片机的最小控制系统如图3.1所示。
图3.1 单片机及其最小控制系统3.2.2 八段LED数码管LED显示屏作为大型显示设备的一种,具有亮度高、价格低、寿命长、维护简便等优点。
LED数码管的结构简单,分为七段和八段两种形式,也有共阳极和共阴极之分。
以八段共阳管为例,它有8个发光二极管(比七段多一个发光二极管,用来显示sP,即点),每个发光二极管的阳极连在一起。
这样,一个LED数码管就有I根位选线和8根段选线,要想显示一个数值,就要分别对它们的高低电平来加以控制。
为方便起见,本文主要讨论共阳极八段LED数码显示管,其他类形的显示管与其类似。
图3.2即为八段数码管,下面的引脚从左至右一次为a,b,c,d,e,f,g,dp和位选引脚。
图3.2 LED数码管数码管的显示原理:通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如a,b,c,d,e,f,g全亮是显示为8,其中共阳极连接的数码管的驱动代码如表3.1所示。
表3.1 共阳极数码管驱动代码显示数值dp g f e d c b a 驱动代码(16进制)0 1 1 0 0 0 0 0 0 C01 1 1 1 1 1 0 0 1 F92 1 0 1 0 0 0 1 0 A43 1 0 1 0 0 0 0 B04 1 0 0 1 1 0 0 1 995 1 0 0 1 0 0 1 0 926 1 0 0 0 0 0 1 0 827 1 1 1 1 1 0 0 0 F88 1 0 0 0 0 0 0 0 809 1 0 0 1 0 0 0 0 904位八段数码显示管是由4个数码管组成,如图3.3所示,其左侧的a,b,c,d,e,f,g,dp为数码管的驱动引脚,右侧的1,2,3,4为数码管的位选引脚。
图3.3 4位数码显示管4位数码管显示计算数据的过程:如输入数字4136,当从键盘上输入4时,4位数码管第4位显示4,其他三位不亮;再次输入1时,数码管第3位显示4,同时第4位显示1,其他两位不亮;再次输入3时,数码管第2位显示4,同时第3位显示1,第2位显示3,第一位不亮;再次输入6时,数码管第1位显示4,同时第2位显示1,第3位显示3,第4位显示6。
3.2.3 矩阵键盘矩阵键盘是由16个按钮组成的, 16个按钮按4行4列的顺序排列构成4×4的矩阵键盘,如图3.4所示,图3.4所示的键盘是Protues 7 professional的ISIS 7 professional 软件中的一个元器件,其原理就是16个按钮按4行4列排列构成的。
图3.4 矩阵键盘在4位计算器的设计中,单片机识别矩阵键盘是通过按列扫描的方式进行的。
其具体过程如下:对所有的列加以高电平,对第一行(A行)加以低电平,扫描列的电平变化,如列有高电平变为低电平,则能确定按下的键是哪一个;如第一列没有电平变化,依次对第二行(B行)、第三行(C行)和第四行(D行)加以低电平,分别对列进行扫描,看列的电平变化,来确定按下的键。
3.3 元器件清单4位加法计算器的硬件电路图主要由表3.2所示的元器件组成表3.2元器件列表器件说明AT89C51单片机核心器件晶体51单片机工作的振荡源电阻对电流大小进行限制电容51单片机复位和振荡源工作的辅助器件矩阵键盘用于输入数字和运算符4位8段数码管用于显示输入的数字及运算结果3.4 电路原理图图3.5 系统电路原理图4 系统程序的简单设计4.1 程序方框图图4.1 计算器程序流程图4.2 计算器程序#include <reg51.h>sbit P3_0=P3^0;sbit P3_1=P3^1;sbit P3_2=P3^2;sbit P3_3=P3^3;unsigned char sz[12],xs1[4],xs2[4],xs3[4],xs4[4],sj;int i,cs,bb,t1,t2,fh,s1,s2,k;void chushihua() /*初始化程序*/ {bb=1;xs1[0]=10;xs1[1]=10;xs1[2]=10;xs1[3]=10;xs2[0]=10;xs2[1]=10;xs2[2]=10;xs2[3]=10;xs3[0]=11;xs3[1]=11;xs3[2]=11;xs3[3]=11;xs4[0]=0;xs4[1]=10;xs4[2]=10;xs4[3]=10;t1=0;t2=0;s1=s2=0;fh=0;cs=1;}void xianshi(unsigned char xs[4]) /*显示程序*/ {int i,j;unsigned char zy;zy=0xf1;for (i=0;i<4;i++){P2=(0xff-zy);P1=sz[xs[i]];zy=(zy>>1);for (j=0;j<100;j++) ;}return;}unsigned char saomiao() /*键盘扫描程序*/{int i;unsigned char pp;for(i=0;i<1000;i++);P0=0xfe;P3=0x0f;pp=P3;if (P3_0==0) {P3=0x0f;pp=P3;while (P3_0==0);for (i=0;i<1000;i++);return 7;}if (P3_1==0) {P3=0x0f;pp=P3;while (P3_1==0);for (i=0;i<1000;i++);return 8;}if (P3_2==0) {P3=0x0f;pp=P3;while (P3_2==0);for (i=0;i<1000;i++);return 9;}if (P3_3==0) {P3=0x0f;pp=P3;while (P3_3==0);for (i=0;i<1000;i++);return 11;}P0=0xfd;P3=0x0f;pp=P3;if (P3_0==0) {P3=0x0f;pp=P3;while (P3_0==0);for (i=0;i<1000;i++);return 4;}if (P3_1==0) {P3=0x0f;pp=P3;while (P3_1==0);for (i=0;i<1000;i++);return 5;}if (P3_2==0) {P3=0x0f;pp=P3;while (P3_2==0);for (i=0;i<1000;i++);return 6;}if (P3_3==0) {P3=0x0f;pp=P3;while (P3_3==0);for (i=0;i<1000;i++);return 12;}P0=0xfb;P3=0x0f;pp=P3;if (P3_0==0) {P3=0x0f;pp=P3;while (P3_0==0);for (i=0;i<1000;i++);return 1;}if (P3_1==0) {P3=0x0f;pp=P3;while (P3_1==0);for (i=0;i<1000;i++);return 2;}if (P3_2==0) {P3=0x0f;pp=P3;while (P3_2==0);for (i=0;i<1000;i++);return 3;}if (P3_3==0) {P3=0x0f;pp=P3;while (P3_3==0);for (i=0;i<1000;i++);return 13;}P0=0xf7;P3=0x0f;pp=P3;if (P3_0==0) {P3=0x0f;pp=P3;while (P3_0==0);for (i=0;i<1000;i++);return 16;} if (P3_1==0) {P3=0x0f;pp=P3;while (P3_1==0);for (i=0;i<1000;i++);return 0;}if (P3_2==0) {P3=0x0f;pp=P3;while (P3_2==0);for (i=0;i<1000;i++);return 15;} if (P3_3==0) {P3=0x0f;pp=P3;while (P3_3==0);for (i=0;i<1000;i++);return 14;}return 10;}void chuli(unsigned char x) /*运算程序*/{int i;if (x==16){cs=0;k=2;return ;}if (x>=0 && x<10){k=0;if (bb==1){if (s1==4) {cs=0;return ;}else{for (i=3;i>0;i--)xs1[i]=xs1[i-1];xs1[0]=x;s1++;t1=t1*10+x;}}if (bb==2){if (s2==4) {cs=0;return ;}else{for (i=3;i>0;i--)xs2[i]=xs2[i-1];xs2[0]=x;s2++;t2=t2*10+x;}}}if (x>10){if (bb==1) {fh=x;bb=2;return;} if (bb==2){if(fh==11&&t2==0)t1=10000;if (fh==11) t1=t1/t2;if (fh==12) t1=t1*t2;if (fh==13) t1=t1-t2;if (fh==14) t1=t1+t2;if(t1<0) t1=-t1;if (t1>=10000) {cs=0;k=1;return;}else{if (t1>=0 && t1<10) {xs1[0]=t1;xs1[1]=10;xs1[2]=10;xs1[3]=10;}if (t1>=10 && t1<100){xs1[0]=t1%10;xs1[1]=t1/10;xs1[2]=10;xs1[3]=10;}if (t1>=100 && t1<1000){xs1[0]=t1%10;xs1[1]=(t1-(t1/100)*100)/10;xs1[2]=t1/100;xs1[3]=10;}if (t1>=1000 && t1<10000){xs1[0]=t1%10;xs1[1]=t1%100/10;xs1[2]=(t1-(t1/1000)*1000)/100;xs1[3]=t1/1000;} bb=2;s2=0;t2=0;xs2[0]=10;xs2[1]=10;xs2[2]=10;xs2[3]=10;fh=x;}}}}void main() /*主程序*/{sz[0]=0xc0;sz[1]=0xf9;sz[2]=0xa4;sz[3]=0xb0;sz[4]=0x99;sz[5]=0x92;sz[6]=0x82;sz[7]=0xf8;sz[8]=0x80;sz[9]=0x90;sz[10]=0xff;sz[11]=0x86;cs=0;k=2;for (;;){if (cs==0) chushihua();if (cs==1) sj=saomiao();if (cs==1 && sj!=10) chuli(sj);if (cs==1 &&(bb==1 || bb==2 && s2==0)) xianshi(xs1);if (cs==1 &&(bb==2 && s2!=0)) xianshi(xs2);if(k==1)xianshi(xs3);if(cs==1&&k==2)xianshi(xs4);}}5 系统的仿真调试进行110+600+9500的加法运算时,在进行前一部分的加法,即110+600是的结果显示如图5.1所示。