收藏 分销(赏)

单片机课程设计总会.doc

上传人:人****来 文档编号:3530254 上传时间:2024-07-08 格式:DOC 页数:38 大小:172.50KB
下载 相关 举报
单片机课程设计总会.doc_第1页
第1页 / 共38页
单片机课程设计总会.doc_第2页
第2页 / 共38页
单片机课程设计总会.doc_第3页
第3页 / 共38页
单片机课程设计总会.doc_第4页
第4页 / 共38页
单片机课程设计总会.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、单片机课程设计总会382020年4月19日文档仅供参考课程设计(论文)任务书 电气 学院 电力系统 专业 12( 1 ) 班一、课程设计(论文)题目: 十进制加法计算器设计 二、课程设计(论文)工作自 1 月 12 日起至 年 1月 16 日止。三、课程设计(论文) 地点:电气学院机房 10-303 四、课程设计(论文)内容要求:1课程设计的目的(1)综合运用单片机原理及应用相关课程的理论知识和实际应用知识,进行单片机应用系统电路及程序设计,从而使这些知识得到进一步的巩固,加深和发展;(2)熟悉和掌握单片机控制系统的设计方法,汇编语言程序设计及proteus 软件的使用;(3)经过查阅图书资料

2、、以及书写课程设计报告可提高综合应用设计能力,培养独立分析问题和解决问题的能力。 2课程设计的内容及任务 课程设计内容:利用单片机及一些外围电路设计一个简易的十进制加法计算器 ,硬件电路设计大概主要包括:键盘电路,显示电路以及复位电路和晶振电路 。 软件方面的设计主要包括:LED显示程序设计 、数值送显示缓存程序设计 、读键子程序设计、运算程序的设计。 课程设计任务:设计一个键盘显示装置,键盘上除了定义09共10个数字键外,还要相应的功能健,其它键不定义无响应。利用此系统可分别输入十进制被加数和加数,实现两个数相加并将结果以十进制形式显示出来。 3.课程设计说明书编写要求(1)设计说明书用A4

3、纸统一规格,论述清晰,字迹端正,应用资料应说明出处。(2)说明书内容应包括(装订次序):题目、目录、正文、设计总结、参考文献等。应阐述整个设计内容,要重点突出,图文并茂,文字通畅。 (3)报告内容应包括方案分析;方案对比 ;整体设计论述 ;硬件设计(电路接线,元器件说明,硬件资源分配 );软件设计 (软件流程,编程思想,程序注释,)调试结果;收获与体会;附录(设计代码放在附录部分,必须加上合理的注释)(4)学生签名: 1月 16 日课程设计(论文)评审意见(1)总体方案的选择是否正确; 正确( )、较正确( )、基本正确( )(2)程序仿真能满足基本要求; 满足( )、较满足( )、基本满足(

4、 )(3)设计功能是否完善; 完善( )、较完善( )、基本完善( )(4)元器件选择是否合理; 合理( )、较合理( )、基本合理( )(5)动手实践能力; 强( )、较强( )、一般( )(6)学习态度; 好( )、良好( )、一般( )(7)基础知识掌握程度; 好( )、良好( )、一般( )(8)回答问题是否正确;正确( )、较正确( )、基本正确( )、不正确( )(9)程序代码是否具有创新性 ; 全部( )、部分( )、无( )(10)书写整洁、条理清楚、格式规范;规范()、较规范()、一般( )总评成绩优()、良()、中()、及格()、不及格()评阅人: 年 月 日摘要随着社会科

5、技的发展和进步,计算器因其功能强大而早已成为人们日常生活中必不可少的工具,最简单的计算器就能实现简单的加减乘除运算,这让人们免去了复杂的计算过程,大大提高了工作效率。本文利用C51系列单片机系统设计的简易十进制加法计算器,就能够实现简单的加法运算。本文设计的简易十进制加法计算器系统硬件电路主要包括:键盘电路,显示电路以及复位电路和晶振电路。复位电路采用的是上电与手动复位,系统一上电,芯片就复位,或者中途按按键也能够进行复位;数码管显示电路采用三个并行设计;由于需要读取键盘的行值和列值,减少I/O的使用,故键盘扫描采用反转法;键盘电路设计,至于按键的独立行,由于计算器输入数字和其它功能按键都用到

6、很多按键,如果按键独立的话,编程会比较简单,可是会占用大量的I/O口资源,而单片机只有四个八位的I/O口,这样可能会导致I/O口不够用,因此采用非独立式的矩阵键盘方案。软件设计方面选用最基本的思路。首先进行参数初始化,并LED显示;然后扫描键盘看是否有按键输入,若有,则读取键码;并判断键码是数字键、清零键还是功能键(“+”、“=”),是数值键则送数码管显示并保存数值,是清零键则做清零处理,是功能键则又判断是“+”还是“=”,若是“=”则将计算最后结果送数码管显示,若是加法功能键则不显示。最后经过Proteus软件仿真结果完全正确,最终完成了设计。关键词:单片机 十进制加法计算器 矩阵键盘 扫描

7、法 LED目录一、系统方案设计与分析51.1方案分析51.2方案对比51.3系统总设计6二、硬件电路设计62.1单片机介绍72.2 单片机最小系统8 2.2.1 复位电路8 2.2.2 晶振电路92.3 显示数码管电路设计102.4 键盘电路设计102.4.1键盘扫描112.4.2 键盘电路设计112.5 系统完整电路设计12三、软件设计123.1 LED显示程序设计133.2 数值送显示缓存程序设计143.3读键子程序设计153.4运算程序的设计16四、系统仿真与调试184.1 KeilC51单片机软件开发系统194.2 proteus的操作20 4.2.1 硬件电路图的接法操作20 4.2

8、.2 Proteus中课程设计的仿真结果20五、心得体会22六、参考文献23一、系统方案设计与分析1.1方案分析本设计是基于C51系列单片机来进行的数字计算器系统的设计,能够完成计算器的键盘输入,然而传统的简易计算器的键盘输入键盘都采用的是矩阵形式的电路,键盘上一般存在有数字键 、功能键、清零键,能够进行简单的加、减、乘、除四则基本运算。而我们本次课题是要设计一个简单的十进制加法计算器,并在4位共阳极数码管上显示相应的结果,那意味着要先扫描键盘上的按钮,读取键码,将键值读入单片机,然后将这些键值放入数值缓冲程序里等待处理,键值进过运算程序后的结果送入输出口并显示出来,结果的显示也要经过显示程序

9、才能实现,我们采用四位的数码管显示数值。本课设设计电路采用的是AT89C51单片机为主要控制芯片,再利用一些外围电路实现十进制的加法功能;软件方面采用Protues进行电路仿真。1.2方案对比本次课程设计是基于C51系列单片机借外围电路来可进行键盘输入的十进制加法计算器系统的设计。在显示数码管电路设计方面,根据LED数码管的驱动方式的不同,能够分为静态式和动态式两类,可是我们设计的十进制加法计算器是需要不断的显示数字,而且I/O有限,故采用动态类方式显示。在键盘设计电路中,键盘扫描有中断式、外扫描式和反转式三种,因为我们设计的是矩阵式键盘,既要扫描行值,又要扫描列值,因此采用反转法实现用户键盘

10、接口。至于按键的独立性。如果按键独立的话,编程会比较简单,可是会占用大量的I/O口资源,可能会导致I/O口不够用,故采用非独立式的矩阵键盘。1.3系统总设计利用AT89S51单片机设计一个简易的十进制加法计算器。外部主要由近似矩阵键盘、晶振电路、手动复位电路和LED数码显示管构成,内部由一块AT89S51单片机构成,经过软件编程可实现简单加法运算,数值的最高位为百位,溢出则不显示。在键盘上输入数值或运算符号,进行加法运算,并在显示数码管上显示相应的结果。简易计算器的程序功能模块主要包括以下几个:(1)主模块,为系统的初始化。(2)显示子程序、读键子程序与键值分析模块,(3)运算子程序模块,(4

11、)数值送显示缓存程序模块,(5)程序结果显示模块等等。系统拓扑图如下图所示:矩阵按键电路键电路AT89C51单片机LED显示电路手动复位电路晶振电路图1 系统拓扑图二、硬件电路设计简易的十进制加法计算器系统硬件电路设计主要包括:键盘电路,显示电路以及复位电路和晶振电路。下面分别进行设计。2.1单片机介绍单片机,全称单片微型计算机,又称微控制器,是把中央处理器、存储器、定时/计数器、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低

12、。由于其发展非常迅速,旧的单片机的定义已不能满足,因此在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。1本次课设用的是八位的单片机,这块芯片不需要我们设计,它的每个管脚功能见教材详解,它的管脚图如下图所示:图1 AT89C51外形结构和引脚分布图2.2 单片机最小系统单片机的最小系统就是要让单片机里面的程序运行,需要的最小配置。如果需要用IO口去驱动LED,写好程序就直接能够运行了。最小系统只要由震荡电路、复位电路、输入输出设备、电源和单片机芯片组成。 2.2.1 复位电路单片机复位电路就是让单片机重新启动,初始化程序

13、重新正常运行。复位操作一般有两种基本形式:上电自动复位、手动按键复位。上电自动复位操作要求接通电源后自动实现复位操作;手动按键复位要求在电源接通的条件下,在单片机运行期间,用按键开关操作使单片机复位。复位电路基本原理:电阻给电容充电,电容的电压缓慢上升直到VCC,没到VCC时芯片复位脚近似低电平,于是芯片复位,接近VCC时芯片复位脚近高电平,于是芯片停止复位,复位完成。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。图2 单片机复位电路本设计采用上电与手

14、动复位电路,电阻选取2K,电容选取10uF,系统一上电,芯片就复位,或者中途按按键也能够进行复位。2.2.2 晶振电路 单片机晶振的作用是为系统提供基本的时钟信号。一般一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而经过电子调整频率的方法保持同步。晶振电路起振原理:晶振即石英晶体振荡器,它是将二氧化硅切成薄片,利用了它的压变效应(就是电压会让它变形,而它的变形同样会影响电压),可是为了方便它的起振,一般在单片机的晶振处都会加上二个小点的电容来帮它起振。晶振电路原理图如下图所示:图3 单片机晶振电路本次设计的晶振电路的两个小电容值为1nF,振荡器采用的是石英晶

15、体振荡器。2.3 显示数码管电路设计LED数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据LED数码管的驱动方式的不同,能够分为静态式和动态式两类。为了减少端口的使用,故选择动态显示。而本次课设选用的是四个并行数码管(只用3位),采用共阳极形式。至于上拉电阻,由于数码管的每个引脚都会接,故选用排阻的形式。图4 三位数码管的显示电路2.4 键盘电路设计2.4.1键盘扫描一般设计矩阵式键盘接口通采用3种方法读取键值。分别为:中断式、外扫描式和反

16、转式:(1)中断式:在键盘按下时产生一个外部中断通知CPU,并由中断处理程序经过不同的地址读取数据线上的状态,判断哪个案件被按下。(2)扫描法:对键盘上的某一行送低电平,其它行为高电平,然后读取列值。若列值中有一位是低电平,表明该行与低电平对应列的键被按下;否则,扫描下一行。(3)反转法:先将所有行扫描线输出低电平,读列值。若列值有一位是低,则表明有键按下,读列值;然后所有列扫描线输出低电平,再读行值。根据读到的值组合就能够得到键码。本实验采用反转法实现用户键盘接口2.4.2 键盘电路设计本次课设由于用到的按键数目不太多,为了降低成本和简化电路一般采用非编码键盘。非编码键盘的接口电路由计者根据

17、需要自行决定,按键信息经过接口软件来获取。本课题需要的是13个按键,按键数目不多,简单清晰,故选择用非编码键盘。至于按键的独立性。由于计算器输入数字和其它功能按键都用到很多按键,如果按键独立的话,编程会比较简单,可是会占用大量的I/O口资源,而单片机只有四个八位的I/O口,这样可能会导致I/O口不够用。因此在这种情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为44个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。由于本次课设只完成加法的功能,故只设定了两

18、个功能键,一个清除键,十个数字键,键盘上总共有13个按键。键盘电路如下图所示:图5 键盘电路设计 2.5 系统完整电路设计以上完成了各个子模块的电路设计,将这些子模块电路按一定的方式串接在一起组成了系统的总电路设计,系统的完整电路如下图所示:图6 硬件电路系统总图设计三、软件设计对于十进制加法计算器设计,首先进行参数初始化,并LED显示;然后扫描键盘看是否有按键输入,若有,则读取键码;并判断键码是数字键、清零键还是功能键(“+”、“=”),是数值键则送数码管显示并保存数值,是清零键则做清零处理,是功能键则又判断是“+”还是“=”,若是“=”则将计算最后结果送数码管显示,若是加法功能键则不显示。

19、下面将进行各个子程序的设计:3.1 LED显示程序设计LED显示器是由四个七段数码管组成,排列成8字形状的器件,因此也成为七段显示器。为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字09的共阴极字形代码如下表:表1 09共阳极字型代码表显示字型gfedcba段码0 01111110C0H1 00001100F9H2 10110110A4H3 10011110B0H4 110011099H5 110110192H6 111110182H7 00001110F8H8 11111118

20、0H9 110111190HLED显示程序的流程框图如下:数据存储取键值对应的数据是否有数字键输入 YYN第一个数据存入data1第二个数据存入data2 功能键 LED逐位显示返回键测试返回键测试送LED显示缓存读取键码LED逐位显示图7 LED显示程序设计图 3.2 数值送显示缓存程序设计简易十进制加法计算器所显示的数值最大位为3位。要显示数值,那必先将结果进行处理,先将数值除以10,显示余数,再判断商是否为0,若不为0,则将商继续除以10,将余数送显高位。流程图如下:结果除以10取商商是否为零 取运算结果返回YN图8 数值送显示缓存程序图3.3读键子程序设计为了实现键盘的数据输入功能和命

21、令处理功能,每个键都有其处理的子程序,为此每个键都对应一个码键码。为了得到被按键的键码,前面已讲过用行扫描法识别按键。其流程框图所示:读键程序使用的是反转法读键,不论键盘矩阵的规模大小,均进行两次读键。第一次所有列线均输出低电平,从所有读入键盘信息(行信息);第二次所有行线均输出低电平,从所有行线读入键盘信息(列信息)。将两次读键信息进行组合就能够得到按键的特征编码,然后经过查表得到按键的顺序编码。将各特征编码按希望的顺序排成一张表,然后用当前读得的特征码来查表。当表中有该特征码时,它的位置就是对应的顺序编码;当表中没有该特征码时,说明这是一个没有定义的键码,与没有按键(0FFH)同等看待。流

22、程图如下图所示:开始系统初始化键测试是否有键按下NY取键值列扫描取键值键值组合行扫描清零键数字键分析键值数据处理程序运算处理程序功能键图9 读键子程序图3.4运算程序的设计首先初始化参数,送LED三位显示“0”,剩下的一位不显示。然后扫描键盘看是否有键输入,若有,则读取键码,并判断键码是数字键、清零键还是功能键,是数值键则送LED显示缓存并保存数值;是清零键则做清零处理,返回初始化;是功能键则又判断是“=”还是运算键,若是“=”则将计算的最后结果送LED显示,并返回初始化。 若是运算键则保存相应运算程序的首地址,而且不显示。 流程图如下图所示:开始初始化参数LED显示有无按键输入?读取键码分析

23、键码数字键清除键功能键输入数字状态清零功能键是数值送显示缓存等待数值输入读取键码计算结果结果结果送显示缓存=+图10 运算子程序框图 四、系统仿真与调试下面用KEILuVision4与proteus仿真软件介绍十进制加法计算器的仿真与调试。4.1 KeilC51单片机软件开发系统Keil C51能够完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创立生成库文件,也能够与库文件一起经L51连接定位生成绝对目标文件(.ASM)。ASM文件由OH51转换成标准的He

24、x文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也能够直接写入程序存贮器如EPROM中。采用KEILC51开发的89C51单片机编写程序步骤:1.在uVision4集成开发环境中创立新项目(Project),扩展文件名为.UV2,并为该项目选定合适的单片机CPU器件(本设计采用ATMEL公司下的AT89C51)2.用uVision的文本编辑器编写源文件,能够是汇编文件(.ASM),也能够使C语言文件(扩展名.C),并将该文件添加到项目中去。一个项目文件能够包含多个文件,除了源程序文件外,还能够是库文件、头文件或文本说明文件。3经过

25、uVision4的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。4.对项目中的源文件进行编译连接,生成绝对目标代码和可选的.HEX文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个项目。5.对没有语法错误的程序进行仿真调试,调试成功后将.HEX文件写入到单片机应用系统的ROM中。4.2 proteus的操作4.2.1 硬件电路图的接法操作1.点击界面上的”P”字母,并在弹出的对话框里输入相应元器件的英文名,并选择元器件,或直接在左方框里选择元器件。2.移动元器件。3.缩放元器件。4.连接导线。5.仿真,调试。 4.2.2 Proteus中课程设计的仿真结果

26、在Proteus中将硬件电路全部接好以后,将Keil中生成的.hex文件导入到单片机中,点击开始仿真按钮,电路开始仿真。能够观察到:数码管显示“000”;分别依次按下按键“29”、“+”、“45”和“=”,能够看到数码管显示“74”;也能够分别调试其它功能键,结果发现调试结果与预期的理论值相吻合,即本次课设已成功。调试结果如下图所示:图 11 仿真调试输入数字29图 12 仿真调试输入数字45图 13 仿真调试输出数字74经过仿真调试29+45=74,结果与实际完全吻合,说明程序和仿真电路都是完全正确的,十进制加法计算器的功能基本实现。 五、心得体会经过了这几天的艰苦奋战,我的单片机课程设计十

27、进制加法计算器基本结束了。结果做出来了,虽然有点儿艰辛,可是在我不懈努力下,不畏艰难,勇往直前,最后取得了成功。课程设计总共六个题目,这个题目是我随意选择的,虽然我的单片机学的还不算太差,但拿到这个题目的时候一头雾水,完全摸不着头脑,不知道该从哪里下手,程序就更不用说了,基本无框架,就连Keil uversion4和Proteus这两个软件都不会操作,而且以前并没有过编写这种大型程序的经验,不能行云流水般的将所有的代码一并写出,于是去网上图书馆查找相关资料,了解计算器的输入控制原理、运算处理以及显示的原理,在脑海中初步构建了编写程序的基本框架和一些控制子程序,自己也尝试着去编写,并在同学的协助

28、下掌握了Keil uversion4和Proteus这两个软件的一些基本操作,还望在以后的学习过程中对这两个软件有更深入的学习。在编写程序的过程中也遇到了很多麻烦, 比如读键子程序、显示子程序和键测试子程序困扰了我好久,在KEIL环境下程序始终调试不出来,后来请教了我参加过去全国大学生“飞思卡尔”智能汽车竞赛的同学之后,在重复的调试下,才基本把程序编出来了。在仿真编译经过后,于是开始在Proteus中连硬件电路,全部接完电路之后将Keil生成的.Hex文件导入Proteus进行仿真,仿真还算比较顺利,一下就出结果了,结果也如期望的那样。经历之后才知道这个过程是艰难曲折的。经过这一次的课程设计让

29、我对单片机有了更深入的理解, 虽然这不是第一次把软件和硬件同时结合起来做的课程设计,可是它也更加凸显出了软硬结合的重要性,而且在这个过程中培养了我们敢于挑战自我,超越自己的创新精神。虽然这几天有点儿艰辛,弄得自己有点儿憔悴,但有这样一次经历还是蛮不错的。六、参考文献1范力旻单片机原理及应用技术电子工业出版社( )2陈小忠、黄宁、赵小侠单片机接口技术实用子程序人民邮电出版社( 3康华光.电子技术基础(第5版).高等教育出版社出版, 4蒋力培.单片微机系统实用教程(第1版).机械工业出版社5姜志海、刘连鑫.单片微型计算机原理及应用.电子工业出版社, 附录源代码001YJ EQU50H ;结果存放Y

30、J1 EQU51H ;中间结果存放GONG EQU52H ;功能键存放ORG 00HSTART:MOV R3,#0 ;初始化显示为空MOV GONG,#0MOV 32H,#00HMOV 33H,#00HMOV 34H,#00HMLOOP:CALL DISP ;调显示子程序WAIT:CALL TESTKEY ;判断有无按键JZ WAIT CALL GETKEY ;读键INC R3 ;按键个数CJNE A,#0,NEXT1 ;判断是否数字键LJMP E1 ;转数字键处理NEXT1:CJNE A,#1,NEXT2LJMP E1NEXT2:CJNE A,#2,NEXT3LJMP E1NEXT3:CJN

31、E A,#3,NEXT4LJMP E1NEXT4:CJNE A,#4,NEXT5LJMP E1NEXT5:CJNE A,#5,NEXT6LJMP E1NEXT6:CJNE A,#6,NEXT7LJMP E1NEXT7:CJNE A,#7,NEXT8LJMP E1NEXT8:CJNE A,#8,NEXT9LJMP E1NEXT9:CJNE A,#9,NEXT10LJMP E1NEXT10:CJNE A,#10,NEXT11 ;判断是否功能键LJMP E2 ;转功能键处理NEXT11:LJMP E3 ;判断是否清除键E1:CJNE R3,#1,N1 ;判断第几次按键LJMP E11 ;为第一个数字

32、N1:CJNE R3,#2,N2LJMP E12 ;为第二个数字N2:CJNE R3,#3,N3 LJMP E13 ;为第三个数字N3:LJMP E3 ;第四个数字转溢出E11:MOV R4,A ;输入值暂存R4MOV 34H,A ;输入值送显示缓存MOV 33H,#00HMOV 32H,#00HLJMP MLOOP ;等待再次输入E12: MOV R7,A ;个位数暂存R7MOV B,#10MOV A,R4MUL AB ;十位数ADDA,R7MOV R4,A ;输入值存R4MOV 32H,#00H ;输入值送显示缓存MOV 33H,34HMOV 34H,R7LJMP MLOOPE13:MOV

33、 R7,AMOV B,#10MOV A,R4MUL ABJB OV,E3 ;输入溢出ADD A,R7JB CY,E3 ;输入溢出MOV R4,AMOV 32H,33H;输入值送显示缓存MOV 33H,34HMOV 34H,R7LJMP MLOOPE3:MOV R3,#0 ;按键次数清零MOV R4,#0 ;输入值清零MOV YJ,#0 ;计算结果清零MOV GONG,#0 ;功能键设为零 MOV 32H,#00H;显示清空MOV 33H,#00HMOV 34H,#00HLJMP MLOOPE2:MOV 34H,#00HMOV 33H,#00HMOV 32H,#00HMOV R0,GONG ;与

34、上次功能键交换MOV GONG,AMOV A,R0CJNE A,#10,N21 ;判断功能键LJMP JIA ;N21:LJMP DEN ;=N4:LJMP E3JIA:MOV A,YJ;上次结果送累加器ADD A,R4;上次结果加输入值JB CY,N4;溢出MOV YJ,A;存本次结果MOV R3,#0;按键次数清零LJMP DISP1DEN:MOV R3,#0LJMP DISP1DISP1:MOVB,#10MOVA,YJ;结果送累加器DIVAB;结果除10MOVYJ1,A;暂存商MOVA,B;取个位数MOV34H,A;个位数送显示缓存MOVA,YJ1JZDISP11;结果是否为一位数MOV

35、B,#10MOVA,YJ1DIVABMOVYJ1,AMOVA,BMOV33H,A;十位送显示缓存MOVA,YJ1JZDISP11;结果是否为二位数MOV32H,A;百位数送显示缓存DISP11:LJMPMLOOPDISP: MOV R0,#34HDIR1: MOV DPTR,#SEGTAB MOV A,R0 MOVC A,A+DPTR MOV P0,A CJNE R0,#34H,DIR2 SETB P2.0 CALL D1MS CLR P2.0 DEC R0 SJMP DIR1DIR2: CJNE R0,#33H,DIR3 SETB P2.1 CALL D1MS CLR P2.1 DEC R0

36、 SJMP DIR1DIR3: SETB P2.2 CALL D1MS CLR P2.2 RETD1MS: MOV R7,#02HDMS: MOV R6,#0F0H DJNZ R6,$DJNZ R7,DMS RETSEGTAB:DB 0C0H, 0F9H, 0A4H, 0B0H ;数码管显示数字定义 DB 99H, 92H, 82H, 0F8H DB 80H, 90H, 88H, 83H DB 0C6H, 0A1H, 86H, 8EHTESTKEY:ACALL DISPMOVP1,#0FH;读入键状态MOVA,P1CPLAANLA,#0FH;高四位不用RETKEYTABLE:DB0EEH,0EDH,0DD

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服