简易计算器单片机原理_第1页
简易计算器单片机原理_第2页
简易计算器单片机原理_第3页
简易计算器单片机原理_第4页
简易计算器单片机原理_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

邵阳学院课程设计(论文)摘要本次课程设计的任务是进行简易计算器的设计,在这次设计中我们主要用到AT89C51 为系统控制核心,通过 8 位共阳数码管来显示设计的主要功能。外接44 的键盘,通过行列式键盘的扫描进行对输入数的控制,并外接驱动电路,系统采用 LED 数码管作为显示器,软件程序均采用 C 语言编写,便于移植与升级,报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。计算器主要可完成的功能有整数的加,减,乘,除等。关键词:AT89C51,共阳数码管,行列式键盘,液晶。邵阳学院课程设计(论文)目录摘 要 IABSTRACTII第 1章 方案的论证与比较 .11.1 单片机型系统的选择与论证 .11.2 显示模块的选择与论证 .11.3 计算实现 .1第 2章 各系统框图及工作原理 22.1 系统总体设计结构框图 .22.2 系统的硬件电路设计 .2第 3章 电路分析和设计 .63.1 LED显示程序流程图设计 63.2 读键输入程序流程图设计 .73.3 主程序流程图设计 .8第 4章 系统仿真 .94.1 电路原理图 94.2 程序设计 .12第 5章 总结 .12参考文献 .13致谢 .14附录 .15邵阳学院课程设计(论文)1第 1章 方案的论证与比较1.1 单片机型系统的选择与论证 方案一:此方案采用 AT89C51 八位单片机实现。它内存较小,只有 4K 字节 Flash 闪速存储器,128 字节内部 RAM,32 个 I/O 口线,两个 16 位定时/计数器,一个 5 向量两级中断结构,一个全双工串行通信口,所以对于设计一个简易计算器而言绰绰有余了,而且能通过编程器烧写成以.hex 为后缀名的文件。方案二:此方案采用 AT89S52 八位单片机实现。它内存较大,有 8K 的字节 Flash 闪速存储器,比 AT89C51 要多 4K。单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。而且体积小,硬件实现简单,安装方便。另外 AT89S52 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。虽然有很多功能超过了 AT89C51,但是对于设计一个简易计算器而言完全没有必要。综上所述,我们采用了第二个方案,即 AT89C51。1.2 显示模块的选择与论证方案一:采用 LCD 点阵显示,用来显示文字、图形、图像、等各种信息的显示屏幕。在简单的计算器中不需要那么复杂,在软件编程方面也有一定的难度。方案二:采用液晶(JHD529M1)显示器件。对于 LCD 点阵显示器来说,液晶显示器简单且容易操作,也比较便宜,但由于设计显示比较的简单,只用于数字的显示,所以要求也比较低。方案三:由于要设计的是简单的计算器,只要求可以进行四则运算,对数字的大小范围要求不高,所以采用可以进行四位数字的运算的8 个LED 数码管来显示数据和结果。综合以上分析,在该项设计中,采用第三方案来实现设计的显示模块。1.3 计算实现在硬件的基础上,直接采用单片机的计算器通过软件系统C语言程序编程以实现计算器的计算功能。邵阳学院课程设计(论文)2第 2章 各系统框图及工作原理2.1 系统总体设计结构框图以 AT89C51 芯片为核心,当它接到来自按键的信号后,在数码管上显示相应的信息,同时在 LCD 上也显示相应的信息,并且有已处理好的数字计算结果也显示出来。(1)系统设计框图(如图 2.1 所示) 图 2.1 系统模块图2.2 系统的硬件电路设计2.2.1 单片机控制部分(1)单片机的内部结构MCS-51 单片机片内主要由振荡电路、中央处理器(CPU ) 、内部总线、程序存储器、数据存储器、定时器/记数器、中断系统和 I/O 口等模块组成,各部分通过内部总线紧密地联系在一起。(2) 单片机的时钟电路单片机中包括有时钟电路,时钟电路中主要的元件有晶体振荡器。晶体振荡器能产生一定频率的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。也同时决定了单片机的计算速度。电路中两个电容 C1、C2 的作用有两个:一是帮助振荡器起振,二是对振荡器的频率起微调作用。C1、C2 的典型值为 30pF。晶振为 12MHz。整个电路接在 51 单片机的 18,19 管脚,即 XTAL1,XTAL2 管脚。时钟电路图(如图 2.2 所示)单片机 输入模块运算模块显示模块邵阳学院课程设计(论文)3图 2.2 振荡电路图(3)单片机的复位及复位电路复位状态计算机在启动运行时都需要复位,复位使中央处理器 CPU 和系统中的其他器件都处于一种初始状态,并从这个初始状态工作。MCS-51 系列单片机有一个复位引脚 RST。在 MCS-51 系列单片机的 RST 引脚上输入一个高电平信号,该高电平信号至少要维持两个机器周期以上的时间,单片机被复位。复位电路与其他计算机一样,MCS-51 单片机系统的复位方法有上电自动复位、手动复位以及“看门狗”复位等。此最小系统采用手动复位电路。在系统运行过程中,有时可能对系统需要进行复位,为避免对硬件经常加电和断电造成的损害,我们可以采用手动复位。这种方法是将一个开关串联一只电阻后,再并联于电容 C 的两端,在系统运行过程中需要复位时只要使开关闭合,在 RST 引脚上就会出现一定时间的高电平信号,从而使单片机实现复位操作。复位电路图(如图 2.3 所示)邵阳学院课程设计(论文)4图 2.3 复位电路图(4)当 AT89C51 芯片接到来自键盘输入的信号时,其内部程序将根据信号的类型来处理,并将处理的结果送到相对应的显示模块。以上几点是对 MCS-51 单片机各电路组成部分及工作原理和作用的整体描述。硬件电路图(如图 2.4 所示)邵阳学院课程设计(论文)5图 2.4 单片机控制模块图2.2.2 数码管显示模块部分该模块是由 8 个共阳数码显示管组成,但由于材料准备不足,只有一个共阳的数码管,所以在设计电板上只安装有一个数码管。显示的结果只能显示一位,也就是说计算的结果只能显示各位数字的结果,但不影响总体的设计方案。2.2.3 键盘输入部分计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的 I/O 口资源,因此在很多情况下都不采用这种方式。为此,引入了矩阵键盘的应用,采用四条 I/O 线作为行线,四条 I/O 线作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为 44 个。这种行列式键盘结构能有效地提高单片机系统中 I/O 口的利用率。1)以下是对计算器键盘的介绍:每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0” 实现的。键盘处理程序的任务是:确定有邵阳学院课程设计(论文)6无键按下,判断哪一个键按下,键的功能是什么?还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。当无按键闭合时,P1.0P1.3 与P1.4P1.7 之间开路;当有键闭合时,与闭合键相连的两条I/O 口线之间短路。判断有无按键按下的方法是:第一步,置列线P1.4P1.7 为输入状态,从行线P1.0P1.3 输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P1.4P1.7 读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。2)键盘电路图(如图2.5所示)P34 P34RDRDW WR35P358 9 /5 6 *2 3 _0 = +图2.5 键盘电路2.2.4 运算系统MCS-51 单片机是在一块芯片中集成了 CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。所以单片机是靠程序运行的,并且可以通过修改程序实现指定的功能输出,通过不同的程序实现不同的功能。在设计中,只应用到了简单的四则运算功能。通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠运算性能。因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。第 3章 电路分析和设计3.1 LED显示程序流程图设计邵阳学院课程设计(论文)7(1)LED 显示流程图(如图 3.1 所示)初始化目标参数关所有显示位取显示数据输出段码数据输出位选通信号延时位选通信号移位指向下一个显示数据复位完成返回NN图 3.1 LED 显示流程图3.2 读键输入程序流程图设计为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码键码。为了得到被按键的键码,现使用行扫描法识别按键。列扫描信号进行读入行的信号判断该列是否有列的输出是则进行按照行列计算键盘的值,查表取得键码并返回若否则进行再次扫描。(1)键盘输入流程图(如图 3.2 所示)邵阳学院课程设计(论文)8开始初始化地址参数输出列扫描信号列扫描信号移位读入行信号该列有键输入4 列扫描完按照行列计算键值查表得键值支持按键释放返回返回YNN图 3.2 键盘输入流程图3.3 主程序流程图设计运算主程序设计首先初始化参数,送 LED 低位显示“0” ,高位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、清零键还是功能键(“+” “-”“*”“/”“=” ) ,是数值键则送 LED 显示并保存数值,是清零键则做清零处理,是功能键则又判断是“= ”还是运算键,若是“= ”则计算最后结果并送 LED显示,若是运算键则保存相对运算程序的首地址。(1)运算主程序框图(如图 3.3 所示)Y邵阳学院课程设计(论文)9开始初始化参数LED 显示有键输入读取键码键码是?数字 清零 功能数值送显示器中根据上次功能键和输入的 数据计算结果本次功能是= 其它计算最后结果保存结果和功能键结果送显示器中等待数值输入图 3.3 运算主程序图第 4章 系统仿真4.1 电路原理图和系统仿真硬件:AT89C51 晶振 12MHz. 8 位共阳数码管。主要功能:实现简单的数学四则运算功能。通过调试正常的电板接上+5V 电源,从键盘上分别按下标有字符的按键 “25”,“*”, “4”, “=”在数码管上最终显示的结果为 100,然后按下归零键,输入“2”, “+”, “3”, “=”结果显示为 5,继续输入字符代码,结果显示都能得到正邵阳学院课程设计(论文)10确的答案,证明实验的硬件安装正确,软件方面也正确。所以,简易计算器的设计实验是成功的。(1)电路原理图(如图 4.1 所示)图 4.1 电路原理图邵阳学院课程设计(论文)11(2)电路仿真图 1(如图 4.2 所示)P10.7P10.7A0.7B0.7C0.7D0.7E0.7E01E23E45E6D01D23D45D6C01C23C45C6B01B23B45B6A01A23A45A6PI.7PI.3PI.6PI.5PI.4PI.0PI.1PI.2PI.0I.1PI.2I.3PI.4I.5PI.6I.7 STAIC DISPLAYCT01E0.7D0.7C0.7B0.7A0.7CLKDINE0.7 D0.7 C0.7 B0.7 A0.712365489=7 +CON0ABCD1 2 43XTAL218XTAL119ALE301PSN29RST9P0./AD039.1/18P0.2/AD237.3/36P0.4/AD435.5/54P0.6/AD63.7/72P1.01.2P1.23.34P1.45.56P1.67.78P3.0/RXD10.1/TP3.2/IN012./IT13P3.4/014P3.7/RD17.6/W6.5/T15P2.7/A1528P2.0/A821.1/9P2./A023.3/14P2.4/A225.5/136.6/47U7AT89C51图 4.2 电路仿真图 1 (3)电路仿真图 2(如图 4.3 所示)P10.7P10.7A0.7B0.7C0.7D0.7E0.7E01E23E45E6D01D23D45D6C01C23C45C6B01B23B45B6A01A23A45A6PI.7PI.3PI.6PI.5PI.4PI.0PI.1PI.2PI.0I.1PI.2I.3PI.4I.5PI.6I.7 STAIC DISPLAYCT01E0.7D0.7C0.7B0.7A0.7CLKDINE0.7 D0.7 C0.7 B0.7 A0.712365489=7 +CON0ABCD1 2 43XTAL218XTAL119ALE301PSN29RST9P0./AD039.1/18P0.2/AD237.3/36P0.4/AD435.5/54P0.6/AD63.7/72P1.01.2P1.23.34P1.45.56P1.67.78P3.0/RXD10.1/TP3.2/IN012./IT13P3.4/014P3.7/RD17.6/W6.5/T15P2.7/A1528P2.0/A821.1/9P2./A023.3/14P2.4/A225.5/136.6/47U7AT89C51图 4.3 电路仿真图 2邵阳学院课程设计(论文)124.2 程序设计软件程序见附录。第 5章 总结在这项设计中,从构思,收集相关资料,再到仿真试验过程中,由于在之前已经把单片机部分的电路做好,为整个过程做好了准备,所以设计的 protues 实现操作比较简单和快速的完成,并且实际效果跟设计的结果是一样的,除了数码管的显示效果比较暗以外,没有出现任何的故障。本次课程设计是小组成员分工合作以后共同完成的,当然与老师的耐心指导与帮助也是密不可分,课程设计的硬件电路是由本组另外一个同学完成的,如电路元件的选择,电路原理图的绘制;而软件部分则是我在老师的帮助下完成的。总得来说,通过这次课程设计确实让我受益匪浅,不但让自己深刻认识到自己单片机知识上的匮乏与不足,同时也感觉知识的博大精深(只是一个简单的程序运行操作却可以实现一个简单计算器的操作) ,仿真与实际动手总是存在差距,想得到不一定做得出,做得出是小组合作的结果。这两方面在今后的学习对于个人都必须加强和巩固。邵阳学院课程设计(论文)13参考文献1王静霞、杨宏丽.单片机应用技术.北京:电子工业出版社.2 汉龙.中文版 Office 2003 办公自动化精讲精学.成都:电子科技大学出版 设,2004 3 温秀梅,丁学钧.Visual C+面向对象程序设计教程与实验.北京:清华大学出版社,20054 梁建武.Visual C+程序设计教程.北京:中国水利水电出版社,20055 郑莉,董渊,张瑞丰.C+语言程序设计(第 3 版).北京:清华大学出版社,2004邵阳学院课程设计(论文)14致 谢本次单片机课程设计是在我的指导老师刘老师的精心指导和大力支持与协助下完成的。刘老师严谨求实的治学态度,高度的敬业精神,以及做事苛求完美的准则对我产生重要影响。他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样,我很庆幸在求学生涯中能遇到这样孜孜不倦的老师。在设计的过程中我深刻认识到自己在单片机知识方面的许多不足,比如:基本功不够扎实,知识不能系统化,散乱。可幸亏刘老师在旁循循诱导,让我很快地能够把所学知识串联起来,对我的课程设计有了很大的帮助,使我顺利的完成了课程设计。同时,在此次课程设计过程中我也学到了许多关于计算机应用方面的知识,试验技能有了很大的提高。另外,我还要特别感谢同学们对我课程设计的指导,他们为我完成课程设计提供了无法言语的帮助,给予了无尽的支持和鼓励,让我深深感受到团结的力量,也从此让我更加珍惜一直陪在身边的朋友,同学。最后,再次对关心和帮助我的老师和同学表示衷心地感谢!在课程设计即将完成之际,我的心情愈发激动,回首从开始进入课程设计到课程设计的顺利完成,有那么多可敬的师长和同学给了我无言的帮助,真的很感谢大家!在这里请再次接受我衷心的谢意,谢谢!邵阳学院课程设计(论文)15附录DBUF EQU 30HTEMP EQU 40HYJ EQU 50H ;结果存放YJ1 EQU 51H ;中间结果存放GONG EQU 52H ;功能键存放DIN BIT 0B0H ;P3.0CLK BIT 0B1H ;P3.1ORG 00HSTART: MOV R3,#0 ;初始化显示为空MOV GONG,#0MOV 30H,#10HMOV 31H,#10HMOV 32H,#10HMOV 33H,#10HMOV 34H,#10HMLOOP: CALL DISP ;PAN调显示子程序WAIT:CALL TESTKEY ;判断有无按键JZ WAIT CALL GETKEY ;读键INC R3 ;按键个数CJNE A,#0,NEXT1 ;判断是否数字键邵阳学院课程设计(论文)16LJMP E1 ;转数字键处理NEXT1: CJNE A,#1,NEXT2LJMP E1NEXT2: CJNE A,#2,NEXT3LJMP E1NEXT3: CJNE 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: CJNE A,#11,NEXT12邵阳学院课程设计(论文)17LJMP E2NEXT12: CJNE A,#12, NEXT13LJMP E2NEXT13: CJNE A,#13,NEXT14LJMP E2NEXT14: CJNE A,#14,NEXT15LJMP E2NEXT15: LJMP E3 ;判断是否清除键E1: CJNE R3,#1,N1 ;判断第几次按键LJMP E11 ;为第一个数字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,#10HMOV 32H,#10HLJMP MLOOP ;等待再次输入E12: MOV R7,A ;个位数暂存R7MOV B,#10邵阳学院课程设计(论文)18MOV A,R4MUL AB ;十位数ADD A,R7MOV R4,A ;输入值存R4MOV 32H,#10H ;输入值送显示缓存MOV 33H,34HMOV 34H,R7LJMP MLOOPE13: MOV 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 ;输入值清零邵阳学院课程设计(论文)19MOV YJ,#0 ;计算结果清零MOV GONG,#0 ;功能键设为零MOV 30H,#10H ;显示清空MOV 31H,#10HMOV 32H,#10HMOV 33H,#10HMOV 34H,#10HLJMP MLOOPE2: MOV 34H,#10HMOV 33H,#10HMOV 32H,#10HMOV R0,GONG ;与上次功能键交换MOV GONG,AMOV A,R0CJNE A,#10,N21 ;判断功能键LJMP JIA ;“”N21: CJNE A,#11,N22LJMP JIAN ;“”N22: CJNE A,#12,N23LJMP CHENG ;“*”N23: CJNE A,#13,N24LJMP CHU ;“/”邵阳学院课程设计(论文)20N24: CJNE A,#0,N25LJMP 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,YJSUBB A,R4 ;上次结果减输入值JB CY,N4 ;负数溢出MOV YJ,AMOV R3,#0LJMP DISP1CHENG: MOV A,YJMOV B,AMOV A,R4邵阳学院课程设计(论文)21MUL AB ;上次结果乘输入值JB OV,N4 ;溢出MOV YJ,ALJMP DISP1CHU: MOV A,R4MOV B,AMOV A,YJDIV AB ;上次结果除输入值MOV YJ,AMOV R3,#0LJMP DISP1DEN: MOV R3,#0LJMP DISP1DISP1:MOV B,#10MOV A,YJ ;结果送累加器DIV AB ;结果除10MOV YJ1,A ;暂存“商”MOV A,B ;取个位数MOV 34H,A ;个位数送显示缓存MOV A,YJ1JZ DISP11 ;结果是否为一位数MOV B,#10邵阳学院课程设计(论文)22MOV A,YJ1DIV ABMOV YJ1,AMOV A,BMOV 33H,A ;十位送显示缓存MOV A,YJ1JZ DISP11 ;结果是否为二位数MOV 32H,A ;百位数送显示缓存DISP11: LJMP MLOOPDISP: MOV R0,#DBUF ;显示子程序MOV R1,#TE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论