收藏 分享(赏)

华南农业大学单片机课程设计-简易计算器.doc

上传人:kpmy5893 文档编号:8088902 上传时间:2019-06-08 格式:DOC 页数:15 大小:105.48KB
下载 相关 举报
华南农业大学单片机课程设计-简易计算器.doc_第1页
第1页 / 共15页
华南农业大学单片机课程设计-简易计算器.doc_第2页
第2页 / 共15页
华南农业大学单片机课程设计-简易计算器.doc_第3页
第3页 / 共15页
华南农业大学单片机课程设计-简易计算器.doc_第4页
第4页 / 共15页
华南农业大学单片机课程设计-简易计算器.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、单片机课程设计报告简易计算器 姓 名: 班 级:学 号:指导老师:日 期:华南农业大学工程学院1摘要:本设计是基于 51 系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除 3 位无符号数字的简单四则运算,并在 LED 上相应的显示结果。设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的 AT89C51 单片机,输入采用 44 矩阵键盘。显示采用 3 位 7 段共阴极 LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对 C 语言和汇编语言进行比较分析

2、,针对计算器四则运算算法特别是乘法和除法运算的实现。关键字:单片机、简易计算器、汇编语言、功能模块2目 录一、系统设计要求 -41.1 基本要求 -41.2 发挥部分 -4二、 系统的硬件设计与实现 -43.1 系统硬件的基本组成部分 -43.2 主要单元电路的设计 -5三、 系统软件设计 -6四、 系统测试 -14五、 总结 -14致 谢 -15参考文献 -153一、系统设计要求1.1 基本要求在课程设计时,三人一组,老师在动员大会上主要指明设计思路,启发学生独立设计的思路。功能要求主要如下:(1)键盘输入;(2)数值显示;(3)加、减运算(此次只要求加减) ;(4)对错误的控制及提示。在十

3、进制加减法计算中:输入范围为(199) ,该程序输入两个定点数,每个 2 位,输出 3 位;A 为加,B 为减,C 为等于,输出为 3 位计算结果。数据输入采用规范化输入,即必须输入 2 个数才算完成一个运算数的输入,两个运算数之间输入运算符 A 或者 B,输入完成按 C 显示计算结果。1.2 发挥部分可以选择扩张更多功能,如乘法,除法,三角函数等,使这简易计算器功能更全面。2、系统的硬件设计与实现2.1 系统硬件的基本组成部分8086CPU,单片机试验箱键盘模块(0-9,a-f) ,LED 数码管等。单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。主控芯

4、片选取 74LS164 芯片,因其具有良好的性能及稳定性,价格便宜应用方便。晶振选取 11.0592MHz,晶振旁电容选取 22pF。采用按键复位电路,电阻分别选取 560 和 10K,电容选取 10F。1、键盘接口电路计算器所需按键有:数字键:“0” “1”“2”“3”“4”“5”“6”“7”“8”“9”功能键:“A(+) ”“B()”“C(*)”“D(/)”“E(=)”键盘共计 15 个按键,其中 15 个按键采用到,采用 4*4 矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的 8 个公共端分别接 P1.0P1.7,这样扫描 P1 口就可以完成对矩阵键盘的扫描,通过对 16 个按键

5、进行编码,从而得到键盘的口地址,对比 P1 口的扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘扫描的功能。42、数码管显示电路采用 6 位数码管对计算数据和结果的显示,这里选取共阳数码管,利用NPN 三极管对数码管进行驱动,为了节省 I/O 资源,采取动态显示的方法来显示计算数据及结果,动态扫描。为了实现数码管的动态显示,P2 口输出显示值,通过 P2 口的二进制代码送到数码管进行显示。P3.0P3.5 用来作为位选端,控制哪几位数码管进行显示。比如当 P3.2 为高电平时,其他位全给 0,具体的在软件中会有说明。此时就将扫描的数据送给指定数码管显示。2.2 主要单元电路的设

6、计设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序完成数据的储存或者是加减的运算。运算完成后将运算的结果储存并显示到 LED 显示器上。 53、系统软件设计设计总体流程图,分模块编写程序NNN开始输入六个数字或符号R1*10+R2=R2R4*10+R5=R4R3 是加号?R3 是减号?R2/R4R3 是乘号?R2+R4R2-R4R2*R4显示结果结束6键盘扫描流程图:开始初始化地址参数输出列扫描信号列扫描信号移位读入行信号该列有键输入 ?四列扫描完 ?返回按照行列计算键值查表得键码等待按键释放返回

7、否是是否7程序源代码:Z8279 EQU 212HD8279 EQU 210HLEDMOD EQU 00000000B ;左边输入,八位显示,外部译码八位显示DATA SEGMENTDATA1 DB 0,0,0,0,0 ;第一个数据(作为被减数)DATA2 DB 0,0,0,0,0 ;第二个数据(作为减数)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:PUSH CSPOP DSPUSH CSPOP ES MOV DX,Z8279MOV AL,LEDMODOUT DX,AL;- MOV DX,Z8279 ;清 FIFO RAM

8、寄存器MOV AL,0D1HOUT DX,ALKAISHI: MOV SI,OFFSET DATA1 MOV BX,10Q1: MOV BYTE PTRSI+BX-1,0;数据区清零 DEC BXJNZ Q1CALL SHURU ;读取第一个字符; MOV SI,AL ;存入第一个字符MOV BX,1CALL DISPL CALL SHURU ;输入第二个字符 ; CMP AL,0 JB T1 MOV BL,BYTE PTRSIMOV BYTE PTRSI,ALMOV BYTE PTRSI+1,BL MOV BX,2CALL DISPL CALL SHURU T1: PUSH AX ;存入运算

9、符MOV DX,Z82798MOV AL,0D1HOUT DX,ALWAIIT6: IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT6CALL SHURU ;MOV SI,OFFSET DATA2MOV BYTE PTRSI,AL ;输入第三个字符MOV BX,1CALL DISPLCALL SHURU ; CMP AL,=JZ T99 ;计算跳转MOV BL,BYTE PTRSI ;输入第四个字符MOV BYTE PTRSI,ALMOV BYTE PTRSI+1,BL MOV BX,2CALL DISPL CALL SHURU ; T99: JMP

10、JISUAN ;-SHURU PROC ;输入函数MOV DX,Z8279MOV AL,0C2HOUT DX,AL ;置空 FIFO 寄存器 WAIIT:NOPIN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT ;FIFO 正在清除期间则跳转等待MOV AL,BLAND AL,0FHCMP AL,00HJE WAIIT ;无键按下则等待MOV AL,40H ;写 读 FIFO RAM 命令字OUT DX,AL9MOV DX,D8279 ;读入 FIFO RAM 内容IN AL,DXNOP CMP AL,11JNZ T101MOV DX,Z8279MOV

11、AL,0D1HOUT DX,AL ;置空 FIFO 寄存器WAIIT1: IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT1JMP KAISHIT101: LEA BX,LEEXLAT RETSHURU ENDPDISPL PROC ;显示子功能 PUSH BX MOV DX,Z8279MOV AL,0D1HOUT DX,AL ;置空 FIFO 寄存器WAIIT4: IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT4 POP BXMOV AL,40HOUT DX,ALMOV DX,D8279MOV AL,SI+

12、4CMP AL,EJNZ DSI8MOV AL,79HOUT DX,ALJMP DSI9DSI8: MOV AL,SI+BX-1 10CMP AL,0JA DSI0DEC BX JNZ DSI8 MOV AL,3FH ;显示 0OUT DX,AL RET DSI0: MOV CX,BXMOV BX,0DSI2: MOV AL,SI+BXSUB AL,30HPUSH BX LEA BX,TABLEXLATOUT DX,ALPOP BXCMP BX,1JNZ T119OUT DX,ALOUT DX,ALT119: INC BXCMP CX,BX JZ T103 JMP DSI2 T103: MOV

13、 AL,SI+4CMP AL,-JNZ DSI9 MOV AL,40H OUT DX,AL;显示 -号 DSI9: RETDISPL ENDP ;计算区. JISUAN: MOV SI,OFFSET DATA1MOV DI,OFFSET DATA2SUB BYTE PTRSI,30HSUB BYTE PTRDI,30HSUB BYTE PTRSI+1,30HSUB BYTE PTRDI+1,30HMOV DL,1011MOV AL,BYTE PTRSI+1MUL DLADD AL,SIMOV BL,ALMOV AL,DI+1MUL DLADD AL,DI XCHG AL,BL ;AL 被减数,

14、BL 减数POP CX ;弹出运算符CMP CL,+JZ JIACMP CL,-JZ JIANCMP CL,*JZ CHENGJMP CHUCHU: AADCMP BL,0JNZ T20MOV SI,OFFSET DATA1MOV BYTE PTRSI+4,E ;除数为零MOV BX,5CALL DISPL JMP KAISHIT20:DIV BLMOV AH,0 ;余数置 0 JMP XIANSHI JIA: ADD AL,BL JMP XIANSHI JIAN: CMP AL,BLJNB N1XCHG AL,BLMOV BYTE PTRSI+4,-N1:SUB AL,BL JMP XIAN

15、SHICHENG: MUL BL JMP XIANSHI XIANSHI: MOV CX,1000MOV DX,012DIV CXADD AX,30HMOV SI+3,ALMOV AX,DXMOV CL,100DIV CLADD AL,30HMOV SI+2,ALMOV AL,AHMOV AH,0MOV CL,10DIV CLADD AL,30HADD AH,30HMOV SI+1,ALMOV SI,AH MOV BX,5 ;显示结果CALL DISPL JMP KAISHILEE: DB 37H,34H,31H,30HDB 00H,00H,00H,00H DB 38H,35H,32H,00H

16、DB 00H,00H,00H,00H DB 00H,00H,00H,00HDB 00H,00H,00H,00HDB 00H,00H,00H,00HDB 00H,00H,00H,00H DB 39H,36H,33H,=DB 00H,00H,00H,00HDB +,-,*,/ DB 00H,00H,00H,00H DB 00H,00H,00H,00HDB 00H,00H,00H,00HDB 00H,00H,00H,00HDB 00H,00H,00H,00H TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHCODE ENDSEND START134、系

17、统测试:1.首先赋予显示缓冲初始值00 00 ,并把数据存储单元清零。2.主程序调用键盘扫描子程序,判断键值,是数字第一次直接赋予 23H 单元,如是第二次输入数字,则把第一次值乘十后与第二次值相加,结果存储到23H 单元,并 R4 计数 2 次,表示已输入两位,扫描键值时就不再赋值和显示。等待运算符号的按下,按下等于号就直接计算并显示,如加减就 R5 加一并把R4 清零,表示可以输入下一操作数,与第一次相同,并等待等于键按下。清零键则不管在任何情况下都清零,相当于软复位。3.在扫描完键盘后,调用数据显示转换子程序把值转换为七段码。4.调用数码管动态显示子程序,显示数值,重新循环。五、总结:首

18、先,接到这个课程设计,我们头脑都是一片空白,无从下手,后悔当初的课,没认真听讲,不懂的没有及时解决,造成不知所措的局面。通过这次课程设计,让我们深深的意识到我们单片机学的不够扎实,不会的很多,当然这次的课程设计做计算器程序用的是汇编语言,不是上学期学过的 c 语言,所以很难适应。一开始真的很着急,毫无头绪,后来找了很多资料,也参考了同学的程序,其中每一个子程序模块都认真去读,去分析,化为己用,最重要的按键扫描和显示程序,还有包括加减乘除的运算程序。尽管大家都知道汇编编这个程序也很困难,但还是互相学习,到处找资料看,问同学,所以我们组的软件主程序才能编译成功,系统才能调试出结果。这次课程设计让我们互相分工、协调工作的能力得到了提高,更加重要的是我们增进了对单片机的了解,也更深入地运用了汇编语言。最后的一点就是我们学会一个道理:笨鸟先飞,勤能补拙。14致 谢本论文是在姜晟老师、邓小玲老师的亲切教导和悉心指导下完成的。在论文的写作过程中,虽然花了一定的心血,但由于前期的作业做了一定的铺垫,所以完成的还是比较顺利的。也感谢这篇论文所涉及到的各位学者,本文引用了数位学者的研究文献,如果没有他们的文献,我们组也很难将本次文献检索课题完成。最后,再一次对感谢一路以来关心,帮助过我的老师和同学!参考文献王卫星 单片机原理与应用开发技术 中国水利水电出版社

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报