应用电子毕业设计(论文)-基于51单片机的简易计算器设计.doc

上传人:小小飞 文档编号:3927869 上传时间:2019-10-10 格式:DOC 页数:31 大小:463.50KB
返回 下载 相关 举报
应用电子毕业设计(论文)-基于51单片机的简易计算器设计.doc_第1页
第1页 / 共31页
应用电子毕业设计(论文)-基于51单片机的简易计算器设计.doc_第2页
第2页 / 共31页
应用电子毕业设计(论文)-基于51单片机的简易计算器设计.doc_第3页
第3页 / 共31页
应用电子毕业设计(论文)-基于51单片机的简易计算器设计.doc_第4页
第4页 / 共31页
应用电子毕业设计(论文)-基于51单片机的简易计算器设计.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《应用电子毕业设计(论文)-基于51单片机的简易计算器设计.doc》由会员分享,可在线阅读,更多相关《应用电子毕业设计(论文)-基于51单片机的简易计算器设计.doc(31页珍藏版)》请在三一文库上搜索。

1、摘要 江西理工大学南昌校区江西理工大学南昌校区 毕业设计 (论文) 课 题 基于 51 单片机的简易计算器 教 研 室 信信 息息 工工 程程 系系 专 业 应应 用用 电电 子子 技技 术术 班 级 0 0 9 9 应应 用用 电电 子子 学生姓名 学号 导师姓名 职称 2012 年年 5 月月 1 日日 摘要 摘 要 工程实践教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本 次工程实践中,我以智能化测量控制仪表原理与设计 、 MCS-51 系列单片微型计算机 及其应用课程中所学知识为基础,设计了简易计算器。本系统以 MCS-51 系列中的 8051 单片机为核心,能够实现两

2、位数的四则运算。该系统通过检测矩阵键盘扫描,判断 是否按键,经数据转换把数值送入数码管动态显示。 本系统的设计说明重点介绍了如下几方面的内容: 1)基于单片机简易计算器的基本功能,同时对矩阵键盘及数码管动态显示原理进行 了简单的阐述; 2)介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划 分及所采用的元器件进行了详细说明; 3)对系统各功能模块的软、硬件实现进行了详细的设计说明。 关键词:关键词:MCS-51 8051 单片机;计算器;加减乘除 目录 目录 第一章 绪论 .1 1.2 设计目的 1 1.3 设计任务 1 1.4 章节安排说明1 第二章 计算器系统简介 .3

3、 2.1 单片机发展现状3 2.2 计算器系统现状4 2.3 简易计算器系统简介4 第三章 主要器件简介 .5 3.1 MCS-51 系列单片机简介 .5 3.2 其它器件简介8 3.2.1 数码管显示 .8 3.2.2 矩阵按键 .9 第四章 计算器系统设计 .10 4.1 计算器硬件电路设计.10 4.2 计算器程序设计 .10 4.2.1 存储单元分配 .10 4.2.2 主程序设计 .10 4.2.3 数码管显示数据转换子程序 .10 4.2.4 数码管动态显示子程序 .11 4.3 系统总框图: .11 4.4 程序源代码: .12 4.5 硬件连线图: .20 总结 22 参考文献

4、参考文献 .23 第一章 绪论 1 第一章 绪论 1.1 课题简介 单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域 中。在工业生产中。单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力 的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 本系统就是充分利用了 8051 芯片的 I/O 引脚。系统统采用 MSC-51 系列单片机 Intel8051 为中心器件来设计计算器控制器,实现了能根据实际输入值显示并存储,计算 程序则是参照教材。至于位数和功能,如果有需要可以设计扩充原系统来实现 。 1.2 设计目的 通过本次工程实践,运用智能化测

5、量控制仪表原理与设计 、 MCS-51 系列单片微 型计算机及其应用所学知识及查阅相关资料,完成简易计算器的设计,达到理论知识 与实践更好结合、提高综合运用所学知识和设计能力的目的。 通过本次设计训练,可以使我们在基本思路和基本方法上对基于 MCS-51 单片机的嵌 入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。 1.3 设计任务 在本次工程实践中,主要完成如下方面的设计任务: 1)简要综述单片机技术发展的国内外现状及数码管动态显示和矩阵键盘基本原理; 2)掌握 MCS-51 系列某种产品(例如 8051)的最小电路及外围扩展电路的设计方法; 3)了解单片机数据转换功能及工作过程

6、; 4)完成主要功能模块的硬件电路设计及必要的参数确定; 5)用 protues 软件完成原理电路的绘制; 6)完成系统设计说明书。 1.4 章节安排说明 整个设计总共分为四个章节,第一章是前言部分,主要介绍了设计基于单片机简易 计算器的意义、目的及主要内容;第二章简要介绍了单片机发展的国内外现状及键盘扫 描,数据转换,和动态显示原理进行了简要的说明。第三章是器件简介,这一部分主要 第一章 绪论 2 介绍了系统的所用主要器件的选择。第四章是系统详细设计阶段,分为硬件设计和程序 设计。按照程序设计的各部分实现的功能不同,将整个软件系统分成了三个块,并对每 一个功能块所采用的元器件进行了详细介绍。

7、此外还编写了主要功能模块的基本程序, 详尽阐述了各模块的工作过程。还有总流程图,源代码,硬器件铺线图。 第一章 绪论 3 第二章 计算器系统简介 4 第二章 计算器系统简介 2.1 单片机发展现状 单片机的发展趋势:低功耗 CMOS 化;微型单片化;主流与多品种共存;单片机从 8 位、16 位到 32 位,数不胜数,应有尽有,有与主流 C51 系列兼容的,也有不兼容的,但 它们各具特色,互成互补,为单片机的应用提供广阔的天地。 纵观单片机的发展过程,可以预示单片机的发展趋势,大致有: 1)低功耗 CMOS 化 MCS-51 系列的 8051 推出时的功耗达 630mW,而现在的单片机普遍都在

8、100mW 左右, 随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了 CMOS(互补金属 氧化物半导体工艺)。象 80C51 就采用了 HMOS(即高密度金属氧化物半导体工艺)和 CHMOS(互补高密度金属氧化物半导体工艺)。CMOS 虽然功耗较低,但由于其物理特征决定 其工作速度不够高,而 CHMOS 则具备了高速和低功耗的特点,这些特征,更适合于在要 求低功耗象电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途 径。 2)微型单片化 现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程 序存储器(ROM)、并行和串行通信接口,中

9、断系统、定时电路、时钟电路集成在一块单一 的芯片上,增强型的单片机集成了如 A/D 转换器、PMW(脉宽调制电路)、WDT(看门狗)、 有些单片机将 LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就 更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自 己特色的单片机芯片。 此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低 外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中 SMD(表面封装)越 来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。 3)主流与多品种共存 现在虽然单片机的品种繁多,各具特色,但仍

10、以 80C51 为核心的单片机占主流,兼 容其结构和指令系统的有 PHILIPS 公司的产品,ATMEL 公司的产品和中国台湾的 Winbond 系列单片机。所以 C8051 为核心的单片机占据了半壁江山。而 Microchip 公司的 PIC 精 简指令集(RISC)也有着强劲的发展势头,中国台湾的 HOLTEK 公司近年的单片机产量与日 第二章 计算器系统简介 5 俱增,与其低价质优的优势,占据一定的市场分额。此外还有 MOTOROLA 公司的产品,日 本几大公司的专用单片机。在一定的时期内,这种情形将得以延续,将不存在某个单片 机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道

11、路。 2.2 计算器系统现状 计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设 备及电子配件通过人工或机器设备组成。低档计算器的运算器、控制器由数字逻辑电 路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。高档计算 器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放 输入程序和数据。键盘是计算器的输入部件,一般采用接触式或传感式。为减小计算 器的尺寸,一键常常有多种功能。显示器是计算器的输出部件,有发光二极管显示器 或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采 用交流转换器或电池,电池可用交流转换器或太

12、阳能转换器再充电。为节省电能,计 算器都采用 CMOS 工艺制作的大规模集成电路(见互补金属 -氧化物-半导体集成电 路) ,并在内部装有定时不操作自动断电电路。计算器可选用的外围设备有微型打印 机、盒式磁带机和磁卡机等。 2.3 简易计算器系统简介 本计算器是以 MCS-51 系列 8051 单片机为核心构成的简易计算器系统。该系统通过 单片机控制,实现对 4*4 键盘扫描进行实时的按键检测,并把检测数据存储下来。整个 计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位 置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管动态 显示。整个系统可分

13、为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二, 数据转换为了数码管显示;功能模块三,数码管动态显示。 第二章 计算器系统简介 6 第三章 主要器件简介 3.1 MCS-51 系列单片机简介 8051 是 MCS-51 系列单片机的典型产品,以这一代表性的机型进行系统的讲解。 8051 单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、 并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总 线,现在我们分别加以说明: 中央处理器中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位 二

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

15、/ /计数器计数器(ROM)(ROM): 第三章 主要器件简介 7 8051 有两个 16 位的可编程定时/计数器,以实现定时或计数产生中断用于控制程 序转向。 并行输入输出并行输入输出(I/O)(I/O)口:口: 8051 共有 4 组 8 位 I/O 口(P0、 P1、P2 或 P3),用于对外部数据的传输。 全双工串行口全双工串行口: 8051 内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口 既可以用作异步通信收发器,也可以当同步移位器使用。 中断系统:中断系统: 8051 具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中 断,可满足不同的控制要求

16、,并具有 2 级的优先级别选择。 时钟电路:时钟电路: 8051 内置最高频率达 12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但 8051 单片机需外置振荡电容。 单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛 (Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一 的结构,即普林斯顿(Princeton)结构。INTEL 的 MCS-51 系列单片机采用的是哈佛结构的 形式,而后续产品 16 位的 MCS-96 系列单片机则采用普林斯顿结构。 下图是 MCS-51 系列单片机的内部结构示意图 3-2。 第三章 主要器件简介

17、 8 图 3-2 MCS-51 结构图 MCS-51 的引脚说明: MCS-51 系列单片机中的 8031、8051 及 8751 均采用 40Pin 封装的双列直接 DIP 结构, 右图是它们的引脚配置,40 个引脚中,正电源和地线两根,外置石英振荡器的时钟线两 根,4 组 8 位共 32 个 I/O 口,中断口线与 P3 口线复用。现在我们对这些引脚的功能加以 说明: MCS-51 的引脚说明: MCS-51 系列单片机中的 8031、8051 及 8751 均采用 40Pin 封装的双列直接 DIP 结构, 右图是它们的引脚配置,40 个引脚中,正电源和地线两根,外置石英振荡器的时钟线两

18、 根,4 组 8 位共 32 个 I/O 口,中断口线与 P3 口线复用。现在我们对这些引脚的功能加以 说明:如图 3-3 图 3-3 双列直插式封装引脚图 Pin9:RESET/Vpd复位信号复用脚,当 8051 通电,时钟电路开始工作,在 RESET 引脚 上出现 24 个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器 PC 指向 0000H,P0-P3 输出口全部为高电平,堆栈指针写入 07H,其它专用寄存器被清“0” 。 RESET 由高电平下降为低电平后,系统即从 0000H 地址开始执行程序。然而,初始复位不 改变 RAM(包括工作寄存器 R0-R7)的状态,8051

19、的初始态。 8051 的复位方式可以是自动复位,也可以是手动复位。此外,RESET/Vpd还是一复用 脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部 RAM 的数据不丢失。见下图 3-4 为两种复位方式和两种时钟方式: 第三章 主要器件简介 9 Pin30:ALE/当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位 字节。而访问内部程序存储器时,ALE 端将有一个 1/6 时钟频率的正脉冲信号,这个信号 可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问 外部程序存储器,ALE 会跳过一个脉冲。 如果单片机是 EPROM,在编程其间,将用于输入编

20、程脉冲。 Pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,PC 的 16 位地址 数据将出现在 P0 和 P2 口上,外部程序存储器则把指令数据放到 P0 口上,由 CPU 读入并 执行。 Pin31:EA/Vpp程序存储器的内外部选通线,8051 和 8751 单片机,内置有 4kB 的程 序存储器,当 EA 为高电平并且程序地址小于 4kB 时,读取内部程序存储器指令数据,而 超过 4kB 地址则读取外部指令数据。如 EA 为低电平,则不管地址大小,一律读取外部程 序存储器指令。显然,对内部无程序存储器的 8031,EA 端必须接地。 在编程时,EA/Vpp脚还需加上 21V

21、的编程电压。 3.2 其它器件简介 3.2.1 lcd1602 介绍 一:液晶显示器各种图形的显示原理 线段的显示: 点阵图形式液晶由 MN 个显示单 元组成,假设 LCD 显示屏有 64 行,每行有 128 列,每 8 列对应 1 字节的 8 位, 即每行由 16 字节,共 168=128 个点组成,屏上 6416 个显示单元与显示 RAM 区 1024 字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏 的第一行 的亮暗由 RAM 区的 000H00FH 的 16 字节的内容决定, (000H) 当 =FFH 时, 则屏幕的左上角显示一条短亮线,长度为 8 个点;当(3FFH)

22、=FFH 时,则 屏幕的右 下角显示一条短亮线; (000H) 当 =FFH, (001H) =00H, (002H) =00H, (00EH)=00H, (00FH)=00H 时,则在屏幕的顶部显示一条由 8 段亮线和 8 条 第三章 主要器件简介 10 暗线组成的虚线。这就是 LCD 显示的基本原理。 字符的显示 用 LCD 显示一个字符 时比较复杂,因为一个字符由 68 或 88 点阵组成,既要 找到和显示屏幕上某几个位 置对应的显示 RAM 区的 8 字节, 还要使每字节的不同 位为“1”,其它的为“0”,为 “1”的点亮,为“0”的不亮。这样一来就组成 某个字符。但由于内带字符发生器

23、的控制器 来说,显示字符就比较简单了,可以 让控制器工作在文本方式, 根据在 LCD 上开始 显示的行列号及每行的列数找出显 示 RAM 对应的地址,设立光标,在此送上该字符对 应的代码即可。 汉字的显示 汉字的显示一般采用图形的方式,事先从微机中提取要显 示的汉字的点阵码(一 般用字模提取软件) ,每个汉字占 32B,分左右两半,各占 16B,左边为 1、3、 5右边为 2、4、6根据在 LCD 上开始显示的行列号及每 行的列数可找出 显示 RAM 对应的地址, 设立光标, 送上要显示的汉字的第一字节, 光标位置加 1, 送第二个字节,换行按列对齐,送第三个字节直到 32B 显示完就 可以

24、LCD 上得到一个完整汉字 3.2.2 矩阵按键 键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据 或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬件去 抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理 一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。 矩阵按键扫描程序是一种节省 IO 口的方法,按键数目越多节省 IO 口就越可观,思路: 先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但是,在程 序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如果检测到某键按 下了,就不再检

25、测其它的按键,这完全能满足绝大多数需要,又能节省大量的 CPU 时间。 本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了 CPU 效率,也不用 中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用 CPU 时最短, 不论有键按下或者无键按下都可以在很短的时间完成一次扫描。 本键盘扫描子程序名叫 key,每次要扫描时用 lcall key 调用即可。 第三章 主要器件简介 11 第四章 计算器系统设计 12 第四章 计算器系统设计 4.1 计算器硬件电路设计 8051 单片机一片,4*4 键盘一个,4 位共阳极的七段数码管一个,连线和电阻和开关 若干。8051 单片机的 P

26、2 口作键盘口,其中 P2.4-P2.7 为键盘扫描输出线,P2.0-P2.3 为 键盘扫描输入线。键盘由 4*4 共 16 个按键组成,10 个数字键(由 0-9 组成)5 个运算符 号(加减乘除等于)组成,1 个清除键(作用相当于整体复位) 。4 个数码管用于显示当 前数值的千,百,十,个,采用动态显示方式,P1 口接 4 个数码管的七段,P0 口分别接 4 个数码管的公共端,P1 口输出数码管的字形码,P0 口输出数码管的字位码。 4.2 计算器程序设计 4.2.1 存储单元分配 30H 单元:数值个位显示单元;31H 单元:数值十位显示单元;32H 单元:数值百位显 示单元;33H 单

27、元:数值千位显示单元;23H 单元:第一操作数存储单元;24H 单元:第 二操作数存储单元;25H 单元:键值暂存单元;27H 单元:清除键状态;34H-37H 单元: 结果数据转换暂存单元;38H-39H 单元:结果高低 8 位暂存单元;R5 单元:操作数计数 单元;R4 单元:操作数数值位数计数单元;R3 单元:运算符号存储单元。 4.3 系统总框图: 4.4 程序源代码: 这是 main 函数 #include “lcd1602.h“ #include “display_lcd1602.h“ #include “interrupt.h“ #include “keypad.h“ uchar

28、key_val,key_return,count; 第四章 计算器系统设计 13 long ori_num,aim_num,x,y,z,lastentbuf; ucharent_buf=0; ucharaim_buf8,ori_buf8; void main() init_lcd1602(); init_int0(); lastentbuf=5; while(1) key_scan(); display(); Lcd1602.c 文件 #include #include “delay.h“ #definedatsP0 #define uchar unsigned char #define ui

29、nt unsigned int sbit RS=P25; /LCD1602 的寄存器选择 sbit RW=P26; /LCD1602 的读/写控制 sbit E=P27; /DS1602 的启动 /向 1602 写数据 void write_data(uchar dat) RS=1; 第四章 计算器系统设计 14 dats=dat; delay(5); E=1; delay(5); E=0; /向 1602 写指令 void write_com(uchar cmd) RS=0; dats=cmd; delay(5); E=1; delay(5); E=0; /1602 初始化 void ini

30、t_lcd1602() E=0; RW=0; write_com(0x38);delay(1); write_com(0x01);delay(1); write_com(0x06);delay(1); write_com(0x0c);delay(1); Lcd1602.h 文件 #ifndef_lcd1602_h_ 第四章 计算器系统设计 15 #define_lcd1602_h_ #defineucharunsigned char #defineuint unsigned int void delay(uchar z); void write_data(uchar dat); void wr

31、ite_com(uchar cmd); void init_lcd1602(); #endif Keypad.c 文件 #include #include “_extern.h“ #defineport P1 #definestate_nokey0 #definestate_keyon1 #definestate_keyoff2 #definenokey255 #definekey_17 #definekey_28 #definekey_39 #definekey_410/除 #definekey_54 #definekey_65 #definekey_76 #definekey_811/乘

32、#definekey_91 #definekey_102 #definekey_113 #definekey_1212/减 第四章 计算器系统设计 16 #definekey_1313/清零 #definekey_140 #definekey_1515 /等于 #definekey_1616 /加 #define uchar unsigned char void key_scan() staticucharkey_value,key_state=0; uchari,key_line=0x08; switch(key_state) case state_nokey: for(i=0;i=1; e

33、lse key_value=port; key_state=1; i=4; key_return=nokey; break; 第四章 计算器系统设计 17 case state_keyon: if(key_value=port) switch(key_value) case 0xee:key_return=key_1;break; case 0xed:key_return=key_5;break; case 0xeb:key_return=key_9;break; case 0xe7:key_return=key_13;break; case 0xde:key_return=key_2;bre

34、ak; case 0xdd:key_return=key_6;break; case 0xdb:key_return=key_10;break; case 0xd7:key_return=key_14;break; case 0xbe:key_return=key_3;break; case 0xbd:key_return=key_7;break; case 0xbb:key_return=key_11;break; case 0xb7:key_return=key_15;break; case 0x7e:key_return=key_4;break; case 0x7d:key_return

35、=key_8;break; case 0x7b:key_return=key_12;break; case 0x77:key_return=key_16;break; default:break; key_state=2; else 第四章 计算器系统设计 18 key_state=0; break; case state_keyoff: if(port key_return=nokey; break; Keypad.h 文件 #ifndef _keypad_h_ #define _keypad_h_ void key_scan(); #endif Key_cod.c 文件 #include

36、“_extern.h“ #include “key_board.h“ #include #defineen0 0 #defineclr1 #definemul 2 #definediv 3 #definesub 4 #defineadd 5 void ent() 第四章 计算器系统设计 19 lastentbuf=0; switch(ent_buf) case mul :z=x*y;break; case div :z=x/y;break; case sub :z=x-y;break; case add :z=x+y;break; x=z; void work() if(lastentbuf)

37、 x=y;lastentbuf+; else ent(); x=z; y=0; aim_num=y; ori_num=x; void key_cod() x%=10000000; 第四章 计算器系统设计 20 x%=10000000; z%=10000000; switch(key_return) case 255:;break; case 13: ent_buf=clr;x=y=z=aim_num=ori_num=0;break; case 11: ent_buf=mul;work();break; case 10: ent_buf=div;work();break; case 12: en

38、t_buf=sub;work();break; case 16: ent_buf=add;work();break; case 15: ent();aim_num=y;ori_num=z;break;/change(); default:y=y*10+key_return;aim_num=y;ori_num=x;break; Key_cod.h 文件 #ifndef_key_cod_h_ #define_key_cod_h_ void key_cod(); #endif Interrupt.c 文件 #include #include “_extern.h“ #include “keypad.

39、h“ #include “key_cod.h“ void init_int0() 第四章 计算器系统设计 21 EX0=1; IE0=1; IT0=1; EA=1; void int0() interrupt 0 uchar i=2; while(i-) key_scan(); key_cod(); Interrupt.c 文件 #ifndef _interrupt_h_ #define _interrupt_h_ void uint_time0(); void time0(); void init_int0(); void int0(); #endif Dispiay_lcd.c1602 文

40、件 #include “_extern.h“ #include “devide.h“ #include “lcd1602.h“ #defineucharunsigned char void display() 第四章 计算器系统设计 22 uchari; devide(); for(i=8;i0;i-) write_com(0x80+16-i); write_data(ori_bufi-1); write_com(0x80+0x40+16-i); write_data(aim_bufi-1); Dispiay_lcd.H1602 文件 #ifndef_display_lcd1602_h_ #d

41、efine_display_lcd1602_h_ void display(); #endif Devide.c 文件 #include “_extern.h“ #defineucharunsigned char ucharcodetable10=“0123456789“; void devide() uchari; long aim=aim_num,ori=ori_num; for(i=0;i0;i-) for(j=0;j110;j+); Delay.h 文件 #ifndef_delay_h_ #define_delay_h_ void delay(unsignedchar z); #end

42、if _extern 文件 #ifndef_extern_h_ #define_extern_h_ #defineucharunsigned char externuchar key_return,count; externlongori_num,aim_num,x,y,z,lastentbuf; externucharent_buf; externucharaim_buf8,ori_buf8; #endif 第四章 计算器系统设计 25 4.5 硬件连线图: 结语 26 总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践 能力的重要环节,是对学生实际工作能力的

43、具体训练和考察过程.随着科学技术发展的日 新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处 不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践 ,可以说得是苦多于甜,但是可以学到很多很多的的东西。通过这次课程设计使我懂得 了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识 与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动 手能力和独立思考的能力。通过这次课程设计使我得到了一次用专业知识、专业技能分 析和解决问题全面系统的

44、锻炼。使我们在单片机的基本原理、单片机应用系统开发过程 ,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步, 为日后成为合格的应用型人才打下良好的基础。 参考文献 27 参考文献参考文献 1 徐爱钧 智能化测量控制仪表原理与设计(第二版) 北京航天航空大学出版社, 2004.9 2 孙育才等MCS-51 系列单片微型计算机及其应用(第 4 版) 东南大学出版社, 2004,3 3 李萍 等智能仪器实验指导书大连交通大学,2007.9 4 李建忠. 单片机原理及应用(第一版).西安电子科技大学出版社,2002 5 丁元杰. 单片微机原理及应用(第三版).北京:机械工业出版社,2005,7

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1