版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2013 届毕业设计(论文)题目 :多功能计算器的设计学院 :浦江学院专业 :电子信息工程班级 :电子 0904姓名 :于颖指导教师 : 袁建华起讫时间 :2012-11-01 2013-06-102013 年 6 月多功能计算器的设计摘要本设计就是利用单片机的原理来进行多功能计算器的设计的,设计过程中的主控制器 选用了 AT89C52单片机,采用 TC1602液晶显示器,输入按键为 44 矩阵键盘,通过软硬 件相结合,来实现整数的“加” 、“减”、“乘”、“除”运算。在计算器基本功能顺利完成的 基础上,对系统进行了简单的扩展,增加了电子表功能,达到预期的要求,系统功能也更 加完善。本计算器系
2、统简单,实用性强,成本低,使用维护方便,软件功能强,运行稳定 可靠等优点。关键词 :计算器,运算,扩展Design of multi-function calculatorABSTRACTThis design principle is the use of single-chip design for multi-function calculator, the design process of the main controller selects the AT89C52 microcontroller, using TC1602 LCD monitors, input keys for
3、 the 4 4 matrix keyboard, through a combination of hardware and software to achieve integer plus, minus, multiply, in addition to operation. The successful completion of the basic functions of the calculator, based on a simple extension of the system, increasing the spreadsheetf unctions, to achieve
4、 the desired requirements, the system functions more perfect. This calculator system is simple, practical, low cost, easy maintenance, software features strong, stable and reliable.Key Words:Calculator , Operation , ExpandIIII目录摘要 IABSTRAC.T I I第一章 绪论 . 11.1 引言 . 11.2 设计任务 . 11.3 论文结构 . 2第二章 课题背景 .
5、32.1 AT89Cxx 系列单片机的简介 . 32.2 计算器系统简介 . 42.3 计算器的总体功能描述 . 5第三章 计算器的硬件系统设计 . 63.1 计算器的硬件系统框架 . 63.2 最小系统的设计 . 63.3 键盘接口电路的设计 . 83.4 显示电路的设计 . 93.5 DS1302 实时时钟电路的设计 . 10第四章 计算器的软件系统设计 . 124.1 汇编语言和 C语言的特点及选择 . 124.2 主模块程序的设计 . 134.3 键盘扫描模块程序的设计. 144.4 运算模块程序的设计 . 164.5 显示模块程序的设计 . 174.6 DS1302 实时时钟模块程序
6、的设计 . 19第五章 计算器系统的组装与调试. 215.1 软件系统的调试与仿真 . 215.2 硬件系统的组装与调试 . 22第六章 总结和展望 . 25参考文献 . 26III附录一 计算器电路原理图 . 27附录二 程序代码 . 28致谢 . 41IIVI南京工业大学本科生毕业设计 (论文)第一章 绪论1.1 引言当今社会, 随着科技的不断发展与进步, 人民生活水平和物质水平的不断提 高,多种多样的电子产品走进了千家万户,给我们的生活、学习、工作、娱乐提 供了很多的便利。在这当中,计算器作为一种简单,快捷的操作,正确率高,被 广泛用于便携式计算工具,已经成为人类生活中不可或缺的助手。单
7、片机是计算机、 自动控制和大规模集成电路技术相结合的产物, 融计算机 结构和控制功能于一体, 因此除单片机外它还有其他名称,例如“嵌入式微处理 器”、“微控制器”、“嵌入式微控制器”等。如今,单片机凭借其微小的体积和低 廉的成本在各个领域被广泛使用,例如用于家用电器、工业控制等, 所以许多大 学里都开设了单片机原理与应用这方面的课程。 这是一门结合了技术性和实践性 的学科,学习及研究它不论对我们自身还是社会的发展都是及其有意义的。计算器就是利用单片机制作的产物, 所以本设计的主控制器选用了 AT89C52 单片机,采用 TC1602液晶显示器,输入按键为 44矩阵键盘, 通过软硬件相结 合,来
8、实现整数的“加”、“减”、“乘”、“除”运算。在此基础上还加入了 DS1302 实时时钟电路的设计,使其本省还具有了电子表的功能。1.2 设计任务这次设计主要是通过单片机的原理和应用, 在电子技术基础的基本理论的指 导下,我采用 Protues 仿真软件和 eil 编程软件来进行设计计算器,然后制作 实物。它的主要设计任务有以下几个部分,首先是硬件系统的设计,然后运用 keil 进行软件系统部分的设计。利用 protues 仿真平台,进行软件部分调试及 仿真;对照设计好的仿真图进行计算器实物的焊接。 在将软件程序放入硬件之后, 对整体电路进行调试与测试,看是否存在问题。第一章 绪论1.3. 论
9、文结构本文共由六章组成,第二章为基础理论部分,介绍单片机的发展现状、 AT89Cxx 系列单片机的简介 ,计算器系统简介计算器的总体功能描述 , ;第三章为 计算器的硬件系统设计, 从结构上分析计算器的硬件系统框架, 最小系统的设计 , 键盘接口电路的设计,显示电路的设计及 DS1302 实时时钟电路的设计; 第四章 介绍计算器的软件系统设计, 主要介绍主模块程序的设计, 键盘扫描模块程序的 设计,运算模块程序的设计,显示模块程序的设计以及 DS1302 实时时钟模块程 序的设计;第五章为计算器系统的组装与调试, 对系统的软硬件分别进行了调试; 第六章为论文总结,对本次毕业设计做了相关小结并提
10、出了下一步要做的工作。南京工业大学本科生毕业设计 (论文)第二章 课题背景2.1 AT89Cxx 系列单片机的简介MCS-51系列单片机具有性能优越,技术成熟,可靠性高,成本效益的优点,所以其迅 速占领了工业测量和控制及自动化工程的主要市场,成为主流的芯片应用。由于其卓越的 性能和完美的结构,导致后来许多微控制器制造商多遵循参考它的架构。和爱特梅尔公司 一样,飞利浦,达拉斯和其他领先的半导体公司已经推出与 MCS-51 单片机产品兼容。这 些知名厂商加入 51系列获得了突飞猛进的发展,进一步丰富和发展的 51 系列,产品性能 有了很大的提高。其主要特性有:1、80C51核心处理单元。2、64/
11、32/16/8 B片内 Flash ROM,具有在应用可编程( IAP)、在系统可编程( ISP) 的功能,可实现远程软件升级,无需编程器。3、1K字节 RAM;4 、双 DPTR数据指针;5、支持 6 时钟或 12 时钟模式;6、4个8位 I/O 口, P1 口、 P2口、 P3口可直接驱动 LED;7、SPI 和增强型 UAPT;8、有 PCA(可编程计数器阵列) ,具有 PWM的捕获/ 比较功能;9、3个 16位定时器/计数器;10、可编程看门狗定时器;11、低 EMI方式( ALE禁止);12、兼容 TTL和 COMS逻辑电平;13、掉电模式和低功耗模式等;14、全静态操作 0Hz 2
12、4Hz;图 2-1 为 AT89Cxx 系列单片机的引脚排列图:第二章 课题背景图 2-1 AT89Cxx 系列单片机引脚排列图2.2 计算器系统简介计算器的组成包括运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设 备及电子配件通过人工或机器设备。低级计算器运算器,控制器由数字逻辑电路简单的串 行操作,随机存取存储器是只有一个或两个细胞,用于累加存储。高级计算器和只读存储 器由微处理器来实现各种复杂的计算程序,有更多的随机存取记忆体单元来存储程序和数 据输入。键盘是计算机输入成员,一般的接触或传感器类型。为了减少计算器的大小,一 键常常有多种功能。计算机显示输出部件,发光二极管显示器
13、,液晶显示器等。除了显示 的结果,但也经常会有溢出指示,错误指示。计算器的电源使用AC 电源适配器或电池,电池或太阳能供电的 AC 转换器转换器充电。为了节约能源,计算器生产大规模集成电路 采用 CMOS工艺(互补型金属 - 氧化物 - 半导体集成电路),内部配备掉电定时器电路不 自动操作。计算器可选外设,微型打印机,盒式磁带驱动器和磁机。南京工业大学本科生毕业设计 (论文)2.3 计算器的总体功能描述这次设计是多功能计算器的设计,所以它实现的不仅仅是简单的运算,还添加了电子表的功能,其主要实现功能如下所述:1、本设计为基于单片机的多功能计算器的设计, 它的基本功能是进行四则运算 “加”、 “
14、减”、“乘”、“除”;2、进行基本的四则运算,键盘由 16 个键组成,其中包含数字键 09,符号键“ +”、“- ”、“ * ”、“ /”、“ =”和清零键;3、设计运算的过程中的数字和符号在显示器上都需要显示,按下“=”号键时,计算结果自动显示出来;4、可以连续多次的运算,也就是说前面计算所得的结果还可以作为后面运算的第一个值;5、错误提示,例如除数为 0,或者运算结果超过了计算器本身设定的范围时 (溢出 ),可以在显示器上提示错误并内部归零;6、附加功能:在以上几点完成的情况下对系统进行下一步的扩展,增加了时钟芯片, 这样系统既可以作为计算器,也可作为电子表,电子表具有调时。第三章 计算器
15、的硬件系统设计第三章 计算器的硬件系统设计3.1 计算器的硬件系统框架计算器的硬件系统框架如图 3-1 所示:按键及键扫电路显示电路单片机复位、晶振电路实时时钟电路电源系统图 3-1 计算器的硬件系统框架图3.2 最小系统的设计单片机最小系统一般由单片机,复位电路和晶振电路组成,我们在设计中总是喜欢把 按键输入、显示输出等加到上述电路中。1、单片机的选择在前面我们已经介绍了 AT89C 系列的单片机,本设计中我们采用 AT89C52 单片机, 它的性能好,价格低。其引脚图如图 3-2 所示。南京工业大学本科生毕业设计 (论文)图 3-2 AT89C52 引脚图2、晶振电路的设计本次设计的系统对
16、于时间要求不是很高,只要按图来进行设计就可以使系统可靠起振并运行的稳定。但是由于图中的电容 C2、C3 的作用是对系统时钟频率的微调和稳定,所以在这次计算器系统的实际应用中一定要注意正确选择参数(本设计采用30pF),振荡频3-3 所示。率范围是 1.2MHz12MHz,这里采用 11.0592MHz 是因为可以准确地得到 9600 波特率和19200波特率,便于和计算机进行串口通讯。晶振电路的设计如下图图 3-3 晶振电路3、复位电路的设计 本次设计对复位电路部分的考虑还是蛮周到的,因为复位电路对这次设计来说是很重 要的。当程序运行出错或操作错误导致系统死锁状态时,为了让系统化险为夷,需要按
17、复第三章 计算器的硬件系统设计位键重新启动单片机。复位操作包过加电复位和手动复位,其中,按键手动复位分为电平方式和脉冲方式两 种。这次设计中,手动复位明显比加电复位更适合,所以在这里采用按键手动复位中的按 键电平复位,电路设计如图 3-4 所示。图 3-4 按键电平复位电路3.3 键盘接口电路的设计这次设计是基于单片机的计算器的设计,并没有要求进行复杂的运算,因此,采用 4 4矩阵式键盘 16 个键来实现基本的“加” 、“减” 、“乘” 、“除”运算即可。矩阵式键盘的硬件结构比较简单,有行输出口和列输出口构成行列式键盘,按键设置 在行、列的交点上。44 矩阵式键盘具体按键安排如表 3-1:表
18、3-1 4 4 矩阵式键盘第0列第1列第2列第3列第0行0123第1行4567第2行89+-第3行*/=复位电路设计如图 3-5 所示,图中 1.、2、3、4 分别接单片机的 P10P13口,5、6、7、8 分别接 P14P17 口。南京工业大学本科生毕业设计 (论文)图 3-5 键盘接口电路3.4 显示电路的设计单片机应用系统中常用的 LED 显示器件有 LED 数码管显示器和 LED 液晶显示器两 种。液晶显示器和 LED 数码管显示器对比来说虽然价格贵点, 但是它的显示功能强大, 体 积小、功耗低、界面清晰,便于观察。这次设计进行的是计算器设计,如果用液晶作为显示器,两行就足够了,一行显
19、示算 式,一行显示结果,所以这次设计选择 TC1602 字符型液晶模块进行显示。TC1602的工作原理:TC1602显示模块采用点阵图形来显示字符, 显示分为 2行、每行16个字符或 1行16 个字符两种模式,常用模式为 2 行 16 个字符。它包含 16 个引脚,引脚功能如下表 3-2:表 3-2 TC1602 显示模块第 1 脚 GND电源地第 2 脚 Vcc接 +5V 电源第 3 脚 VL液晶显示器调整对比度端第 4 脚 RS寄存器选择信号线。高电平时进行读操作,低电平时选择指令寄存器第 5 脚 RW读写信号线第6脚E使能端,当 E 端由高电平跳变成低电平时, 可以写入数据9第三章 计算
20、器的硬件系统设计第 714 脚8 位双向数据线 D0 D7第 15 脚 BLA背光电源正极输入端第 16 脚 BLK背光电源负极输入端。 BLA 接正,BLK 接负 便会点亮背光灯TC1602引脚电路图如图 3-6 所示:图 3-6 TC1602 电路图图中 714 脚接单片机的 P0口。TC1602液晶显示模块内置有字符发生 ROM,字符发生 RAM 和字符显示 RAM ,字符 发生存储器已经存储了 192 个不同的点阵字符图形,每一个字符都有固定的代码,可以通 过查表找出所需要显示的字符的地址让其在液晶中显示出来。3.5 DS1302 实时时钟电路的设计在这次设计中, DS1302 时钟电
21、路是系统扩展的一个模块,属于附加功能,它跟计算 器是不属于一个部分的,在上学期创新设计的基础上,我多添加了这个模块,这样我的计 算器除了计算功能外,还多了一项电子表的功能,使系统功能完善了许多。我设计的计算 器和电子表两种模式可以用一个独立按键来进行切换,而且是在同一块液晶屏上显示。实时时钟电路 DS1302 的主要特点是采用串行数据传输,可以为电源提供可编程 的充电功能, 并且还可以关闭充电功能, 采用普通 32.768kHz 晶振,工作电压为 2.5V 5.5V 。它可以对年、月、日、周、日、时、分、秒进行计时,还具有闰年补偿等多种 功能。但是这次设计,我设计的只是电子表,所以只需要时、分
22、、秒,很多功能不可 以体现出来,我准备在以后对系统进一步扩展,比如可以做个万年历,这样时钟芯片 就可以得到充分的利用。其引脚功能如表3-3 所示:10南京工业大学本科生毕业设计 (论文)表 3-3 DS1602 引脚功能第 1脚 Vcc2第 1脚 Vcc2第2脚 X1和第3脚 X2振荡源,外接 32.768HZ 的晶振第 4脚 GND地线第5脚 RST复位 / 片选线第 6脚 I/O串行数据输入 /输出端(双向)第 7脚 SCLK串行时钟输入第 8脚 Vcc1后背电源DS1302 引脚电路图如图 3-7所示:图 3-7 DS1302 电路图在对该模块进行设计时,我选用了 4 个独立式按键,它们
23、的功能分别是: “设置” 、 “确认” 、“+” 、“- ” ,用来准确的设置时间。设置方法如下:首先按设置键 1 下, 可按“ +”、“- ”对“小时”进行设置,设置完毕按确认键退出;和前面一样,按设置键2下对“分”进行设置,按设置键 3 下对“秒”进行设置。11第四章 计算器的软件系统设计第四章 计算器的软件系统设计 这次设计需单片机硬件电路及软件编程相结合,在单片机的应用系统程序设计时,一 般选用汇编语言和 C 语言。通过 4.1 的概述,这次设计我选择用 C 语言进行编程。4.1 汇编语言和 C 语言的特点及选择这次设计我用的是硬件电路和软件编程相结合的设计方案,所以选择合适的编程语言
24、 是很重要。在进行单片机的应用系统程序设计时,常见的有汇编语言和C 语言两种。 C 语言虽然执行效率没有汇编语言高,但是它语言简单,便于操作,运算丰富,表达化类型多 种多样,数据结构类型也很丰富, 可以大大提高大大提高单片机应用系统研制开发的效率, 而且它的易移植性也有助于打破不同单片机系列之间的界限。如今单片机的发展水平已经 达到了一定高度,内部资源相当丰富, CPU的处理速度非常快。我觉得这次设计用 C 语言 来控制单片机是一个不错的选择。所以在这次设计中我选择 C 语言来编写程序代码。主函数设计:函数声明*/#include #include #define uchar unsigned
25、 char uchar key;uchar rrr=0xff;uchar alldata12=0;uchar love14;uchar exit=0,yes=0,kind=0,fu=0,pfu=0,position1=0,position2=0;unsigned long data1=0,data2=0,data3=0,ddata=0;uchar keyscan(void);void display(uchar);void prodis(void);void clear(void);void datapc(void);void remove0(void);void data3dis(void)
26、;void main()init();12南京工业大学本科生毕业设计 (论文)while(1) key=keyscan(); delay(); if(exit=1) display(key); 4.2 主模块程序的设计主模块是可以说是本次设计的主框架。在进行结构化程序设计时经常会用到“从上到下”和“从下到上”两种方式,而“从上到下”法的核心便于主框架的构建。它的好坏直 接影响到程序最终功能的实现。本设计的主要目的是实现计算功能,而不是电子表,仅在 计算器功能的基础上,成功完成附加功能的电子表格,所以时间的优先级的设计,该系统 应被引导到一种计算模式,而不是电子表格模式,设计完成后我可以根据需要
27、在两者之间 切换,主模块的程序流程图如图 4-1 所示。13第四章 计算器的软件系统设计图 4-1 主模块程序流程图4.3 键盘扫描模块程序的设计矩阵按键扫描程序是用来节省 I/O 口的,它可以根据按键数目的多少来节省对应的 I/O 口。键盘扫描模块程序的流程图如图 4.2 所示。键盘扫描子程序应具有以下功能:(1)如果键有按下,就计算键值。它的方法为:行输出口输出全为0,读列输入口信息,如果列输入值全为 1,没有键按下;如果不是为全 1,有键按下,对应的计算键值。14南京工业大学本科生毕业设计 (论文)(2) 去除按键抖动。在按键操作过程中,按键受到弹性的影响会导致按键的机械触 电在闭合及断
28、开的瞬间发生抖动的现象,导致按键不能马上实现完全闭合或断开,并使输 入电压信号也会出现抖动现象, 抖动时间的长短根据按键的机械特性决定。 在实际应用中, 应大于 20ms,否则,就会发生按一次做多次处理的情况,从而程序不能正常执行。(3) 判断按键是否释放。首先要计算出闭合键的键值,然后对按键判断是否释放。如果按键释放就等待;如果键已经释放,那么就再延时消抖。(4) 命令处理。输入闭合键的键值后,程序自动实现该键已经设定的功能。15第四章 计算器的软件系统设计4.4 运算模块程序的设计在这个模块中,我要实现“加” 、“减”、“乘”、“除”四种整数的运算,需要定义三个 数:x、y、z ,类型为长
29、整型( -2147485648+2147485647);其中 x 为第一个数, y 为第 二个数, z 为两数运算的结果。这次设计还要求可以根据需要进行连续多次的运算,即把 c 的值赋给 x,输入运算符,再输入 y,按下“=”号,再得到 z,再赋给 x ,以此反复执行。在运算中 x 的值有可能是负数,而 y 必定是正数,所以我在进行“加” 、“减”、“乘” 三种运算时都可能会有溢出,都需要进行报错;在除法运算时,若除数为0,也需要报错。设 d=+2147485647, e=-2147485648,判断溢出的方法是:(1)加法:当 0xd-y ,则溢出;(2)减法:当 exx-e ,则溢出;(3
30、)乘法:当 0xd/x ,则溢出;当 exe/x ,则溢出;这次需要当心的地方就是在设计过程中除法运算时为了保留四位小数需对 z 转化为 float 型并进行 10000的操作,可以想象当 z +214748.5647时, z 扩大一万倍就不再属 于长整型的范围了,这就产生了溢出错误。为了阻止这种情况的发生,这次设计规定了当 z +214748.3645 或 z-214748.5648 时,结果显示不保留小数;当 z-214748.5648 时,结果显示保留四位小数。运算模块程序流程图如图 4-3 所示。16南京工业大学本科生毕业设计 (论文)图 4-3 运算模块程序流程图4.5 显示模块程序
31、的设计在这次设计中,显示器上只需要显示数字和符号,不需要显示图形或者汉字,而且需要显示的数字和符号都有在 TC1602 液晶模块内置的字符发生存储器里,在编程时,通过17第四章 计算器的软件系统设计查表就可得到相应字符的代码。显示程序的流程图如图 4-4 所示。在这个模块中,我们需要了解液晶的基本操作时序写指令和写数据。写指令:输 入:RS=L,RW=L,D0D7=指令码,E=高脉冲;输出:无。写数据:输入:RS=H,RW=L, D0D7=数据, E=高脉冲;输出:无。18南京工业大学本科生毕业设计 (论文)4.6 DS1302 实时时钟模块程序的设计从前面已经了解到了时钟芯片的功能很强大,设
32、计这部分程序前,我必须对 DS1302 有关日历、时间的寄存器进行深入的了解。在本设计中,我只用到了时间,所以我在这里 就只对时间寄存器进行解释,时( 85H、84H)、分( 83H、82H)、秒( 81H、82H)寄存器 及控制寄存器( 8FH、8EH)介绍如表 4-1 所示。表 4-1 时、分、秒、控制寄存器介绍读寄存器写寄存器bit7bit6bit5bit4bit3bit2bit1bit0范围81H80HCH10秒秒005983H82H10分分005985H84H0020 时10 时时0238FH8EHWP0000000从表中,可以很明了的知道以上寄存器的功能和使用方法,需要说明的是控制
33、寄存器 的位 7(WP)是写保护位,其他七位都为 0,在对任何时钟和 RAM 进行写操作前, WP 必须为 0。当 WP 为 1 时,禁止对任一寄存器进行写操作,也就是说在电路上电的初始态 WP 为 1,必须先将它置为 0,才可进行写操作。还有秒寄存器的位 7 位定义为时钟暂停标 志( CH)位置为 1 时,时钟振荡器停止, DS1302 时钟芯片处于低功耗状态;为 0 时,时 钟开始运行。例如,执行以下语句,就在时钟芯片中写入了时间 11:20:05。write_ds1302(0x8e,0x00); /去保护write_ds1302(0x84,0x12); / 写小时, 11 时write_
34、ds1302(0x82,0x30); /写分钟, 20 分write_ds1302(0x80,0x01); /写秒钟, 05 秒 write_ds1302(0x8e,0x80); /写完后,上保护 DS1302 时钟程序流程图如图 4-5 所示。19第四章 计算器的软件系统设计图 4-5 DS1302 时钟程序流程图20南京工业大学本科生毕业设计 (论文)第五章 计算器系统的组装与调试5.1 软件系统的调试与仿真在本次设计中, C 程序是在 Keil 软件中编写并编译的, 在程序编写中主要出现了以下 问题:( 1)在进行编程的时候,因为程序过长过复杂,容易出现少了或多了一个“ ”的现象。(2)
35、有的变量所定义的类型错误,虽然程序没有错误,但仿真后结果错误。(3)事先未被定义的被调函数放在了主调函数的后面,导致错误。(4)事先定义的芯片引脚与仿真图中引脚不是同一个。(5)仿真的结果有时正确有时是乱码,例如: 6+15=21 正确,但若是运算 2148787845+26,结果就是乱码。这是因为系统本身定义的是长整型,而此结果已经溢出, 不属于长整型了,我们一眼就能看出是溢出,应该提示错误信息,但是计算机不能,所以 在编写程序时不能直接判断运算结果是否大于长整型,而应该间接判断,判断方法在运算 模块的设计中已讲解过。在 Keil 和 Protues 的联合调试下,经过了多次认真的分析与修改
36、,程序终于能实现我 预期的要求。Protues仿真如图 5-1 所示。21第五章 计算器系统的组装与调试图 5-1 Protues 仿真图5.2 硬件系统的组装与调试在成功的进行软件仿真后,下一步要做的就是焊接硬件实物了,焊在焊接前一定要认真阅读焊接注意事项,并在万能电路板上对各元件的放置进行合理布局,此时不仅要考虑 正面整体的美观,还要考虑背面布线的方便性,尽可能减少布线的复杂度。焊接好后要做的就是进行调试,这个过程中遇到的问题如下:(1)通过 STC-ISP软件把在 Keil 中生成的 .hex文件加载到单片机中, 开机,进行运算,发现液晶屏点亮但不显示任何数据,经过对电路的检查,发现本应
37、接地液晶第3 脚(VL)接到了电源端,改正后液晶可以显示。(2)液晶虽然可以显示了,但在进行计算时并不能正确显示,经过多次检查,发现硬 件并无错误,断定为软件的错误,最后发现软件中液晶初始化不完整,可是在仿真时是正 确的,这充分说明了仿真与实际硬件的区别。经过多次的调试,我的计算器终于能达到同仿真时一样的效果了。计算器实物如图 5-2 所示。22南京工业大学本科生毕业设计 (论文)图 5-2 计算器实物图计算器进行各种运算的截图如图 5-3 所示23第五章 计算器系统的组装与调试(e)除数为 0f )溢出错误g)时间显示图 5-3 运算器各种运算截图从上图可以看出,我做的计算器在运算部分和时钟
38、部分都能成功地运行了,它可以做 到基本的四则运算,还可以正确的显示时间,同时,在计算结果超出它本身的运算范围的 时候它会用英文提示错误。24南京工业大学本科生毕业设计 (论文)第六章 总结和展望我的题目是多功能计算器的设计,对于我们这些实践中的新手来说,这是一次考验。 如何才能把课堂上学到的东西和实际应用中的相结合?如何能让自己的水平有更多的提 高?如何让自己的计划变得更有序性,而不会忙无一用?这都是需要我考虑和努力的地 方。通过这次课程设计使我学到很多很多东西,学会了如何让去制定计划,如何去实现这 个计划,而且掌握了在执行过程中如何去克服心理上的不良情绪。不仅加深巩固了以前学 过的知识,而且
39、学到了许多书本上没有提到过的知识,学会了一种系统的研究方法,可以 进行一些简单的编程。同时通过这次设计,我体会到了大学四年学习中存在的不足,例如 没有深刻的理解以前老师教过的知识,没有系统的掌握所学内容,对C 语言的运用能力也很差。本来我是想增加键盘按键来实现除四则基本运算以外的运算功能的,但在实践中我发 现并不是我想的那么简单,在编写程序的时候我遇到了困难,使得我的想法只能被打断, 所以我又想到了在运算以外的其他部分添加功能,由于以前有电子时钟方面的实验经历, 所以我决定把它作为附加功能。在实物焊接的后期我还是遇到了一些困扰,因为如何把时 间显示在液晶显示器上而不影响计算器本省运算功能的操作
40、出现了问题,但最终经过我的 深思熟虑还是巧妙的化解了这个难题。在这次设计中刚开始我遇到了很多问题,最终还是被我成功的解决了,基本实现了我 最初的设想,也成功的实现了时钟功能。通过这次毕业设计使我懂得了要把理论上学会的 东西与实际中的结合起来,只有把二者合起来,通过理论得出结论,才能提高自己的实际 动手能力和独立思考的能力,更好的为社会服务。虽然我完成了计算器的设计,但我觉得在设计过程中还是存在许多不足的,只能算是 初步的完成了当初的想发。 现在市场上的计算器功能都很多, 我只能完成其中的一小部分, 限于个人水平、时间及条件的限制,这次毕业设计我也只能做到那么多。如果以后还有时 间对其进行的完善
41、的话,我会添加一些平方,开方等实用的功能,但这些功能的实现我还 要进行更加系统的学习。25参考文献参考文献1 何立民 .MCS-51 系列单片机应用系统设计 M. 北航版 ,19912 刘桂敏 . 单片机系统中复合键和一键多功能的设计 J. 辽宁科技大学学报 , 20113 胡汉才 . 单片机原理及其接口设计 M. 清华大学出版社, 19974 赵亮 . 单片机从入门到精通系列讲座矩阵键盘应用 J, 电子制作 , 20085 胡花 .单片机原理及应用技术 M. 江西高校出版社, 20086 刘杰 , 梁华国 . 矩阵式静态编码键盘及其接口电路 J. 阜阳师范学院学报 ( 自然科学版 ), 20
42、047 谢嘉奎 . 电子线路(非线性部分第四版) M. 高等教育出版社, 20088 徐玮. 51 单片机综合学习系统 1602 字符型液晶显示篇 J .电子制作 , 20089 张红, 于平. 基于单片机控制的 LED点阵显示屏系统 J. 微计算机信息 , 200910 孙育才 .MCS-51 系列单片微型计算机及其应用 M. 东南大学出版社, 200411 陈洪财 . 单片机 C语言和汇编语言使用开发技术 M. 哈尔滨工程大学出版社, 200812 王效华、张咏梅 . 单片机原理及应用 M. 北京交通大学出版社, 200713 彭伟.单片机 C语言程序设计实训 100 例M. 电子工业出版
43、社, 200914 王东峰,王会良,董冠强 . 单片机 C语言应用 100 例M. 电子工业出版社, 200915 程兴国 . 基于 Proteus 和 Keil 构建的单片机虚拟实验室 J. 福建电脑 , 200916 KPeter.Background Compensation forIRthermometersJ.Sensor,1990,7(3):67 68.26南京工业大学本科生毕业设计 (论文)附录计算器的硬件电路原理图计算器硬件电路原理图27附录附录 二源程序:#include / 头文件#define uint unsigned int#define uchar unsigned
44、 charsbit lcden=P26; /定义引脚sbit rs=P24;sbit rw=P25;sbit busy=P07;sbit key=P33;sbit setkey=P34;sbit surekey=P35;sbit pluskey=P36;sbit reducekey=P37;sbit ds1302_clk=P20;sbit ds1302_io=P21;sbit ds1302_rst=P22;bit w;unsigned temp0,temp1,hour,min,sec,next;char i,j,num;long int a,b,c,d,e; /a 第一个数 b 第二个数 c
45、得数int k,temp,kk;uchar flag,fuhao; /flag 表示是否有符号键按下, fuhao 表征按下的是哪个符号 uchar err=0x72,0x6f,0x72,0x72,0x65,;uchar code table=0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0;uchar code table1=0,1,2,3,4,5,6,7,8,9,0x2b-0x30,0x2d-0x30, 0x2a-0x30,0x2f-0x30,0x3d-0x30,0x01-0x30,;void delay(uchar z) /延迟函数 1msuchar y;for(z;z0;
46、z-) for(y=0;y0;t-) for(j=19;j0;j-);void delay2(uint t) /迟延函数 50ms uchar j;for(;t0;t-) for(j=6245;j0;j-);void write_ds1302byte(unsigned char temp1) /ds1302 写字节函数 unsigned char i;for (i=8;i0;i-) ds1302_io=temp1&0x01; ds1302_clk=0;ds1302_clk=1; temp1=1;void write_ds1302( unsigned char address,unsigned
47、char dat ) /ds1302 写数据函数 ds1302_rst=0;ds1302_clk=0;ds1302_rst=1;delay(1); write_ds1302byte(address); write_ds1302byte(dat);ds1302_rst=0;unsigned char read_byte() /ds1302 读字节函数 unsigned char i;for(i=8;i0;i-) if(ds1302_io) temp0=temp0|0x80; ds1302_clk=1; ds1302_clk=0; temp0=temp01;return temp0;29附录uns
48、igned char read_ds1302(unsigned char address)/ /ds1302 读数据函数 unsigned char temp1;ds1302_rst=0;ds1302_clk=0;ds1302_rst=1; write_ds1302byte(address); temp1=read_byte();ds1302_rst=0;ds1302_clk=1;return temp1;void ds1302_init() /ds1302 初始化 write_ds1302(0x8e,0x00);/wp 为 0,允许写操作delay(5);write_ds1302(0x84,
49、0x12);delay(5);/写入小时12点write_ds1302(0x82,0x30);delay(5);/ 写入分30分write_ds1302(0x80,0x00);delay(5);/写入秒00秒write_ds1302(0x8e,0x80);/WP 为 1,禁止写操作void check() /判忙函数doP0=0xFF;rs=0;rw=1;/读 rs rw 的值为 01lcden=0;/E=0,禁止读写delay(1);/等待,液晶显示器处理数据lcden=1;/E=1,允许读写while(busy=1); / 判断是否为空闲, 1 为忙, 0为空闲 void write_co
50、m(uchar com) /LCD 写指令函数 P0=com;rs=0;rw=0; lcden=0; check();30南京工业大学本科生毕业设计 (论文)lcden=1;void write_date(uchar date) /LCD 写数据函数 P0=date; rs=1;rw=0;lcden=0;check();lcden=1;void lcdinit() /LCD 初始化 delay2(2);write_com(0x38); /设定 DDRAM 地址, 5*7 点阵,8 位数据接口delay1(4);write_com(0x38); /(硬件中必须有,否则初始化不完整;软件仿真时可以
51、没有 ) void init() / 相关变量初始化delay1(4); write_com(0x0c); delay1(10); write_com(0x06);delay1(4); write_com(0x80);delay1(4); write_com(0x01); delay1(10);/开显示,光标关,不闪烁/增量方式不移位/设置数据地址指针/清屏lcden=1;delay(1);i=0;j=0;a=0;/第一个参与运算的数b=0;/第二个参与运算的数c=0; /a 与 b 的运算结果flag=0; /flag 表示是否有符号键按下, fuhao=0; / fuhao 表示按下的是哪个符号 void LCDTestWord(bit i,unsigned char word) if(i=0)31附录write_com(word);elsewrite_date(word);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古包头市融媒文化发展有限公司招聘12人考试笔试参考题库附答案解析
- 2026届清远市重点中学化学高一上期中经典试题含解析
- 数控机床订购合同范本
- 2025广西北海市农业农村局招聘4人笔试考试备考试题及答案解析
- 汽车销售预定合同范本
- 2025年黄山祁门县县级公立医院使用周转池编制招聘人员16人考试笔试备考题库及答案解析
- Module 3 Unit 1 Sam isn't tidying his room (教学设计)-2023-2024学年外研版(一起)英语二年级下册
- 无限预算装修合同范本
- 会议室工程合同范本
- 中核生产管理协议书
- 【浙商证券】餐饮系列研究之茶饮+咖啡深度:茶饮方兴未艾品牌格局渐明
- 企业规章制度制定的民主程序和流程
- 青马工程笔试题库及答案
- 《跨境电商》课件-跨境电商法律法规
- DBJ50T-123-2020 建筑护栏技术标准
- 三人合租房协议合同
- 直立性低血压诊断与处理中国多学科专家共识(2024版)解读
- 八年级上册,劳动技术,全册教案,湖南教育出版社
- 时代乐章第一课城市名片 课件 2024-2025学年人教版(2024)初中美术七年级上册
- 各科室迎检资料盒
- GB/T 2423.17-2024环境试验第2部分:试验方法试验Ka:盐雾
评论
0/150
提交评论