简易计算器的设计与实现.docx

上传人:b****6 文档编号:14027430 上传时间:2023-06-20 格式:DOCX 页数:26 大小:177.24KB
下载 相关 举报
简易计算器的设计与实现.docx_第1页
第1页 / 共26页
简易计算器的设计与实现.docx_第2页
第2页 / 共26页
简易计算器的设计与实现.docx_第3页
第3页 / 共26页
简易计算器的设计与实现.docx_第4页
第4页 / 共26页
简易计算器的设计与实现.docx_第5页
第5页 / 共26页
简易计算器的设计与实现.docx_第6页
第6页 / 共26页
简易计算器的设计与实现.docx_第7页
第7页 / 共26页
简易计算器的设计与实现.docx_第8页
第8页 / 共26页
简易计算器的设计与实现.docx_第9页
第9页 / 共26页
简易计算器的设计与实现.docx_第10页
第10页 / 共26页
简易计算器的设计与实现.docx_第11页
第11页 / 共26页
简易计算器的设计与实现.docx_第12页
第12页 / 共26页
简易计算器的设计与实现.docx_第13页
第13页 / 共26页
简易计算器的设计与实现.docx_第14页
第14页 / 共26页
简易计算器的设计与实现.docx_第15页
第15页 / 共26页
简易计算器的设计与实现.docx_第16页
第16页 / 共26页
简易计算器的设计与实现.docx_第17页
第17页 / 共26页
简易计算器的设计与实现.docx_第18页
第18页 / 共26页
简易计算器的设计与实现.docx_第19页
第19页 / 共26页
简易计算器的设计与实现.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

简易计算器的设计与实现.docx

《简易计算器的设计与实现.docx》由会员分享,可在线阅读,更多相关《简易计算器的设计与实现.docx(26页珍藏版)》请在冰点文库上搜索。

简易计算器的设计与实现.docx

简易计算器的设计与实现

沈阳航空航天大学

 

课程设计报告

 

课程设计名称:

单片机系统综合课程设计

课程设计题目:

简易计算器的设计与实现

 

院(系):

专 业:

 

班 级:

学 号:

姓名:

指导教师:

完成日期:

 

 

第1章ﻩ总体设计方案1

1.1 设计内容1

1.2 设计原理1

1。

3设计思路2

1。

4 实验环境2

第2章 详细设计方案ﻩ3

2.1硬件电路设计ﻩ3

第3章  结果测试及分析11

3。

1结果测试11

3.2 结果分析11

参考文献ﻩ12

附录1元件清单13

第1章总体设计方案

1。

1设计内容

本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。

  设计过程在硬件与软件方面进行同步设计.硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。

显示采用6位8段共阳极数码管动态显示。

软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。

编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。

1.2设计原理

在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。

作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。

       

1)提出方案

以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。

2)总体方案实现

(1)要解决键值得读入.先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测——-就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码查表可的键值.并且将键值送入缓冲区.

(2)计算。

从缓冲区中取出数据按照括号配匹算法解决符号优先级问题,如果有键值为“F”则清空缓冲区跳至开始处,否则调用汇编指令进行计算,结果送入缓冲区。

(3)显示。

从缓冲区中取出数据查找段码表,将段码送入段码管。

1.3设计思路

采用汇编语言程序设计的方法结合硬件电路设计方法,利用Lab6000实验箱上已有芯片来实现计算器的各项功能。

  

1。

4 实验环境

硬件环境:

Lab6000实验箱,PC机。

软件环境:

WAVE应用软件。

第2章详细设计方案

2.1 硬件电路设计

1)单片机8751

P0口作为存储器地址线的低8位,p2口作为地址线的高8位,采用定时器0作为键盘抖动时的10ms延时,采用外部设备与存储器统一编制方式。

如图2。

1所示.

图2.1单片机8751图

2)8段共阳极数码管

图为八段共阳极数码管的引脚图,从左到右数码管的段码分别为a,b,c,d,e,f,g和小数点dp,高电平时点亮,这八位分别74LS374的Q0~Q7接,作为数码管的段码锁存器,其CPU访问地址位09004。

下边为位选端和阳极端,6个位选端分别与另一片74LS374的Q0~Q5,与此同时为了体现总线的复用性和硬件电路的简单性这6位位选线作为键盘的列线,CPU访问地址为09002H。

如图2.2所示。

图2。

2共阳极8段数码管图

3)键盘

键盘可分为两类:

编码键盘和非编码键盘。

编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。

通用计算机使用的标准键盘就是编码键盘.当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。

但大多数智能仪器和电子产品的按键数目都不太多(20个以内),为了降低成本和简化电路通常采用非编码键盘。

非编码键盘的接口电路有设计者根据需要自行决定,按键信息通过接口软件来获取。

本课题需要的是16个按键,故选择用非编码键盘.键盘的行线与一片74LS245相连接作为键盘的扫描码,其CPU访问地址09001H.如图2.3所示.

图2。

3简易计算器数据输入键盘图

4)74LS374

74LS374是地址锁存器,一片用来锁存键盘,数码管的地址,另一片用来锁存数码管的段码。

如图2。

4所示.

图2.4 74LS374图

5)74LS245

74LS245用来读取键盘的行码A0-A3分别与键盘的行线相连接;B0-B7分别与数据总线相连接.如图2。

5所示。

图2.5 74LS245图

6)UNL2003A

UNL2003A相当于7个非门IN输入OUT输出,其中IN端接键盘的列线,OUT端接数码管。

如图2.6所示。

图2.6ULN2003A图

2.2主程序设计

主程序模块是边检测边显示的模块,一旦有按键按下(无论是按键抖动还是真的有按键按下)就转入键值读取模块,如果没有按键按下或是已经从键值读取模块返回,就继续从一个以30H为首地址的缓冲区中取出数据并转换成数码管的段码显示出来。

主模块是一个死循环函数没有结束直至人为终止.主程序流程图如图2。

7所示。

ﻩﻩ 图2。

7主程序流程图

2。

2功能模块的设计与实现

1)键值读取模块.

键只读取模块是,当主模块中有按键时,才被调用的。

其功能是首先延时10ms已消除键盘抖动,继续读写,若读得的数据与主模块中的键值一样则真的有按键按下,若是“F”键则清空缓冲区若是“E"键则调用计算模块,否则将键值写入缓冲区返回主函数。

流程图如2。

8所示。

图2.8键值读取模块图

2)计算模块

计算模块是从缓冲区中取得数据并且压栈,如遇到“*”或是“/”就出栈同时进行乘除运算;至到遇到等号为止,再从栈中取得数据进行加减运算。

并将计算的结果送入缓冲区中。

具体流程图如图2.9所示。

第3章结果测试及分析

3。

1结果测试

计算器实现了0–F内的加减乘除法运算,并将表达式以及结果显示在六位八段数码管上,其中A键为加号,B键为减号,C键为乘号D键为除号,F键为清零,还可以实现表达式的运算,例如1+2*3/4—5=-2.75的表达式。

  

3。

2结果分析

键值的读取是本次课程设计最关键的一部分,因为只有从键盘取得数据才能进行计算和显示,否则该题目无法继续进行下去,按键的读取逻辑方面并不是很难,但是边读取边显示就显得不那么简单了,所以存在一个延时问题。

延时得当则读取和显示可完美结合。

计算也是一个很关键部分,本来想做一个任意位数的任意数学表达式的计算器可是由于时间限制,只能完成了计算任意数学表达式计算器。

显示模块比较简单实现起来也比较容易。

参考文献

[1]王爱英.计算机组成与设计[M]. 北京:

教育出版社,2003

[2]杨素行.微型计算机系统原理及应用[M].北京:

清华大学出版社,1996

[3]张雪兰.汇编语言程序设计 [M].北京:

清华大学出版社,2006

[4]龚尚福。

微机原理与接口技术[M]。

 西安:

西安电子科技大学出版社,2003

[5]王中民。

微型计算机原理[M].西安:

西安电子科技大学出版社,2003

[6]沈美明,温冬婵。

IBM—PC汇编语言程序设计[M].北京:

清华大学出版社,2001

附录1 元件清单

名称

数量(个)

型号

备注

电阻

8段数码管

6

DPY

开关

24

BUTTON

单片机

1

8751

与非门

3

电源

3

电容

30pf(2个),10uf(1个)

晶振

1

CRYSTAL

芯片

74LS系列ULN2003A

74LS138,74LS245,74LS373(2)

74LS374

 

附录2 总电路图

附 录3 程序代码

ORG0000H

LJMP MAIN

ORG000BH

LJMPINT

ORG00FFH

MAIN:

MOV R7,#30H

MOVR6,#00H

CALL RESET

JMPMAIN

RESET:

MOVA,R7

MOVR0,A

MOVR1,#01H

MOVA,#06H

SUBBA,R6

JB PSW.7,MAX

MOVA,R6

XRLA,#00H

JZ CC

MOVA,R6

MOVR3,A

JMPLOOP5

MAX:

MOVR3,#06H

LOOP5:

MOVA,@R0

MOVR5,A

CALLCHACKTABLE

CALLDISPLAY

MOV A,R1

RLA

MOVR1,A

DECR0

DJNZR3,LOOP5

CC:

MOVDPTR,#09004H

MOV A,#00H

MOVX@DPTR,A

MOVR1,#00H

CALLREAD

XRLA,#0FH

JZRESET

CALLCHACK

JMPRESET

RET

CHACK:

CALL DELAY

MOVXA,@DPTR

MOVR2,A

xrlA,R0

JZHAVE

AJMPCHACK

HAVE:

MOVR1,#0FBH

LOOP:

CALLREAD

xrlA,R2

JZEQUAL

MOVA,R1

RLA

MOVR1,A

AJMPLOOP

EQUAL:

CALL DELAY

CALL DELAY

LOOP2:

MOVX A,@DPTR

XRLA,#0FH

JZLOOP3

JMP LOOP2

LOOP3:

CALLCHACKTAB

CALLCHACKTABLE

CALLRESOLVE

RET

 

CHACKTAB:

MOVDPTR,#TAB

MOVA,#00H

MOVR5,#00H

LOOP4:

RLA

MOV R4,A

MOVCA,@A+DPTR

XRLA,R1

JNZNEXT

MOVA,R4

INCA

MOVC A,@A+DPTR

XRLA,R0

JNZ NEXT

AJMPENDD

NEXT:

INCR5

MOV A,R5

SJMPLOOP4

ENDD:

RET

CHACKTABLE:

MOVDPTR,#TABLE

MOVA,R5

MOVCA,@A+DPTR

MOV R4,A

RET

DISPLAY:

MOVDPTR,#09002H

MOV A,R1

MOVX @DPTR,A

MOVDPTR,#09004H

MOVA,R4

MOVX@DPTR,A

MOVR2,#0FFH

DJNZR2,$

RET

 

READ:

MOVDPTR,#09002H

MOVA,R1

MOVX@DPTR,A

MOVDPTR,#09001H

MOVXA,@DPTR

MOVR0,A

RET

 

RESOLVE:

INCR7

MOV A,R7

MOV R0,A

MOVA,R5

INCR6

MOV @R0,A

MOV A,R5

XRL A,#0FH

JZCLEAR

MOVA,R5

XRLA,#0EH

JZ M

JMPMM

M:

LCALLJISUANG

MM:

RET

CLEAR:

LJMP MAIN

 

DELAY:

MOVTH0,#3CH

MOVTL0,#0B0H

MOVTMOD,#01H

SETB EA

SETB ET0

SETBTR0

JBTR0,$

JMPRRR

INT:

CLRTR0

RETI

RRR:

RET

TAB:

DW0DF0EH,0DF0DH,0EF0DH,0F70DH,0DF0BH,0EF0BH,0F70BH

DW0DF07H,0EF07H,0F707H,0FB07H,0FB0BH,0FB0DH,0FB0EH

DW0F70EH,0EF0EH

TABLE:

  DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

 

JISUANG:

MOVR0,#31H

MOVR1,#50H

CHENGCHU:

MOVA,@R0

XRLA,#0CH

JZ CHENG

MOVA,@R0

XRLA,#0DH

JZCHENG

MOV A,@R0

XRL A,#0EH

JZOVER

MOVA,@R0

MOV@R1,A

INCR0

INCR1

JMPCHENGCHUCHENG:

MOV A,@R0

MOVR3,A

DECR1

MOVA,@R1

MOV R2,A

INCR0

MOV A,@R0

INCR0

MOV R4,A

CALL MATH

MOVA,R5

MOV@R1,A

INC R1

MOVA,R5

MOV@R1,A

JMPCHENGCHU

CHU:

MATH:

MOVA,R3

XRL A,#0AH

JZ ADDD

MOVA,R3

XRLA,#0BH

JZSUBBB

MOVA,R3

XRLA,#0CH

JZMULL

JMPOVER

ADDD:

MOVA,R2

ADD A,R4

MOVR5,A

JMPRETT

SUBBB:

MOVA,R2

SUBBA,R4

MOVR5,A

JMPRETT

MULL:

MOVA,R2

MOVB,R4

MULAB

MOVR5,A

RETT:

RET

OVER:

INCR0

MOVA,#0EH

MOV@R1,A

MOVR1,#50H

LOOP8:

MOVA,@R1

XRL A,#0EH

   JZENDD1

INCR1

MOVA,@R1

XRLA,#0EH

JZ ENDD1

DECR1

MOVA,@R1

MOVR2,A

INCR1

MOV A,@R1

MOVR3,A

INCR1

MOVA,@R1

MOVR4,A

CALLMATH

MOVA,R5

MOV@R1,A

JMP LOOP8

ENDD1:

DECR1

MOVA,@R1

MOV@R0,A

INCR7

INCR6

RET

END

课程设计总结:

 通过这次课程设计,我进一步加深了对单片机的了解。

并进一步熟练了对WAVE和Proteus软件的操作.在编写程序的过程中,遇到了很多问题,例如键值的读入问题,数码管的动态显示问题.经过几天的努力,在老师同学们的帮助下终于完成了本次课程设任务.通过这次的设计,进一步了解了单片微型计算机及应用原理,收获很大,对软件编程、排错调试、查阅资料等方面得到较全面的锻炼和提高。

  同时通过本次课程设计的学习,掌握了51系列单片机和其工作环境,可以进行一些简单的编程,我还深深的体会到设计课的重要性和目的性所在.为了完成课程设计的任务,在网络上找到了许多相关的资料,大大扩充自己的知识面,使许多以前想解决却无法解决的困难迎刃而解。

将书本上的理论知识和实际有机地结合起来,从理论中得出结论。

锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。

此次课设还巩固和综合运用所学过的原理知识,从而提高自己的实际动手能力和独立思考的能力。

指导教师评语:

 

指导教师(签字):

       年 月日

课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2