单片机课程设计—简易计算器

上传人:第*** 文档编号:57339614 上传时间:2018-10-21 格式:DOCX 页数:21 大小:139.75KB
返回 下载 相关 举报
单片机课程设计—简易计算器_第1页
第1页 / 共21页
单片机课程设计—简易计算器_第2页
第2页 / 共21页
单片机课程设计—简易计算器_第3页
第3页 / 共21页
单片机课程设计—简易计算器_第4页
第4页 / 共21页
单片机课程设计—简易计算器_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《单片机课程设计—简易计算器》由会员分享,可在线阅读,更多相关《单片机课程设计—简易计算器(21页珍藏版)》请在金锄头文库上搜索。

1、物理与电气工程学院课程设计报告物理与电气工程学院课程设计报告设计名称:简易计算器 院 部:物理与电气工程学院 专业班级:12 级电信三班 学生姓名:孔维铮 080212092 刘慧 080212096 吴阳慧 080212101 指导老师:王陈宁 完成时间:2014 年 6 月 8 日 评阅意见:评阅教师 日期 摘 要单片机课程设计是单片机原理课程的实践性环节。是在我们学习了单片机原理等课程的基础上进行的综合性训练,我们组这次训练的课题是基于单片机简易计算器,能够进行多位简单的加减运算,同时它能支持 2 位整数运算。它主要由 STC89C52 单片机、数码管,键盘等模块组成。本计算器是将键盘输

2、入信息经处理通过缓存,送入数码管显示,键盘采用行列式,数码管采用动态扫描方式,计算功能通过软件实现,用汇编语言对单片机可编程芯片进行编程,实现对计算器的设计。关键词:单片机;计算器;汇编语言;键盘;数码管目录一课程设计的目的和要求 .111 课程设计的目的 .11.2 课程设计要求.1二、方案的论证和比较:12.1 按键电路设计 .12.2 4*4 键盘扫描电路(扫描式,反转式) .1三课程设计简述及整体方框图23.1 方案 .23.2、硬件电路设计 .23.2.1 主控电路设计 .23.2.2 键盘电路设计 .33.2.3 数码管显示电路 .33.3 软件设计简述.43.3.1 键盘扫描子程

3、序设计 .43.3.2 数码管显示电路 .63.3.3 运算子程序设计 .63.4 程序主框图.7四仿真软件图8五系统功能测试与整体指标95.1 软件调试步骤95.2 程序调试步骤 95.3 测试结果 .10六、总结与思考及致谢.10附录主程序:.10一课程设计的目的和要求 11课程设计的目的 单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。本次设计是设计一个简易计算器,能够进行多位简单的加减运算,同时它能支持 2 位整数运算。它主要由 STC89C52 单片机、数码管,键盘等模块组成。本计算器是将

4、键盘输入信息经处理通过缓存,送入数码管显示,键盘采用行列式,数码管采用动态扫描方式,计算功能通过软件实现,用汇编语言对单片机可编芯片进行编程,实现对计算器的设计。 1.2课程设计要求1 4*4 键盘输入,数码管显示。2 完成两位整数的加减3 由于键盘只有 16 个按键,安排如下: +-+|0 | 1 | 2 | 3 | 4| 5 | 6 | 7 | 8| 9 |+ | - | |=| c| | |+-+二、方案的论证和比较:2.1 按键电路设计 方案一:计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的 I/O 口资源,因此在很多情

5、况下都不采用这种方式,而是采用矩阵键盘的方案。 方案二:矩阵键盘采用四条 I/O 线作为行线,四条 I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为44个。这种行列式键盘结构能有效地提高单片机系统中 I/O 口的利用率。 2.2 4*4键盘扫描电路(扫描式,反转式) 方案一扫描法:对键盘上的某一行送低电平,其他行为高电平,然后读取列值。若列值中有一位是低,则表明该行与低电平对应列的键被按下 ;否则,扫描下一行。方案二:反转法:先将所有行扫描线输出低电平,读列值。若列值有一位是低,则表明有键按下,读列值;然后所有列扫描线输出低电平,再读行值。根据读到的

6、值组合就可以查表得到的键码。此设计中我们用反转法。三课程设计简述及整体方框图3.1 方案按照设计要求,提出方案 。此方案首先通过键盘得到数据,并通过程序对数据进行处理,最后通过数码管显示出来。结构框图如图 1STC89C52数码管显示键盘图(1)3.2、硬件电路设计简易数字计算器系统硬件设计主要包括:键盘电路,显示电路以及其他辅助电路。下面分别进行设计。3.2.1 主控电路设计STC89C52具有如下特点:40个引脚(引脚图如图2所示) ,4k Bytes Flash片内程序存储器,128 bytes 的随机存取数据存储器(RAM) ,32个外部双向输入/输出(I/O)口,5个中断优先级2层中

7、断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外STC89C52RC 设计和配置了振荡频率可为0Hz 可通过软件设置省电模式。空闲模式下,CPU 暂停工作,外中断系统可继续工作,掉电模式决结振荡器而保存RAM 的数据,停止芯片其它功能盤至外中断激活戶硬件复位。同时该芯片还具有 PDIP、TQFP 和 PLCC 等三种封装形式,以适应不同产品的需求。 STC89C52 芯片引脚图如图(2)所示。图(2)STC89C52芯片引脚图3.2.2键盘电路设计计算器所需按键有:数字键:1,2,3,4,5,6,7,8,9,0功能键:+ , - , =

8、 c(清零) 共计 16 个按键,采用 4*4 矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的 8 个公共端分别接 P3.0P3.7,这样扫描 P3 口就可以完成对矩阵键盘的扫描,通过对 16 个按键进行编码,从而得到键盘的口地址,对比 P3 口的扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘扫描的功能。3.2.3 数码管显示电路图 3 LED 数码管为了显示数字或符号,要为 LED 显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计 8 段。图 4 LED 数码管显示原理图3.3 软件设计简述3.3.1 键盘扫描子程序设计要进行数据的计算就必须先进

9、行数据的输入,也就必须确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下。对于键盘的扫描,这里采用行列扫描的方法来完成对键盘的扫描。原理就是先确定按键在哪一行,接着再确定是哪一列,这样就可以知道是哪个按键被按下了。我是将 P3 口作为按键扫描口的,比如,先使行线输出全“0” ,读列线,再使列线输出全为“0” ,读行线。两次结果再相与,则得到一个值为键值。同理,每个按键都会有一个对应的十六进制值,我把它们列出来进行一一对应就行了,下面是扫描按键图。图 5 扫描按键图键扫程序的过程为:开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有

10、键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。其流程图如图(6)所示。图(6)键扫程序流程图YN开始有键闭合否?去抖动确有键按下判断键号释放返回返回YNYN3.3.2 数码管显示电路采用 2 位数码管对计算数据和结果的显示,这里选取共阳数码管,利用NPN 三极管对数码管进行驱动,为了节省 I/O 资源,采取动态显示的方法来显示计算数据及结果,动态扫描。为了实现数码管的动态显示,P0 口输出显示值,通过 P0 口的二进制代码送到数码管进行显示。P2 口用来作为位选端,控制哪几位数码管进行显示。比如当 P2

11、.3 为高电平时,其他位全给 0,具体的在软件中会有说明。此时就将扫描的数据送给指定数码管显示。其流程图如图(7)所示。开始初始化显示参数 读取显示数据输出段码数据输出位选通信号延时位选通信号移位指向下一个显示数据完成返回否是图(7)数码管显示流程图3.3.3 运算子程序设计算术运算程序的过程为:先判断输入的运算符是+、-、=中的哪一个,若是+或-,则要判断运算结果是否溢出,溢出则显示错误信息,没溢出就显示运算结果,若是=,则直接显示运算结果。其流程图如图 8 所示。YN图 8 算术运算程序设计流程图开始运算符是?等 减运算结溢出?错误信息送显示 缓冲数值送显示缓冲加将缓冲数值显示3.4程序主

12、框图图 9 系统工作总流程四仿真软件图五系统功能测试与整体指标5.1 软件调试步骤1)打开软件后,在 Project 菜单中选择 New Project 命令,打开一个新项目。保存此项目,输入工程文件名后,并保存工程文件的目录。2)为项目文件选择一个目标器件,即选择 8051 的类型。在 Data base 列表框中选择“ATML 89C52”,确定。3)上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”。4)把源文件添加到项目中,用鼠标指在目标工作区的目标 1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。5)开始编译

13、,对项目文件进行编译。若没有错误后进行硬件调试。5.2 程序调试步骤程序调试应一个模块一个模块地进行,首先单独调试各功能子程序,检查程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来进行总调试。故调试步骤如下:1)矩阵 4*4 键盘的调试键盘程序是整个程序的基础,我们必须保证其正确。调试方法:先把程序下载到单片机,让数码管显示,在有键按下时显示的是否为设定的值。2)数码管程序调试正确的显示数值是整个程序的关键。调试方法:先把程序下载到单片机,让数码管显示,是否正确的显示数值。5.3 测试结果实例测试:将写入程序的单片机插入实验板插座内,程序正确的有 09 数值的显

14、示和正常的四则运算以及判断错误、溢出。六、总结与思考及致谢电子设计正在当今社会发挥越来越重要的作用,其采用的软硬件结合技术也逐渐成熟,该模拟系统正是采用软硬相结合的方法实现的。我的题目是简易计算器的设计,对于我们这些实践中的新手来说,这是一次考验。怎样才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们所要考虑和努力的。通过这次课程设计,最大的一点体会是单片机学的不够扎实,不会的很多啊,当然这次的课程设计做计算器程序用的是汇编,我们互相学习,到处找资料看,问同学,所以我们的软件主程序才能编译成功,系统才能调试出结果。很感谢那

15、些热心教导我的同学和指导我的老师。在其中,很明显我们的计算器处理数据及显示存在太大的局限性,我觉得主要还是我对程序中的运算模块理解不深,这点仍需大大加强。在此次课程设计中,首先我要感谢王陈宁老师和郭乐老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢学院为我提供良好的做课程设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学!附录主程序:YJ EQU 50H ;结果放YJ1 EQU 51H;中间结果存放GONG EQU 52H;功能键存放ORG 0000HLJMP STARTORG 0100HSTART:MOV R3,#0 ;初始化显示为空MOV GONG,#0;功能键清空MOV 34H,#00HMOV 33H,#00HLOOP1:LCALL DISP ;调显示子序LOOP2:LCALL TKEY;判断有无按键JZ LOOP2LCALL KEY;读键INC R3 ;KEY 返回,按键次数自加 1CJNE A,#0,NEXT1 ;判断是否为数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号