基于51单片机的简易计算器设计毕业论文(设计)_第1页
基于51单片机的简易计算器设计毕业论文(设计)_第2页
基于51单片机的简易计算器设计毕业论文(设计)_第3页
基于51单片机的简易计算器设计毕业论文(设计)_第4页
基于51单片机的简易计算器设计毕业论文(设计)_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、河南河南#学校学校 毕毕业业设设计计(论论文文)基于基于 5151 单片机的简易计算器单片机的简易计算器系系 部部: : 自动控制系自动控制系 专专 业业: : 电气自动化电气自动化 班班 级级: : 自自 083083 姓姓 名名: : 崔崔 # # # # 学学 号号: : 091415302091415302 指导老师指导老师: : 许许 # # 二零一二年五月八日二零一二年五月八日基于 51 单片机的简易计算器I摘要摘要工程实践教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本次工程实践中,我以智能化测量控制仪表原理与设计 、 MCS-51 系列单片微型计算机及其应用课程

2、中所学知识为基础,设计了简易计算器。本系统以MCS-51 系列中的 8051 单片机为核心,能够实现多位数的四则运算。该系统通过检测矩阵键盘扫描,判断是否按键,经数据转换把数值送入数码管动态显示。本系统的设计说明重点介绍了如下几方面的内容:基于单片机简易计算器的基本功能,同时对矩阵键盘及数码管动态显示原理进行了简单的阐述;介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明;对系统各功能模块的软、硬件实现进行了详细的设计说明。关键词关键词:MCS-51; 8051 单片机;计算器;加减乘除Based on the simple calculat

3、or 51 SCMIIAbstractThe engineering practice teaching is to students better to consolidate and practice have set up by the professional knowledge, in this engineering practice, I to the intelligent measurement control instrument principle and design , the MCS-51 series single chip computer and its ap

4、plication course knowledge as the foundation, the design the simple calculator. This system to MCS-51 of the 8051 series single chip microcomputer as the core, can realize the connection arithmetic. The system through the test matrix keyboard scan, judge whether key, the data transfer the numerical

5、into digital tube dynamic display. This system mainly introduced the design that the following aspects of content: based on single chip microcomputer simple calculator basic functions, and the matrix keyboard and a digital tube dynamic display of the principle of a simple expatiated; introduced the

6、design of the whole system, the whole process of the system are discussed, and its function module partition and the components for a detailed explanation; the functional modules of the system hardware and software of the implementation of the detailed design instructions.Key words: MCS-51; 8051 sin

7、gle chip microcomputer; Calculator; Add, subtract, multiply and divide:目录III目录目录第 1 章 绪论1 1.1 课题简介11.2 设计目的11.3 设计任务11.4 章节安排说明1第 2 章 计算器系统简介22.1 单片机发展现状22.2 计算机系统现状22.3 简易计算器系统简介3第 3 章 计算机硬件系统简介43.1 计算机硬件需IV求43.2 MCS-51 系列单片机简介43.3 外围电路设计 83.3.1 振荡电路设计83.3.2 复位电路设计93.3.3 键盘电路设计93.3.4 数码管显示电路设计10 3.

8、4 硬件原理图11第 4 章 计算器软件系统设计124.1 系统模块图124.2 系统流程图124.3 计算器主程序设计目录V124.3.1 计算器主程序设计124.3.2 存储单元分配134.4 计算器子程序设计144.4.1 输入程序设计144.4.2 运算程序设计154.4.3 显示程序设计16第 5 章 结论与展望185.1 结论185.2 不足与展望18参考文献19附录 程序源代VI码20基于 51 单片机的简易计算器1第第 1 1 章章 绪论绪论1.1 课题简介课题简介单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中。单片机微型计算机是微型计

9、算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。本系统就是充分利用了 8051 芯片的 I/O 引脚。系统统采用 MSC-51 系列单片机 Intel8051 为中心器件来设计计算器控制器,实现了能根据实际输入值显示并存储,计算程序则是参照教材。至于位数和功能,如果有需要可以设计扩充原系统来实现 。1.2 设计目的设计目的通过本次工程实践,运用智能化测量控制仪表原理与设计 、 MCS-51 系列单片微型计算机及其应用所学知识及查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。通过本次

10、设计训练,可以使我们在基本思路和基本方法上对基于 MCS-51 单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。1.3 设计设计任务任务在本次工程实践中,主要完成如下方面的设计任务:(1) 简要综述单片机技术发展的国内外现状及数码管动态显示和矩阵键盘基本原理;(2) 掌握 MCS-51 系列某种产品(例如 8051)的最小电路及外围扩展电路的设计方法;(3) 了解单片机数据转换功能及工作过程;(4) 完成主要功能模块的硬件电路设计及必要的参数确定;(5)用 protues 软件完成原理电路的绘制;(6) 完成系统设计说明书。1.4 章节安排说明章节安排说明整个设计总共分为

11、四个章节,第一章是前言部分,主要介绍了设计基于单片机简易计算器的意义、目的及主要内容;第二章简要介绍了单片机发展的国内外现状及键盘扫描,数据转换,和动态显示原理进行了简要的说明。第三章是器件简介,这一部分主要介绍了系统的所用主要器件的选择。第四章是系统详细设计河南机电高等专科学校毕业论文2阶段,分为硬件设计和程序设计。按照程序设计的各部分实现的功能不同,将整个软件系统分成了三个块,并对每一个功能块所采用的元器件进行了详细介绍。此外还编写了主要功能模块的基本程序,详尽阐述了各模块的工作过程。还有总流程图,源代码,硬器件铺线图。基于 51 单片机的简易计算器3第第 2 2 章章 计算器系统简介计算

12、器系统简介2.1 单片机发展现状单片机发展现状单片机的发展趋势:低功耗 CMOS 化;微型单片化;主流与多品种共存;单片机从 8 位、16 位到 32 位,数不胜数,应有尽有,有与主流 C51 系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。 纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:( (1) ) 低功耗低功耗 CMOSCMOS 化化 MCS-51 系列的 8051 推出时的功耗达 630mW,而现在的单片机普遍都在 100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。象 80C

13、51 就采用了 HMOS(即高密度金属氧化物半导体工艺)和 CHMOS(互补高密度金属氧化物半导体工艺)。CMOS 虽然功耗较低,但由于其物理特征决定其工作速度不够高,而 CHMOS 则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。 ( (2)微型单片化)微型单片化现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如 A/D 转换器、PMW(脉宽调制电路)、WDT(看门狗

14、)、有些单片机将 LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。 此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。( (3) ) 主流与多品种共存主流与多品种共存 现在虽然单片机的品种繁多,各具特色,但仍以 80C51 为核心的单片机占主流,兼容其结构和指令系统的有 PHILIPS 公司的产品,ATMEL 公司的产品和

15、中国台湾的 Winbond 系列单片机。所以 C8051 为核心的单片机占据了半壁江山。而Microchip 公司的 PIC 精简指令集(RISC)也有着强劲的发展势头,中国台湾的HOLTEK 公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。此外还有 MOTOROLA 公司的产品,日本几大公司的专用单片机。在一定的河南机电高等专科学校毕业论文4时 期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。2.2 计算器系统现状计算器系统现状计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件通过

16、人工或机器设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。键盘是计算器的输入部件,一般采用接触式或传感式。为减小计算器的尺寸,一键常常有多种功能。显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。为节省电能,计算器都采用CMOS 工艺制作的大规模集成电路(见互补金属 -氧化物-半导体集成电路),并在内部装有

17、定时不操作自动断电电路。计算器可选用的外围设备有微型打印机、盒式磁带机和磁卡机等。2.3 简易计算器系统简介简易计算器系统简介本计算器是以 MCS-51 系列 8051 单片机为核心构成的简易计算器系统。该系统通过单片机控制,实现对 4*4 键盘扫描进行实时的按键检测,并把检测数据存储下来。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管动态显示。整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换为了数码管显示;功能模块三,数码管动态显示。基于 51 单片机的简易

18、计算器5第第 3 三章三章 计算机主要硬件简介计算机主要硬件简介3.1 计算器硬件计算器硬件需求需求89C51 单片机一片,按钮 17 个, 1K 电阻 17 个,22pF 电容两个,22uF 一个,微型振荡器一个,3 个 74HC595,4 位共阳极的七段数码管 3 个,组成 12 位显示屏,4 个 9012 三极管控制 3 个数码管模块的第 1、2、3、4 位的显示,另外有连线和电阻若干,220V5V 电源适配器一个。89C51 单片机的 P1 口和 P3 口作键盘口,16 个端口分别接 16 个按钮,顺序是数字 0-9,小数点,等号, “+-x/”四个运算符号, 1 个复位键接在单片机复

19、位端,按下时给单片机复位信号,中断全部运算清楚全部内存和寄存器,回到单片机启动初始状态。12 位数码管用于显示当前数值的 10 亿位到个位,运算中的最大值不能超过 2 的 32 次方,这是因为程序中的运算中间值采用 long 类型保存的缘故,3.2 MCS-51 系列单片机简介系列单片机简介 8051 是 MCS-51 系列单片机的典型产品,以这一代表性的机型进行系统的讲解。8051 单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 1.中央处理器中央处理器中央

20、处理器(CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 2. 数据存储器数据存储器( (RAM) )8051 内部有 128 个 8 位用户数据存储单元和 128 个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户定义的字型表。 3.程序存储器程序存储器( (ROM)8051 共有 4096 个 8 位掩膜 ROM,用于存

21、放用户程序,原始数据或表格。 4.定时定时/ /计数器计数器( (ROM) ):8051 有两个 16 位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。河南机电高等专科学校毕业论文6 8051 内部结构图 3-1 5. 并行输入输出并行输入输出(I/O)(I/O)口口8051 共有 4 组 8 位 I/O 口(P0、 P1、P2 或 P3),用于对外部数据的传输。 6. 全双工串行口全双工串行口8051 内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该行口既可以用作异步通信收发器,也可以当同步移位器使用。 7. 中断系统中断系统8051 具备较完善的中断功能,有两

22、个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有 2 级的优先级别选择。 8. 时钟电路时钟电路8051 内置最高频率达 12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但 8051 单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构(如下页图 3-2) 。INTEL 的MCS-51 系列单片机采用的是哈佛结构的形式,而后续产品 16 位的 MCS-96 系列单片机则采用普林斯顿结构。MC

23、S-51 的引脚说明(如下页图 3-3)MCS-51 系列单片机中的 8031、8051 及 8751 均采用 40Pin 封装的双列直接DIP 结构,右图是它们的引脚配置,40 个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4 组 8 位共 32 个 I/O 口,中断口线与 P3 口线复用。现在我们对这些引脚的功能加以说明。Pin9:RESET/Vpd复位信号复用脚,当 8051 通电,时钟电路开始工作,在RESET 引脚上出现 24 个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器 PC 指向 0000H,P0-P3 输出口全部为高电平,堆栈指针写入 07H,其它基于

24、 51 单片机的简易计算器7专用寄下图是 MCS-51 系列单片机的内部结构示意图 3-2。 MCS-51 结构图 3-2下图是 8951 单片机引脚示意图 3-3 双列直插式封装引脚图 3-3存器被清“0” 。RESET 由高电平下降为低电平后,系统即从 0000H 地址开始执行程序。然而,初始复位不改变 RAM(包括工作寄存器 R0-R7)的状态,8051的初始态。8051 的复位方式可以是自动复位,也可以是手动复位。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部 RAM 的数据不丢失。见下图 3-4 为两种复位方式和两种时钟方式: 河南机电高等

25、专科学校毕业论文8Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE 端将有一个 1/6 时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE 会跳过一个脉冲。如果单片机是 EPROM,在编程其间,将用于输入编程脉冲。 图 3-4Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC 的 16位地址数据将出现在 P0 和 P2 口上,外部程序存储器则把指令数据放到 P0 口上,由 CPU 读入并执行。Pin31:EA/Vpp程序存储器的内外部

26、选通线,8051 和 8751 单片机,内置有4kB 的程序存储器,当 EA 为高电平并且程序地址小于 4kB 时,读取内部程序存储器指令数据,而超过 4kB 地址则读取外部指令数据。如 EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的 8031,EA端必须接地。在编程时,EA/Vpp脚还需加上 21V 的编程电压。3.3 外围电路设计外围电路设计本设计外围电路大致可分为四部分:1振荡电路。2复位电路。3键盘电路。4显示电路。3.3.1 振荡电路设计振荡电路设计振荡电路如图 3-5 所示.图中 X1、X2 分别接单片机的 19 和 18 号脚。时钟有内部电

27、路产生,定时器件为石英晶体和电容组成的并联谐振回路,电容 C1、C2 的取之为 30p,Y1 的取值为 12MHz。基于 51 单片机的简易计算器9振荡电路图 3-53.3.2 复位电路设计复位电路设计复位电路如图 3-6 所示.复位电路图 3-6图中的 RST 接单片机的 9 号脚,当按键 ac 按下时单片机复位。其中电阻 R2为 1K,电容 C3 为电解性电容取值为 16V/22UF。Vcc 接 5V 电压。3.3.3 键盘电路设计键盘电路设计键盘电路如图 3-7 所示.矩阵键盘工作原理是。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如

28、P1 口)就可以构成4*4=16 个按键。确定矩阵式键盘上何键被按下,用“行扫描法” 。 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法.判断键盘中有无键按下: 将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与 4 根行线相交*的 4 个按河南机电高等专科学校毕业论文10键之中。若键盘电路图 3-7所有列线均为高电平,则键盘中无键按下。判断闭合键所在的位置: 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐

29、行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交*处的按键就是闭合的按键。把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个位,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。 3.3.4 数码管显示电路设计数码管显示电路设计如图 3-8 三个四位数码管所示.三个四位数码管图 3-8数码显示驱动电路 该设计采用 74HC595 芯片作为驱动,以保证数码管显示的亮度。在本任务中用 4 位数码管显示当前数值的千,百,十,个,由于数码管个数多,如采用静态显示方式,则占用单片机的

30、I/O 口线太多,如果用定时器/计数器的串行移位寄存器工作方式及外接串入并出移位寄存器 74LS164 的方式,则电路复杂。所以,在数码管个数较多时,常采用动态显示方式。 如图所示为基于 51 单片机的简易计算器11单片机应用系统中的一种数码管动态显示电路图,4 位数码管的相同段并联在一起,由一个 8 位 I/O(P1 口)输出字形码控制显示某一字形,每个数码管的公共端由另外一个 I/O 口(P0 口)输出的字位码控制,即数码管显示的字形是由单片机 I/O 口输出的字形码确定,而哪个数码管点亮是由单片机 I/O 口输出的字位码确定的 8 个数码管分时轮流循环点亮,在同一时刻只有 1 个数码管点

31、亮,但由于数码管具有余辉特性及人眼具有视觉暂留特性,所以适当地选取循环扫描频率,看上去所有数码管是同时点亮的,察觉不出闪烁现象。动态显示方式所接数码管不能太多,否则会因每个数码管所分配的实际导通时间太少,使得数码管的亮度不足。在本任务中,为了简便,字形码和字位元码都没由加驱动电路,在实际应用中应加驱动电路。数码管有共阴极和共阳极两种,对于共阳数码管,字形驱动输出 0 有效,字位驱动输出 1 有效;而对于共阴数码管则相反,即:字形驱动输出 1 有效,字位驱动输出 0 有效。3.4 硬件原理图硬件原理图硬件原理图如图 3-9 所示.单片机的 p0.0 口接 74HC595 芯片的串行输入端 DS

32、端,74HC595 的并行输出端接数码管的公共端。P2.0-p2.3 接三极管控制数码管段选。P1 接矩阵键盘。硬件原理图 3-9河南机电高等专科学校毕业论文12第第 4 4 章章 计算器软件系统设计计算器软件系统设计 4.1 系统模块图系统模块图本系统有四个模块构成:显示模块、输入模块、电源模块、运算模块。如下图 4-1 所示.系统模块图 4-14.2 系统流程图系统流程图本任务由 P1 口输出字形码,P0 口输出字位码。先将存放于 30H 单元的数值个位七段码由 P1 口输出,同时 P0 口输出使数值个位显示数码管点亮的字位码。由于采用的是共阳数码管,所以只有该位数码管对应的 P0.0 为

33、 1,其他位 P0.1-P0.3 位 0,点亮延时 10MS。如下页系统流程图 4-2 所示。4.3 计算器主程序设计计算器主程序设计4.3.1 计算器主程序设计计算器主程序设计主程序调用按键子程序,检查哪个键按下,用 switch 结构分数步来组成一个运算式,比如头一个按下数字,存入 f1 变量,如果按负号就存入 fh1,否则 fh1 是正一,下面如果继续按数字,就按照 F1=fh1xf1x10+数字,更新 f1 变量,然后如果按加减乘除符号,就存入 yunsuan 变量,可以继续按运算符号,就存入 yunsuan1变量,之所以这样是因为按减号既可能确实是在按减号也可能是想按后面数字的负号,

34、直到按下数字,才肯定是想输入第二个数字,其符号存入 fh2,这个数字存入 f2,继续按数字,就按照 f2=f2x10+数字来更新 f2。等到按等号或者运算符号时,就按 y=fh1*f1(+-x/)fh2*f2 来计算最后的值。无论输入什么数字都要存进一个缓冲区,主程序最后有一些专门代码把这个缓冲区的内容翻译成将要输往 74HC595 的数据放在显示缓冲区中,最后的运算值也有一个子程序翻译成将要输往 74HC595 的数据放在显示缓冲区中。在程序开始时,初始化程序设定了 T1 中断开始执行,每 0.5 毫秒中断程序执基于 51 单片机的简易计算器13行一次,中断程序的内容就是把显示缓冲区的内容送

35、到第一个 74HC595 的 SER端子,同时发送脉冲到每一个 74HC595 的 SCK 端子,用上面提到的串入并出的方法 把内容显示出来。 系统流程图 4-24.3.2 存储单元分配存储单元分配 数码管采用动态显示方式,P2 口的 0,1,2.3 端口接 4 个三级管按从高到低的顺河南机电高等专科学校毕业论文14序分别让数码管单元的 4 位分别导通,比如第一次三个数码管模块的第 4 位导通,第二次关第 4 位让第 3 位导通,第三次关第 3 位,让第 2 位导通,最后一次关第2 位让第 1 位导通,然后循环往复,扫描周期 1 毫秒。那么每次就有三个字亮,比如三个数码管模块的第四位亮,这三个

36、数码管各有内容显示,怎么决定这个显示值呢,是这样:每个数码管的内容由一个字节决定,三个数码管由三个字节决定,数码管单元是接在 74HC595 移位寄存器上的,三个数码管单元接三个 74HC595,第一个 74HC595 的 SER 端子接 P0 第一个端口,然后第一个 74HC595 的 H端子接第 2 个 74HC595 的 SER 端子,第 2 个74HC595 的 H端子接第 3 个 74HC595 的 SER 端子,每个 74HC595 的脉冲端口SCK 都接在 P0 的第 2 个端口,这个端口不停的发出移位脉冲,第一批 8 个脉冲会把第一个 74HC595 的 SER 的数据移动到第

37、一个 74HC595 的缓冲区,第 2 批 8个脉冲把第二批新数据移动到第一个 74HC595 的缓冲区,同时把第一个74HC595 的缓冲区数据移动到第二个 74HC595 的缓冲区,第三批 8 个脉冲把SER 新数据移动到第一个 74HC595 的缓冲区,同时把第一个 74HC595 缓冲区的数据移动到第二个 74HC595 的缓冲区,而第二个 74HC595 缓冲区的数据被移动到了第三个 74HC595 缓冲区。这样不停循环,需要显示的数据由单片机送往第一个 74HC595 的 SER 端子,每 24 个脉冲后这个要显示的数据出现在 74HC595 的缓冲区,然后 24 个数据从三个 7

38、4HC595 同时输出到数码管,这样串行输入并行输出来完成数字显示。4.4 计算器子程序设计计算器子程序设计4.4.1 输入程序设计输入程序设计该模块利用 17 的小按键,提供 0-9, +、-、*、/、 =、小数点、清零键。再利用数码管,对于即时按下的键和结果进行显示。向列扫描码逐列输出低电平,然后从行码地址读回。如果有键按下,则相应的行值应为低,如果无键按下,由于上拉电阻的作用,行码为高。这样可以通过输出的列码和读取的行码判断按下的是什么键,在判断有键按下后,要有一定的延时,防止键盘抖动矩阵按键扫描程序是一种节省 IO 口的方法,按键数目越多节省 IO 口就越可观,思路:先判断某一列(行)

39、是否有按键按下,再判断该行(列)是那一只键按下。但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的 CPU 时间。本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了 CPU 效率,基于 51 单片机的简易计算器15也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用 CPU 时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。本键盘扫描子程序名叫 key,每次要扫描时用 lcall key 调用即可。流程图如图 4-3 所示.键盘识别程序流程图 4-3

40、4.4.2 运算程序设计运算程序设计AT89c 单片机是一块芯片中集成了 CPU、RAM、ROM、定时器、计数器、和多功能 I/O 等一台计算器所需要的基本功能部分。如果按功能划分,它由如下功能部分组成,即微处理器(CPU) 、数据处理器(RAM) 、程序处理器(ROM/CPROM) 、并行 I/O 口、串行口、定时器、计数器、中断系统及特殊功能寄存器(SFR) 。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊一些功能,通过使用单片机编写的程序可以凸显高智能、河南机电高等专科学校毕业论文16高效率以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快实

41、现运算功能。计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用到很多的 I/O 资源,因此在很多情况下都不采用这种方式(如图 4-4) 。但因为实体资源有限不得已而为之,但不会影响其功能。运算程序图 4-44.4.3 显示程序设计显示程序设计利用数码管动态显示的方法,设置显示循环次数,让 3 个四位数码管从左到右依次显示,之间要调用延时子程序,但延时时间小于人的视觉暂留。显示程序流程图如下页图 4-5 如示 .1. 数码管显示数据转换子程序数码管显示数据转换子程序 由于数值单元存放的是二进制数,而用户熟悉的是十进制数,所以应将数值单元中的

42、二进制转换为十进制数,即 BCD 码。要通过数码管显示出当前数值,还必须将 BCD 码进一步转换为七段码,转换的最终结果数据存放于显示缓冲区30H-33H 单元中,其中 30H 单元存放数值的个位七段码,31H 单元存放数值的十位七基于 51 单片机的简易计算器17段码,32H 单元存放数值的百位七段码,33H 单元存放数值的千位七段码。2. 数码管动态显示子程序数码管动态显示子程序本任务由 P1 口输出字形码,P0 口输出字位码。先将存放于 30H 单元的数值个位七段码由 P1 口输出,同时 P0 口输出使数值个位显示数码管点亮的字位码。由于采用的是共阳数码管,所以只有该位数码管对应的 P0

43、.0 为 1,其他位 P0.1-P0.3 位 0,点亮延时 10MS。显示程序流程图 4-5河南机电高等专科学校毕业论文18基于 51 单片机的简易计算器19第第 5 5 章章 结论与展望结论与展望5.1 结语结语课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,可以说得是苦

44、多于甜,但是可以学到很多很多的的东西。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。通过这次课程设计使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。5.2 不足与展望不足与展望 通过此次毕业设计我想学到了很多在课堂中无法学到的应用类知识,使我深刻的认识到自己知识范

45、围的狭窄和匮乏也真正让我认识到实际操作的重要性。本次毕业设计在完成过程中我请教了辅导老师和很多在单片机方面优秀的同学,我领会了我们之间存在的差距以及我在单片机方面的欠缺。同时,在翻阅辅导资料的过程中我惊叹于作者思维的严密性和知识的广泛性,令我在感慨过程中也让我坚定了学好这门学科的决心,校正了正确的方向。在以后的工作学习中定要向前辈和同事多学习、多发问,我相信经过长期的努力和学习我也定能成为电气方面的佼佼者。河南机电高等专科学校毕业论文20参考文献参考文献1 徐爱钧 智能化测量控制仪表原理与设计(第二版) 北京航天航空大学出版社,2004.9 2 孙育才等MCS-51 系列单片微型计算机及其应用

46、(第 4 版) 东南大学出版社,2004,33 李萍 等智能仪器实验指导书大连交通大学,2007.9基于 51 单片机的简易计算器21 附录附录程序源代码程序源代码#include #include #include #include float ptwei=10.0;/小数位计算:1/10,1/100,1/1000uint8 pt=0;/有没有输入小数int8 fh1=1;/第一个数的符号int8 fh2=1;/第二个数的符号float f1=0,f2=0,y1=0;uint8 yunsuan=0,yunsuan1=0;/运算:0-null,1-+,2-,3-*,4-/uint8 key=N

47、;/按键输入,N表示没有输入,其他可能是+-*/0-9.=uint8 i=0,j=0,k=0;uint8 zongweishu=0;/输入的数字的位数uint8 step=1;uint8 tmpSmg13=12,12,11,10,12,12,12,12,12,12,12,12;/这是显示缓冲,要显示的内容,0-9表示0-9,10表示小数点/11表示负号,12表示不要显示,k是index,13-Euint8 daozhuan13=12,12,12,12,12,12,12,12,12,12,12,12;/uint8 tmpSmg13=0,1,2,3,4,5,6,7,8,9,10,11,12;uin

48、t8 Smg43;/显示区,显示内容编码在此,直接送往74hc595.i,j是indexuint8 error=0;/0,1,2,3,4,5,6,7,8,9,buyao xiaoshudian=10,-=11,no display=12,E=13code uint8 shumazi14=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0,0 xBF,0 xFF,0 x86;/共阳极数码管/在这个计算器,有以下数码管12个,四个一组,共三组,我用四个三极管控制每个数码管的1234位/每个数字的内码是一个字节,每个位对应一个发

49、光二极管,7-0位分别是h-a,移位时从高位开始移动,就是从h开始河南机电高等专科学校毕业论文22/一个脉冲移动移位,8个脉冲把h-a移动到595的底层8个D触发器,然后等待一个中断等电压稳定,再打开595/上层D触发器,数据并行输出/*/void intT0(void) interrupt 1static unsigned int t1=0;static unsigned char hang=0,lie=0,tmp=0;static unsigned char maichongshu=0;static unsigned char xianshiwei=0;/static unsigned c

50、har waitabit=10;ET1=0;t1+;if(t1=1)/0.5mst1=0;if(SCK & (maichongshu=0 & lie=0) | (maichongshu=8 & lie=1)| (maichongshu=16 & lie=2)tmp=Smghanglie;lie+;if(maichongshu=23)SCK=SCK;/脉冲在所有数字移到595芯片第一排D触发器输出脚时,要停止一下,以便/正确输出到第二排D触发器,就是说maichongshu大于7时基于 51 单片机的简易计算器23暂停一下if(!SCK & maichon

51、gshu2 & maichongshu=25)maichongshu=0;lie=0;hang+;if(xianshiwei=0)P2_0=1;P2_1=1;P2_2=1;P2_3=0;if(xianshiwei=1)P2_0=1;P2_1=1;P2_2=0;P2_3=1;if(xianshiwei=2)P2_0=1;P2_1=0;P2_2=1;P2_3=1;if(xianshiwei=3)P2_0=0;P2_1=1;P2_2=1;P2_3=1;河南机电高等专科学校毕业论文24xianshiwei+;if(xianshiwei=4)xianshiwei=0;if(hang=4)hang

52、=0;RCK=1;ET1=1;main()uint8 displayt=0,displayp=0,displayq=0,displaypot=0,daozhuanI=0;/最后面要显示的字符内码送缓冲区用InitShuma();while(1)if(error=0)key=funckey();switch(step)case 1:if(key=-)fh1=-1;zongweishu+;if(zongweishu=13)cuowuxianshi();error=1;tmpSmgk=11;k+;step=2;if(key=+)fh1=1;if(key=1 | key=2 | key=3 | key

53、=4 | key=5 | key=6 | key=7 | key=8 | key=9)f1=key-48;基于 51 单片机的简易计算器25zongweishu+;tmpSmgk=key-48;k+;if(zongweishu=13 | k12)cuowuxianshi();error=1;step=2;if(key=.)pt=1;tmpSmg0=10;tmpSmg1=0;k=2;step=2;break;case 2:if(pt=0)if(key=1 | key=2 | key=3 | key=4 | key=5 | key=6 | key=7 | key=8 | key=9 | key=0

54、)f1=f1*10+key-48;zongweishu+;k+; if(key=.) pt=1;k+;if(zongweishu=13 | k12)cuowuxianshi();error=1;break;if(key=48 & key=48 & key=57)tmpSmg0=key-48;if(key=.)tmpSmg0=10;elseif(ptwei=48 & key=13 | k12)cuowuxianshi();error=1;break;shuziqianyi(k);tmpSmg0=key-48;if(key=+ | key=- | key=* | key=/

55、)pt=0;k=0;zongweishu=0;ptwei=10.0;if(key=+)yunsuan=1;if(key=-)yunsuan=2;if(key=*)yunsuan=3;if(key=/)yunsuan=4;f1=fh1*f1;step=4;break;case 3:if(key=1 | key=2 | key=3 | key=4 | key=5 | key=6 | key=7 | key=8 | key=9)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpSmg4=tmpSmg5=tmpSmg6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg1

56、0=tmpSmg11=tmpSmg12=12;f1=key-48;zongweishu+;基于 51 单片机的简易计算器27tmpSmgk=key-48;k+;if(zongweishu=13 | k12)cuowuxianshi();error=1;break;step=2;if(key=.)pt=1;tmpSmg0=10;tmpSmg1=0;k=2;step=2;if(key=+ | key=- | key=* | key=/)pt=0;k=0;zongweishu=0;ptwei=10.0;if(key=+)yunsuan=1;if(key=-)yunsuan=2;if(key=*)yu

57、nsuan=3;if(key=/)yunsuan=4;step=4;break;case 4:if(key=1 | key=2 | key=3 | key=4 | key=5 | key=6 | key=7 | key=8 | key=9)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpSmg4=tmpSmg5=tmpSmg6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg10=tmpSmg11=tmpSmg12=12;f2=key-48;zongweishu+;tmpSmgk=key-48;k+;if(zongweishu=13 | k12)cuowuxi

58、anshi();error=1;step=6;if(key=.)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpSmg4=tmpSmg5=tmpSm河南机电高等专科学校毕业论文28g6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg10=tmpSmg11=tmpSmg12=12;pt=1;tmpSmg0=10;tmpSmg1=0;k=2;step=6;if(key=+ | key=- | key=* | key=/)pt=0;k=0;zongweishu=0;ptwei=10.0;if(key=+)yunsuan1=1;if(key=-)yunsuan1=2

59、;if(key=*)yunsuan1=3;if(key=/)yunsuan1=4;step=5;break;case 5:if(key=+ | key=- | key=* | key=/)yunsuan=yunsuan1;if(key=+)yunsuan1=1;if(key=-)yunsuan1=2;if(key=*)yunsuan1=3;if(key=/)yunsuan1=4;if(key=1 | key=2 | key=3 | key=4 | key=5 | key=6 | key=7 | key=8 | key=9)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpS

60、mg4=tmpSmg5=tmpSmg6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg10=tmpSmg11=tmpSmg12=12;f2=key-48;zongweishu+;tmpSmgk=key-48;k+;if(zongweishu=13 | k12)cuowuxianshi();error=1;step=6;基于 51 单片机的简易计算器29if(key=.)tmpSmg0=tmpSmg1=tmpSmg2=tmpSmg3=tmpSmg4=tmpSmg5=tmpSmg6=tmpSmg7=tmpSmg8=tmpSmg9=tmpSmg10=tmpSmg11=tmpSmg12=12;pt=1;tmpSmg0=10;tmpSmg1=0;k=2;step=6;break;case 6:if(pt=0)if(key=1 | key=2 | key=3 | key=4 | key=5 | key=

温馨提示

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

评论

0/150

提交评论