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

下载本文档

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

文档简介

年4月19日华南农业大学单片机课程设计简易计算器文档仅供参考,不当之处,请联系改正。单片机课程设计报告简易计算器姓名:班级:学号:指导老师:日期:华南农业大学工程学院摘要:本设计是基于51系列的单片机进行的十进制计算器系统设计,能够完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现。关键字:单片机、简易计算器、汇编语言、功能模块目录TOC\o"1-2"\h\u12494一、系统设计要求 4325181.1基本要求 4229651.2发挥部分 47430二、系统的硬件设计与实现 465913.1系统硬件的基本组成部分 4141353.2主要单元电路的设计 511925三、系统软件设计 630998四、系统测试 1423907五、总结 14184致谢 158242参考文献 15一、系统设计要求1.1基本要求在课程设计时,三人一组,老师在动员大会上主要指明设计思路,启发学生独立设计的思路。功能要求主要如下:(1)键盘输入;(2)数值显示;(3)加、减运算(此次只要求加减);(4)对错误的控制及提示。在十进制加减法计算中:输入范围为(1~99),该程序输入两个定点数,每个2位,输出3位;A为加,B为减,C为等于,输出为3位计算结果。数据输入采用规范化输入,即必须输入2个数才算完成一个运算数的输入,两个运算数之间输入运算符A或者B,输入完成按C显示计算结果。1.2发挥部分能够选择扩张更多功能,如乘法,除法,三角函数等,使这简易计算器功能更全面。系统的硬件设计与实现2.1系统硬件的基本组成部分8086CPU,单片机试验箱键盘模块(0-9,a-f),LED数码管等。单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。主控芯片选取74LS164芯片,因其具有良好的性能及稳定性,价格便宜应用方便。晶振选取11.0592MHz,晶振旁电容选取22pF。采用按键复位电路,电阻分别选取560Ω和10K,电容选取10μF。1、键盘接口电路计算器所需按键有:数字键:“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”功能键:“A(+)”“B(—)”“C(*)”“D(/)”“E(=)”键盘共计15个按键,其中15个按键采用到,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就能够完成对矩阵键盘的扫描,经过对16个按键进行编码,从而得到键盘的口地址,对比P1口的扫描结果和各按键的地址,我们就能够得到是哪个键按下,从而完成键盘扫描的功能。2、数码管显示电路采用6位数码管对计算数据和结果的显示,这里选取共阳数码管,利用NPN三极管对数码管进行驱动,为了节省I/O资源,采取动态显示的方法来显示计算数据及结果,动态扫描。为了实现数码管的动态显示,P2口输出显示值,经过P2口的二进制代码送到数码管进行显示。P3.0~P3.5用来作为位选端,控制哪几位数码管进行显示。比如当P3.2为高电平时,其它位全给0,具体的在软件中会有说明。此时就将扫描的数据送给指定数码管显示。2.2主要单元电路的设计设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,经过调用子程序完成数据的储存或者是加减的运算。运算完成后将运算的结果储存并显示到LED显示器上。系统软件设计设计总体流程图,分模块编写程序开始开始输入六个数字或符号输入六个数字或符号R1*10+R2=R2R4*10+R5=R4R2+R4R3是加号?NR2-R4R3是减号?NR2*R4R2*R4R3是乘号?R2/R4R2/R4显示结果显示结果结束结束键盘扫描流程图:开始开始初始化地址参数输出列扫描信号列扫描信号移位读入行信号该列有键输入?四列扫描完?返回按照行列计算键值查表得键码等待按键释放返回否是是否程序源代码:Z8279EQU212HD8279EQU210HLEDMODEQU00000000B;左边输入,八位显示,外部译码八位显示DATASEGMENTDATA1DB0,0,0,0,0;第一个数据(作为被减数)DATA2DB0,0,0,0,0;第二个数据(作为减数)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART: PUSHCS POPDS PUSHCS POPES MOVDX,Z8279 MOVAL,LEDMOD OUTDX,AL ; MOVDX,Z8279;清FIFORAM寄存器 MOVAL,0D1H OUTDX,ALKAISHI:MOVSI,OFFSETDATA1 MOVBX,10 Q1:MOVBYTEPTR[SI+BX-1],'0';数据区清零DECBX JNZQ1 CALLSHURU;读取第一个字符;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MOV[SI],AL;存入第一个字符 MOVBX,1 CALLDISPL CALLSHURU;输入第二个字符;;;;;;;;;;;;;;;;;;;;;;; CMPAL,'0' JBT1 MOVBL,BYTEPTR[SI]MOVBYTEPTR[SI],ALMOVBYTEPTR[SI+1],BLMOVBX,2 CALLDISPLCALLSHURUT1:PUSHAX;存入运算符MOVDX,Z8279MOVAL,0D1HOUTDX,ALWAIIT6: INAL,DX MOVBL,AL ANDAL,80H CMPAL,80H JEWAIIT6CALLSHURU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVSI,OFFSETDATA2MOVBYTEPTR[SI],AL;输入第三个字符MOVBX,1 CALLDISPL CALLSHURU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CMPAL,'='JZT99;计算跳转MOVBL,BYTEPTR[SI];输入第四个字符MOVBYTEPTR[SI],ALMOVBYTEPTR[SI+1],BLMOVBX,2 CALLDISPLCALLSHURU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T99:JMPJISUAN;SHURUPROC;输入函数MOVDX,Z8279 MOVAL,0C2H OUTDX,AL;置空FIFO寄存器WAIIT:NOP INAL,DX MOVBL,AL ANDAL,80H CMPAL,80H JEWAIIT;FIFO正在清除期间则跳转等待 MOVAL,BLANDAL,0FHCMPAL,00HJEWAIIT;无键按下则等待MOVAL,40H;写读FIFORAM命令字OUTDX,ALMOVDX,D8279;读入FIFORAM内容INAL,DXNOPCMPAL,11JNZT101MOVDX,Z8279 MOVAL,0D1H OUTDX,AL;置空FIFO寄存器WAIIT1: INAL,DX MOVBL,AL ANDAL,80H CMPAL,80H JEWAIIT1JMPKAISHIT101:LEABX,LEEXLATRETSHURUENDP DISPLPROC;显示子功能PUSHBX MOVDX,Z8279 MOVAL,0D1H OUTDX,AL;置空FIFO寄存器 WAIIT4: INAL,DX MOVBL,AL ANDAL,80H CMPAL,80H JEWAIIT4POPBX MOVAL,40HOUTDX,ALMOVDX,D8279MOVAL,[SI+4]CMPAL,'E'JNZDSI8MOVAL,79HOUTDX,ALJMPDSI9 DSI8:MOVAL,[SI+BX-1] CMPAL,'0' JADSI0 DECBX JNZDSI8 MOVAL,3FH;显示0OUTDX,ALRET DSI0:MOVCX,BXMOVBX,0DSI2:MOVAL,[SI+BX]SUBAL,30HPUSHBXLEABX,TABLEXLATOUTDX,ALPOPBXCMPBX,1JNZT119OUTDX,ALOUTDX,ALT119:INCBXCMPCX,BXJZT103JMPDSI2T103:MOVAL,[SI+4]CMPAL,'-'JNZDSI9MOVAL,40HOUTDX,AL;显示-号DSI9:RETDISPLENDP ;计算区JISUAN: MOVSI,OFFSETDATA1 MOVDI,OFFSETDATA2 SUBBYTEPTR[SI],30H SUBBYTEPTR[DI],30H SUBBYTEPTR[SI+1],30H SUBBYTEPTR[DI+1],30H MOVDL,10 MOVAL,BYTEPTR[SI+1] MULDL ADDAL,[SI] MOVBL,AL MOVAL,[DI+1] MULDL ADDAL,[DI] XCHGAL,BL;AL被减数,BL减数 POPCX;弹出运算符CMPCL,'+'JZJIACMPCL,'-'JZJIANCMPCL,'*'JZCHENGJMPCHUCHU:AAD CMPBL,0 JNZT20 MOVSI,OFFSETDATA1 MOVBYTEPTR[SI+4],'E';除数为零 MOVBX,5 CALLDISPL JMPKAISHI T20:DIVBL MOVAH,0 ;余数置0 JMPXIANSHI JIA: ADDAL,BL JMPXIANSHIJIAN: CMPAL,BL JNBN1 XCHGAL,BL MOVBYTEPTR[SI+4],'-' N1:SUBAL,BL JMPXIANSHI CHENG:MULBL JMPXIANSHIXIANSHI:MOVCX,1000 MOVDX,0 DIVCX ADDAX,30H MOV[SI+3],AL MOVAX,DX MOVCL,100 DIVCL ADDAL,30H MOV[SI+2],AL MOVAL,AH MOVAH,0 MOVCL,10 DIVCL ADDAL,30H ADDAH,30H MOV[SI+1],AL MOV[SI],AHMOVBX,5;显示结果 CALLDISPL JMPKAISHILEE:DB37H,34H,31H,30HDB00H,00H,00H,00HDB38H,35H,32H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB39H,36H,33H,'='DB00H,00H,00H,00HDB'+','-','*','/'DB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HTABLE:DB3FH,06H,5BH,4FH,6

温馨提示

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

评论

0/150

提交评论