版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
...wd......wd......wd...单片机十进制加法计算器设计摘要本设计是基于51系列的单片机进展的十进制计算器系统设计,可以完成计算器的键盘输入,进展加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。设计过程在硬件与软件方面进展同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进展系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进展比拟分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进展编程,并用proteus仿真。引言十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的根本原理以及编程和各种根本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进展一次课程设计是有必要的。单片机课程设计既要让学生稳固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除目录摘要..........................................01引言..........................................01一、设计任务和要求.............................1、1设计要求1、2性能指标1、3设计方案确实定二、单片机简要原理.............................2、1AT89C51的介绍2、2单片机最小系统2、3七段共阳极数码管三、硬件设计...................................3、1键盘电路的设计3、2显示电路的设计四、软件设计...................................4、1系统设计4、2显示电路的设计五、调试与仿真.................................5、1KeilC51单片机软件开发系统5、2proteus的操作心得体会....................................参考文献.........................................附录1系统硬件电路图............................附录2程序清单..................................设计任务和要求1.1设计要求本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计,设计任务为:设计一键盘显示装置,键盘上除需定义10个十进制数字键外还要相应的功能键,其它键不定义无响应。利用此系统可分别可输入十进制被加数与加数,实现两数相加并将结果以十进制形式显示出来。(扩展:多位10进制数相加)1.2性能指标本课程设计的十进制加法计算器的计算范围为0~255,计算结果全为整数,计算结果溢出结果不显示。1、加法:三位加法,计算结果超过255溢出不显示2、减法:三位减法,计算结果假设小于零溢出不显示3、乘法:三位数乘法4、除法:整数除法5、有清零功能1.3设计方案确实定按照1.1的设计要求,本课题需要使用数码管显示和扩展4*4键盘,由于AT89C51芯片的I口不够多,而且为了硬件电路设计的简单化,应选择串行动态显示和用P1口扩展4*4键盘,扩展的4*4键盘定义十个数字键,六个功能键,使用串行动态显示显示运算结果。主程序进展初始化,采用行列扫描进展查表得出键值,每次按键后调用显示子程序。二、单片机简要原理在该课程设计中,主要用到一个AT89C51芯片和串接的共阴数码管。作为该设计的主要局部,下面将对它们的原理及功能做详细介绍和说明。2.1AT89C51的介绍:图一AT89C51外形构造和引脚分布图芯片AT89C51的外形构造和引脚图如图一所示。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory〕的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.2单片机最小系统单片机最小系统就是支持主芯片正常工作的最小局部,包括主控芯片、复位电路和晶振电路。〔一〕复位电路图二复位电路本设计采用上电与手动复位电路,电阻分别选取100和10K,电容选取10uF,系统一上电,芯片就复位,或者中途按按键也可以进展复位。晶振电路图三晶振电路晶振电路是单片机的心脏,它用于产生单片机工作所需要的时钟信号。单片机的晶振选取11.0592MHz,晶振旁电容选取30pF。2.3七段共阳极数码管图四七段共阳数码管图为七段共阳数码管的引脚图,从左到右数码管的段码分别为a,b,c,d,e,f,g和小数点dp,低电平时点亮,最右边为位选端。三、硬件设计简易数字计算器系统硬件设计主要包括:键盘电路,显示电路以及其他辅助电路。下面分别进展设计。3.1键盘电路的设计键盘可分为两类:编码键盘和非编码键盘。编码键盘是较多按键〔20个以上〕和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。通用计算机使用的标准键盘就是编码键盘。当系统功能比拟复杂,按键数量很多时,采用编码键盘可以简化软件设计。但大多数智能仪器和电子产品的按键数目都不太多〔20个以内〕,为了降低本钱和简化电路通常采用非编码键盘。非编码键盘的接口电路有设计者根据需要自行决定,按键信息通过接口软件来获取。本课题需要的是16个按键,应选择用非编码键盘。计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个穿插点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘构造能有效地提高单片机系统中I/O口的利用率。矩阵键盘的工作原理:计算器的键盘布局如图五所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。具体电路连接如图五所示:图五4*4键盘接口电路3.2显示电路的设计当系统需要显示少量数据时,采用LED数码管进展显示是一种经济实用的方法。数码管显示有静态显示和动态显示两种方法。为了减少端口的使用,应选择动态显示。电路如以下列图六所示:图六三位数码管的显示电路四、软件设计在十进制加法计算器的软件规划要求下,简易计算器的程序主要包括以下功能模块:〔1〕主模块,为系统的初始化。〔2〕显示与读键模块,分为判键程序段、运算操作子程序、显示子程序等局部;系统设计〔一〕系统模块图图六系统模块图此系统包括输入、运算和显示模块,由单片机控制。其中通过输入键盘模块将数字0~9和运算符号“+〞、“-〞、“*〞、“/〞输入单片机进展运算;运算模块分别根据输入的运算符进展加减乘除运算;显示模块将运算后的数值通过动态扫描使之在数码管上输出。系统总流程图主程序主要是用来进展初始化的,调用其他子程序,清空各个标志位,清空缓存区,读取键码,判断功能,在LED上作出回应,主程序流程图如图六所示。〔1〕数字送显示缓冲程序设计简易计算器所显示的数值最大位三位。要显示数值,先判断数值大小和位数,如果是超过三位或大于255,将不显示数字。可重新输入数字,再次计算。(2〕运算程序的设计首先初始化参数,送LED三位显示“0〞,其它位不显示。然后扫描键盘看是否有键输入,假设有,读取键码。判断键码是数字键、清零键还是功能键,是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=〞还是运算键,假设是“=〞则计算最后结果并送LED显示,假设是运算键则保存相对运算程序的首地址。初始化参数初始化参数清零键LED显示输入数值读取键值状态清零数值送显示缓存开场按键输入分析键值数字键等待数值输入结果送显示缓存保存结果和功能键根据上次功能键和输入的数据计算结果功能键否是是数字键是清零键是功能键图七主程序流程图4.2显示与按键设计LED显示程序设计LED显示器由七段发光二极管组成,排列成8字形状,因此也称为七段LED显示器。为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字0~9的共阳极字形代码如下表:显示字型gfedcba段码001111110c0h100001100f9h210110110a4h310011110b0h4110011099h5110110192h6111110182h700001110f8h8111111180h9110111190h表一共阳极数码管段码对照表读键子程序设计为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。为了得到被按键的键码,现使用行扫描法识别按键。其程序框图如图八:读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进展两次读键。第一次所有列线均输出低电平,从所有读入键盘信息〔行信息〕;第二次所有行线均输出低电平,从所有行线读入键盘信息〔列信息〕。将两次读键信息进展组合就可以得到按键的特征编码,然后通过查表得到按键的顺序编码。将各特征编码按希望的顺序排成一张表,然后用当前读得的特征码来查表。当表中有该特征码时,它的位置就是对应的顺序编码;当表中没有该特征码时,说明这是一个没有定义的键码,与没有按键〔0FFH〕同等对待。图八计算键值子程序流程图五、调试与仿真下面用KEILuVision3与proteus仿真软件介绍十进制加法计算器的仿真与调试。5.1 KeilC51单片机软件开发系统〔一〕系统的整体构造C51工具包的整体构造中,其中uVision是C51forWindows的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创立生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进展源代码级调试,也可由仿真器使用直接对目标板进展调试,也可以直接写入程序存贮器如EPROM中。〔二〕采用KEIL开发的89c51单片机应用程序步骤:1.在uVision集成开发环境中创立新工程〔Project〕,扩展文件名为.UV2,并为该工程选定适宜的单片机CPU器件〔本设计采用ATMEL公司下的AT89C51〕2.用uVision的文本编辑器编写源文件,可以是汇编文件〔.ASM〕,也可以使C语言文件〔扩展名.C〕,并将该文件添加到工程中去。一个工程文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件。3.通过uVision3的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。4.对工程中的源文件进展编译连接,生成绝对目标代码和可选的HEX文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个工程。5.对没有语法错误的程序进展仿真调试,调试成功后将HEX文件写入到单片机应用系统的ROM中。5.2proteus的操作〔一〕硬件电路图的接法操作1.放置选择〔删除〕元器件2.移动元器件3.缩放视图4.连接导线5.仿真,调试〔二〕单片机系统PROTEUS设计与仿真过程Proteus强大的单片机系统设计与仿真功能,使它可成为单片机系统应用开发和改良手段之一。全部过程都是在计算机上通过Proteus来完成的。其过程一般也可分为三步:1.在ISIS平台上进展单片机系统电路设计、选择元器件、接插件、连接电路和电气检测等,简称Proteus电路设计。2.在Keil平台上进展单片机系统程序设计、编辑、汇编编译、代码级调试,最后生成目标代码文件〔*.hex〕。简称Proteus源程序设计和生成目标代码文件。3.在ISIS平台上将目标代码文件加载到单片机系统中,并实现单片机系统的实时交互、协同仿真。它在相当程度上反映了实际单片机系统的运行情况。简称Proteus仿真。〔三〕Proteus中课程设计的仿真结果在Proteus中将硬件电路全部接好以后,将Keil中生成的.hex文件导入到单片机中,点击开场仿真按钮,电路开场仿真。可以观察到:数码管显示“000〞;分别依次按下按键“5〞、“+〞、“6〞和“=〞,可以看到数码管显示“11〞;也可以分别调试其它功能键,结果发现调试结果与预期的理论值相吻合,即本次课设已成功。总的仿真原理电路图见附录1图九。心得体会为期一周的单片机课程设计终于完毕了,通过紧张的工作,完成了我们的设计任务-十进制加法计算器。总的来说,这次课程设计是比拟成功的。当然,这其中也经历了许多坎坷,但是在我的坚持不懈下,在教师的细心指导下,在同学们的热情帮助下,最终抑制了种种困难,取得了成功。刚开场接到这个计算器的课程设计任务时,因为以前做过类似的题目,于是在脑海中初步构建了编写程序的一些控制程序。但是由于缺乏编写大量程序的经历,不能如行云流水般的将全部的各局部代码写出,于是去网上查找相关资料,了解计算器的输入控制原理、运算处理以及显示的原理。了解之后自己尝试编写程序,在此过程中,其中键盘扫描和动态扫描显示扫描程序困扰了我很久,经过三四天的辛苦工作,终于初步把所需要的程序编好了,于是就用Keiluversion3进展仿真,在仿真期间也发现了许多错误,根本上都是平日容易犯的错误,比方忘记了子程序标号、死循环程序、标点符号的漏写等。经过反复的编译过失,仿真编译通过后,于是开场在Proteus中连硬件电路,全部接完电路之后将Keil生成的.Hex文件导入进展仿真,发现软件与硬件不能够对应协调工作,于是分别对软件和硬件进展检查,经过反复的仿真调试,并且在同学的帮助和自己对每个子程序进展仿真观察下,终于在课设快完毕时成功的调试出结果了。这就是我这一周课设的经过,看似简单,过程却曲折艰辛。通过这次课程设计,我进一步加深了对电子自动控制的了解。并进一步熟练了对Keil和Proteus软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的缺乏,对以前所学过的知识理解得不够深刻,掌握得不够结实,对单片机汇编语言掌握得不够好。通过与同学探讨和请教教师,终于把问题都解决了,并加深了对计算器工作的原理的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经历。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。学会了怎么样去制定方案,怎么样去实现这个方案,并掌握了在执行过程中怎么样去抑制心理上的不良情绪。总之,通过这次的设计,进一步了解了单片微型计算机及应用原理,收获很大,对软件编程、排错调试、查阅资料等方面得到较全面的锻炼和提高。同时通过本次课程设计的学习,掌握了一种系统的研究方法,可以进展一些简单的编程,我还深深的体会到设计课的重要性和目的性所在。为了完成工程,在网络上找到了许多相关的资料,大大扩大自己的知识面,使许多以前想解决却无法解决的困难迎刃而解。将书本上的理论知识和实际有机地结合起来,从理论中得出结论。锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的根基。此次课设还稳固和综合运用所学过的原理知识,从而提高自己的实际动手能力和独立思考的能力。参考文献[1]周航慈.单片机应用程序设计技术〔修订版〕.北京航空大学出版社[2]张志良.单片机原理与控制技术.第2版.机械工业出版社[3]康华光.电子技术根基〔第5版〕.高等教育出版社出版,2006[4]蒋力培.单片微机系统实用教程(第1版).机械工业出版社[5]姜志海、刘连鑫.单片微型计算机原理及应用.电子工业出版社,2011附录1系统硬件电路图图九总电路原理图附录2程序清单YJ EQU 50H ;结果存放YJ1 EQU 51H ;中间结果存放GONG EQU 52H ;功能键存放 ORG 00HSTART: MOV R3,#0 ;初始化显示为空 MOV GONG,#0 MOV 32H,#00H MOV 33H,#00H MOV 34H,#00HMLOOP: CALL DISP ;调显示子程序WAIT: CALL TESTKEY ;判断有无按键 JZWAIT CALLGETKEY;读键 INCR3 ;按键个数 CJNEA,#0,NEXT1 ;判断是否数字键 LJMPE1 ;转数字键处理NEXT1: CJNEA,#1,NEXT2 LJMPE1NEXT2: CJNEA,#2,NEXT3 LJMPE1NEXT3: CJNEA,#3,NEXT4 LJMPE1NEXT4: CJNEA,#4,NEXT5 LJMPE1NEXT5: CJNEA,#5,NEXT6 LJMPE1NEXT6: CJNEA,#6,NEXT7 LJMPE1NEXT7: CJNEA,#7,NEXT8 LJMPE1NEXT8: CJNEA,#8,NEXT9 LJMPE1NEXT9: CJNEA,#9,NEXT10 LJMPE1NEXT10: CJNE A,#10,NEXT11;判断是否功能键 LJMPE2 ;转功能键处理NEXT11: CJNE A,#11,NEXT12 LJMPE2NEXT12: CJNE A,#12,NEXT13 LJMP E2NEXT13: CJNE A,#13,NEXT14 LJMP E2NEXT14: CJNE A,#14,NEXT15 LJMP E2NEXT15: LJMP E3 ;判断是否去除键E1: CJNE R3,#1,N1 ;判断第几次按键 LJMPE11 ;为第一个数字N1: CJNE R3,#2,N2 LJMPE12 ;为第二个数字N2: CJNER3,#3,N3 LJMPE13 ;为第三个数字N3: LJMPE3 ;第四个数字转溢出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 MLOOPE13: 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 MLOOPE3: MOV R3,#0 ;按键次数清零 MOV R4,#0 ;输入值清零 MOV YJ,#0 ;计算结果清零 MOV GONG,#0 ;功能键设为零 MOV 32H,#00H ;显示清空 MOV 33H,#00H MOV 34H,#00H LJMP MLOOPE2: 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: CJNE A,#11,N22 LJMP JIAN ;"-"N22:CJNE A,#12,N23 LJMP CHENG ;"*"N23: CJNE A,#13,N24 LJMP CHU ;"/"N24: CJNE A,#0,N25 LJMP FIRST ;首次按功能键N25: LJMP DEN ;"="N4: LJMP E3FIRST: MOV YJ,R4 ;输入值送结果 MOV R3,#0 ;按键次数清零 LJMP DISP1 ;结果处理JIA: MOV A,YJ ;上次结果送累加器 ADD A,R4 ;上次结果加输入值 JB CY,N4 ;溢出 MOV YJ,A ;存本次结果 MOV R3,#0 ;按键次数清零 LJMP DISP1JIAN: MOV A,YJ SUBB A,R4 ;上次结果减输入值 JB CY,N4 ;负数溢出 MOV YJ,A MOV R3,#0 LJMP DISP1CHENG: MOV A,YJ MOV B,A MOV A,R4 MUL AB ;上次结果乘输入值 JB OV,N4 ;溢出 MOV YJ,A LJMP DISP1CHU: MOV A,R4 MOV B,A MOV A,YJ DIV AB ;上次结果除输入值 MOV YJ,A MOV R3,#0 LJMP DISP1DEN: MOV R3,#0 LJMP DISP1DISP1: 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 MLOOPDISP:MOVR0,#34HDIR1:MOVDPTR,#SEGTABMOVA,@R0MOVCA,@A+DPTRMOVP0,ACJNER0,#34H,DIR2SETBP2.0CALLD1MSCLRP2.0DECR0SJMPDIR1DIR2:CJN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024幼儿园聘用保育员聘用及儿童艺术培养合同3篇
- 中国共产主义青年团的历史
- 辅导员职业技能大赛试题及答案1
- 2024年秋一年级上册识字7 小书包 课堂实录
- (海南卷)2025年中考地理第三次模拟考试(全解全析)
- 中国企业社会责任的发展与变迁
- 2023年度中国噪声污染防治报告
- 2024年公路水运施工企业安全管理人员培训考试题库及答案
- 2025年苍南粮食收储有限公司招聘笔试参考题库含答案解析
- 2025年广东云浮市云安区国企招聘笔试参考题库含答案解析
- 团队风采展示快闪ppt
- 工厂5S检查评分评价基准表(全)
- 安吉游戏培训课件(全)
- (第六版)江苏省建设工程施工单位申报现场用表
- (完整)Tribon m3培训资料
- 复旦大学本科留学生入学考试语文样题
- 食管裂孔疝手术同意书
- 工地试验室平面布置图
- (完整版)复变函数与积分变换公式
- 国有资产清查工作方案国有资产清查报告
- 行政处罚普通程序流程图
评论
0/150
提交评论