简易计算器课程设计报告_第1页
简易计算器课程设计报告_第2页
简易计算器课程设计报告_第3页
简易计算器课程设计报告_第4页
简易计算器课程设计报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

单 片 机 与 接 口 技 术 课 程 设 计 报 告课 题 名 称 简 易 计 算 器 的 设 计学 院 自 动 控 制 与 机 械 工 程 学 院专 业 机 械 设 计 制 造 及 其 自 动 化班 级姓 名学 号时 间 2013.1.7-2013.1.18目录一课程设计的目的和要求 31设计目的 32设计任务及要求 32二设计步骤及思路 31、设计的步骤 32设计思路 3三硬件电路设计 41总体设计 42单元电路的设计 4四软件设计 9五调试说明 121未启动仿真时,初始状态 122开启仿真以后 123计算过程演示 12六设计体会 14七参考文献 15八、附录 15附录一 15附录二 15一课程设计的目的和要求1设计目的单片机课程作为独立的教学环节,是自动化及相关专业集中实践性环节系列之一,是学习完单片机与接口技术课程后,并在进行相关课程设计基础上进行的一次综合练习。单片机课程设计过程中,我们通过查阅资料,接口设计、程序设计、安装调试等环节,完成一3个基于 MCS-51 系列单片机,涉及多种资源应用,并具有综合应用功能的小应用课程设计,使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路电子元件等方面的知识进一步加深认识,同时在软件编程调试相关仪器设备和相关软件的使用技能等方面得到较全面的锻炼和提高。课程设计以学生认知为主体,充分调动学生的积极性,重视学生自学能力的培养,根据具体课题安排时间确定课题的设计、编程和调试内容,分团队开展课程设计活动,按时完成每部分工作。坚持独立完成,实现课题规定的各项指标,并写出设计报告。要求学生自己查阅资料和充分利用所学知识,根据所要设计系统所要达到的功能,划分软硬件功能、选择器件、编写相关程序,用 Proteus 在计算机上绘图并用 Keil 进行程序编写进行防真,再对整个系统做调试运行,有问题再进一步调试修改,直至达到设计的要求和取得满意的效果,最后编写系统说明书,其内容包括系统的功能介绍,使用范围,主要性能指标,使用方法,注意事项等。2设计任务及要求基于 MCS51 系列单片机 AT89C51,设计一个简单的电子计算器。1)通过 44 的矩阵键盘输入数字及运算符;2)可以进行 4 位十进制数以内的加法运算,如果计算结果超过 4 位十进制数,则屏幕显示 E;3)可以进行加法以外的计算(乘、除、减);4)其他功能。二设计步骤及思路1、设计的步骤(1)制定相应的设计方案;(2)硬件的初步设计;(3)选择设计所用元器件和参数;(4)在 Proteus 7.5 中设计和连接电路图;(5)软件的初步设计;(6)编写程序实现其功能;(7)在 keil_v4 中进行调试运行;(8)硬件和软件联合调试。2设计思路根据功能和要求,本系统选用MCS-51系列单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。(2)另外键盘包括数字键(09)、符号键(+、-、)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘。4(3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。(4)错误提示:当除数为0计算得到的结果小于0或大于计算器的表示范围时,计算器会在LCD上显示E。三硬件电路设计1总体设计本设计选用AT89C52单片机为主控单元。显示部分采用LCD液晶显示,按键部分采用4*4键盘。图 1 线路原理框图2单元电路的设计1) AT89C52 单片机AT89C52 具有以下标准功能:8K 字节 Flash,256 字节 RAM,32 位 I/O 口线,3 个 16 位定时器/计数器,一个响应 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52 可降至 0HZ 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/ 计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89C52 单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。故此选用 AT89C52 单片机5p2.0p2.1p2.2p2.3p2.4p2.5p2.6p2.7XTAL218XTAL119ALE30 EA31 PSEN29RST9P0.0/AD0 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 3P0.7/AD7 32P1.0/T21 P1.1/T2EX2 P1.23P1.34 P1.45 P1.56P1.67 P1.78P3.0/RXD10P3.1/TXD1P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD17P3.6/WR16P3.5/T1 15P2.7/A15 28P2.0/A8 21P2.1/A9 2P2.2/A10 23P2.3/A1 24P2.4/A12 25P2.5/A13 26P2.6/A14 27U1AT89C52图 2 AT89C52 芯片管脚说明: P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,也即地址/数据总线复用口。作为输出口用时,能驱动 8 个 TTL 逻辑门电路。对端口写“1”时,被定义为高阻输入。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1 口:P1 口是一个带内部上拉电阻的 8 位双向 I/O 口,P1 口的输出缓冲级可驱动(吸收或输出电流)4个 TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I )。ILP1 接收低 8 位地址,部分端口还有第二功能,如表 1 所示:表 1 P1 口部分引脚第二功能端口引脚 第二功能P1.5 MOSI(用于 ISP 编程)P1.6 MISO(用于 ISP 编程)P1.7 SCK (用于 ISP 编程)P2 口:P2 口是一个带有内部上拉电阻的 8 位双向 I/O 口, P2 口的输出缓冲级可驱动(吸收或输出电流)4个 TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口6使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I )。IL在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVXDPTR 指令)时,P2 口送出高 8位地址数据。在访问 8 位地址的外部数据寄存器(例如执行 MOVXRi 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中 P2 寄存器的内容),在整个访问期间不改变。在 Flash 编程或校验时,P2 亦接收高位地址和其它控制信号。P3 口: P3 口是一个带有内部上拉电阻的双向 8 位 I/O 口, P3 口的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对 P3 口写“1”时,它们被内部的上拉电阻拉高并可作为输入端口。作输入口使用时,被外部信号拉低的 P3 口将用上拉电阻输出电流(I )。ILP3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能,如表 2 所示:表 2 P3 口引脚第二功能端口引脚 第二功能P3.0 RXD (串行输入口)P3.1 TXD (串行输出口)P3.2 (外中断 0)0INTP3.3 (外中断 1)1P3.4 T0 (定时/计数器 0)P3.5 T1 (定时/计数器 1)P3.6 (外部数据存储器写选通)WRP3.7 (外部数据存储器读选通 )DRST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上的高电平时间将使单片机复位。WDT 溢出将使该引脚输出高电平,设置 SFR AUXR 的 DISRTO 位(地址 8EH)可打开或关闭该功能。 DISRTO 位缺省为 RESET 输出高电平打开状态。 ALE/ :当访问外部存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8PROG位字节。即使不访问外部寄存器,ALE 仍以时钟振荡频率的 1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。值得注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 Flash 存储器编程期间,该引脚还用于输入编程脉冲( )。PROG如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置复7位后,只要一条 MOVX 和 MOVC 指令才会激活 ALE。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。:程序存储允许( )输出是外部程序存储器的读选通信号,当 AT89C51 由外部程序存储PSENPSEN器取指令(或数据)时,每个机器周期两次 有效,即输出两个脉冲。当访问外部数据存储器时,没有两次有效的 信号。EA/VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000H-FFFFH) ,EA 端必须保持低电平(接地)。需要注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端保持高电平(接 VCC 端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程期间,该引脚用于施加+12V 编程电压(VPP) 。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入端。XTAL2:反向振荡放大器器的输出端。2)时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本处用的是内部时钟方式。电路如图 3。C130pFC230pFX112MHz图 3 内部时钟电路3)复位电路MCS-51 单片机的复位是由外部的复位电路来实现的。上电复位:上电复位电路是种简单的复位电路,只要在 RST 复位引脚接一个电容到 VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到 RST 复位引脚一个短暂的高电平信号,这个复位信号随着 VCC 对电容的充电过程而回落,所以 RST 引脚复位的高电平维持时间取决于8电容的充电时间。为了保证系统安全可靠的复位,RST 引脚的高电平信号必须维持足够长的时间。电路如图 4。 图 4 复位电路4)LCD 显示模块本设计采用 LCD 液晶显示器来显示输出数据。通过 D0-D7 引脚向 LCD 写指令字或写数据以使 LCD实现不同的功能或显示相应数据。LCD 功能以及控制命令:表 3LCD 模块控制端RS R/W ELCD 基本操作0 0 1 写命令:用于初始化、清屏、光标定位等0 1 1 读状态:读忙标志,当忙标志为“1”时,表明LCD 正在进行内部操作,此时不能进行其他三类操作;当忙标志位为 “0”时,表示 LCD 内部操作完成,可以对其他三类操作,一般使用查询方式。1 0 1 写数据:写入要显示的数据1 1 1 读数据:将显示存储区中的数据反读出来,一般比较少用。D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L9图 5 LCD 显示图5)键盘接口电路计算器所需按键有:数字键:1 , 2, 3, 4, 5, 6, 7, 8, 9, 0;功能键:+ , -, *, /, =, C(清零) 。 共计 16 个按键,采用 4*4 矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的 8 个公共端分别接 P1.0P1.7。采用“扫描法”确定矩阵式键盘上何键被按下。(1)判断是否有键按下单片机控制系统首先把 I/O 口 P1.0P1.3 设置成输出口,把 P1.4P1.7 设置成输入口,接着把全“0”送到 P1.0P1.3,这样就可以在所有行线上得到低电平,然后读取列线上的列值就可以判断是否有键按下。若无键按下,则所读列值必全为“1” ;若有键按下,则所读列值必因所按键的行、列线接通而不全为“1”。由此即可判别是否有键按下。(2)识别按键位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时其它行线为高电平。在确认某根行线为低电平后,再逐行检测各列线的电平状态。若某列为低电平,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。(3)键值的计算设键盘为 KHKL 矩阵键盘,其中, KH 为行数,K L 为列数。如果由扫描法得按下按键的行号和列号分别为 m 和 n,则所按下按键的键值为: mKL n。p2.7p2.0p2.1p2.2p2.3p2.4 p2.5 p2.612365489=7 +CON 0ABCD 1 2 43图 6 4*4 矩阵键盘布局图四软件设计现实生活中人们熟知的计算器,其功能主要如下:键盘输入;数值显示;加减乘除四则运算;对错误的控制及提示。针对上述功能,计算器软件程序要完成以下模块的设计:LCD 显示设计键盘设计算术运算程序设计。编程语言当中,汇编语言比较接近底层,编程效率高;C 语言则比较灵活,在编写算法中要方10便一些,因此在本设计中我选用 C 语言。总体设计流程图如图 7。图 7 总程序流程图LCD 显示模块键盘模块计算模块流程图分别如图 8图 9图 10。11图 8 LCD 显示流程图图 9 键盘识别程序流程图12图 10 运算程序流程图五调试说明仿真结果和分析:1未启动仿真时,初始状态;p2.0p2.7p2.0p2.1p2.p2.3p2.4 p2.5 p2.6p2.1p2.p2.3p2.4p2.5p2.6p2.7XTAL218XTAL119ALE3031PSN29RST9P0./AD0390.1/138P0.2/AD2370.3/336P0.4/AD4350.5/534P0.6/AD630.7/732P1.0/T211./T2EX2P1.231.34P1.451.56P1.671.78P3.0/RXD103.1/T 1P3.2/INT0123./IT113P3.4/T014P3.7/RD173.6/W163.5/T115P2.7/A1528P2.0/A8212.1/92P2./A10232.3/124P2.4/A12252.5/13262.6/1427U1AT89C52D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L12365489=7 +CON0ABCD1 2 43+5VD03 Q0214 15D27 Q2638 39D413 Q412514 515D617 Q616718 719OE1L1U274LS37312 3U3:A74LS0C130pFC230pFR11kC310uF+5VX112MHz图 112开启仿真以后D714D613D512D411D310D29D18D07E6RW5RS4VSS1 VDD2 VEE3LCD1LM016L图 12 3计算过程演示1) 、4 位十进制以内加法运算:1234+5678=6192;13D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L图 135555+6666=12221,计算结果超过 4 位数,LCD 显示 E。D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L图 142) 、减法运算:789-456=333D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L图 15减法运算结果小于 0,456-789= -333,LCD 显示 ED714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L图 163) 、除法运算:56/8=7D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L图 17除数为 0,258/0,LCD 显示 ED71463D5124D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD71463D5124D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD71463D5124D31029D1807E6RW5S4VS1D2VE3LCD1LM016L图 184) 、乘法运算:25*69=1725D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD71463D5124D31029D1807E6RW5S4VS1D2VE3LCD1LM016L图 19运算结果超过 4 位数:1000*100=100000,LCD 显示 ED714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016LD714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM016L14图 20操作说明:本计算器能实现 4 位十进制以内的加减乘除运算,其中除法运算能保留一位小数;按下数值键,显示按下的数字,按运算符,再按第 2 个操作数,显示,再按“=”键显示运算结果;按“清零”键清除运算结果,可重新开始计算。当出现除数为 0运算结果超出 4 位数或小于 0 时显示 E。六设计体会在课本上了解到单片机具有体积小可靠性高性价比高等优点,主要应用于工业检测与控制智能仪器仪表家用电器和机电一体化产品等领域。虽然知道单片机具有这些优点和应用范围,却不知道怎样去设计和应用,通过这两周的课程设计,加深了我对单片机小应用系统设计的认识,熟悉了单片机在控制系统中的运用。将所学的理论知识与实际应用结合起来,对自己如何使用已有知识及获取相关资料方面的能力又有了提高。但本次课程设计体会最深的是单片机学的不够扎实。根据老师的参考电路设计完硬件电路后就感觉无从下手了,从图书馆和网上查阅了很多相关资料,但由于自己基础知识不够扎实,不能举一反三,软件设计部分还是感觉很困难;看着有同学运行出来自己就急了,找一些看着差不多的程序盲目去运行,结果当然是什么都没有还浪费了一些时间,最后只有静下心来认真看找的资料,相互对比看看与自己的有何不同,别人的显示键盘扫面是怎么设计的,才有所明白。在选用编程语言方面一开始还在汇编语言和 C 语言间徘徊,后来经老师提示及建议选用了 C 语言,因为 C 语言比较灵活,在编写算法中要方便一些。程序要尽量做到由各个子程序组成,有些程序后面最好加上注释这样在程序出错的检测过程中可以更容易查找到,也更简洁,更明白易懂。设计过程中最重要的是自己动手,虽然会遇到许多问题,但只有自己动手才能去发现问题解决问题,这也是课程设计的一个目的。这次的单片机课程设计重点是理论与实际相结合。该设计从头到尾都是自己动手,熟悉了整个设计过程,更充分的锻炼了自己。在此要感谢老师对我的指导及同学对我的帮助,在整个设计过程中我懂得了很多东西,相信这将会对我以后的学习工作生活有一定的影响。虽然这次设计还不是很完善,例如:输入超过 4 位数没有提示只是不能再输入,不能进行连续运算。但在设计中所学到的东西是这次设计最大的收获,在以后的学习中我会更加努力,争取做的更好。15七参考文献(1)吴亦锋,陈德为.单片机原理与接口技术M.北京:电子工业出版社, 2010.(2)周润景,袁伟亭,景晓松.Proteus 在 MCS-51unsigned char w,yi,yd,suan,d,h;unsigned long z1,pd;float z3,z2;void ys()unsigned char i,j;for(i=0;i=0)else yd=101; /超出范围/*/*键值定义*/*/void split()switch(pd)18/数字键case 0:pd=7;if(h=1)h=0;z1=0;if(z11000)z1=z1*10+pd

温馨提示

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

评论

0/150

提交评论