简易计算器的设计[优选材料]_第1页
简易计算器的设计[优选材料]_第2页
简易计算器的设计[优选材料]_第3页
简易计算器的设计[优选材料]_第4页
免费预览已结束,剩余26页可下载查看

下载本文档

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

文档简介

1、二类优质# 辽辽 宁宁 工工 业业 大大 学学 单片机原理及接口技术单片机原理及接口技术 课程设计(论文)课程设计(论文) 题目:题目: 简易计算器的设计简易计算器的设计 院(系):院(系): 电气工程学院电气工程学院 专业班级:专业班级: 自动化自动化132132班班 学学 号:号: 130302044130302044 学生姓名:学生姓名: 陆强陆强 指导教师:指导教师: (签字) 起止时间:起止时间: 2016.6.6-2016.6.17 二类优质# 课程设计(论文)任务及评语课程设计(论文)任务及评语 院(系):电气工程学院 教研室:自动 化 学 号130302044学生姓名陆强专业班

2、级自动化132班 课程设计 (论文)题 目 简易计算器的设计 课程设计(论文)任务 课题完成的功能、设计任务及要求、技术参数课题完成的功能、设计任务及要求、技术参数 实现功能实现功能 简易计算器采用 4*4 键盘输入要计算的数字及要进行的计算操作,并显示上次输 入的数据及结果,能够进行加、减、乘、除的运算,并存储上次计算的值。硬件设计包 括 CPU 选型、最小系统电路、按键电路、显示电路等。 设计任务及要求设计任务及要求 1、确定设计方案,画出方案框图。 2、进行硬件电路的设计,包括元器件选择,绘制原理图。 3、进行实物的制作 4、绘出程序流程图,并编写完整程序。 5、要求认真独立完成所规定的

3、全部内容;所设计的内容要求正确、合理。 6、按学校规定的格式,撰写、打印设计说明书一份;设计说明书应在4000字以上。 技术参数技术参数 密码长度可修改,密码可修改,密码输入正确,在显示屏上出现 Right,并控制开锁; 密码错误出现 Error,连续输入错误三次,隔 30S 才能再次输入。 进度计划 1、布置任务,查阅资料,确定系统设计方案(2 天) 2、系统硬件设计及实物制作(3 天) 3、系统软件设计及编写功能程序及调试(3 天) 4、撰写、打印设计说明书(1 天) 5、验收及答辩。(1天) 指导教师评语及成绩 平时: 论文质量: 答辩: 总成绩: 指导教师签字: 年 月 日 二类优质#

4、 注:成绩:平时20% 论文质量60% 答辩20% 以百分制计算 二类优质# 摘 要 计算器是日常生活中比较的常见的电子产品之一。在各种智能化产品中也常 常会用到计算器,而且在现代化系统中人们对计算器技术要求更加的严格和精确 ,因此计算器已成为生产中必不可少的设备。 本设计的硬件包括 4*4 键盘、单片机最小系统、液晶显示器,软件包括 C 语 言编程和 Keil uVision5。简易计算器的设计使得计算器的技术更加的成熟、简单。 简易计算器设计是以 AT89C52 单片机为核心的,输入采用 4*4 矩阵键盘,简易 计算器不仅可以进行加、减、乘、除带符号数字运算(八位整数),还可以进行 负数运

5、算和错误提示,并在液晶显示器 LCD1602 上显示操作结果。 计算器的出现不仅使计算数据越来越方便,而且在算术方面节省了大量的计 算时间。 关键词:单片机;矩阵键盘;液晶显示;计算器 二类优质# 目 录 第 1 章 绪论 .1 第 2 章 课程设计的方案 .2 2.1 概述 .2 2.2 系统组成总体结构 .2 第 3 章 硬件设计 .3 3.1 单片机最小系统设计 .3 3.1.1 AT89S52 单片机简介 .3 3.1.2 AT89C52 单片机的引脚功能及说明 .3 3.1.3 单片机最小系统设计 .5 3.2 液晶显示器电路设计 .6 3.2.1 1602 液晶显示器的简介 .6

6、3.2.2 液晶引脚说明 .7 3.2.3 液晶显示模块电路 .7 3.3 电源电路的设计 .8 3.4 按键电路设计 .8 3.5 总体电路图设计 .9 第 4 章 软件设计 .10 4.1 主程序流程图设计 .10 4.2 子程序流程图设计 .10 第 5 章 系统分析与调试 .12 5.1 系统调试 .12 5.2 实验数据与分析 .12 第 6 章 课程设计总结 .15 参考文献 .16 附录 I.17 附录 II.18 二类优质# 第 1 章 绪论 计算工具最早诞生于中国,中国古代最早采用的一种计算工具叫筹策,也被 叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七

7、十 枚一束,放在布袋里可随身携带。另外直到今天仍在使用的珠算盘,是中国古代 计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。 17 世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的 “纳皮尔算筹”,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能 做加、减、乘、除、乘方和开方运算,甚至可以计算三角函数、指数函数和对数 函数。这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好 的基础,成为现代社会应用广泛的计算工具。1642 年,年仅 19 岁的法国伟大科 学家帕斯卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一 些互相联锁

8、的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像 拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是它 只能做加减运算。1694 年,莱布尼兹在德国将其改进成可以进行乘除的计算。此 后,一直到 20 世纪 50 年代末才有电子计算器的出现。 电子计算器的出现给人们带来了很大的方便,不仅使计算更为方便,而且使 计算结果更加准确,人们的日常生活中已经离不开计算器了,社会的各个角落都 有它的身影,比如商店,办公室,学校等 计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器 再充电。为节省电能,计算器都采用CMOS 工艺制作的大规模集成电路(见 互补金属-氧

9、化物-半导体集成电路) ,并在内部装有定时不操作自动断电电 路。计算器可选用的外围设备有微型打印机、盒式磁带机和磁卡机等。 现在社会大部分使用的是都是科学计算器,简易计算器在我们日常生活中已 经不常见了,但是它的设计非常重要,科学计算器只是在简易计算器的设计的基 础上加以改动,加部分功能,但是如是没有简易计算器的出现,科学计算器也不 会出现及普及,因为简易计算器是最基础的,但同时也是最重要的,所以简易计 算器的设计显得尤为重要。 二类优质# 第 2 章 课程设计的方案 2.1 概述 计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外 围设备及电子配件通过人工或机器设备组成。低档

10、计算器的运算器、控制器由数 字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,提供累加存 储用。键盘是计算器的输入部件,一般采用接触式或传感式。为减少计算器的尺 寸,一键常常有很多功能。显示器是计算器的输出部件,有发光二极管显示器或 液晶显示器等。除显示加、减、乘、除的计算结果外,还有负数运算、错误显示 等。 2.2 系统组成总体结构 图 2.1 系统框图 本设计是以 STC89C52 单片机为核心器件,配合电阻电容晶振等器件,构成 单片机的最小系统。其它个模块围绕着单片机最小系统展开。其中包括,显示设 备采用 1602 液晶,该液晶可以进行 2 行内容的显示。对于本设计来说,第 1

11、 行 显示输入的内容,第 2 行显示计算结果。输入设备采用 4*4 的矩阵键盘,共 16 个按键,除去 10 个数字键后,剩下的六个按键功能分别为加、减、乘、除、等 于、清除。电源供电则采用 USB 的形式,常用的供电电源可以是手机充电器、 移动电源、电脑 USB 口等。 液晶显示模块 电源模块 AT89C52 主控制模块 晶振模块 矩阵键盘模块 二类优质# 第 3 章 硬件设计 3.1 单片机最小系统设计 3.1.1 AT89S52 单片机简介 单片机是单片微型机的简称,故又称为微控制器 MCU(Micro Control Unit)。 通常由单块集成电路芯片组成,内部包含有计算机的基本功能

12、部件:中央处理器 CPU,存储器和 I/O 接口电路等。因此,单片机只要和适当的软件及外部设备相 结合,便可成为一个单片机控制系统。单片机广泛用于智能产品,智能仪表,测 控技术,智能接口等,具有操作简单,实用方便,价格便宜等优点,而其中 AT89S52 以 MCS-51 为内核,是单片机中最典型的代表,应用于各种控制领域。 AT89S52 单片机是一种低功耗高性能的 CMOS8 位微控制器,内置 8KB 可 在线编程闪存。该器件采用 Atmel 公司的高密度非易失性存储技术生产,其指令 与工业标准的 80C51 指令集兼容。片内程序存储器允许重复在线编程,允许程序 存储器在系统内通过 SPI

13、串行口改写或用同用的非易失性存储器改写。通过把通 用的 8 位 CPU 与可在线下载的 Flash 集成在一个芯片上,AT89S52 便成为一个高 效的微型计算机。它的应用范围广,可用于解决复杂的控制问题,且成本较低。 AT89S52 单片机如图 3.1 所示。 图 3.1 单片机 AT89C52 3.1.2 AT89C52 单片机的引脚功能及说明 STC89C52 有 40 个引脚,32 个外部双向输入/输出(I/O)端口,同时内含 2 个外中断口,3 个 16 位可编程定时计数器,2 个全双工串行通信口,2 个读写口线。 空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中

14、断继续工 作。掉电保护方式下,RAM 内容被保存,振荡器被冻结, 单片机一切工作停止, 直到下一个中断或硬件复位为止。STC89C52 有 PDIP、PQFP/TQFP 及 PLCC 等 二类优质# 三种封装形式,以适应不同产品的需求。 AT89C52 的主要功能特性如下: 1)兼容 MCS51 指令系统; 2)8k 可反复擦写(1000 次)Flash ROM; 3)32 个双向 I/O 口; 4)256*8bit 内部 RAM ; 5)3 个 16 位可编程定时/计数器中断; 6)时钟频率 0-24MHz; 7)2 个串行中断; 8)可编程 UART 串行通道; 9)2 个外部中断源; 1

15、0)共 8 个中断源; 11)2 个读写中断口线; 12)3 级加密位; 13)低功耗空闲和掉电模式; 14)软件设置睡眠和唤醒功能; AT89C52 系列单片机一般采用 40 个引脚,双列直插式封装,用 HMOS 工艺制造,其外部引脚排列如图 3.2 所示。其中,各引脚的功能为: 图 3.2 AT89C52 的引脚图 1)主电源引脚 VCC(40 脚),接5V 电源正端; GND(20 脚),接5V 电源地端; 2)外接晶体或外部振荡器引脚 XTAL1(19 脚),接外部晶振和微调电容的一个引脚。在单片机内部, P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16

16、7 P17 8 RESET 9 P30/RXD 10 P31/TXD 11 P32/INT0 12 P33/INT1 13 P34/T0 14 P35/T1 15 P36/WR 16 P37/RD 17 XTAL2 18 XTAL1 19 GND 20 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE 30 EA 31 P07 32 P06 33 P05 34 P04 35 P03 36 P02 37 P01 38 P00 39 VCC 40 二类优质# 它是振荡电路的一个反相放大器的输入端,振荡电路的频率就

17、是晶体的固有 频率。当采用外部振荡器时,此引脚应接地。 XTAL2(18 脚),接外部晶振和微调电容的另一个引脚。在片内接至反 相放大器的输出端和内部时钟电路的输入端。当采用外部振荡器时,此脚接 外部振荡器的输出端。 3)控制信号线 RESET(9 脚),复位信号输入端,复位/掉电时内部 RAM 的备用电源 输入端。 ALE(30 脚),地址锁存允许/编程脉冲输入,用 ALE 锁存从 P0 口输 出的低 8 位地址。在对片内 EPROM 编程时,编程脉冲由此输入。 PSEN (29 脚),外部程序存储器读选通信号,PSEN 端可以驱动 8 个 LSTTL 门电路,低电平有效。 EA(31 脚)

18、,访问外部存储器允许/编程电压输入。EA 为高电平时,访 问内部存储器;低电平时,访问外部存储器。 3.1.3 单片机最小系统设计 基于 ST89C52 的单片机最小系统如图 3.3 所示,整个单片机最小系统由复位 电路部分、晶振电路部分、辅助电路等三个部分组成。 复位电路是由极性电容 C1 和电阻 R3 组成的,其中电容 C1 为 10uF,电阻 R3 的阻值为 10K,复位电路的工作原理是利用电容电压不能突变的性质进行设计 的,一旦供电,RESET 脚就会出现高电平,并且高电平持续时间是由 R 和 C 的 大小决定的,只有当 RESET 引脚上出现两次及两次以上的高电平才会复位,所 以选取

19、适当的 R 和 C 就可以保证及精准又可靠的复位。 晶振电路是由两个电容及一个晶振组成的,其中两个电容分别为 C2 和 C3, 其大小为 30pF,晶振 X1 的大小为 12M。电容的作用是帮助晶振更加容易的起振, 所以电容的大小将影响起振的效果,晶振越大效果越好,取值范围为 15-33pF,所 以我们取整数 30pF。而晶振的取值也可以是 24M,因为晶振越大单片机的执行 速度就越快,所以在设计单片机最小系统时,晶振电路离单片机越近越好。 辅助电路是由一个 10K 大的排阻 R1 和电源组成,其作用就是在扩展 I/O 口 时使用,以便接 LCD1602 液晶显示器。 因为 STC89C52

20、的 P0 口是漏极开路输出,所以在 P0 口接了一个 10K 的排阻 R1,这样子就可以使 P0 口作为普通的 I/O 口使用,而且 P0 口还得以充分利用, P2 口用作扩展用,用于接外部扩展的 RAM 和 ROM,本设计用 P0 口来做液晶的 数据口。单片机最小系统如图 3.3 所示。 二类优质# 图 3.3 单片机最小系统电路 3.2 液晶显示器电路设计 3.2.1 1602 液晶显示器的简介 液晶显示器是一种显示器件,具有小体积、轻重量、低功耗等特色。由于其 功耗低、显示的信息量大(例如,文本,图形,曲线等)、无电磁辐射、使用寿 命长,它已被广泛应用在便携式电子产品。 本系统采用的 1

21、602 是一款物美价廉的液晶显示屏,可以显示 2 行标准字符, 每行共有 16 个字符。在通信系统,智能操作仪表和办公设备的自动化中被广泛 的应用,主要功能是显示 ASCII 字符,因此被称为“字符型显示装置”。当在内 部没有适合的汉字库的液晶类型显示器想要表达汉字的时候,第一步就是要获得 想要的汉文或者图形的子模数据。子模块的软件不能直接提取子模块的数据 5*8 点阵,可以从手工提取汉字的字体以模具。第二步,把取得的汉字子模数据保存 在液晶存储器里面。 1602LCD 主要技术参数: 1)显示容量:16*2 个字符 2)芯片工作电压:4.55.5V 3)工作电流:2.0mA(5.0V) 4)

22、模块最佳工作电压:5.0V 5)字符尺寸:2.95*4.35(W*H)mm P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 RESET 9 P30/RX D 10 P31/TX D 11 P32/INT0 12 P33/INT1 13 P34/T0 14 P35/T1 15 P36/WR 16 P37/RD 17 X TA L2 18 X TA L1 19 G ND 20 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 A LE 30 EA 31 P07 32 P06

23、 33 P05 34 P04 35 P03 36 P02 37 P01 38 P00 39 V CC 40 U 1 STC89C52 12 X 1 12M C2 30pF C3 30pF V CC V CC 1 2 3 4 5 6 7 8 9 R1 103 C1 10uF R3 10K V CC P00 P01 P02 P03 P04 P05 P06 P07 EN RW RS P10 P11 P12 P13 P14 P15 P16 P17 二类优质# GND GND VCC VCC RS RW EN D0 D1 D2 D3 D4 D5 D6 D7 R1 103 GND VSS 1 VCC 2

24、VO 3 RS 4 RW 5 EN 6 D0 7 D1 8 D2 9 D3 10 D4 11 D5 12 D6 13 D7 14 A 15 K 16 LCD 1602 LCD1 1602 3.2.2 液晶引脚说明 第 1 脚:接地电源 VSS。 第 2 脚:5V 正电源为 VDD。 第 3 脚:VL 为液晶显示器对比度调整的端口,对比度的强弱由接电源的不 同决定,对比度的调整可以通过一个 10k 的电位器。 第 4 脚:RS 是寄存器选择,高水平的数据寄存器,低选择指令寄存器。 第 5 脚:R / W 的读和写信号线,高水平低的读操作,写操作。 第 6 脚:使能端 E,当 E 端由 1 至 0

25、 时,液晶模块中的命令开始被运行。 第 7 至 14 脚:D0-D7 为 8 位双向数据线。 第 15 脚:背光源正极。 第 16 脚:背光源负极。 3.2.3 液晶显示模块电路 液晶模块的电路的连接图如图 3.4 所示,LCD1602 一共有 16 个引脚,引脚 1 和引脚 2 分别接到了电路的地和电源,这 2 个脚是液晶工作时电源输入端引脚。 而第 3 引脚则是通过一个 10K 的滑动电阻器连接到地端,可通过调节该电位器来 调节液晶的清晰度。第 4 脚是液晶的寄存器控制脚,接到了单片机的 P12 脚上。 第 5 脚是液晶的读写控制脚,接到了单片机的 P13 脚上。第 6 脚是液晶的使能端

26、脚,接到了单片机的 P14 脚上。第 7 脚到第 14 脚是液晶的数据/地址 8 位总线, 接到了单片机的 P0 口上。最后第 15 脚和第 16 脚是液晶的背光电源脚,直接连 接系统 VCC 和 GND。 图 3.4 液晶模块连接图 二类优质# 3.3 电源电路的设计 本设计是采用 USB 借口提供电源供电的,由于通过 USB 的电源输出的电压 都为 5V,符合给单片机和液晶的供电电压,所以可以直接给单片机和液晶供电, 电源电路设计较为简单,不需要加稳压和降压电路,只需要一个 USB 接口和按 键开关即可,电源电路的连接图如图 3.5 所示。 图 3.5 电源电路 3.4 按键电路设计 按键

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

28、下了,就不再检测其它的按键,这完全能满足绝大多数 需要,又能节省大量的 CPU 时间。 本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了 CPU 效率, 也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占 用 CPU 时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。 本设计由于用到的按键比较多,故采用矩阵键盘的方式和单片机进行连接, 不同按键按下具有不同的按键功能,本设计共用到的按键共 16 个,除去 10 个数 字键后,剩下的六个按键功能分别为加、减、乘、除、等于、清除。按键的连接 J1 DC5.5 1 2 34 5 6 SW1 VCC 二类优质#

29、 K1K2K3K4 K5K6K7K8 K9K10K11K12 K13K14K15K16 P10 P11 P12 P13 P14 P15 P16 P17 图 3.6 所示。 图 3.6 按键电路 3.5 总体电路图设计 总体电路图见附录 I 所示。 二类优质# 第 4 章 软件设计 4.1 主程序流程图设计 主程序的功能主要是 LCD 显示与清屏、液晶的光标定位、液晶初始化、键 盘扫描、按键处理、子程序调用和判断当前状态等。 主程序的设计是整个程序设计的最重要的部分,不仅可以体现设计人的思 想结构,还可以体现出设计人对设计理解的深度和认识的程度。 主程序流程图如下图 4.1 所示。 Y是否 N

30、图 4.1 主程序流程图 4.2 子程序流程图设计 子程序设计包括键盘扫描子程序和显示模块子程序的设计。 开始 系统初始化 LCD 显示 按键处理 判断当前状态 是否继 续进行? 结束 二类优质# 键盘扫描子程序,首先读出P1的低四位,然后读出P1口的高四位。然后键值 并显示缓存。然后将键如的值转换为ASCII码然后就可以软件来设置硬件按键各 个键代表的内容。 读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。 第一次所有行线均输出低电平,从所有读入键盘信息(列信息);第二次所有列 线均输出低电平,从所有行线读入键盘信息(行信息)。数字键按下则将相应的 数字送入缓存区,功能键

31、按下则执行相应的程序。 显示模块程序首先要对显示模块进行初始化;然后控制光标的位置;定义液 晶显示的控制端口,用SBIT指令完成;然后设置清屏、关闭显示、归位、开显示、 显示位置的首地址等等。 子程序的设计是整个设计的中间部分,用于主程序中的指令的调用,主要是 运算部分的加、减、乘、除和功能部分的等于、清零等。除此之外,在本设计中 又添加了错误显示和负数运算的功能。 子程序流程图如下图4.2所示。 N Y 图 4.2 子程序流程图 清屏 扫描键盘 加减乘除运算 子程序 液晶显示 返回 开始 显示结束? 二类优质# 第 5 章 系统调试与分析 5.1 系统调试 调试是整个系统功能否实现的关键步骤

32、,我们将整个调试过程分为两大部分: 硬件调试和软件调试。 硬件调试主要工具是万用表和烙铁等工具,主要是为了排查板子焊错线、焊 少线、短路和断路等情况。可通过电压、电流、电阻等物理量的测量,再进行推 测,最终发现存在问题的地方,利用烙铁进行维修。 通常软件调试应具备四种技能,跟踪、断点、查看变量和更改数值等。整个 程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能 平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最 初阶段就是把各个子程序模块进行分别调试。 5.2 实验数据与分析 本设计是简易计算器的设计,由单片机最小系统、矩阵键盘、液晶显示、晶 振电路等

33、部分组成,具体实物如下图 5.1 所示。 图 5.1 实物图 此设计是简易计算器的设计,除存在一些简单的运算如:加、减、乘、除等 基本运算外,还有错误显示、负数运算等部分功能,以下为实物运行状态下的简 二类优质# 单运行的结果: 1)加减法运算:例如 9 加 6 等于 15 得运算如下图 5.2 所示,9 减 4 等于 5 的运算如图 5.3 所示。 图 5.2 加法运算 图 5.3 减法运算 2)乘除法运算:例如 2 乘以 8 等于 16 的运算如下图 5.4 所示,99 除以 9 等 于 11 的运算如下图 5.5 所示。 图 5.4 乘法运算图 5.5 除法运算 本次设计加减法的最高位只

34、能为 4 位数,超过四位数将不显示,运行结果将 只会运行之前显示的前四位数之间的运算,也就是说当按键被按下五次,五次之 间没有运算符号键的按下时,将只显示前四次的按键结果,同时不显示的数也不 会参与运算。 简易计算器的设计不仅只有加、减、乘、除等基本运算,而且还有负数运算 和错误显示的功能,使得计算器更加灵活,应用更为方便,所适用的场合也越来 越多。 3)错误显示:当除数为 0 时出现错误显示,例如 22 除以 0 出现错误的运算 二类优质# 如下图 5.6 所示。 图 5.6 错误显示 4)负数运算:例如 3 减去 9 等于负 6 的运算如下图 5.7 所示。 图 5.7 负数运算 以上为简

35、易计算器的加、减、乘、除及负数运算和错误显示的结果,从显示 中可以看出来本次设计的程序是对的,运算结果没有错误,这也间接告诉我们中 间的焊接过程也没有出现问题,所以总结来说,本次设计还是比较成功的。 二类优质# 第 6 章 课程设计总结 单片机课程设计终于结束了,通过紧张的工作,完成了我的设计任务-简易 计算器的设计。总的来说,这次课程设计是还算成功的。当然,这其中也经历了 许多坎坷,但是在我的坚持不懈下,在郭老师的细心指导下,在同学们的热情帮 助下,最终克服了种种困难,取得了成功。 刚开始接到这个计算器的课程设计任务时,因为以前动手实践做过类似的 题目,于是在脑海中初步构建了编写程序的一些控

36、制程序。但是由于缺乏编写大 量程序的经验,不能如行云流水般的将全部的各部分代码写出,于是去网上查找 相关资料,了解计算器的输入控制原理、运算处理以及显示的原理。了解之后自 己尝试编写程序,在此过程中,其中键盘扫描和动态扫描显示扫描程序困扰了我 很久,经过几天的辛苦工作,终于初步把所需要的程序编好了,于是就用 Keil uversion5 进行仿真,在仿真期间也发现了许多错误,基本上都是平日容易犯的错 误,比如忘记了子程序标号、死循环程序、标点符号的漏写等。经过反复的编译 差错,仿真编译通过后,Keil 生成的 Hex 文件.然后将 Hex 文件导入仿真软件进 行仿真,发现软件与硬件不能够对应协

37、调工作,于是分别对软件和硬件进行检查, 经过反复的仿真调试,并且在郭老师和同学的热心帮助和自己对每个子程序进行 仿真观察下,终于在设计快结束时成功的调试出结果了。这就是我的课程设计的 经过,看似简单,过程却曲折艰辛。 通过这次单片机课程设计,我进一步加深了对单片机的了解。并进一步熟练 了对Keil软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以 前学习上存在的不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固, 对C语言掌握得不够好。通过与同学探讨和请教老师,终于把问题都解决了,并 加深了对计算器工作的原理的了解。做单片机课程设计时,先查阅相关知识,把 原理吃透,确定一个大的

38、设计方向,在按照这个方向分模块的把要实现的功能用 流程图的形式展示。学会了怎么样去制定计划,怎么样去实现这个计划,并掌握 了在执行过程中怎么样去克服心理上的不良情绪。总之,通过这次课程的设计, 进一步了解了单片机的应用及原理,收获很大,对软件编程、排错调试、查阅资 料等方面得到较全面的锻炼和提高。 二类优质# 参考文献 1 楼然苗,李光飞.单片机课程设计指导M.北京:北京航空航天大学出版社, 2012. 2 梅丽凤,王艳秋.单片机原理及接口技术M.北京:清华大学出版社,2015. 3 颜晖.C 语言程序设计M.北京:高等教育出版社,2012. 4 徐昆良,基于 AT89C52 单片机的简易计算

39、器设计与仿真J.电脑知识与技 术.2015,24(16):14-20. 5 槽瑞,徐森.基于单片机的计算器的设计J.科技视界.2012,12(4):121-121. 6 宋慧超.简易计算器的设计与仿真J.科技创新导报.2015,23(29):7-9. 7 吴洋.基于单片机的建议计算器的设计J.电子世界.2016,34(8):56-56. 8 李峡.基于单片机控制的简易计算器J.电子产品世界.2012,39(9):10-11. 9 吴芳琴.基于单片机的简易计算器设计J.电子世界.2015,17(19):20-22. 10 刘利华.简易计算器的设计与制作J.无线互联网科技.2014,13(4):1

40、7-19. 11 程晓艳.基于单片机控制的计算器设计J.才智创新.2013,13(4):5-7. 12 董雷刚.基于单片机的计算器的设计J.电脑知识技术.2012,31(4):42-44. 13 周怀芳.简易计算器的设计与实现J.天津联合学报.2013,25(6):11-12. 14 王丽琴.数字式计算器设计与仿真J.现代制造技术.2015,21(6):75-75. 15 李嘉诚.简易数学计算器设计与实现J.软件导刊.2015,35(5):14-16. 二类优质# 附录 I 总体电路图 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 RESET

41、9 P30/RXD 10 P31/TXD 11 P32/INT0 12 P33/INT1 13 P34/T0 14 P35/T1 15 P36/WR 16 P37/RD 17 XTAL2 18 XTAL1 19 GND 20 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE 30 EA 31 P07 32 P06 33 P05 34 P04 35 P03 36 P02 37 P01 38 P00 39 VCC 40 U1 STC89C5212 X1 12M C2 30pF C3 30pF 1 2 3 4 5

42、6 7 8 9 R1103 C1 10uF R3 10K J1 DC5.5 1 2 34 5 6 SW1 R2 103 VSS 1 VCC 2 VO 3 RS 4 RW 5 EN 6 D0 7 D1 8 D2 9 D3 10 D4 11 D5 12 D6 13 D7 14 A 15 K 16 LCD 1602 LCD1 1602 K1K2K3K4 K5K6K7K8 K9K10K11K12 K13K14K15K16 二类优质# 附录 II #include / 包含 51 单片机相关的头文件 #define uchar unsigned char/ 以后 unsigned char 就可以用 u

43、char 代替 #define uint unsigned int/ 以后 unsigned int 就可以用 uint 代替 #define ulong unsigned long/ 以后 unsigned ulong 就可以用 ulong 代替 sbit LcdRs_P = P27; / 1602 液晶的 RS 管脚 sbit LcdRw_P = P26; / 1602 液晶的 RW 管脚 sbit LcdEn_P = P25; / 1602 液晶的 EN 管脚 uint num1;/ 运算数 1 uint num2; / 运算数 2 ulong num3; / 计算结果 uchar ca

44、l; / 运算符号,1 加,2 减,3 乘,4 除 uchar num1_flag;/ 运算数 1 的输入标志 uchar num2_flag;/ 运算数 2 的输入标志 void DelayMs(uint time) uint i,j; for(i=0;itime;i+) for(j=0;j112;j+); / 1602 液晶写命令函数,cmd 就是要写入的命令 void LcdWriteCmd(uchar cmd) LcdRs_P = 0; LcdRw_P = 0; LcdEn_P = 0; P0=cmd; DelayMs(2); LcdEn_P = 1; DelayMs(2); LcdE

45、n_P = 0; / 1602 液晶写数据函数,dat 就是要写入的命令 void LcdWriteData(uchar dat) LcdRs_P = 1; LcdRw_P = 0; LcdEn_P = 0; P0=dat; 二类优质# DelayMs(2); LcdEn_P = 1; DelayMs(2); LcdEn_P = 0; / 1602 液晶初始化函数 void LcdInit() LcdWriteCmd(0 x38); / 16*2 显示,5*7 点阵,8 位数据口 LcdWriteCmd(0 x0C); / 开显示,不显示光标 LcdWriteCmd(0 x06); / 地址加

46、 1,当写入数据后光标右移 LcdWriteCmd(0 x01); / 清屏 / 液晶光标定位函数 void LcdGotoXY(uchar line,uchar column) / 第一行 if(line=0) LcdWriteCmd(0 x80+column); / 第二行 if(line=1) LcdWriteCmd(0 x80+0 x40+column); / 液晶输出字符串函数 void LcdPrintStr(uchar *str) while(*str!=0) LcdWriteData(*str+); / 液晶输出数字 void LcdPrintNum(uchar num) Lc

47、dWriteData(num+0 x30); / 矩阵键盘扫描程序,按键对应的返回值如下所示: / | 第 1 列 第 2 列 第 3 列 第 4 列 | / |第 1 行 1 2 310 | / |第 2 行 4 5 6 11 | / |第 3 行 7 8 9 12 | / |第 4 行 13 0 14 15 | / - / 如果扫描不到有按键按下,则返回 99 char KeyScanf() uchar ret=99; uchar temp; /*第一行按键的判断*/ P1=0 xfe;/ 让 P10 口为低电平 二类优质# temp=P1/ 变量 temp 保存 P1 口高 4 位的电平

48、状 态 switch(temp)/ 根据 temp 变量的值,判断不同的 按键 case 0 x70: ret=1; break;/ 第一个按键被按下 case 0 xb0: ret=2; break;/ 第二个按键被按下 case 0 xd0: ret=3; break;/ 第三个按键被按下 case 0 xe0: ret=10; break; / 第四个按键被按下 /*第二行按键的判断*/ P1=0 xfd;/ 让 P11 口为低电平 temp=P1/ 变量 temp 保存 P1 口高 4 位的电平状 态 switch(temp)/ 根据 temp 变量的值,判断不同的 按键 case 0

49、 x70: ret=4; break;/ 第一个按键被按下 case 0 xb0: ret=5; break;/ 第二个按键被按下 case 0 xd0: ret=6; break;/ 第三个按键被按下 case 0 xe0: ret=11; break; / 第四个按键被按下 /*第三行按键的判断*/ P1=0 xfb;/ 让 P12 口为低电平 temp=P1/ 变量 temp 保存 P1 口高 4 位的电平状 态 switch(temp)/ 根据 temp 变量的值,判断不同的 按键 case 0 x70: ret=7; break;/ 第一个按键被按下 case 0 xb0: ret=

50、8; break;/ 第二个按键被按下 case 0 xd0: ret=9; break;/ 第三个按键被按下 case 0 xe0: ret=12; break; / 第四个按键被按下 /*第四行按键的判断*/ P1=0 xf7;/ 让 P13 口为低电平 temp=P1/ 变量 temp 保存 P1 口高 4 位的电平状 态 switch(temp)/ 根据 temp 变量的值,判断不同的 按键 case 0 x70: ret=13; break;/ 第一个按键被按下 case 0 xb0: ret=0; break;/ 第二个按键被按下 case 0 xd0: ret=14; break;/ 第三个按键被按下 case 0 xe0: ret=15; break; / 第四个按键被按下 二类优质# return ret; / 返回按键的扫描结果 / 主函数 void main() uchar ret; uchar i; LcdInit(); while(1) LcdWriteCmd(0 x01); / 清除屏幕显示 LcdWriteCmd(0 x0f); / 开启光标闪烁 num1=0; / 运算数 1 清零 n

温馨提示

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

评论

0/150

提交评论