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

发布时间:2024-11-12

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

课程设计论文

课题: 基于52单片机的简易计算器设计

姓名: 季鹏 胡汪洋

学号:080212161 080212167

指导老师: 王陈宁

设计时间:2014年6月10日

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

目录

一.前言...............................................................2 二.课程设计目的和要求

2.1 课程设计的目的...................................................2 2.1 课程设计的要求...................................................2 三.方案论证

3.1 对简易计算器电路的分析...........................................2 3.2 按键电路的设计...................................................4 四.电路设计

4.1 方案.............................................................4 4.2 硬件电路设计.....................................................4 4.3 软件电路设计.....................................................8 4.4 程序框图.........................................................9 五.测试结果..........................................................10 六.结论与思考........................................................10 附录一:主程序........................................................11

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

一.前言

随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。单片机的应用已经越来越贴近生活,用单片机来实现一些电子设计也变得容易起来。计算器在人们的日常中是比较的常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的计算器。该设计系统是以STC89C52为单片机, P0口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,在P1口,P2口接了驱动电路,用来保证LED的工作正常。计算器将完成的功能有加,减运算功能。

关键词:计算器;电子设计;LED;单片机

二.课程设计的目的和要求 2.1 课程设计的目的

如今,单片机的应用十分广泛,许多产品都有单片机的身影。单片机的作用不言而喻。单片机设计是单片机学习的重要组成部分,通过设计电路并实现某种功能来加深单片机原理的理解。本课题设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减运算并通过LED显示出来。设计电路采用STC89C52单片机为主要控制电路,利用4*4的矩阵键盘作为输入,LED来显示运算结果。

2.2 课程设计的要求

1.LED显示运算结果

2.键盘的设计:由于采用4*4的矩阵键盘而简易的计算器设计只需要进行加减运算,所以只要用到14个键。所以需要将不需要的两个键屏蔽。

3.实现两个数的加减运算。 三.方案论证

3.1 对简易计算器的分析

根据功能和指标要求,本系统选用STC89C52单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计考虑如下:

①由于要设计的是简单的计算器,可以进行加减运算,对数字的大小范围要求不高,故我们采用可以进行两位数的运算,选用8个LED数码管显示数据和结果。

②另外键盘包括数字键(0~9)、符号键(+、-)、清除键和等号键,故只需要

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

14个按键即可。

系统模块图:

3.2 按键电路的设计

计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式。为此,我们引入了矩阵键盘的应用,采用四条I/O线作为行线,四条I/O线作为列线组成键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

四.电路设计 4.1 方案

该设计系统是以STC89C52为单片机, P0口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,在P1口,P2口接了驱动电路,用来保证LED的工作正常。计算器将完成的功能有加,减运算功能。

4.2 硬件电路的设计 4.2.1 矩阵键盘的设计

矩阵键盘的工作原理:

计算器的键盘布局如图所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。

如图:

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

图二:

由图2矩阵键盘内部电路图可以知道(我们的键盘为p3口驱动),当无按键闭合时,P3.0~P3.3与P3.4~P3.7之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是:第一步,置列线P3.4~P3.7为输入状态,从行线P3.0~P3.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P3.4~P3.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。

4.2.2 运算模块

STC89C52单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。

单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。如图为STC89C52的芯片的引脚图。

4.2.3 模块显示

发光二极管LED是单片机应用系统中的一宗简单而常用的输出设备,其在系统中的主要作用是显示单片机的输出数据、状态等。因而作为典型的外围器件,LED显示单元是反映系统输出和操作输入的有效器件。LED具备数字接口可以方便的和大年纪系统连接;它的优点是价格低,寿命长,对电压电流的要求低及容易实现多路等,

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

因而在单片机应用系统中获得了广泛的应用。

通常的数码显示器是由7段条形的LED组成(如图4所示),点亮适当的字段,就可显示出不同的数字。我们采用8段数码管,其中位于显示器右下角的LED作小数点用。

LED显示器有两种不同的形式:共阴极和共阳极。本次设计采用共阳极接法。如图为七段显示数码管。

图为共阳极和共阴极的原理图:

硬件电路图:

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

4.3 软件设计

4.3.1 键盘扫描子程序

第一步,置列线P3.4~P3.7为输入状态,从行线P3.0~P3.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P3.4~P3.7读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

4.4 程序框图

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

五.测试结果 六.结论与思考

通过实际运行程序和进行仿真,我们的程序是没有问题的,可以实现两位数的加减法。

通过两个星期的课程设计,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互帮助。学会了合

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

作,学会了宽容,学会了理解,也学会了做人与处世。

我们这次的课程设计的主题是简易的计算器设计,通过设计简易的计算器使我加深了对单片机原理的理解。通过这次课程设计,使我的知识更加的系统和全面,使我了解了我的不足,感谢学校给我的这次机会。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

在这次的课程设计中不仅磨练了我的动手能力,还加深了我对做人处事的理解。 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。

在此次的课程设计中,我要感谢王陈宁老师在课程设计上给我的支持和鼓励。使我可以克服困难完成课程设计。通过王老师的帮助,解决了许多难题,加深了我对知识的理解,还让我学到了新的知识。再次万分感谢!

其次我还要感谢我的同学在我遇到困难时给我的帮助。 参考文献

[1]单片机原理实用教程:基于Proteus虚拟仿真/徐爱钧编著——北京:电子工业出版社,2009.1

[2]单片机原理及其应用(第2版)/陈立周,陈宇编——北京:机械工业出版社,2008.5

[3]51系列单片机系统设计与应用技巧/李刚等编著——北京:北京航空航天大学出版社,2004.1

[4]MCS-51单片机原理与应用/康维新主编——北京:中国轻工业出版社,2009.1 [5]单片机原理与应用系统设计/李云钢等编著——北京:中国水利水电出版社,2008.8

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

附录一:

JG EQU 50H ZJ EQU 51H

;结果放 ;中间结果存放

GONG EQU 52H ;功能键存放 ORG 0000H LJMP START ORG 0100H

START:MOV R3,#0 ;初始化显示为空 MOV GONG,#0

MOV 34H,#00H MOV 33H,#00H

LOOP1:LCALL DISP ;调显示子序 LOOP2:LCALL TKEY JZ LOOP2 LCALL KEY

INC R3

CJNE A,#0,NEXT1 ;判断是否为数字键 LJMP E1 ;转数字键处理

NEXT1:CJNE A,#1,NEXT2 LJMP E1 NEXT2:CJNE A,#2,NEXT3

LJMP E1

NEXT3:CJNE A,#3,NEXT4

LJMP E1

NEXT4:CJNE A,#4,NEXT5

LJMP E1

NEXT5:CJNE A,#5,NEXT6

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

LJMP E1

NEXT6:CJNE A,#6,NEXT7

LJMP E1

NEXT7:CJNE A,#7,NEXT8

LJMP E1

NEXT8:CJNE A,#8,NEXT9

LJMP E1

NEXT9:CJNE A,#9,NEXT10

LJMP E1

NEXT10:CJNE A,#10,NEXT11 ;判断是否为功能键

LJMP E2

;转功能键处理

NEXT11:CJNE A,#11,NEXT12 LJMP E2

NEXT12:CJNE A,#12,NEXT13 LJMP E2

NEXT13:LJMP E3 ;判断是否为清除键 E1:CJNE R3,#1,N1 ;判断第几次按键 LJMP E11 ;为第一个数字 N1:CJNE R3,#2,N2 LJMP E12 N2:LJMP E3

;

;为第二个数字 ;第三个数字转溢出

E11:MOV R4,A ;输入值暂存R4 MOV 34H,A ;输入值送显示缓存 MOV 33H,#00H

LJMP LOOP1

;等待再次输入

E12:MOV R7,A ;个位数暂存R7 MOV B,#10

MOV A,R4

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

MUL AB ADD A,R7

;十位数

MOV R4,A ;输入值存R4 MOV 33H,34H MOV 34H,R7 LJMP LOOP1

;输入值送显示缓存

E3:MOV R3,#0 ; 按键次数清0 MOV R4,#0 ; 输入值清0 MOV JG,#0 ; 计算结果清0 MOV GONG,#0

; 功能键设为0

MOV 34H,#00H ; 显示清空 MOV 33H,#00H LJMP LOOP1

E2:MOV 34H,#00H MOV 33H,#00H

MOV R0,GONG ;与上次功能键交换

MOV GONG,A MOV A,R0

CJNE A,#10,N21 ;判断功能键 LJMP JIA ;“+”

N21:CJNE A,#11,N22 LJMP JIAN ;“-” N22:CJNE A,#0,N23

LJMP FIRST ;首次按功能键 N23:LJMP DENG ;“=” N4:LJMP E3 FIRST:MOV JG,R4 MOV R3,#0

;输入值送结果 ;按键次数清0

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

LJMP DISP1 ;结果处理

;上次结果送累加器 ;上次结果加输入值 ;溢出 ;存本次结果 ;按键次数清0

JIA:MOV A,JG ADD A,R4 JB CY,N4

MOV JG,A

MOV R3,#0

LJMP DISP1

JIAN:MOV A,JG SUBB A,R4

JB CY,N4 MOV JG,A MOV R3,#0

;上次结果减输入值 ;负数溢出

LJMP DISP1 DENG:MOV R3,#0 LJMP DISP1 DISP1:MOV B,#10 MOV A,JG

DIV AB

;结果送累加器 ;结果除10

MOV ZJ,A ;暂存商 MOV A,B ;取个位数

MOV 34H,A ;个位数送显示缓存

MOV A,ZJ JZ DISP11

MOV 33H,A ;十位数送显示缓存

DISP11:LJMP LOOP1 DISP:MOV R0,#34H DIR1:MOV DPTR,#LEDCA

MOV A,@R0

季鹏 胡汪洋,设计单片机课程设计_简易计算器设计

MOVC A,@A+DPTR MOV P0,A

CJNE R0,#34H,DIR2 SETB P2.0 LCALL DELAY10MS CLR P2.0 DEC R0

SJMP DIR1

DIR2:SETB P2.1 LCALL DELAY10MS CLR P2.1

RET

MOV P3,#0FH MOV A,P3 CPL A ANL A,#0FH RET KEY: MOV R6,#10 ACALL DELAY10MS MOV P3,#0FH MOV A,P3 CJNE A,#0FH,K2 LJMP LOOP1

K2:MOV B,A MOV P3,#0EFH MOV A,P3

TKEY:ACALL DISP

单片机课程设计_简易计算器设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219