华南农业大学单片机课程设计-简易计算器_第1页
华南农业大学单片机课程设计-简易计算器_第2页
华南农业大学单片机课程设计-简易计算器_第3页
华南农业大学单片机课程设计-简易计算器_第4页
华南农业大学单片机课程设计-简易计算器_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

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

4、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个按键进行编码,从而得到键盘的口地址,对比P1口的扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘扫描的功能。2、数码管显示电路 采用6位数码管对计

5、算数据和结果的显示,这里选取共阳数码管,利用NPN三极管对数码管进行驱动,为了节省I/O资源,采取动态显示的方法来显示计算数据及结果,动态扫描。 为了实现数码管的动态显示,P2口输出显示值,通过P2口的二进制代码送到数码管进行显示。P3.0P3.5用来作为位选端,控制哪几位数码管进行显示。比如当P3.2为高电平时,其他位全给0,具体的在软件中会有说明。此时就将扫描的数据送给指定数码管显示。2.2主要单元电路的设计设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序完成数据的储存或者是加减的运算。运算完

6、成后将运算的结果储存并显示到LED显示器上。 3、 系统软件设计设计总体流程图,分模块编写程序开始 输入六个数字或符号 R1*10+R2=R2 R4*10+R5=R4 R2+R4 R3是加号? N R2-R4 R3是减号? N R2*R4 R3是乘号? R2/R4 N 显示结果 结束键盘扫描流程图:开始初始化地址参数输出列扫描信号列扫描信号移位读入行信号该列有键输入?四列扫描完? 返回 按照行列计算键值 查表得键码 等待按键释放 返回否是是否程序源代码:Z8279 EQU 212HD8279 EQU 210HLEDMOD EQU 00000000B ;左边输入,八位显示,外部译码八位显示DAT

7、A SEGMENTDATA1 DB 0,0,0,0,0 ;第一个数据(作为被减数)DATA2 DB 0,0,0,0,0 ;第二个数据(作为减数)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: PUSH CS POP DS PUSH CS POP ES MOV DX,Z8279 MOV AL,LEDMOD OUT DX,AL;- MOV DX,Z8279 ;清FIFO RAM寄存器 MOV AL,0D1H OUT DX,AL KAISHI: MOV SI,OFFSET DATA1 MOV BX,10 Q1: MOV BYTE P

8、TRSI+BX-1,'0'数据区清零 DEC BX JNZ Q1 CALL SHURU ;读取第一个字符; MOV SI,AL ;存入第一个字符 MOV BX,1 CALL DISPL CALL SHURU ;输入第二个字符 ; CMP AL,'0' JB T1 MOV BL,BYTE PTRSI MOV BYTE PTRSI,AL MOV BYTE PTRSI+1,BL MOV BX,2 CALL DISPL CALL SHURU T1: PUSH AX ;存入运算符 MOV DX,Z8279 MOV AL,0D1H OUT DX,AL WAIIT6: IN

9、AL,DX MOV BL,AL AND AL,80H CMP AL,80H JE WAIIT6 CALL SHURU ; MOV SI,OFFSET DATA2 MOV BYTE PTRSI,AL ;输入第三个字符 MOV BX,1 CALL DISPL CALL SHURU ; CMP AL,'=' JZ T99 ;计算跳转 MOV BL,BYTE PTRSI ;输入第四个字符 MOV BYTE PTRSI,AL MOV BYTE PTRSI+1,BL MOV BX,2 CALL DISPL CALL SHURU ; T99: JMP JISUAN ;-SHURU PROC

10、;输入函数 MOV DX,Z8279 MOV AL,0C2H OUT DX,AL ;置空FIFO寄存器 WAIIT: NOP IN AL,DX MOV BL,AL AND AL,80H CMP AL,80H JE WAIIT ;FIFO正在清除期间则跳转等待 MOV AL,BL AND AL,0FH CMP AL,00H JE WAIIT ;无键按下则等待 MOV AL,40H ;写 读FIFO RAM命令字 OUT DX,AL MOV DX,D8279 ;读入FIFO RAM内容 IN AL,DX NOP CMP AL,11 JNZ T101 MOV DX,Z8279 MOV AL,0D1H

11、 OUT DX,AL ;置空FIFO寄存器WAIIT1: IN AL,DX MOV BL,AL AND AL,80H CMP AL,80H JE WAIIT1 JMP KAISHIT101: LEA BX,LEE XLAT RETSHURU ENDPDISPL PROC ;显示子功能 PUSH BX MOV DX,Z8279 MOV AL,0D1H OUT DX,AL ;置空FIFO寄存器 WAIIT4: IN AL,DX MOV BL,AL AND AL,80H CMP AL,80H JE WAIIT4 POP BX MOV AL,40H OUT DX,AL MOV DX,D8279 MOV

12、 AL,SI+4 CMP AL,'E' JNZ DSI8 MOV AL,79H OUT DX,AL JMP DSI9 DSI8: MOV AL,SI+BX-1 CMP AL,'0' JA DSI0 DEC BX JNZ DSI8 MOV AL,3FH ;显示0 OUT DX,AL RET DSI0: MOV CX,BX MOV BX,0 DSI2: MOV AL,SI+BX SUB AL,30H PUSH BX LEA BX,TABLE XLAT OUT DX,AL POP BX CMP BX,1 JNZ T119 OUT DX,AL OUT DX,AL T11

13、9: INC BX CMP CX,BX JZ T103 JMP DSI2 T103: MOV AL,SI+4 CMP AL,'-' JNZ DSI9 MOV AL,40H OUT DX,AL;显示-号 DSI9: RETDISPL ENDP ;计算区. JISUAN: MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 SUB BYTE PTRSI,30H SUB BYTE PTRDI,30H SUB BYTE PTRSI+1,30H SUB BYTE PTRDI+1,30H MOV DL,10 MOV AL,BYTE PTRSI+1 MUL DL

14、ADD AL,SI MOV BL,AL MOV AL,DI+1 MUL DL ADD AL,DI XCHG AL,BL ;AL被减数,BL减数 POP CX ;弹出运算符 CMP CL,'+' JZ JIA CMP CL,'-' JZ JIAN CMP CL,'*' JZ CHENG JMP CHU CHU: AAD CMP BL,0 JNZ T20 MOV SI,OFFSET DATA1 MOV BYTE PTRSI+4,'E' ;除数为零 MOV BX,5 CALL DISPL JMP KAISHI T20:DIV BL MO

15、V AH,0 ;余数置0 JMP XIANSHI JIA: ADD AL,BL JMP XIANSHI JIAN: CMP AL,BL JNB N1 XCHG AL,BL MOV BYTE PTRSI+4,'-' N1:SUB AL,BL JMP XIANSHI CHENG: MUL BL JMP XIANSHI XIANSHI: MOV CX,1000 MOV DX,0 DIV CX ADD AX,30H MOV SI+3,AL MOV AX,DX MOV CL,100 DIV CL ADD AL,30H MOV SI+2,AL MOV AL,AH MOV AH,0 MOV

16、CL,10 DIV CL ADD AL,30H ADD AH,30H MOV SI+1,AL MOV SI,AH MOV BX,5 ;显示结果 CALL DISPL JMP KAISHILEE: DB 37H,34H,31H,30H DB 00H,00H,00H,00H DB 38H,35H,32H,00H DB 00H,00H,00H,00H DB 00H,00H,00H,00H DB 00H,00H,00H,00H DB 00H,00H,00H,00H DB 00H,00H,00H,00H DB 39H,36H,33H,'=' DB 00H,00H,00H,00H DB &

17、#39;+','-','*','/' DB 00H,00H,00H,00H DB 00H,00H,00H,00H DB 00H,00H,00H,00H DB 00H,00H,00H,00H DB 00H,00H,00H,00H TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHCODE ENDSEND START4、 系统测试:1.首先赋予显示缓冲初始值00 00,并把数据存储单元清零。2.主程序调用键盘扫描子程序,判断键值,是数字第一次直接赋予23H单元,如是第二次输入数字,则把第一次值乘

18、十后与第二次值相加,结果存储到23H单元,并R4计数2次,表示已输入两位,扫描键值时就不再赋值和显示。等待运算符号的按下,按下等于号就直接计算并显示,如加减就R5加一并把R4清零,表示可以输入下一操作数,与第一次相同,并等待等于键按下。清零键则不管在任何情况下都清零,相当于软复位。3.在扫描完键盘后,调用数据显示转换子程序把值转换为七段码。4.调用数码管动态显示子程序,显示数值,重新循环。五、总结: 首先,接到这个课程设计,我们头脑都是一片空白,无从下手,后悔当初的课,没认真听讲,不懂的没有及时解决,造成不知所措的局面。通过这次课程设计,让我们深深的意识到我们单片机学的不够扎实,不会的很多,当然这次的课程设计做计算器程序用的是汇编语言,不是上学期学过的c语言,所以很难适应。一开始真的很着急,毫无头绪,后来找了很多资料,也参考了同学的程序,其中每一个子程序模块都认真去读,去分析,化为己用,最重要的按键扫描和显示程序,还有包括加减乘除的运算程序。尽管大家都知道汇编编这个程序也很困难,但还是互相学习,到处找资料看,问同学,所以我们组的软件主程序才能编译成功,系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论