为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

计算器

2018-09-07 31页 doc 640KB 16阅读

用户头像

is_570315

暂无简介

举报
计算器浙江师范大学数理与信息工程学院课程设计——简易计算器 数理与信息工程学院 课 程 设 计 题 目: 简易计算器 专 业: 计算机科学与技术(专升本) 班 级: 计算机056 姓 名: 张剑波 学号: 05191144 实验地点:数理与信息工程学院 电子系统设计室 指导老师: 余水宝 成 绩: ...
计算器
浙江师范大学数理与信息工程学院课程设计——简易计算器 数理与信息工程学院 课 程 设 计 题 目: 简易计算器 专 业: 计算机科学与技术(专升本) 班 级: 计算机056 姓 名: 张剑波 学号: 05191144 实验地点:数理与信息工程学院 电子系统设计室 指导老师: 余水宝 成 绩: ( 2006.6 ) 目 录 第1节 引 言………………………………………………………………………1 1.1 计算器概述 ……………………………………………………………1 1.2 本设计任务 ……………………………………………………………1 1.3 系统主要功能 ……………………………………………………………2 第2节 计算器硬件设计……………………………………………………………3 2.1 键盘识别技术…………………………………………………………3 2.2  LED“0-9”数字显示技术………………………………………………5 第3节 系统软件设计………………………………………………………………11 3.1系统主程序设计…………………………………………………11 3.2 4×4矩阵式键盘设计…………………………………………………11 3.3 “0-9”数字显示设计…………………………………………………17 第4节 结束语………………………………………………………………………20 参考文献 ………………………………………………………………………21 单片机实现的简易计算器 数理与信息工程学院 05计算机专升本 张剑波 指导教师:余水宝 张 胜 第1节 引 言 目前,51系列单片机在我国的各行各业得到了广泛应用,各大专院校、 职业培训学校,均开设了单片机原理与应用方面的课程,这是一门技术性和实践性很强的学科,必须通过一系列的软硬件实验、理论联系实际,才能学好、学懂,取得较好的学习效果。 1.1 计算器概述 1、加数和被加数的输入位数固定为4位; 2、相加结果显示要考虑进位的输出显示(即5位输出); 3、注意对“0”——“9”、“+”、“=”以外按键输入的处理; 4、注意对相加结果进行十进制处理; 5、输入加数和被加数时,显示器上显示的数字要像平时用的计算器输入一样,即:每输入一个数字,原来显示的数字要往左移。 6、可以完成累加功能,即可以完成如下内容:3265+3885+1254+2358+7779+。。。 1.2 本设计任务 如图4.14.2所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的“0-F”序号。对应的按键的序号排列如图4.14.1所示 图4.14.1 (1.  开机时,显示“0” (2.   第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。 (3. 数字0-9点阵显示代码的形成 1.3 系统主要功能 用4*4键盘做一个模拟计算器,实现最高四位的加,减,乘,除功能,按键识别和显示部分我都会,就是按键后怎样将运算符前后的数据区分开 1.输入一位就显示一位,在输入一个运算符之前最多只能输入四位。 2.将运算符前,后的数据区分开来,同时将运算符前后输入的数据转换为一个10进制数。 3.对输入的数据进行处理,即进行算术运算,最重要的是对于除法时,如果有小数位时,显示部分应该做处理。 第2节 计算器硬件设计 硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。 2.1 4×4矩阵式键盘识别技术系统的硬件构成及功能 1. 硬件电路原理图 2. 系统板上硬件连线 (1.       把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上; (2.       把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。 3.  程序设计内容 (1.       4×4矩阵键盘识别处理 (2.       每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 4. 程序框图 P3=FFH,P3.0=0 有键按下吗? 延时10ms 真得有键按下吗? 根据当前状态识别按键 P3=FFH,P3.1=0 有键按下吗? 延时10ms 真得有键按下吗? 根据当前状态识别按键 P3=FFH,P3.2=0 有键按下吗? 延时10ms 真得有键按下吗? 根据当前状态识别按键 P3=FFH,P3.3=0 有键按下吗? 延时10ms 真得有键按下吗? 根据当前状态识别按键 图4.14.3 2.2 点阵式LED“0-9”数字显示技术 1. 电路原理图 图4.25.1 2. 硬件系统连线 (1).  把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上; (2).  把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上; 4. 程序设计内容 (1).  数字0-9点阵显示代码的形成   如下图所示,假设显示数字“0” 1 2 3 4 5  6 7 8                       ● ● ●         ●       ●       ●       ●       ●       ●       ●       ●       ●       ●         ● ● ●     00 00 3E 41 41 41 3E 00 因此,形成的列代码为 00H,00H,3EH,41H,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。 送显示代码过程如下所示 送第一列线代码到P3端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P3端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。 数字“1”代码建立如下图所示1 2 3 4 5  6 7 8                           ●             ● ●               ●               ●               ●               ●             ● ● ●   其显示代码为 00H,00H,00H,00H,21H,7FH,01H,00H 数字“2”代码建立如下图所示 1 2 3 4 5  6 7 8                       ● ● ●         ●       ●               ●               ●       ● ● ● ●         ●               ● ● ● ● ●   00H,00H,27H,45H,45H,45H,39H,00H 数字“3”代码建立如下图所示 1 2 3 4 5  6 7 8                       ● ● ●         ●       ●               ●         ● ● ●                 ●       ●       ●         ● ● ●     00H,00H,22H,49H,49H,49H,36H,00H 数字“4”代码建立如下图所示 1 2 3 4 5  6 7 8                           ●             ● ●           ●   ●         ●     ●         ● ● ● ● ●             ●               ●     00H,00H,0CH,14H,24H,7FH,04H,00H 数字“5”代码建立如下图所示 1 2 3 4 5  6 7 8                     ● ● ● ● ●       ●               ● ● ● ●                 ●               ●       ●       ●         ● ● ●     00H,00H,72H,51H,51H,51H,4EH,00H 数字“6”代码建立如下图所示 1 2 3 4 5  6 7 8                       ● ● ●         ●       ●       ●               ● ● ● ●         ●       ●       ●       ●         ● ● ●     00H,00H,3EH,49H,49H,49H,26H,00H 数字“7”代码建立如下图所示 1 2 3 4 5  6 7 8                     ● ● ● ● ●               ●               ●             ●               ●               ●               ●     00H,00H,40H,40H,40H,4FH,70H,00H 数字“8”代码建立如下图所示 1 2 3 4 5  6 7 8                       ● ● ●         ●       ●       ●       ●         ● ● ●         ●       ●       ●       ●         ● ● ●     00H,00H,36H,49H,49H,49H,36H,00H 数字“9”代码建立如下图所示 1 2 3 4 5  6 7 8                       ● ● ●         ●       ●       ●       ●         ● ● ● ●               ●       ●       ●         ● ● ●     00H,00H,32H,49H,49H,49H,3EH,00H 第3节 系统的软件设计 本系统的软件系统主要可分为主程序、4×4矩阵式键盘识别程序、点阵式LED“0-9”数字显示程序三大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。 3.1 系统主程序设计 ORG 0000H LJMP MAIN ORG 0030H MAIN: ; 全局初始化  MOV SP, #60H ; 堆栈  MOV IE, #00H ; 禁止所有中断 ; 寄存器组 00  CLR RS1  CLR RS0  ; 工作区IRAM(20H-5FH)默认全为0 INIT20TO5F:  MOV R0, #20H ; START AT 20H  MOV R7, #40H ; 64 BYTES TO ZERO LOOP20TO5F:  MOV @R0, #00H  INC R0  DJNZ R7, LOOP20TO5F ; ---------------------------------  SETB STAT.0 ; 初始状态为等号状态  MOV R7, #00H  MOV SCON, #00H ; 串行工作方式0 ; ------------------------------------- ;; DISPLAY INIT ; -------------------------------------      LCALL LCDINIT      MOV    COM,#06H      LCALL  PR1      MOV    COM,#0C0H      LCALL  PR1 MAIN_LOOP: 3.2 4×4矩阵式键盘汇编源程序 KEYBUF EQU 30H ORG 00H START: MOV KEYBUF,#2 WAIT: MOV P3,#0FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK1 MOV KEYBUF,#0 LJMP DK1 NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1 NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1 NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1 NK4: NOP DK1: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A   DK1A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK1A NOKEY1: MOV P3,#0FFH CLR P3.5 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2 NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK2 NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 LJMP DK2 NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7 LJMP DK2 NK8: NOP DK2: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A   DK2A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK2A NOKEY2: MOV P3,#0FFH CLR P3.6 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK9 MOV KEYBUF,#8 LJMP DK3 NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#9 LJMP DK3 NK10: CJNE A,#0BH,NK11 MOV KEYBUF,#10 LJMP DK3 NK11: CJNE A,#07H,NK12 MOV KEYBUF,#11 LJMP DK3 NK12: NOP DK3: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A   DK3A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK3A NOKEY3: MOV P3,#0FFH CLR P3.7 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#12 LJMP DK4 NK13: CJNE A,#0DH,NK14 MOV KEYBUF,#13 LJMP DK4 NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#14 LJMP DK4 NK15: CJNE A,#07H,NK16 MOV KEYBUF,#15 LJMP DK4 NK16: NOP DK4: MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A   DK4A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK4A NOKEY4: LJMP WAIT DELY10MS: MOV R6,#10 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H END 3.3 点阵式LED“0-9”数字显示汇编源程序 TIM EQU 30H CNTA EQU 31H CNTB EQU 32H   ORG 00H LJMP START ORG 0BH LJMP T0X ORG 30H START: MOV TIM,#00H MOV CNTA,#00H MOV CNTB,#00H MOV TMOD,#01H MOV TH0,#(65536-4000)/256 MOV TL0,#(65536-4000) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $   T0X: MOV TH0,#(65536-4000)/256 MOV TL0,#(65536-4000) MOD 256 MOV DPTR,#TAB MOV A,CNTA MOVC A,@A+DPTR MOV P3,A MOV DPTR,#DIGIT MOV A,CNTB MOV B,#8 MUL AB ADD A,CNTA MOVC A,@A+DPTR MOV P1,A INC CNTA MOV A,CNTA CJNE A,#8,NEXT MOV CNTA,#00H NEXT: INC TIM MOV A,TIM CJNE A,#250,NEX MOV TIM,#00H INC CNTB MOV A,CNTB CJNE A,#10,NEX MOV CNTB,#00H NEX: RETI TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH DIGIT: DB 00H,00H,3EH,41H,41H,41H,3EH,00H DB 00H,00H,00H,00H,21H,7FH,01H,00H DB 00H,00H,27H,45H,45H,45H,39H,00H DB 00H,00H,22H,49H,49H,49H,36H,00H DB 00H,00H,0CH,14H,24H,7FH,04H,00H DB 00H,00H,72H,51H,51H,51H,4EH,00H DB 00H,00H,3EH,49H,49H,49H,26H,00H DB 00H,00H,40H,40H,40H,4FH,70H,00H DB 00H,00H,36H,49H,49H,49H,36H,00H DB 00H,00H,32H,49H,49H,49H,3EH,00H END 结 束 语 由于所采用的浮点程序库的限制(MCU平台只找到这个……),浮点运算采用3字节二进制补码表示,有效数字6位。对于输入输出,采用3字节BCD码浮点数,有效数字只有4位,因此最终有效数字只有4位。可进行连续输入,例如:1.23+4.56*8.23/234.8 ,但是运算结果为从左到右,这也是8位简易计算器的方式。可进行错误判断,溢出、除零等错误将显示一个字符 E 。由于键盘只有16个按键,安排如下:    +---------------+    | 7 | 8 | 9 | + |    | 4 | 5 | 6 | - |    | 1 | 2 | 3 | * |    | 0 | . | = | / |    +---------------+ 按键的缺少导致取消了一些特殊函数,即开根号,三角函数(sin, cos, tan, ctg)的实现,由于这些函数在浮点程序库中均已提供,如果硬件允许,在原来的框架上添加这些附加功能是很容易的(可以看作和+, -, *, /等价的按键操作,调用不同的子程序进行运算即可)按两次 = 等于清灵。因为按键实在太少,才采用了这个做法。 不足    使用3字节的浮点数表示,不可避免的带来了数表示的不精确,加上有效数字比较少,因此计算结果很容易产生误差,尤其是进行连续多次运算后,结果和精度较高的科学计算器的误差会很快达到0.01以上,当然这个差距和所测试的用例也有关系,4位有效数字导致了数字123456只能表示为123400,最后两位有效数字被摒弃了。    同时,虽然纯整数可以进行较为高精度的运算,实现也较为容易,但是考虑到要和浮点数混合在一起处理,如果在算法上分别考虑整数和浮点数,整个程序框架代码将会膨胀不少,因此将其简化为统一作为浮点数对待。 1、大学专科时间都是在学习通信理论基础知识,并未真正地去应用和实践。经过这次课程设计,我接触到了更多平时没有接触到的仪器设备、元器件以及相关的使用调试经验,发现了自己很多不足之处。我还体会到了所学理论知识的重要性:知识掌握得越多,设计得就更全面、更顺利、更好。      2、了解进行一项相对比较大型的科技设计所必不可少的几个阶段。能够从理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合、个人作用和集体协作相结合等方面全面的培养学生的全面素质。我经过这次系统的毕业设计,熟悉了对一项课题进行研究、设计和实验的详细过程。这些在我们在将来的工作和学习当中都会有很大的帮助。      3、学会了怎样查阅资料和利用工具书。平时课堂上所学习的知识大多比较陈旧,作为通信工程的学生,由于专业特点自己更要积极查阅当前的最新通信资料。一个人不可能什么都学过,什么都懂,因此,当你在设计过程中需要用一些不曾学过的东西时,就要去有针对性地查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识。      4、实践能力得到了进一步提高,在调试过程中积累了一些经验。      5、课程设计对以前学过的理论知识起到了回顾作用,并对其加以进一步的消化和巩固。      6、课程设计培养了严肃认真和实事求是的科学态度。而且培养了吃苦耐劳的精神以及相对应的工程意识,同学之间的友谊互助也充分的在毕业设计当中体现出来了。 在这里,我要感谢我的指导老师余水宝老师,他给了我许多的帮助。我还要感谢课程设计过程中所有给我真诚帮助的老师和同学。   参考文献 [1]肖洪兵. 跟我学用单片机. 北京:北京航空航天大学出版社,2002.8 [2]何立民. 单片机高级. 第1版.北京:北京航空航天大学出版社,2001 [3]赵晓安. MCS-51单片机原理及应用. 天津:天津大学出版社,2001.3 [4]李广第. 单片机基础. 第1版.北京:北京航空航天大学出版社,1999 [5]徐惠民、安德宁. 单片微型计算机原理接口与应用. 第1版. 北京:北京邮电大学出版社,1996 [6]何立民.从Cygnal 80C51F看8位单片机发展之路. 单片机与嵌入式系统应用,2002年,第5期:P5~8 [7]夏继强. 单片机实验与实践教程. 北京:北京航空航天大学出版社, 2001 [8]童诗白.模拟电子技术基础(第4版)[m].北京:高等教育出版社,2000. PAGE 1
/
本文档为【计算器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索