简易计算器的设计与实现.docx
- 文档编号:26522716
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:26
- 大小:177.24KB
简易计算器的设计与实现.docx
《简易计算器的设计与实现.docx》由会员分享,可在线阅读,更多相关《简易计算器的设计与实现.docx(26页珍藏版)》请在冰豆网上搜索。
简易计算器的设计与实现
沈阳航空航天大学
课程设计报告
课程设计名称:
单片机系统综合课程设计
课程设计题目:
简易计算器的设计与实现
院(系):
专 业:
班 级:
学 号:
姓名:
指导教师:
完成日期:
第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 元件清单
名称
数量(个)
型号
备注
电阻
6
8段数码管
6
DPY
开关
24
BUTTON
单片机
1
8751
与非门
3
电源
3
电容
3
30pf(2个),10uf(1个)
晶振
1
CRYSTAL
芯片
5
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系列单片机和其工作环境,可以进行一些简单的编程,我还深深的体会到设计课的重要性和目的性所在.为了完成课程设计的任务,在网络上找到了许多相关的资料,大大扩充自己的知识面,使许多以前想解决却无法解决的困难迎刃而解。
将书本上的理论知识和实际有机地结合起来,从理论中得出结论。
锻炼了实际分析问题和解决问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。
此次课设还巩固和综合运用所学过的原理知识,从而提高自己的实际动手能力和独立思考的能力。
指导教师评语:
指导教师(签字):
年 月日
课程设计成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 计算器 设计 实现