多功能计算器的设计_第1页
多功能计算器的设计_第2页
多功能计算器的设计_第3页
多功能计算器的设计_第4页
多功能计算器的设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、 2013 届毕业设计(论文) 题 目: 多功能计算器的设计 学 院: 浦江学院 专 业: 电子信息工程 班 级: 电子 0904 姓 名: 于颖 指导教师: 袁建华 起讫时间: 2012-11-012013-06-10 2013年6月I 多功能计算器的设计 摘要本设计就是利用单片机的原理来进行多功能计算器的设计的,设计过程中的主控制器选用了AT89C52单片机,采用TC1602液晶显示器,输入按键为4×4矩阵键盘,通过软硬件相结合,来实现整数的“加”、“减”、“乘”、“除”运算。在计算器基本功能顺利完成的基础上,对系统进行了简单的扩展,增加了电子表功能,达到预期的要求,系统功能也更

2、加完善。本计算器系统简单,实用性强,成本低,使用维护方便,软件功能强,运行稳定可靠等优点。关键词:计算器,运算,扩展 Design of multi-function calculatorABSTRACT This 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

3、 keys for 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

4、 of the system, increasing the spreadsheet functions, to achieve 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 , Expand目 录摘要IABSTRACT

5、II第一章 绪论11.1引言11.2设计任务11.3论文结构2第二章 课题背景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实时时钟模块程序的设计19第五章 计算器系统的组装与调试

6、215.1软件系统的调试与仿真215.2硬件系统的组装与调试22第六章 总结和展望25参考文献26附录一 计算器电路原理图27附录二 程序代码28致谢41III南京工业大学本科生毕业设计(论文)第一章 绪论1.1引言当今社会,随着科技的不断发展与进步,人民生活水平和物质水平的不断提高,多种多样的电子产品走进了千家万户,给我们的生活、学习、工作、娱乐提供了很多的便利。在这当中,计算器作为一种简单,快捷的操作,正确率高,被广泛用于便携式计算工具,已经成为人类生活中不可或缺的助手。单片机是计算机、自动控制和大规模集成电路技术相结合的产物,融计算机结构和控制功能于一体,因此除单片机外它还有其他名称,例

7、如“嵌入式微处理器”、“微控制器”、“嵌入式微控制器”等。如今,单片机凭借其微小的体积和低廉的成本在各个领域被广泛使用,例如用于家用电器、工业控制等,所以许多大学里都开设了单片机原理与应用这方面的课程。这是一门结合了技术性和实践性的学科,学习及研究它不论对我们自身还是社会的发展都是及其有意义的。计算器就是利用单片机制作的产物,所以本设计的主控制器选用了AT89C52单片机,采用TC1602液晶显示器,输入按键为4×4矩阵键盘,通过软硬件相结合,来实现整数的“加”、“减”、“乘”、“除”运算。在此基础上还加入了DS1302实时时钟电路的设计,使其本省还具有了电子表的功能。1.2设计任务

8、这次设计主要是通过单片机的原理和应用,在电子技术基础的基本理论的指导下,我采用Protues仿真软件和eil编程软件来进行设计计算器,然后制作实物。它的主要设计任务有以下几个部分,首先是硬件系统的设计,然后运用keil进行软件系统部分的设计。利用protues仿真平台,进行软件部分调试及仿真;对照设计好的仿真图进行计算器实物的焊接。在将软件程序放入硬件之后,对整体电路进行调试与测试,看是否存在问题。 1.3. 论文结构 本文共由六章组成,第二章为基础理论部分,介绍单片机的发展现状、AT89Cxx系列单片机的简介,计算器系统简介计算器的总体功能描述,;第三章为计算器的硬件系统设计,从结构上分析计

9、算器的硬件系统框架,最小系统的设计,键盘接口电路的设计,显示电路的设计及DS1302实时时钟电路的设计;第四章介绍计算器的软件系统设计,主要介绍主模块程序的设计,键盘扫描模块程序的设计,运算模块程序的设计,显示模块程序的设计以及DS1302实时时钟模块程序的设计;第五章为计算器系统的组装与调试,对系统的软硬件分别进行了调试;第六章为论文总结,对本次毕业设计做了相关小结并提出了下一步要做的工作。41 第二章 课题背景2.1 AT89Cxx系列单片机的简介 MCS-51系列单片机具有性能优越,技术成熟,可靠性高,成本效益的优点,所以其迅速占领了工业测量和控制及自动化工程的主要市场,成为主流的芯片应

10、用。由于其卓越的性能和完美的结构,导致后来许多微控制器制造商多遵循参考它的架构。和爱特梅尔公司一样,飞利浦,达拉斯和其他领先的半导体公司已经推出与MCS-51单片机产品兼容。这些知名厂商加入51系列获得了突飞猛进的发展,进一步丰富和发展的51系列,产品性能有了很大的提高。其主要特性有:1、80C51核心处理单元。2、64/32/16/8B片内Flash ROM,具有在应用可编程(IAP)、在系统可编程(ISP)的功能,可实现远程软件升级,无需编程器。3、1K字节RAM; 4、双DPTR数据指针;5、支持6时钟或12时钟模式;6、4个8位I/O口, P1口、P2口、P3口可直接驱动LED;7、S

11、PI和增强型UAPT;8、有PCA(可编程计数器阵列),具有PWM的捕获/比较功能;9、3个16位定时器/计数器;10、可编程看门狗定时器;11、低EMI方式(ALE禁止);12、兼容TTL和COMS逻辑电平;13、掉电模式和低功耗模式等;14、全静态操作0Hz24Hz;图2-1为AT89Cxx系列单片机的引脚排列图:图2-1 AT89Cxx系列单片机引脚排列图 2.2计算器系统简介计算器的组成包括运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备。低级计算器运算器,控制器由数字逻辑电路简单的串行操作,随机存取存储器是只有一个或两个细胞,用于累加存储。高级

12、计算器和只读存储器由微处理器来实现各种复杂的计算程序,有更多的随机存取记忆体单元来存储程序和数据输入。键盘是计算机输入成员,一般的接触或传感器类型。为了减少计算器的大小,一键常常有多种功能。计算机显示输出部件,发光二极管显示器,液晶显示器等。除了显示的结果,但也经常会有溢出指示,错误指示。计算器的电源使用AC电源适配器或电池,电池或太阳能供电的AC转换器转换器充电。为了节约能源,计算器生产大规模集成电路采用CMOS工艺(互补型金属 - 氧化物 - 半导体集成电路),内部配备掉电定时器电路不自动操作。计算器可选外设,微型打印机,盒式磁带驱动器和磁机。2.3计算器的总体功能描述这次设计是多功能计算

13、器的设计,所以它实现的不仅仅是简单的运算,还添加了电子表的功能,其主要实现功能如下所述:1、本设计为基于单片机的多功能计算器的设计,它的基本功能是进行四则运算“加”、“减”、“乘”、“除”;2、进行基本的四则运算,键盘由16个键组成,其中包含数字键09,符号键“+”、“-”、“*”、“/”、“=”和清零键;3、设计运算的过程中的数字和符号在显示器上都需要显示,按下“=”号键时,计算结果自动显示出来;4、可以连续多次的运算,也就是说前面计算所得的结果还可以作为后面运算的第一个值; 5、错误提示,例如除数为0,或者运算结果超过了计算器本身设定的范围时(溢出),可以在显示器上提示错误并内部归零;6、

14、附加功能:在以上几点完成的情况下对系统进行下一步的扩展,增加了时钟芯片,这样系统既可以作为计算器,也可作为电子表,电子表具有调时。第三章 计算器的硬件系统设计3.1计算器的硬件系统框架计算器的硬件系统框架如图3-1所示:单片机按键及键扫电路显示电路复位、晶振电路实时时钟电路电源系统图3-1 计算器的硬件系统框架图3.2最小系统的设计单片机最小系统一般由单片机,复位电路和晶振电路组成,我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中。1、单片机的选择在前面我们已经介绍了AT89C系列的单片机,本设计中我们采用AT89C52单片机,它的性能好,价格低。其引脚图如图3-2所示。图3-2 AT

15、89C52引脚图2、晶振电路的设计本次设计的系统对于时间要求不是很高,只要按图来进行设计就可以使系统可靠起振并运行的稳定。但是由于图中的电容C2、C3的作用是对系统时钟频率的微调和稳定,所以在这次计算器系统的实际应用中一定要注意正确选择参数(本设计采用30pF),振荡频率范围是1.2MHz12MHz,这里采用11.0592MHz是因为可以准确地得到9600波特率和19200波特率,便于和计算机进行串口通讯。晶振电路的设计如下图3-3所示。 图3-3 晶振电路3、复位电路的设计本次设计对复位电路部分的考虑还是蛮周到的,因为复位电路对这次设计来说是很重要的。当程序运行出错或操作错误导致系统死锁状态

16、时,为了让系统化险为夷,需要按复位键重新启动单片机。复位操作包过加电复位和手动复位,其中,按键手动复位分为电平方式和脉冲方式两种。这次设计中,手动复位明显比加电复位更适合,所以在这里采用按键手动复位中的按键电平复位,电路设计如图3-4所示。 图3-4 按键电平复位电路3.3键盘接口电路的设计这次设计是基于单片机的计算器的设计,并没有要求进行复杂的运算,因此,采用4×4矩阵式键盘16个键来实现基本的“加” 、“减” 、“乘” 、“除”运算即可。矩阵式键盘的硬件结构比较简单,有行输出口和列输出口构成行列式键盘,按键设置在行、列的交点上。4×4矩阵式键盘具体按键安排如表3-1:表

17、3-1 4×4矩阵式键盘 第0列第1列第2列 第3列第0行01 23第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数码管显示器对比来说虽然价格贵点,但是它的显示功能强大,体积小、功耗低、界面清晰,便于观察。这次设计进行的是计算器设计,如果用液晶作为显示器,两行就足够了,一行显示算式,一行显示结果,所以这次设计选择TC1602字符型液晶模

18、块进行显示。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端由高电平跳变成低电平时,可以写入数据第714脚8位双向数据线D0D7第15脚BLA背光电源正极输入端第16脚BLK背光电源负极输入端。BLA接正,BLK接负便会点亮背光灯TC1602引

19、脚电路图如图3-6所示:图3-6 TC1602电路图图中714脚接单片机的P0口。TC1602液晶显示模块内置有字符发生ROM,字符发生RAM和字符显示RAM,字符发生存储器已经存储了192个不同的点阵字符图形,每一个字符都有固定的代码,可以通过查表找出所需要显示的字符的地址让其在液晶中显示出来。3.5 DS1302实时时钟电路的设计在这次设计中,DS1302时钟电路是系统扩展的一个模块,属于附加功能,它跟计算器是不属于一个部分的,在上学期创新设计的基础上,我多添加了这个模块,这样我的计算器除了计算功能外,还多了一项电子表的功能,使系统功能完善了许多。我设计的计算器和电子表两种模式可以用一个独

20、立按键来进行切换,而且是在同一块液晶屏上显示。实时时钟电路DS1302的主要特点是采用串行数据传输,可以为电源提供可编程的充电功能,并且还可以关闭充电功能,采用普通32.768kHz晶振,工作电压为2.5V5.5V。它可以对年、月、日、周、日、时、分、秒进行计时,还具有闰年补偿等多种功能。但是这次设计,我设计的只是电子表,所以只需要时、分、秒,很多功能不可以体现出来,我准备在以后对系统进一步扩展,比如可以做个万年历,这样时钟芯片就可以得到充分的利用。其引脚功能如表3-3所示:表3-3 DS1602引脚功能第1脚Vcc2第1脚Vcc2第2脚X1和第3脚X2振荡源,外接32.768HZ的晶振第4脚

21、GND地线第5脚复位/片选线第6脚I/O串行数据输入/输出端(双向)第7脚SCLK串行时钟输入第8脚Vcc1后背电源DS1302引脚电路图如图3-7所示: 图3-7 DS1302电路图在对该模块进行设计时,我选用了4个独立式按键,它们的功能分别是:“设置” 、“确认” 、“+” 、“-” ,用来准确的设置时间。设置方法如下:首先按设置键1下,可按“+”、“-”对“小时”进行设置,设置完毕按确认键退出;和前面一样,按设置键2下对“分”进行设置,按设置键3下对“秒”进行设置。第四章 计算器的软件系统设计这次设计需单片机硬件电路及软件编程相结合,在单片机的应用系统程序设计时,一般选用汇编语言和C语言

22、。通过4.1的概述,这次设计我选择用C语言进行编程。4.1 汇编语言和C语言的特点及选择这次设计我用的是硬件电路和软件编程相结合的设计方案,所以选择合适的编程语言是很重要。在进行单片机的应用系统程序设计时,常见的有汇编语言和C语言两种。C语言虽然执行效率没有汇编语言高,但是它语言简单,便于操作,运算丰富,表达化类型多种多样,数据结构类型也很丰富,可以大大提高大大提高单片机应用系统研制开发的效率,而且它的易移植性也有助于打破不同单片机系列之间的界限。如今单片机的发展水平已经达到了一定高度,内部资源相当丰富,CPU的处理速度非常快。我觉得这次设计用C语言来控制单片机是一个不错的选择。所以在这次设计

23、中我选择C语言来编写程序代码。主函数设计:/*函数声明*/#include <reg51.h>#include <key.h>#define uchar unsigned charuchar 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(uc

24、har);void prodis(void);void clear(void);void datapc(void);void remove0(void);void data3dis(void);void main()init();while(1) key=keyscan(); delay(); if(exit=1) display(key); 4.2主模块程序的设计 主模块是可以说是本次设计的主框架。在进行结构化程序设计时经常会用到“从上到下”和“从下到上”两种方式,而“从上到下”法的核心便于主框架的构建。它的好坏直接影响到程序最终功能的实现。本设计的主要目的是实现计算功能,而不是电子表,仅在

25、计算器功能的基础上,成功完成附加功能的电子表格,所以时间的优先级的设计,该系统应被引导到一种计算模式,而不是电子表格模式,设计完成后我可以根据需要在两者之间切换,主模块的程序流程图如图4-1所示。开始初始化液晶屏、DS1302及相关变量计算模式判断模式切换键是否按下 N Y电子表模式 判断模式切换键是否按下 N返回 Y 图4-1 主模块程序流程图 4.3键盘扫描模块程序的设计矩阵按键扫描程序是用来节省I/O口的,它可以根据按键数目的多少来节省对应的I/O口。键盘扫描模块程序的流程图如图4.2所示。键盘扫描子程序应具有以下功能:(1)如果键有按下,就计算键值。它的方法为:行输出口输出全为0,读列

26、输入口信息,如果列输入值全为1,没有键按下;如果不是为全1,有键按下,对应的计算键值。(2)去除按键抖动。在按键操作过程中,按键受到弹性的影响会导致按键的机械触电在闭合及断开的瞬间发生抖动的现象,导致按键不能马上实现完全闭合或断开,并使输入电压信号也会出现抖动现象,抖动时间的长短根据按键的机械特性决定。在实际应用中,应大于20ms,否则,就会发生按一次做多次处理的情况,从而程序不能正常执行。开始是否有键按下 N 消抖 Y 确实有键按下 N 判断并计算键号,执行相应命令 Y 按键是否释放 N 返回 Y图4-2 键盘扫描模块程序流程图 (3)判断按键是否释放。首先要计算出闭合键的键值,然后对按键判

27、断是否释放。如果按键释放就等待;如果键已经释放,那么就再延时消抖。(4)命令处理。输入闭合键的键值后,程序自动实现该键已经设定的功能。4.4运算模块程序的设计在这个模块中,我要实现“加”、“减”、“乘”、“除”四种整数的运算,需要定义三个数:x、y、z ,类型为长整型(-2147485648+2147485647);其中x为第一个数,y为第二个数,z为两数运算的结果。这次设计还要求可以根据需要进行连续多次的运算,即把c的值赋给x,输入运算符,再输入y,按下“=”号,再得到z,再赋给x,以此反复执行。在运算中x的值有可能是负数,而y必定是正数,所以我在进行“加”、“减”、“乘”三种运算时都可能会

28、有溢出,都需要进行报错;在除法运算时,若除数为0,也需要报错。设d=+2147485647,e=-2147485648,判断溢出的方法是:(1)加法:当0<x<d时,若y>d-y,则溢出;(2)减法:当e<x<0时,若y>x-e,则溢出;(3)乘法:当0<x<d时,若y>d/x,则溢出; 当e<x<0时,若y>e/x,则溢出;这次需要当心的地方就是在设计过程中除法运算时为了保留四位小数需对z转化为float型并进行×10000的操作,可以想象当z> +214748.5647时,z扩大一万倍就不再属于长整型的

29、范围了,这就产生了溢出错误。为了阻止这种情况的发生,这次设计规定了当z> +214748.3645或z<-214748.5648时,结果显示不保留小数;当z<+214748.5647或z>-214748.5648时,结果显示保留四位小数。运算模块程序流程图如图4-3所示。开始判断是哪个运算符乘减除加除数是否为0 N错误信息送显示缓冲区运算结果是否溢出Y Y 数值送显示缓冲区 N 图4-3 运算模块程序流程图4.5显示模块程序的设计在这次设计中,显示器上只需要显示数字和符号,不需要显示图形或者汉字,而且需要显示的数字和符号都有在TC1602液晶模块内置的字符发生存储器里,

30、在编程时,通过查表就可得到相应字符的代码。显示程序的流程图如图4-4所示。开显示液晶初始化 判断是否显示字符 N 相应功能的设置 Y Y送地址 送数据 判断是否显示完 N 返回 Y 图4-4 显示程序流程图在这个模块中,我们需要了解液晶的基本操作时序写指令和写数据。写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲;输出:无。写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲;输出:无。4.6 DS1302实时时钟模块程序的设计从前面已经了解到了时钟芯片的功能很强大,设计这部分程序前,我必须对DS1302有关日历、时间的寄存器进行深入的了解。在本设计中,我只用到了时间,所

31、以我在这里就只对时间寄存器进行解释,时(85H、84H)、分(83H、82H)、秒(81H、82H)寄存器及控制寄存器(8FH、8EH)介绍如表4-1所示。表4-1 时、分、秒、控制寄存器介绍读寄存器写寄存器bit7 bit6bit5bit4bit3bit2bit1bit0 范围81H80HCH10秒秒005983H82H10分分005985H84H 0 020时10时 时0238FH8EH WP 0000000从表中,可以很明了的知道以上寄存器的功能和使用方法,需要说明的是控制寄存器的位7(WP)是写保护位,其他七位都为0,在对任何时钟和RAM进行写操作前,WP必须为0。当WP为1时,禁止对

32、任一寄存器进行写操作,也就是说在电路上电的初始态WP为1,必须先将它置为0,才可进行写操作。还有秒寄存器的位7位定义为时钟暂停标志(CH)位置为1时,时钟振荡器停止,DS1302时钟芯片处于低功耗状态;为0时,时钟开始运行。例如,执行以下语句,就在时钟芯片中写入了时间11:20:05。write_ds1302(0x8e,0x00); /去保护write_ds1302(0x84,0x12); /写小时,11时write_ds1302(0x82,0x30); /写分钟,20分write_ds1302(0x80,0x01); /写秒钟,05秒write_ds1302(0x8e,0x80); /写完后

33、,上保护DS1302时钟程序流程图如图4-5所示。开始相关变量初始化DS1302去保护复位端产生一个高电平复位端产生一个高电平写1302地址延时写1302地址将该地址数据读出延时地址增加向该地址写数据地址增加数据是否读完 N数据是否写完N显示数据 Y Y 图4-5 DS1302时钟程序流程图第五章 计算器系统的组装与调试5.1软件系统的调试与仿真 在本次设计中,C程序是在Keil软件中编写并编译的,在程序编写中主要出现了以下问题:(1)在进行编程的时候,因为程序过长过复杂,容易出现少了或多了一个“”的现象。(2)有的变量所定义的类型错误,虽然程序没有错误,但仿真后结果错误。(3)事先未被定义的

34、被调函数放在了主调函数的后面,导致错误。(4)事先定义的芯片引脚与仿真图中引脚不是同一个。(5)仿真的结果有时正确有时是乱码,例如:6+15=21正确,但若是运算2148787845+26,结果就是乱码。这是因为系统本身定义的是长整型,而此结果已经溢出,不属于长整型了,我们一眼就能看出是溢出,应该提示错误信息,但是计算机不能,所以在编写程序时不能直接判断运算结果是否大于长整型,而应该间接判断,判断方法在运算模块的设计中已讲解过。在Keil和Protues的联合调试下,经过了多次认真的分析与修改,程序终于能实现我预期的要求。Protues仿真如图5-1所示。图5-1 Protues 仿真图5.2

35、硬件系统的组装与调试在成功的进行软件仿真后,下一步要做的就是焊接硬件实物了,焊在焊接前一定要认真阅读焊接注意事项,并在万能电路板上对各元件的放置进行合理布局,此时不仅要考虑正面整体的美观,还要考虑背面布线的方便性,尽可能减少布线的复杂度。焊接好后要做的就是进行调试,这个过程中遇到的问题如下: (1)通过STC-ISP软件把在Keil中生成的.hex文件加载到单片机中,开机,进行运算,发现液晶屏点亮但不显示任何数据,经过对电路的检查,发现本应接地液晶第3脚(VL)接到了电源端,改正后液晶可以显示。 (2)液晶虽然可以显示了,但在进行计算时并不能正确显示,经过多次检查,发现硬件并无错误,断定为软件

36、的错误,最后发现软件中液晶初始化不完整,可是在仿真时是正确的,这充分说明了仿真与实际硬件的区别。经过多次的调试,我的计算器终于能达到同仿真时一样的效果了。计算器实物如图5-2所示。 图5-2 计算器实物图计算器进行各种运算的截图如图5-3所示。 (a)加 (b) 减 (c)乘 (d) 除 (e) 除数为0 (f)溢出错误 (g)时间显示图5-3 运算器各种运算截图 从上图可以看出,我做的计算器在运算部分和时钟部分都能成功地运行了,它可以做到基本的四则运算,还可以正确的显示时间,同时,在计算结果超出它本身的运算范围的时候它会用英文提示错误。第六章 总结和展望我的题目是多功能计算器的设计,对于我们

37、这些实践中的新手来说,这是一次考验。如何才能把课堂上学到的东西和实际应用中的相结合?如何能让自己的水平有更多的提高?如何让自己的计划变得更有序性,而不会忙无一用?这都是需要我考虑和努力的地方。通过这次课程设计使我学到很多很多东西,学会了如何让去制定计划,如何去实现这个计划,而且掌握了在执行过程中如何去克服心理上的不良情绪。不仅加深巩固了以前学过的知识,而且学到了许多书本上没有提到过的知识,学会了一种系统的研究方法,可以进行一些简单的编程。同时通过这次设计,我体会到了大学四年学习中存在的不足,例如没有深刻的理解以前老师教过的知识,没有系统的掌握所学内容,对C语言的运用能力也很差。本来我是想增加键

38、盘按键来实现除四则基本运算以外的运算功能的,但在实践中我发现并不是我想的那么简单,在编写程序的时候我遇到了困难,使得我的想法只能被打断,所以我又想到了在运算以外的其他部分添加功能,由于以前有电子时钟方面的实验经历,所以我决定把它作为附加功能。在实物焊接的后期我还是遇到了一些困扰,因为如何把时间显示在液晶显示器上而不影响计算器本省运算功能的操作出现了问题,但最终经过我的深思熟虑还是巧妙的化解了这个难题。在这次设计中刚开始我遇到了很多问题,最终还是被我成功的解决了,基本实现了我最初的设想,也成功的实现了时钟功能。通过这次毕业设计使我懂得了要把理论上学会的东西与实际中的结合起来,只有把二者合起来,通

39、过理论得出结论,才能提高自己的实际动手能力和独立思考的能力,更好的为社会服务。虽然我完成了计算器的设计,但我觉得在设计过程中还是存在许多不足的,只能算是初步的完成了当初的想发。现在市场上的计算器功能都很多,我只能完成其中的一小部分,限于个人水平、时间及条件的限制,这次毕业设计我也只能做到那么多。如果以后还有时间对其进行的完善的话,我会添加一些平方,开方等实用的功能,但这些功能的实现我还要进行更加系统的学习。参考文献1 何立民.MCS-51系列单片机应用系统设计M.北航版 ,1991 2 刘桂敏. 单片机系统中复合键和一键多功能的设计J.辽宁科技大学学报, 20113 胡汉才.单片机原理及其接口

40、设计M.清华大学出版社,1997 4 赵亮. 单片机从入门到精通系列讲座矩阵键盘应用J,电子制作, 2008 5 胡花.单片机原理及应用技术M.江西高校出版社, 20086 刘杰,梁华国. 矩阵式静态编码键盘及其接口电路J. 阜阳师范学院学报(自然科学版), 20047 谢嘉奎.电子线路(非线性部分第四版)M.高等教育出版社,20088 徐玮. 51单片机综合学习系统1602字符型液晶显示篇J . 电子制作, 2008 9 张红, 于平. 基于单片机控制的LED点阵显示屏系统J. 微计算机信息 , 200910 孙育才.MCS-51系列单片微型计算机及其应用M.东南大学出版社,200411 陈

41、洪财.单片机C语言和汇编语言使用开发技术M.哈尔滨工程大学出版社,2008 12 王效华、张咏梅.单片机原理及应用M.北京交通大学出版社,2007 13 彭伟.单片机C语言程序设计实训100例M.电子工业出版社,200914 王东峰,王会良,董冠强.单片机C语言应用100例M.电子工业出版社,2009 15 程兴国. 基于Proteus和Keil构建的单片机虚拟实验室J.福建电脑, 2009 16 KPeter.Background Compensation forIRthermometersJ.Sensor,1990,7(3):67 68.附录一计算器的硬件电路原理图 计算器硬件电路原理图附

42、录 二源程序:#include<reg51.h> /头文件#define uint unsigned int #define uchar unsigned 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;uns

43、igned temp0,temp1,hour,min,sec,next;char i,j,num;long int a,b,c,d,e; /a第一个数 b第二个数 c得数 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-0x

44、30,0x2f-0x30,0x3d-0x30,0x01-0x30,;void delay(uchar z) /延迟函数1msuchar y;for(z;z>0;z-) for(y=0;y<110;y+);void delay1(uint t) /迟延函数 50us uchar j; for(;t>0;t-) for(j=19;j>0;j-);void delay2(uint t) /迟延函数50ms uchar j; for(;t>0;t-) for(j=6245;j>0;j-);void write_ds1302byte(unsigned char tem

45、p1) /ds1302写字节函数 unsigned char i; for (i=8;i>0;i-) ds1302_io=temp1&0x01;ds1302_clk=0; ds1302_clk=1;temp1>>=1; void write_ds1302( unsigned char address,unsigned char dat ) /ds1302写数据函数 ds1302_rst=0; ds1302_clk=0; ds1302_rst=1; delay(1); write_ds1302byte(address); write_ds1302byte(dat); d

46、s1302_rst=0; unsigned char read_byte() /ds1302读字节函数 unsigned char i; for(i=8;i>0;i-) if(ds1302_io)temp0=temp0|0x80;ds1302_clk=1; ds1302_clk=0;temp0=temp0>>1; return temp0; unsigned 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

温馨提示

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

评论

0/150

提交评论