单片机课程设计__简易计算器
- 格式:doc
- 大小:2.56 MB
- 文档页数:14
课程设计论文课题:基于52单片机的简易计算器设计姓名:季鹏胡汪洋学号:080212161 080212167指导老师:王陈宁设计时间:2014年6月10日目录一.前言 (2)二.课程设计目的和要求2.1 课程设计的目的 (2)2.1 课程设计的要求 (2)三.方案论证3.1 对简易计算器电路的分析 (2)3.2 按键电路的设计 (4)四.电路设计4.1 方案 (4)4.2 硬件电路设计 (4)4.3 软件电路设计 (8)4.4 程序框图 (9)五.测试结果 (10)六.结论与思考 (10)附录一:主程序 (11)一.前言随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。
单片机的应用已经越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。
计算器在人们的日常中是比较的常见的电子产品之一。
可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的计算器。
该设计系统是以STC89C52为单片机, P0口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,在P1口,P2口接了驱动电路,用来保证LED的工作正常。
计算器将完成的功能有加,减运算功能。
关键词:计算器;电子设计;LED;单片机二.课程设计的目的和要求2.1课程设计的目的如今,单片机的应用十分广泛,许多产品都有单片机的身影。
单片机的作用不言而喻。
单片机设计是单片机学习的重要组成部分,通过设计电路并实现某种功能来加深单片机原理的理解。
本课题设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减运算并通过LED显示出来。
设计电路采用STC89C52单片机为主要控制电路,利用4*4的矩阵键盘作为输入,LED来显示运算结果。
2.2 课程设计的要求1.LED显示运算结果2.键盘的设计:由于采用4*4的矩阵键盘而简易的计算器设计只需要进行加减运算,所以只要用到14个键。
单片机的简易计算器毕业设计简易计算器是一种基本、常见的电子设备,它能够对数字进行简单的加减乘除运算。
单片机作为一种小型、低功耗的微型计算机,非常适合用于设计和实现计算器的功能。
在本文中,我们将以单片机为基础,设计和实现一个简易计算器。
一、设计思路1.硬件设计:-使用单片机作为主控制器。
-接入键盘矩阵和显示器。
-使用LED灯作为指示灯,用于显示运算符和结果。
2.软件设计:-通过键盘输入数字和运算符。
-将输入的数字和运算符转换成相应的控制信号。
-进行运算,并将结果显示在屏幕上。
3.功能实现:-实现加法、减法、乘法和除法运算。
-提供清零、退格和等号等功能。
-支持小数和负数的输入和运算。
-提供错误提示功能,例如除数不能为零等。
二、具体实现1.硬件实现:-将键盘矩阵的行和列与单片机的IO口相连,通过扫描来检测按键的输入。
-将显示器与单片机的IO口相连,通过控制引脚来发送和接收数据。
-将LED灯与单片机的IO口相连,设置相应的引脚状态来显示不同的指示信号。
2.软件实现:-使用C语言编写程序,通过中断和轮询的方式,实现键盘输入的检测和数据的读取。
-将读取到的数据进行解析,并根据不同的按键进行相应的操作。
-根据输入的数字和运算符,进行相应的运算并输出结果。
3.功能实现:-加法、减法、乘法和除法运算可以通过相应的算法实现,例如加法可以通过循环和位运算来实现。
-清零功能可以将运算结果和输入的数字都清零,退格功能可以删除输入的最后一个数字或运算符。
-支持小数运算可以在运算过程中进行进位和进位操作,支持负数运算可以通过判断运算符来进行相应的处理。
-错误提示功能可以通过对输入的数据进行检查和判断来实现,例如判断除数是否为零。
三、总结通过上述的设计和实现,我们可以成功地设计和制作一个单片机的简易计算器。
通过这个计算器,用户可以进行简单的加减乘除运算,同时还具备清零、退格、小数和负数等功能。
这个计算器可以应用在日常生活中的计算场景,方便用户进行各种简单的运算操作。
单片机双字节十六进制减法实验设计摘要本设计是基于51系列的单片机进行的双字节十六进制减法设计,可以完成计算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。
设计过程在硬件与软件方面进行同步设计。
硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用5个键盘。
显示采用3位7段共阴极LED动态显示。
软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。
编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus 仿真。
引言十六进制减法计算器的原理与设计是单片机课程设计课题中的一个。
在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。
单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。
关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减目录摘要 (01)引言 (01)一、设计任务和要求.............................1、1 设计要求1、2 性能指标1、3 设计方案的确定二、单片机简要原理.............................2、1 AT89C51的介绍2、2 单片机最小系统2、3 七段共阴极数码管三、硬件设计...................................3、1 键盘电路的设计3、2 显示电路的设计四、软件设计...................................4、1 系统设计4、2 显示电路的设计五、调试与仿真.................................5、1 Keil C51单片机软件开发系统5、2 proteus的操作六、心得体会....................................参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................一、设计任务和要求1.1 设计要求本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计,设计任务为:设计一键盘显示装置,键盘上除需定义16个十六进制数字键外还要相应的功能键,其它键不定义无响应。
51单⽚机简易计算器设计-51单⽚机简易计算器课程设计⽬录⼀、设计任务和要求 (2)1、设计要求 (2)2、设计⽅案的确定 (2)⼆、硬件设计 (2)1、单⽚机最⼩系统 (2)2、键盘电路的设计 (3)3、显⽰电路的设计 (3)4、系统硬件电路图 (4)三、软件设计 (5)1 系统设计 (5)2 显⽰电路的设计 (6)3、程序清单 (8)四、调试与仿真 (14)五、试验箱实物图 (14)六、⼼得体会 (15)⼀、设计任务和要求1、设计要求利⽤单⽚机设计并制作简易计算器。
具体要求如下:1、4*4按键⽤于0~9的数字输⼊、加减乘除、等于、清零功能;2、能实现简单的加减乘除运算;3、输⼊数字及计算结果通过LED或LCD显⽰器显⽰。
2、设计⽅案的确定按照设计要求,本课题需要使⽤数码管显⽰和扩展4*4键盘,由于AT89C51芯⽚的I⼝不够多,⽽且为了硬件电路设计的简单化,故选择串⾏动态显⽰和⽤P1⼝扩展4*4键盘,扩展的4*4键盘定义⼗个数字键,六个功能键,使⽤串⾏动态显⽰显⽰运算结果。
主程序进⾏初始化,采⽤⾏列扫描进⾏查表得出键值,每次按键后调⽤显⽰⼦程序。
⼆、硬件设计简易数字计算器系统硬件设计主要包括:键盘电路,显⽰电路以及其他辅助电路。
下⾯分别进⾏设计。
1.单⽚机最⼩系统单⽚机最⼩系统就是⽀持主芯⽚正常⼯作的最⼩部分,包括主控芯⽚、复位电路和晶振电路。
(1)、复位电路复位电路本设计采⽤上电与⼿动复位电路,电阻分别选取100和10K,电容选取10uF,系统⼀上电,芯⽚就复位,或者中途按按键也可以进⾏复位。
(2)、晶振电路图三晶振电路晶振电路是单⽚机的⼼脏,它⽤于产⽣单⽚机⼯作所需要的时钟信号。
单⽚机的晶振选取11.0592MHz,晶振旁电容选取30pF。
2.键盘电路的设计键盘可分为两类:编码键盘和⾮编码键盘。
编码键盘是较多按键(20个以上)和专⽤驱动芯⽚的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,⽆需系统软件⼲预。
山东大学控制科学与工程学院课程设计报告书课程设计名称:简易计算器班级:测控一班学号:201000171202姓名:魏凯峰一、电路工作原理该电路主要由以下几部分组成,1、51系列单片机最小系统板,由AT89C51单片机,复位电路,晶振电路(晶振频率是11.0592MHZ),这部分是控制中心,晶振电路可产生程序运行所需要的时钟频率。
2、显示部分,由8位共阴数码管和两个74HC573锁存器、排阻(1K)组成,74HC573锁存器用于动态显示数据,也有驱动显示作用,排阻是限流作用。
3、按键部分,由20位独立键盘组成,按矩阵形式连接,用到9个IO口。
原理:键盘作为数字输入,矩阵键盘的工作原理是当某个键按下时,其两端的IO口电平变化,程序中通过相应位的与或运算,就可以判断出是哪个按键被按下,单片机中的程序不断读取键盘的输入并实时显示在数码管上,数码管用段位选不断切换显示,如当位选为高电平时即为点亮,然后再输入相应的数字段码(该电路中用的是共阴极数码管的字码),这样数码管上便可以显示相应数字。
锁存器中的LE口就是段位选口,高电平有效,数码管中的A、B......G、DP是数码管中的每一段,只要某个字母为高电平,则该段二极管就会被点亮(共阴极)。
在同时显示多个数字时要利用到动态显示,视觉动态显示主要就是利用人眼的视觉感来设计的,一般来说如果显示的频率过慢,则会有断断续续的显示;如果显示的频率加快,则人眼就分辨不出这种视觉残余!二、程序简要说明从主函数开始,先是定义一些变量,然后是调用显示函数displaypro(0),先显示0,然后进入一个大循环while(1),在循环里面先检测键盘keyscan(),并把检测值赋给K,然后是段位选循环8次检测,然后用switch(k)函数来执行键盘操作,k的值从0到9表示输入数字0到9,10到13表示加减乘除,17、15分别表示十六进制和二进制,16表示小数点,14表示正负号,18表示清除,19是等于号。
课程设计报告设计名称:简易计算器姓名:学号:专业班级:院(系):设计时间:2016.12.10设计地点:摘要:虽然现在科学计算器,已经得到了广泛的应用,但在某些地方,简易计算器,依然是主要的计算公具,如小学教学单位,市场,商店等。
并且随着科技的进步,我们已经告别了以前复杂的模拟电路,可以利用已有的软件和硬件条件,设计出更出色的计算器呢。
本设计是以AT89C52单片机为核心的计算器模拟系统设计,输入采用4×4矩阵键盘,可以进行加、减、乘、除4位带符号数字运算,并在LCD1602上显示操作过程。
关键词: AT89C52 LCD1602 计算器矩阵键盘一方案构思本设计可以采用两种方案,一种是以FPGA为核心处理芯片,配备相应的外设;另外一种是以AT89C52处理器,配备相应的外设。
1.1、方案一:采用FPGA控制FPGA是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达200MHz。
由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。
但是而基于 SRAM编程的FPGA,其编程信息需存放在外部存储器上 ,需外部存储器芯片 ,且使用方法复杂 ,保密性差,而其对于一个简单的计算器而言,实用FPGA有点大材小用,成本太高。
1.2、方案二:采用AT89C52单片机是单片微型机的简称,故又称为微控制器MCU(Micro Control Unit)。
通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。
因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机广泛用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单,实用方便,价格便宜等优点,而其中AT89C52以MCS-51为内核,是单片机中最典型的代表,应用于各种控制领域。
单片机课程设计报告设计题目____简易计算器设计____简易计算器设计一.设计目的和要求1.设计目的(1)进一步熟悉89C51单片机外部引脚线路连接,掌握单片机全系统调试的过程及方法;(2)通过计算器控制系统的设计,掌握矩阵式键盘的使用方法和简单程序的编写;(3)通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手能力。
2.设计要求(1)设计实现两位小于100的整数加、减运算;(2)键盘采用4*4的矩阵键盘,键盘安排如下;1 2 3 45 6 7 89 0 + -=(3)输入数据及运算结果采用三位数码管进行显示。
二.总体设计1.设计思路设计主要是利用AT89C52进行数据处理,利用4×4矩阵键盘的按键扫描,利用LED 数码管的动态显示。
该设计首先是运用矩阵键盘的按键扫描,然后把扫描得到的键值进行译码,其次把译码所得的数值进行处理,最后将处理后的值进行动态显示。
矩阵键盘和数码管分别接在P3和P2,这样大大的节约了单片机的I/O端口。
2.框图设计三.硬件设计AT89C52单片机如图(1)所示,是美国ATMEL 公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes 的可反复擦写的Flash 只读程序存储器和256bytes 的随机数据存储器(RAM ),器件采用ATMEL 公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容。
功能强大的AT89C52单片机适合于许多较为复杂控制应用场合。
(1)P0口(39-32):P0口为8位漏极开路双向I/O 口,每引脚可吸收8个TTL 门电流。
P1口(1-8):P1口是从厅部提供上拉电阻器的8位双向I/O 口,P1口缓冲ᙨ能接收和输出д个TTL 门电流。
AT89C52数码管矩阵键盘P2口(21-28):P2口为内部上拁电阻器的8位双向I/O口,P2口缓冲器可採收和输出$个TTL门电流。
《单片机与接口技术》课程设计报告课题名称简易计算器的设计学院自动控制与机械工程学院专业机械设计制造及其自动化班级机制6班姓名学号时间2013年1月7日至2013年1月18日目录一﹑课程设计的目的和要求 (3)1﹑设计目的 (3)2﹑设计任务及要求 (3)二﹑设计步骤及思路 (3)1、设计的步骤 (3)2﹑设计思路 (3)三﹑硬件电路设计 (4)1﹑总体设计 (4)2﹑单元电路的设计 (4)3﹑总电路图 (7)四﹑软件设计 (7)五﹑调试说明 (9)1﹑未启动仿真时,初始状态 (9)2﹑开启仿真以后 (10)3﹑计算过程演示 (10)六﹑设计体会 (11)七﹑参考文献 (13)八、附录 (13)附录一 (13)附录二 (13)一﹑课程设计的目的和要求1﹑设计目的单片机课程作为独立的教学环节,是自动化及相关专业集中实践性环节系列之一,是学习完《单片机与接口技术》课程后,并在进行相关课程设计基础上进行的一次综合练习。
单片机课程设计过程中,我们通过查阅资料,接口设计、程序设计、安装调试等环节,完成一个基于MCS-51系列单片机,涉及多种资源应用,并具有综合应用功能的小应用课程设计,使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路﹑电子元件等方面的知识进一步加深认识,同时在软件编程﹑调试﹑相关仪器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。
课程设计以学生认知为主体,充分调动学生的积极性,重视学生自学能力的培养,根据具体课题安排时间确定课题的设计、编程和调试内容,分团队开展课程设计活动,按时完成每部分工作。
坚持独立完成,实现课题规定的各项指标,并写出设计报告。
要求学生自己查阅资料和充分利用所学知识,根据所要设计系统所要达到的功能,划分软硬件功能、选择器件、编写相关程序,用Proteus 在计算机上绘图并用Keil进行程序编写进行防真,再对整个系统做调试运行,有问题再进一步调试修改,直至达到设计的要求和取得满意的效果,最后编写系统说明书,其内容包括系统的功能介绍,使用范围,主要性能指标,使用方法,注意事项等。
基于51单片机简易计算器课程设计报告
基于51单片机简易计算器课程设计报告
1. 研究背景
•计算器是人们日常生活和工作中常用的工具之一。
•通过设计简易计算器,可以加深学生对51单片机的理解和应用。
2. 目标和需求
•设计一个基于51单片机的简易计算器,能够进行基本的四则运算和开方运算。
•要求计算器能够显示输入和计算结果。
•要求计算器具备简单的界面和操作。
3. 设计方案
•使用51单片机作为计算器的控制核心。
•通过键盘输入数字和运算符,并显示在液晶屏上。
•根据输入的运算符,进行相应的计算,并将结果显示在液晶屏上。
4. 硬件设计
•使用51单片机作为主控芯片。
•连接液晶屏模块,用于显示输入和计算结果。
•连接键盘模块,用于输入数字和运算符。
5. 软件设计
•使用C语言进行编程。
•设计主程序,包括初始化、输入处理和计算输出等功能。
•设计函数,实现基本的四则运算和开方运算。
6. 实验结果
•成功设计并实现了基于51单片机的简易计算器。
•可以正常进行基本的四则运算和开方运算。
•输入和计算结果能够准确显示在液晶屏上。
7. 总结与展望
•通过设计这个简易计算器,学生对51单片机的理解和应用能力有了提高。
•下一步可以考虑增加更多的功能,如科学计算和数据存储等。
以上是本次基于51单片机简易计算器课程设计的报告。
通过这个实验,学生对51单片机的应用能力得到了提升,进一步增强了对计算器的理解。
在未来的课程设计中,可以进一步拓展功能,提升计算器的实用性和功能性。
4×4键盘的简易计算器和LED数码管的显示1、设计要求1、设计一个十六个按键的矩阵式计算器的模拟系统。
2、该系统具有加减乘除等功能。
3、用Proteus 7仿真工作的全过程。
4、有相应的实物图5、掌握4×4矩阵式键盘程序识别原理,掌握4×4矩阵式键盘按键的设计方法。
2、设计思想2.1 硬件设计思想用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.7各管脚作输入线,以单片机的P2.0-P2.7和P0.0—P0.7各管脚作输出线,在数码管上显示每个按键“0-9”的序号。
键盘中对应按键的序号排列如图(1)所示。
数字0、1、2、3接X0;4、5、6、7接X1;8、9、10、11接X2;12、13、14、15接X3。
即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。
该系统可以实现四则运算,当分别按下2个数字,再按任意一个功能键即可实现相应的运算。
2.2 软件设计思想整个程序可以实现十进制内的加减乘除,其中包含了延时子程序(去抖动),加法、减法、除法、乘法等子程序。
(1)按键的识别判断键盘上有无按键闭合,先判断行线X0—X3输出低电平“0”,然后判断列线Y0—Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0—Y3不全为1,说明有键按下。
(2)消抖处理当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采用时间延时0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的计算。
(3)判别键号先判断行线X0—X3是否有输出低电平“0”,若有键按下,则相应的列线也为低电平“0”,例如行线X1输出为低电平“0”,且列线Y2为低电平,即X1与Y2相交的键被按下,进行键号=行号*4+列号的计算。
(4)显示结果显示器接高电频,左边显示器接P0,右边显示接P2,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为几点几,为高电频则几十几。
其它运算直接看数据即可。
3、电路原理与电路图3.1 电路原理单片机最小系统。
一个AT89C51单片机做为控制电路,运用其P0、P1口来控制数码管和键盘,通过P0和P2口来显示键值(0~9)。
通过P1口来控制键盘。
3.2 电路原理图图3.1 电路原理图4、流程图与算法描述4.1 流程图开始P1口高四位置一扫描键盘按下键?消除抖动计算键入的值十进制?送入P2口显示第一次键入的值消除抖动计算键入的值十进制?送入A按下键?N NY YY Y NN送入P0显示第二次送入的值再按一次键加法?减法?乘法?除法?结束NNYYYYN把结果送入P0,P2口,P0存十位,P2存个位图4.1 主程序流程图图4.2 延时子程序流程图4.2 算法描述1、设计一个延时子程序,延时0.5s 。
本程序通过两个DJNZ 的语句来实现。
延时程序的代码段如下:DELAY: MOV R7,#100D DEL1: MOV R6,#250D DEL2: MOV R5,#10DDJNZ R5,$ DJNZ R6,DEL2 DJNZ R7,DEL1 RET2、仅实现十进制的加减乘除运算。
CJNE 是判断两个数是否相等,不想等则转移,代码段如下:M0: CJNE R1,#10D,M1开始R7送100R5送10R6送250R5减一为0?R6减一为0?R7减一为0?返回NNNYYY YLJMP L1M1: CJNE R1,#11D,M2LJMP L1M2: CJNE R1,#12D,M3LJMP L1M3: CJNE R1,#13D,M4LJMP L1M4: CJNE R1,#14D,M5LJMP L1M5: CJNE R1,#15D,M6LJMP L1M6: RET ;返回重新按入新的键号5、仿真结果5.1 仿真结果1、加法仿真如下:(1加2)图5.1 加法仿真结果图2、减法仿真如下:(2减3)图5.3 减法仿真结果图3、乘法仿真如下:(3乘以2)图5.5 乘法仿真结果图申图5.6 乘法仿真结果图4、除法仿真如下:(2除以4)图5.7 除法仿真结果图5、复位仿真如下:图5.10复位仿真结果图6、源程序ORG 0000HL1:LCALL SCANMOV 40H,32H ;将键号保存在40HMOV R1,40H ;暂存在R1LCALL M0LCALL XY1MOV P0,#0FFH ; 使P0口置1LCALL SCANMOV 41H,32H ;将键号保存在41HMOV R1,41H ;暂存在R1LCALL M0LCALL XY2L2:LCALL SCANMOV 42H,32HMOV R7,42HCJNE R7,#10D,L3 ;是否进行加法运算MOV A,40HADD A,41HMOV B,#10DDIV AB ; 商存在A中即十位,余数存在B中即个位CJNE A,#00H,L8 ; 判断十位是否为0,不为0跳转MOV P0,#0FFH ;置1不显示LJMP L9L8:MOV 32H,ALCALL XY2 ;商非0则调用显示十位数L9:MOV 32H,BLCALL XY1 ;调用显示个位数LJMP L1l3:CJNE R7,#11,l4 ;是否进行减法运算MOV A,40HSUBB A,41H ;结果存在AJB ACC.7,N1 ;判断正负MOV 32H,AMOV P0,#0FFHLCALL XY1 ;减法结果为正LJMP L1N1:MOV P0,#0BFH ;显示负号MOV A,41HSUBB A,40HADD A,#1DMOV 32H,ALCALL XY1 ;显示结果LJMP L1l4:CJNE R7,#12,l5 ;是否进行乘法运算MOV A,40HMOV B,41HMUL AB ;结果存在A中MOV 50H,AMOV B,#10DDIV AB ;商存在A中即十位,余数存在B中即个位CJNE A,#00H,L10 ;判断十位是否为0,不为0跳转MOV P0,#0FFH ; 置1不显示LJMP L11L10:MOV 32H,ALCALL XY2L11:MOV 32H,BLCALL XY1LJMP L1l5:CJNE R7,#13,l6 ;是否进行除法运算MOV A,40HMOV B,41HDIV AB ;X/Y 除法MOV R6,BCJNE R6,#00H,L12 ; 判断余数是否为0,不为0跳转MOV P0,#0FFH ; 置1不显示十位MOV 32H,ALCALL XY1LJMP L13L12:MOV 32H,ALCALL XY2 ; p0显示小数点前的数CLR P0.7 ;有小数点MOV A,BMOV B,#10DMUL AB ;余数的十倍MOV B,41HDIV AB ;余数的十倍再除以除数MOV 32H,A ;结果保留小数点后一位LCALL XY1 ;p2显示小数点后的数L13:LJMP L1l6:CJNE R7,#0D,L7CJNE R7,#1D,L7 ;屏蔽十进制,实现加减乘除CJNE R7,#2D,L7CJNE R7,#3D,L7CJNE R7,#4D,L7CJNE R7,#5D,L7CJNE R7,#6D,L7CJNE R7,#7D,L7CJNE R7,#8D,L7CJNE R7,#9D,L7CJNE R7,#14D,L7 ;屏蔽E、FCJNE R7,#15D,L7L7:LJMP L2SCAN:MOV P1,#0F0H ; P1口高4位置1JNB P1.4,Y0 ;判断Y0列是否有键按下,有就跳至Y0 JNB P1.5,Y1JNB P1.6,Y2JNB P1.7,Y3LJMP SCAN ;无键按下继续扫描Y0:MOV 31H,#00H ; 列线Y0有键按下MOV P1,#0FEHJNB P1.4,X0 ;判断X0横是否有键按下MOV P1,#0FDHJNB P1.4,X1 ;判断X1横是否有键按下MOV P1,#0FBHJNB P1.4,X2 ;判断X2横是否有键按下MOV P1,#0F7HJNB P1.4,X3 ;判断X3横是否有键按下LJMP Y0 ;返回继续判断Y1:MOV 31H,#01H ;列线Y1有键按下MOV P1,#0FEHJNB P1.5,X0MOV P1,#0FDHJNB P1.5,X1MOV P1,#0FBHJNB P1.5,X2MOV P1,#0F7HJNB P1.5,X3LJMP Y1Y2:MOV 31H,#02H ;列线Y2有键按下MOV P1,#0FEHJNB P1.6,X0MOV P1,#0FDHJNB P1.6,X1MOV P1,#0FBHJNB P1.6,X2MOV P1,#0F7HJNB P1.6,X3LJMP Y2Y3:MOV 31H,#03H ;列线Y3有键按下MOV P1,#0FEHJNB P1.7,X0MOV P1,#0FDHJNB P1.7,X1MOV P1,#0FBHJNB P1.7,X2MOV P1,#0F7HJNB P1.7,X3LJMP Y3X0:MOV 30H,#00H ;行线X0有键按下LCALL DELAY ;0.5s延时消除抖动LJMP JS ;跳转键值计算程序X1:MOV 30H,#01H ;行线X1有键按下LCALL DELAYLJMP JSX2:MOV 30H,#02H ;行线X2有键按下LCALL DELAYLJMP JSX3:MOV 30H,#03H ;行线X3键按下LCALL DELAYLJMP JSJS: MOV A,30H ;计算键入的值MOV B,#04HMUL ABADD A,31HMOV 32H,ARETXY1:MOV A,32HMOV DPTR,#TABMOVC A,@A+DPTRMOV P2,A ;显示第一次按入的键号及结果的个位RETXY2:MOV A,32HMOV DPTR,#TABMOVC A,@A+DPTRMOV P0,A ;显示第二次按入的键号及结果的十位RETDELAY:MOV R7,#100D ;延时0.5s子程序DEL1:MOV R6,#250DDEL2:MOV R5,#10DDJNZ R5,$DJNZ R6,DEL2DJNZ R7,DEL1RETM0:CJNE R1,#10D,M1 ;仅实现十进制的加减乘除运算LJMP L1M1:CJNE R1,#11D,M2LJMP L1M2:CJNE R1,#12D,M3LJMP L1M3:CJNE R1,#13D,M4LJMP L1M4:CJNE R1,#14D,M5LJMP L1M5:CJNE R1,#15D,M6LJMP L1M6:RET ;返回重新按入新的键号TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92HDB 82H,0F8H,80H,90H,88H,83HDB 0C6H,0A1H,86H,8EH,0FFHEND。