单片机课程设计总会.doc
《单片机课程设计总会.doc》由会员分享,可在线阅读,更多相关《单片机课程设计总会.doc(38页珍藏版)》请在咨信网上搜索。
单片机课程设计总会 38 2020年4月19日 文档仅供参考 课程设计(论文)任务书 电气 学 院 电力系统 专 业 12( 1 ) 班 一、课程设计(论文)题目: 十进制加法计算器设计 二、课程设计(论文)工作自 1 月 12 日起至 年 1月 16 日止。 三、课程设计(论文) 地点: 电气学院机房 10-303 四、课程设计(论文)内容要求: 1.课程设计的目的 (1)综合运用单片机原理及应用相关课程的理论知识和实际应用知识,进行单片机应用系统电路及程序设计,从而使这些知识得到进一步的巩固,加深和发展; (2)熟悉和掌握单片机控制系统的设计方法,汇编语言程序设计及proteus 软件的使用; (3)经过查阅图书资料、以及书写课程设计报告可提高综合应用设计能力,培养独立分析问题和解决问题的能力。 2.课程设计的内容及任务 课程设计内容:利用单片机及一些外围电路设计一个简易的十进制加法计算器 ,硬件电路设计大概主要包括:键盘电路,显示电路以及复位电路和晶振电路 。 软件方面的设计主要包括:LED显示程序设计 、数值送显示缓存程序设计 、读键子程序设计、运算程序的设计。 课程设计任务:设计一个键盘显示装置,键盘上除了定义0~9共10个数字键外,还要相应的功能健,其它键不定义无响应。利用此系统可分别输入十进制被加数和加数,实现两个数相加并将结果以十进制形式显示出来。 3.课程设计说明书编写要求 (1)设计说明书用A4纸统一规格,论述清晰,字迹端正,应用资料应说明出处。 (2)说明书内容应包括(装订次序):题目、目录、正文、设计总结、参考文献等。应阐述整个设计内容,要重点突出,图文并茂,文字通畅。 (3)报告内容应包括方案分析;方案对比 ;整体设计论述 ;硬件设计(电路接线,元器件说明,硬件资源分配 );软件设计 (软件流程,编程思想,程序注释,) 调试结果;收获与体会;附录(设计代码放在附录部分,必须加上合理的注释) (4) 学生签名: 1月 16 日 课程设计(论文)评审意见 (1)总体方案的选择是否正确; 正确( )、较正确( )、基本正确( ) (2)程序仿真能满足基本要求; 满足( )、较满足( )、基本满足( ) (3)设计功能是否完善; 完善( )、较完善( )、基本完善( ) (4)元器件选择是否合理; 合理( )、较合理( )、基本合理( ) (5)动手实践能力; 强( )、较强( )、一般( ) (6)学习态度; 好( )、良好( )、一般( ) (7)基础知识掌握程度; 好( )、良好( )、一般( ) (8)回答问题是否正确;正确( )、较正确( )、基本正确( )、不正确( ) (9)程序代码是否具有创新性 ; 全部( )、部分( )、无( ) (10)书写整洁、条理清楚、格式规范;规范( )、较规范( )、一般( ) 总评成绩 优( )、良( )、中( )、及格( )、不及格( ) 评阅人: 年 月 日 摘要 随着社会科技的发展和进步,计算器因其功能强大而早已成为人们日常生活中必不可少的工具,最简单的计算器就能实现简单的加减乘除运算,这让人们免去了复杂的计算过程,大大提高了工作效 率。本文利用C51系列单片机系统设计的简易十进制加法计算器,就能够实现简单的加法运算。 本文设计的简易十进制加法计算器系统硬件电路主要包括:键盘电路,显示电路以及复位电路和晶振电路。复位电路采用的是上电与手动复位,系统一上电,芯片就复位,或者中途按按键也能够进行复位;数码管显示电路采用三个并行设计;由于需要读取键盘的行值和列值,减少I/O的使用,故键盘扫描采用反转法;键盘电路设计,至于按键的独立行,由于计算器输入数字和其它功能按键都用到很多按键,如果按键独立的话,编程会比较简单,可是会占用大量的I/O 口资源,而单片机只有四个八位的I/O口,这样可能会导致I/O口不够用,因此采用非独立式的矩阵键盘方案。软件设计方面选用最基本的思路。首先进行参数初始化,并LED显示;然后扫描键盘看是否有按键输入,若有,则读取键码;并判断键码是数字键、清零键还是功能键(“+”、“=”),是数值键则送数码管显示并保存数值,是清零键则做清零处理,是功能键则又判断是“+”还是“=”,若是“=”则将计算最后结果送数码管显示,若是加法功能键则不显示。最后经过Proteus软件仿真结果完全正确,最终完成了设计。 关键词:单片机 十进制加法计算器 矩阵键盘 扫描法 LED 目录 一、系统方案设计与分析………………………………………………………5 1.1方案分析………………………………………………………………5 1.2方案对比………………………………………………………………5 1.3系统总设计……………………………………………………………6 二、硬件电路设计………………………………………………………………6 2.1单片机介绍……………………………………………………………7 2.2 单片机最小系统…………………………………………………8 2.2.1 复位电路………………………………………………………8 2.2.2 晶振电路………………………………………………………9 2.3 显示数码管电路设计…………………………………………………10 2.4 键盘电路设计…………………………………………………………10 2.4.1键盘扫描………………………………………………………11 2.4.2 键盘电路设计…………………………………………………11 2.5 系统完整电路设计……………………………………………………12 三、软件设计……………………………………………………………………12 3.1 LED显示程序设计……………………………………………………13 3.2 数值送显示缓存程序设计……………………………………………14 3.3读键子程序设计 ………………………………………………………15 3.4运算程序的设计………………………………………………………16 四、系统仿真与调试……………………………………………………………18 4.1 Keil C51单片机软件开发系统………………………………………19 4.2 proteus的操作 ………………………………………………………20 4.2.1 硬件电路图的接法操作…………………………………………20 4.2.2 Proteus中课程设计的仿真结果………………………………20 五、心得体会……………………………………………………………………22 六、参考文献……………………………………………………………………23 一、系统方案设计与分析 1.1方案分析 本设计是基于C51系列单片机来进行的数字计算器系统的设计,能够完成计算器的键盘输入,然而传统的简易计算器的键盘输入键盘都采用的是矩阵形式的电路,键盘上一般存在有数字键 、功能键、清零键,能够进行简单的加、减、乘、除四则基本运算。而我们本次课题是要设计一个简单的十进制加法计算器,并在4位共阳极数码管上显示相应的结果,那意味着要先扫描键盘上的按钮,读取键码,将键值读入单片机,然后将这些键值放入数值缓冲程序里等待处理,键值进过运算程序后的结果送入输出口并显示出来,结果的显示也要经过显示程序才能实现,我们采用四位的数码管显示数值。 本课设设计电路采用的是AT89C51单片机为主要控制芯片,再利用一些外围电路实现十进制的加法功能;软件方面采用Protues进行电路仿真。 1.2方案对比 本次课程设计是基于C51系列单片机借外围电路来可进行键盘输入的十进制加法计算器系统的设计。在显示数码管电路设计方面,根据LED数码管的驱动方式的不同,能够分为静态式和动态式两类,可是我们设计的十进制加法计算器是需要不断的显示数字,而且I/O有限,故采用动态类方式显示。在键盘设计电路中,键盘扫描有中断式、外扫描式和反转式三种,因为我们设计的是矩阵式键盘,既要扫描行值,又要扫描列值,因此采用反转法实现用户键盘接口。至于按键的独立性。如果按键独立的话,编程会比较简单,可是会占用大量的I/O 口资源,可能会导致I/O口不够用,故采用非独立式的矩阵键盘。 1.3系统总设计 利用AT89S51单片机设计一个简易的十进制加法计算器。外部主要由近似矩阵键盘、晶振电路、手动复位电路和LED数码显示管构成,内部由一块AT89S51单片机构成,经过软件编程可实现简单加法运算,数值的最高位为百位,溢出则不显示。在键盘上输入数值或运算符号,进行加法运算,并在显示数码管上显示相应的结果。简易计算器的程序功能模块主要包括以下几个:(1)主模块,为系统的初始化。(2)显示子程序、读键子程序与键值分析模块,(3)运算子程序模块,(4)数值送显示缓存程序模块,(5)程序结果显示模块等等。系统拓扑图如下图所示: 矩阵按 键电路 键电路 AT89C51 单片机 LED显 示电路 手动复 位电路 晶振电路 图1 系统拓扑图 二、硬件电路设计 简易的十进制加法计算器系统硬件电路设计主要包括:键盘电路,显示电路以及复位电路和晶振电路。下面分别进行设计。 2.1单片机介绍 单片机,全称单片微型计算机,又称微控制器,是把中央处理器、存储器、定时/计数器、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,因此在很多应用场合被称为范围更广的微控制器;从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。[1] 本次课设用的是八位的单片机,这块芯片不需要我们设计,它的每个管脚功能见教材详解,它的管脚图如下图所示: 图1 AT89C51外形结构和引脚分布图 2.2 单片机最小系统 单片机的最小系统就是要让单片机里面的程序运行,需要的最小配置。如果需要用IO口去驱动LED,写好程序就直接能够运行了。最小系统只要由震荡电路、复位电路、输入输出设备、电源和单片机芯片组成。 2.2.1 复位电路 单片机复位电路就是让单片机重新启动,初始化程序重新正常运行。复位操作一般有两种基本形式:上电自动复位、手动按键复位。上电自动复位操作要求接通电源后自动实现复位操作;手动按键复位要求在电源接通的条件下,在单片机运行期间,用按键开关操作使单片机复位。 复位电路基本原理:电阻给电容充电,电容的电压缓慢上升直到VCC,没到VCC时芯片复位脚近似低电平,于是芯片复位,接近VCC时芯片复位脚近高电平,于是芯片停止复位,复位完成。 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。 图2 单片机复位电路 本设计采用上电与手动复位电路,电阻选取2K,电容选取10uF,系统一上电,芯片就复位,或者中途按按键也能够进行复位。 2.2.2 晶振电路 单片机晶振的作用是为系统提供基本的时钟信号。一般一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而经过电子调整频率的方法保持同步。 晶振电路起振原理:晶振即石英晶体振荡器,它是将二氧化硅切成薄片,利用了它的压变效应(就是电压会让它变形,而它的变形同样会影响电压),可是为了方便它的起振,一般在单片机的晶振处都会加上二个小点的电容来帮它起振。晶振电路原理图如下图所示: 图3 单片机晶振电路 本次设计的晶振电路的两个小电容值为1nF,振荡器采用的是石英晶体振荡器。 2.3 显示数码管电路设计 LED数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据LED数码管的驱动方式的不同,能够分为静态式和动态式两类。为了减少端口的使用,故选择动态显示。而本次课设选用的是四个并行数码管(只用3位),采用共阳极形式。至于上拉电阻,由于数码管的每个引脚都会接,故选用排阻的形式。 图4 三位数码管的显示电路 2.4 键盘电路设计 2.4.1键盘扫描 一般设计矩阵式键盘接口通采用3种方法读取键值。分别为:中断式、外扫描式和反转式: (1)中断式:在键盘按下时产生一个外部中断通知CPU,并由中断处理程序经过不同的地址读取数据线上的状态,判断哪个案件被按下。 (2)扫描法:对键盘上的某一行送低电平,其它行为高电平,然后读取列值。若列值中有一位是低电平,表明该行与低电平对应列的键被按下;否则,扫描下一行。 (3)反转法:先将所有行扫描线输出低电平,读列值。若列值有一位是低,则表明有键按下,读列值;然后所有列扫描线输出低电平,再读行值。根据读到的值组合就能够得到键码。本实验采用反转法实现用户键盘接口 2.4.2 键盘电路设计 本次课设由于用到的按键数目不太多,为了降低成本和简化电路一般采用非编码键盘。非编码键盘的接口电路由计者根据需要自行决定,按键信息经过接口软件来获取。本课题需要的是13个按键,按键数目不多,简单清晰,故选择用非编码键盘。 至于按键的独立性。由于计算器输入数字和其它功能按键都用到很多按键,如果按键独立的话,编程会比较简单,可是会占用大量的I/O 口资源,而单片机只有四个八位的I/O口,这样可能会导致I/O口不够用。 因此在这种情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。由于本次课设只完成加法的功能,故只设定了两个功能键,一个清除键,十个数字键,键盘上总共有13个按键。键 盘电路如下图所示: 图5 键盘电路设计 2.5 系统完整电路设计 以上完成了各个子模块的电路设计,将这些子模块电路按一定的方式串接在一起组成了系统的总电路设计,系统的完整电路如下图所示: 图6 硬件电路系统总图设计 三、软件设计 对于十进制加法计算器设计,首先进行参数初始化,并LED显示;然后扫描键盘看是否有按键输入,若有,则读取键码;并判断键码是数字键、清零键还是功能键(“+”、“=”),是数值键则送数码管显示并保存数值,是清零键则做清零处理,是功能键则又判断是“+”还是“=”,若是“=”则将计算最后结果送数码管显示,若是加法功能键则不显示。下面将进行各个子程序的设计: 3.1 LED显示程序设计 LED显示器是由四个七段数码管组成,排列成8字形状的器件,因此也成为七段显示器。为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阴极字形代码如下表: 表1 0~9共阳极字型代码表 显示字型 g f e d c b a 段码 0 0 1 1 1 1 1 1 0C0H 1 0 0 0 0 1 1 0 0F9H 2 1 0 1 1 0 1 1 0A4H 3 1 0 0 1 1 1 1 0B0H 4 1 1 0 0 1 1 0 99H 5 1 1 0 1 1 0 1 92H 6 1 1 1 1 1 0 1 82H 7 0 0 0 0 1 1 1 0F8H 8 1 1 1 1 1 1 1 80H 9 1 1 0 1 1 1 1 90H LED显示程序的流程框图如下: 数据存储 取键值对应的数据 是否有数字键输入 Y Y N 第一个数据存入data1 第二个数据存入data2 功能键 LED逐位显示 返回键测试 返回键测试 送LED显示缓存 读取键码 LED逐位显示 图7 LED显示程序设计图 3.2 数值送显示缓存程序设计 简易十进制加法计算器所显示的数值最大位为3位。要显示数值,那必先将结果进行处理,先将数值除以10,显示余数,再判断商是否为0,若不为0,则将商继续除以10,将余数送显高位。流程图如下: 结果除以10 取商 商是否为零 取运算结果 返回 Y N 图8 数值送显示缓存程序图 3.3读键子程序设计 为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理的子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,前面已讲过用行扫描法识别按键。其流程框图所示: 读键程序使用的是反转法读键,不论键盘矩阵的规模大小,均进行两次读键。第一次所有列线均输出低电平,从所有读入键盘信息(行信息);第二次所有行线均输出低电平,从所有行线读入键盘信息(列信息)。将两次读键信息进行组合就能够得到按键的特征编码,然后经过查表得到按键的顺序编码。将各特征编码按希望的顺序排成一张表,然后用当前读得的特征码来查表。当表中有该特征码时,它的位置就是对应的顺序编码;当表中没有该特征码时,说明这是一个没有定义的键码,与没有按键(0FFH)同等看待。流程图如下图所示: 开始 系统初始化 键测试 是否有键按下 N Y 取键值 列扫描 取键值 键值组合 行扫描 清零键 数字键 分析键值 数据处理程序 运算处理程序 功能键 图9 读键子程序图 3.4运算程序的设计 首先初始化参数,送LED三位显示“0”,剩下的一位不显示。然后扫描键盘看是否有键输入,若有,则读取键码,并判断键码是数字键、清零键还是功能键,是数值键则送LED显示缓存并保存数值;是清零键则做清零处理,返回初始化;是功能键则又判断是“=”还是运算键,若是“=”则将计算的最后结果送LED显示,并返回初始化。 若是运算键则保存相应运算程序的首地址,而且不显示。 流程图如下图所示: 开始 初始化参数 LED显示 有无按键输入? 读取键码 分析键码 数字键 清除键 功能键 输入数字 状态清零 功能键是 数值送显示缓存 等待数值输入 读取键码 计算结果结果 结果送显示缓存 = + 图10 运算子程序框图 四、系统仿真与调试 下面用KEIL uVision4与 proteus仿真软件介绍十进制加法计算器的仿真与调试。 4.1 Keil C51单片机软件开发系统 Keil C51能够完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创立生成库文件,也能够与库文件一起经L51连接定位生成绝对目标文件(.ASM)。ASM文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器 使用直接对目标板进行调试,也能够直接写入程序存贮器如EPROM中。 采用KEILC51开发的89C51单片机编写程序步骤: 1.在uVision4集成开发环境中创立新项目(Project),扩展文件名为.UV2,并为该项目选定合适的单片机CPU器件(本设计采用ATMEL 公司下的AT89C51) 2.用uVision 的文本编辑器编写源文件,能够是汇编文件(.ASM),也能够使C语言文件(扩展名.C),并将该文件添加到项目中去。一个项目文件能够包含多个文件,除了源程序文件外,还能够是库文件、头文件或文本说明文件。 3.经过uVision4的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。 4.对项目中的源文件进行编译连接,生成绝对目标代码和可选的.HEX文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个项目。 5.对没有语法错误的程序进行仿真调试,调试成功后将.HEX文件写入到单片机应用系统的ROM中。 4.2 proteus的操作 4.2.1 硬件电路图的接法操作 1.点击界面上的”P”字母,并在弹出的对话框里输入相应元器件的英文名,并选择元器件,或直接在左方框里选择元器件。 2.移动元器件。 3.缩放元器件。 4.连接导线。 5.仿真,调试。 4.2.2 Proteus中课程设计的仿真结果 在Proteus中将硬件电路全部接好以后,将Keil中生成的.hex文件导入到单片机中,点击开始仿真按钮,电路开始仿真。能够观察到:数码管显示“000”;分别依次按下按键“29”、“+”、“45”和“=”,能够看到数码管显示“74”;也能够分别调试其它功能键,结果发现调试结果与预期的理论值相吻合,即本次课设已成功。调试结果如下图所示: 图 11 仿真调试输入数字’29’ 图 12 仿真调试输入数字’45’ 图 13 仿真调试输出数字’74’ 经过仿真调试‘29’’+’’45’’=’’74’,结果与实际完全吻合,说明程序和仿真电路都是完全正确的,十进制加法计算器的功能基本实现。 五、心得体会 经过了这几天的艰苦奋战,我的单片机课程设计——十进制加法计算器基本结束了。结果做出来了,虽然有点儿艰辛,可是在我不懈努力下,不畏艰难,勇往直前,最后取得了成功。 课程设计总共六个题目,这个题目是我随意选择的,虽然我的单片机学的还不算太差,但拿到这个题目的时候一头雾水,完全摸不着头脑,不知道该从哪里下手,程序就更不用说了,基本无框架,就连Keil uversion4和Proteus这两个软件都不会操作,而且以前并没有过编写这种大型程序的经验,不能行云流水般的将所有的代码一并写出,于是去网上图书馆查找相关资料,了解计算器的输入控制原理、运算处理以及显示的原理,在脑海中初步构建了编写程序的基本框架和一些控制子程序,自己也尝试着去编写,并在同学的协助下掌握了Keil uversion4和Proteus这两个软件的一些基本操作,还望在以后的学习过程中对这两个软件有更深入的学习。在编写程序的过程中也遇到了很多麻烦, 比如读键子程序、显示子程序和键测试子程序困扰了我好久,在KEIL环境下程序始终调试不出来,后来请教了我参加过去全国大学生“飞思卡尔”智能汽车竞赛的同学之后,在重复的调试下,才基本把程序编出来了。在仿真编译经过后,于是开始在Proteus中连硬件电路,全部接完电路之后将Keil生成的.Hex文件导入Proteus进行仿真,仿真还算比较顺利,一下就出结果了,结果也如期望的那样。经历之后才知道这个过程是艰难曲折的。 经过这一次的课程设计让我对单片机有了更深入的理解, 虽然这不是第一次把软件和硬件同时结合起来做的课程设计,可是它也更加凸显出了软硬结合的重要性,而且在这个过程中培养了我们敢于挑战自我,超越自己的创新精神。虽然这几天有点儿艰辛,弄得自己有点儿憔悴,但有这样一次经历还是蛮不错的。 六、参考文献 [1] 范力旻《单片机原理及应用技术》电子工业出版社( ) [2] 陈小忠、黄宁、赵小侠《单片机接口技术实用子程序》人民邮电出版社( [3] 康华光.电子技术基础(第5版).高等教育出版社出版, [4] 蒋力培.单片微机系统实用教程(第1版).机械工业出版社[5] 姜志海、刘连鑫.单片微型计算机原理及应用.电子工业出版社, 附录 源代码001 YJ EQU 50H ;结果存放 YJ1 EQU 51H ;中间结果存放 GONG EQU 52H ;功能键存放 ORG 00H START: MOV R3,#0 ;初始化显示为空 MOV GONG,#0 MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MLOOP: CALL DISP ;调显示子程序 WAIT: CALL TESTKEY ;判断有无按键 JZ WAIT CALL GETKEY ;读键 INC R3 ;按键个数 CJNE A,#0,NEXT1 ;判断是否数字键 LJMP E1 ;转数字键处理 NEXT1: CJNE A,#1,NEXT2 LJMP E1 NEXT2: CJNE A,#2,NEXT3 LJMP E1 NEXT3: CJNE A,#3,NEXT4 LJMP E1 NEXT4: CJNE A,#4,NEXT5 LJMP E1 NEXT5: CJNE A,#5,NEXT6 LJMP E1 NEXT6: CJNE A,#6,NEXT7 LJMP E1 NEXT7: CJNE A,#7,NEXT8 LJMP E1 NEXT8: CJNE A,#8,NEXT9 LJMP E1 NEXT9: CJNE A,#9,NEXT10 LJMP E1 NEXT10: CJNE A,#10,NEXT11 ;判断是否功能键 LJMP E2 ;转功能键处理 NEXT11: LJMP E3 ;判断是否清除键 E1: CJNE R3,#1,N1 ;判断第几次按键 LJMP E11 ;为第一个数字 N1: CJNE R3,#2,N2 LJMP E12 ;为第二个数字 N2: CJNE R3,#3,N3 LJMP E13 ;为第三个数字 N3: LJMP E3 ;第四个数字转溢出 E11: MOV R4,A ;输入值暂存R4 MOV 34H,A ;输入值送显示缓存 MOV 33H,#00H MOV 32H,#00H LJMP MLOOP ;等待再次输入 E12: MOV R7,A ;个位数暂存R7 MOV B,#10 MOV A,R4 MUL AB ;十位数 ADD A,R7 MOV R4,A ;输入值存R4 MOV 32H,#00H ;输入值送显示缓存 MOV 33H,34H MOV 34H,R7 LJMP MLOOP E13: MOV R7,A MOV B,#10 MOV A,R4 MUL AB JB OV,E3 ;输入溢出 ADD A,R7 JB CY,E3 ;输入溢出 MOV R4,A MOV 32H,33H ;输入值送显示缓存 MOV 33H,34H MOV 34H,R7 LJMP MLOOP E3: MOV R3,#0 ;按键次数清零 MOV R4,#0 ;输入值清零 MOV YJ,#0 ;计算结果清零 MOV GONG,#0 ;功能键设为零 MOV 32H,#00H ;显示清空 MOV 33H,#00H MOV 34H,#00H LJMP MLOOP E2: MOV 34H,#00H MOV 33H,#00H MOV 32H,#00H MOV R0,GONG ;与上次功能键交换 MOV GONG,A MOV A,R0 CJNE A,#10,N21 ;判断功能键 LJMP JIA ;"+" N21: LJMP DEN ;"=" N4: LJMP E3 JIA: MOV A,YJ ;上次结果送累加器 ADD A,R4 ;上次结果加输入值 JB CY,N4 ;溢出 MOV YJ,A ;存本次结果 MOV R3,#0 ;按键次数清零 LJMP DISP1 DEN: MOV R3,#0 LJMP DISP1 DISP1: MOV B,#10 MOV A,YJ ;结果送累加器 DIV AB ;结果除10 MOV YJ1,A ;暂存"商" MOV A,B ;取个位数 MOV 34H,A ;个位数送显示缓存 MOV A,YJ1 JZ DISP11 ;结果是否为一位数 MOV B,#10 MOV A,YJ1 DIV AB MOV YJ1,A MOV A,B MOV 33H,A ;十位送显示缓存 MOV A,YJ1 JZ DISP11 ;结果是否为二位数 MOV 32H,A ;百位数送显示缓存 DISP11: LJMP MLOOP DISP: MOV R0,#34H DIR1: 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 DIR1 DIR2: CJNE R0,#33H,DIR3 SETB P2.1 CALL D1MS CLR P2.1 DEC R0 SJMP DIR1 DIR3: SETB P2.2 CALL D1MS CLR P2.2 RET D1MS: MOV R7,#02H DMS: MOV R6,#0F0H DJNZ R6,$ DJNZ R7,DMS RET SEGTAB: DB 0C0H, 0F9H, 0A4H, 0B0H ;数码管显示数字定义 DB 99H, 92H, 82H, 0F8H DB 80H, 90H, 88H, 83H DB 0C6H, 0A1H, 86H, 8EH TESTKEY:ACALL DISP MOV P1,#0FH ;读入键状态 MOV A,P1 CPL A ANL A,#0FH ;高四位不用 RET KEYTABLE: DB 0EEH,0EDH,0DD- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文