您好,欢迎访问三七文档
信息科学与技术学院单片机课程设计报告题目名称:简易计算器的设计学生姓名:学号:2010508121专业班级:电子信息工程2010级指导教师:时间:2013年7月2日摘要:近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用AT89C51单片机、LED显示器、控制按键为元件来设计的计算器。利用此设计熟悉单片机微控制器及C语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。关键词:51单片机;LED;控制按键目录1方案选择………………………………………………………………………11.1题目要求………………………………………………………………………11.2设计方案………………………………………………………………………11.3方案原理……………………………………………………………………12硬件原理电路图的设计与分析…………………………………………………12.1各部分电路的设计思路…………………………………………………12.2各部分电路的功能特性……………………………………………52.3原理电路图………………………………………………………………63程序设计与分析………………………………………………………………63.1各模块程序的设计…………………………………………73.2完整的程序框图………………………………………………84系统仿真图………………………………………………………………………94.1计算机硬件连线图…………………………………………………………94.2仿真结果……………………………………………………………………94.3PCB图……………………………………………………………………115系统评价…………………………………………………………………………126心得体会…………………………………………………………………………12参考文献……………………………………………………………………………12附录………………………………………………………………1311.方案选择1.1题目要求(1)通过小键盘实现数据的输入,并在LED数码管上显示(2)实现+、-、*、/(3)在LED数码管上显示结果(4)并有清零,退出功能1.2设计方案(1)键盘部分要求实现+、-、*、/四种运算。另外包括数字键(0~9)、清除键和等号键,共需要16个键,故采用16个按键即可。(2)对于输入的数据可以选择在LCD上显示也可以选择在LED数码管显示。由于要设计的是简单的计算器,可以进行简单的四则运算,对数字的大小范围要求不高,故我们采用可以进行六位数字的运算,选用6个LED数码管显示数据和结果。(3)在LED上显示数据时,利用AT89C51的引脚来控制驱动电路从而实现位选。(4)在选择主控机时本设计选用AT89C51。由于AT89C51不但继承了MCS-51的原有功能,而且AT89C51单片机内的4KBFlash存储器可在线编程或使用编程器重复编程,且价钱较低,故选用AT89C51单片机作为主控机。1.3方案原理计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子组成。该系统通过AT89C51单片机控制,实现对4*4键盘扫描进行实时的按键检测,并把检测数据存储下来,并显示在LED数码管上。键盘是计算器的输入部件,显示器是计算器的输出部件。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管显示。2硬件原理电路图的设计与分析2.1各部分电路的设计思路2.1.1系统模块图:22.1.2输入模块键盘扫描计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式。为此,我们引入了矩阵键盘的应用,采用四条I/O线作为行线,四条I/O线作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。图2、矩阵键盘布局图3图3、矩阵键盘内部电路图2.1.2单片机模块AT89C51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。单4片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。2.1.3运算模块用LED显示数据时分为位选和段选。此模块用P1.0—P1.3四个P1口引脚来控制位选,用P0口来控制数码管的段选。由于选用的是六位数的LED所以有六个位选,而在用P1引脚时只有4个引脚可供用,所以选用74HC138译码器来控制6个位选。用74HC245锁存器来储存数据。2.1.4显示模块通常的数码显示器是由7段条形的LED组成,点亮适当的字段,就可显示出不同的数字。我们采用8段数码管,其中位于显示器右下角的LED作小数点用。LED显示器有两种不同的形式:共阴极和共阳极。本次设计采用共阳极接法。数5字0~9的共阳极字形代码如下表:显示字型gfedcba段码001111110c0h100001100f9h210110110a4h310011110b0h4110011099h5110110192h6111110182h700001110f8h8111111180h9110111190h2.2各部分电路的功能特性2.2.1输入模块功能本设计采用P2口控制键盘。当无按键闭合时,P2.0~P2.3与P2.4~P2.7之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。确定按键编号的方法:第一步,置列线P2.4~P2.7为输入状态,从行线P2.0~P2.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P2.4~P2.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。判断有无按键按下的方法是:当有键按下时蜂鸣器会发出声音,没有按下时则不会有声音。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。2.2.2单片机模块功能AT89C51是整个设计的核心模块。利用AT89C51的P0口控制数码管的段选,从而实现数字0—9的显示,P2口控制按键,用P1口的前三个引脚与74HC138译码器相连,从而实现对数码管位选的控制。2.2.3运算模块的功能选用74HC138译码器来控制位选。这样可以节约P1口,在写程序时不至于发生6混乱,简单明了。2.2.4显示模块的功能LED显示发光二极管LED是单片机应用系统中的一宗简单而常用的输出设备,其在系统中的主要作用是显示单片机的输出数据、状态等。因而作为典型的外围器件,LED显示单元是反映系统输出和操作输入的有效器件。LED具备数字接口可以方便的和系统连接;它的优点是价格低,寿命长,对电压电流的要求低及容易实现多路等。2.3原理电路图3程序设计与分析在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各模块可以单独设计、编程和调试,然后组合起来。这种方法便于设计和调试,容易实现多个程序共存,但各个模块之间的连接有一定的难度。根据需要我们可以采用自上而下的程序设计方法,此方法先从主程序开始设计,然后再编制各从属程序和子程序,层层细化逐步求精,最终完成一个复杂程序的设计。3.1各模块程序的设计3.1.1按键扫描7在C语言的基础上,采用P2口控制键盘。当无按键闭合时,P2.0~P2.3与P2.4~P2.7之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。确定按键编号的方法:第一步,置列线P2.4~P2.7为输入状态,从行线P2.0~P2.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P2.4~P2.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。3.1.2验证数据的有效性由于选用的是六位的数码管,可达到的最大数据为99999,当输入的数据或计算出的数据结果大于99999时,会出错。具体用如下语句来实现:bitcheck_num(floatf_num){if(f_num=100000)return1;return0;}3.1.3数码管显示数码管有段选和位选,不同的数据控制不同的位,因此采用C语言中的选择语句来实现对数码管显示的程序控制。3.1.4计算程序简单的计算器有加、减、乘、除四种运算。此部分程序框图如下:YYNN开始运算符是?加乘除减运算溢出?除数为0?错误信息送缓冲显示数值送缓冲显示83.2完整的程序框图YNYNYNNY开始初始化参数初始化LED显示有按键入?读取按键数字键?清零键?功能键?读取数值数值送显示缓冲数值送显示缓冲根据上次功能键和输入的数据计算结果状态清零执行本次功能键结果送显示缓冲等待数值输入LED显示94系统仿真图4.1系统仿真连线图4.2仿真结果4.2.1加法104.2.2减法4.2.3乘法114.2.4除法4.3PCB图125系统评价本设计实现了简单计算器的数据输入以及加、减、乘、除、清零等功能。对于简单的数据可以进行运算,比较方便简洁。在硬件设计方面所用到的器件相对较少,但主控元件引脚较多,想要完全掌握有点困难,而且在选择端口的时候有点复杂。在软件方面,实现了设计的要求,程序语句简单,但是代码比较多,容易记错。由于是简单的计算器所以最大值能达到99999,适合做简单数字较小的运算,精确读可达到0.0001,对要求严格的数字精确度不是太高。针对以上问题,在熟悉更多器件的情况下,可以利用更换元器件来改进。6心得体会通过该计算器的设计我深入学习数码管扫描和键盘控制,提高了对51系列单片机的实际应用能力。同时也掌握应用程序控制51系列单片机进行简单的数学运算。提高了对51系列单片机的编程能力。这门课是最能理论联系实际的课,我们的目的是做出东西,为了这我们需要学关于这方面的各种知识,从被动性的接受知识变成了主动性的寻找知识。在此制作过程中使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。同时,也深刻认识到要做出来一个东西真的不是一件容易的事,它需要将各个方面的知识都记起来再加以运用,因此这就需要我们有很好的知识基础。参考文献[1]张毅刚,彭喜元等.单片机原理及应用(第2版).北京.高等教育出版社,2010[2]孙育才等.MCS-51系列单片微型计算机及其应用(第4版).上海.东南大学出版社,2004[3]单片机应用技术(C语言).北京.中国劳动社会保障出版社,2006[4]武庆生,仇梅等著.单片机原理与应用.北京.电子科技大学出版,1998[5]朱定华著.单片机原理与接口技术.西安.电子工业出版社,2001[
本文标题:简易计算器的设计
链接地址:https://www.777doc.com/doc-4227155 .html