




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程设计报告简易计算器姓 名:班 级:学 号:指导老师:日 期:华南农业大学工程学院摘要:本设计是基于 51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现。关键字:单片机、简易计算器、汇编语言、功能模块1/16目 录一、系统设计要求 41.1基本要求41.2发挥部分4二、系统的硬件设计与实现 43.1系统硬件的基本组成部分 43.2主要单元电路的设计 5三、系统软件设计6四、系统测试14五、总结14致谢15参考文献152/16一、系统设计要求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口的扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘扫描的功能。3/162、数码管显示电路采用6位数码管对计算数据和结果的显示,这里选取共阳数码管,利用 NPN三极管对数码管进行驱动,为了节省 I/O资源,采取动态显示的方法来显示计算数据及结果,动态扫描。为了实现数码管的动态显示, P2口输出显示值,通过 P2口的二进制代码送到数码管进行显示。P3.0~P3.5用来作为位选端,控制哪几位数码管进行显示。比如当P3.2为高电平时,其他位全给 0,具体的在软件中会有说明。此时就将扫描的数据送给指定数码管显示。2.2主要单元电路的设计设计的思路是:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序完成数据的储存或者是加减的运算。运算完成后将运算的结果储存并显示到LED显示器上。4/16三、系统软件设计设计总体流程图,分模块编写程序开始输入六个数字或符号R1*10+R2=R2R4*10+R5=R4R3是加号?R2+R4NR3是减号?R2-R4NR3是乘号?R2*R4NR2/R4显示结果结束5/16键盘扫描流程图:开始初始化地址参数输出列扫描信号列扫描信号移位按照行列计算键值读入行信号是查表得键码该列有键输入?否否等待按键释放四列扫描完?是返回 返回6/16程序源代码:Z8279 EQU 212HD8279 EQU 210HLEDMOD EQU 00000000B 。左边输入,八位显示,外部译码八位显示DATASEGMENTDATA1DB0,0,0,0,0 。第一个数据<作为被减数)DATA2DB0,0,0,0,0 。第二个数据<作为减数)DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:PUSH CSPOP DSPUSH CSPOP ESMOV DX,Z8279MOV AL,LEDMODOUT DX,AL---------------------------------------------------------MOV DX,Z8279 。清FIFORAM寄存器MOV AL,0D1HOUT DX,ALKAISHI: MOVSI,OFFSETDATA1MOVBX,10Q1: MOVBYTEPTR[SI+BX-1],'0' 。数据区清零DECBXJNZQ1CALL SHURU 。读 取 第 一 个 字符。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。MOV[SI],AL 。存入第一个字符MOVBX,1CALLDISPLCALL SHURU 。 输 入 第 二 个 字符。。。。。。。。。。。。。。。。。。。。。。。CMPAL,'0'JBT1MOVBL,BYTEPTR[SI]MOVBYTEPTR[SI],ALMOVBYTEPTR[SI+1],BLMOVBX,2CALLDISPLCALLSHURU7/16T1: PUSHAX 。存入运算符MOVDX,Z8279MOVAL,0D1HOUTDX,ALWAIIT6:IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT6CALLSHURU 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。MOVSI,OFFSETDATA2MOVBYTEPTR[SI],AL 。输入第三个字符MOVBX,1CALLDISPLCALLSHURU 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。CMPAL,'='JZT99 。计算跳转MOVBL,BYTEPTR[SI] 。输入第四个字符MOVBYTEPTR[SI],ALMOVBYTEPTR[SI+1],BLMOVBX,2CALLDISPLCALLSHURU 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。T99: JMPJISUAN--------------------------------------------------------------SHURUPROC 。输入函数MOV DX,Z8279MOV AL,0C2HOUT DX,AL 。置空FIFO寄存器WAIIT:NOPIN AL,DXMOV BL,ALAND AL,80H8/16CMP AL,80HJE WAIIT 。FIFO正在清除期间则跳转等待MOV AL,BLAND AL,0FHCMP AL,00HJE WAIIT 。无键按下则等待MOV AL,40H 。写读FIFORAM命令字OUT DX,ALMOV DX,D8279 。读入FIFORAM 内容IN AL,DXNOPCMPAL,11JNZT101MOV DX,Z8279MOV AL,0D1HOUT DX,AL 。置空FIFO寄存器WAIIT1:IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT1JMPKAISHIT101:LEABX,LEEXLATRETSHURUENDPDISPL PROC 。显示子功能PUSHBXMOV DX,Z8279MOV AL,0D1HOUT DX,AL 。置空FIFO寄存器WAIIT4:IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT4POPBXMOVAL,40HOUTDX,ALMOVDX,D8279MOVAL,[SI+4]9/16CMPAL,'E'JNZDSI8MOVAL,79HOUTDX,ALJMPDSI9DSI8: MOVAL,[SI+BX-1]CMPAL,'0'JADSI0DECBXJNZDSI8MOVAL,3FH 。显示0OUTDX,ALRETDSI0:MOVCX,BXMOVBX,0DSI2:MOVAL,[SI+BX]SUBAL,30HPUSHBXLEABX,TABLEXLATOUTDX,ALPOPBXCMPBX,1JNZT119OUTDX,ALOUTDX,ALT119: INCBXCMPCX,BXJZT103JMPDSI2T103:MOVAL,[SI+4]CMPAL,'-'JNZDSI9MOVAL,40HOUTDX,AL。显示-号DSI9:RETDISPL ENDP。计算区...................................................................................................10/16JISUAN:MOVSI,OFFSETDATA1MOVDI,OFFSETDATA2SUBBYTEPTR[SI],30HSUBBYTEPTR[DI],30HSUBBYTEPTR[SI+1],30HSUBBYTEPTR[DI+1],30HMOVDL,10MOVAL,BYTEPTR[SI+1]MULDLADDAL,[SI]MOVBL,ALMOVAL,[DI+1]MULDLADDAL,[DI]XCHGAL,BL 。AL被减数,BL减数POPCX 。弹出运算符CMPCL,'+'JZJIACMPCL,'-'JZJIANCMPCL,'*'JZCHENGJMPCHUCHU: AADCMPBL,0JNZT20MOV SI,OFFSETDATA1MOV BYTEPTR[SI+4],'E' 。除数为零MOVBX,5CALLDISPLJMPKAISHIT20:DIVBLMOVAH,0 。余数置0JMPXIANSHIJIA: ADDAL,BLJMPXIANSHIJIAN: CMPAL,BLJNBN1XCHGAL,BLMOVBYTEPTR[SI+4],'-'11/16N1:SUBAL,BLJMPXIANSHICHENG: MULBLJMPXIANSHIXIANSHI:MOVCX,1000MOVDX,0DIVCXADDAX,30HMOV[SI+3],ALMOVAX,DXMOVCL,100DIVCLADDAL,30HMOV[SI+2],ALMOVAL,AHMOVAH,0MOVCL,10DIVCLADDAL,30HADDAH,30HMOV[SI+1],ALMOV[SI],AHMOVBX,5。显示结果CALLDISPLJMPKAISHILEE: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,00H12/16DB 00H,00H,00H,00HTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHCODEENDSEND START13/16四、系统测试:首先赋予显示缓冲初始值‘0000’,并把数据存储单元清零。2.主程序调用键盘扫描子程序,判断键值,是数字第一次直接赋予23H单元,如是第二次输入数字,则把第一次值乘十后与第二次值相加,结果存储到23H单元,并R4计数2次,表示已输入两位,扫描键值时就不再赋值和显示。等待运算符号的按下,按下等于号就直接计算并显示,如加减就 R5加一并把R4清零,表示可以输入下一操作数,与第一次相同,并等待等于键按下。清零键则不管在任何情况下都清零,相当于软复位。在扫描完键盘后,调用数据显示转换子程序把值转
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年保安证考试文化交流试题及答案
- 消防设备的使用与维护试题及答案
- 保安证考试多样化试题及答案
- 保安证考前冲刺试题及答案
- 保安证考试全方位试题及答案解析
- 2025年保安证考试疑难试题与答案解析
- 新乡市2025年六年级数学小升初摸底考试含解析
- 广东省湛江市赤坎区2024-2025学年三年级数学第二学期期末监测模拟试题含解析
- 南昌职业大学《城市建筑保护与更新》2023-2024学年第二学期期末试卷
- 2025年保安证考试创业指南试题及答案
- 护理评估量表及注意事项
- 床旁超声引导血管穿刺的SOP
- 新编高等数学(理工类)第8版高职PPT全套教学课件
- 房地产企业华润置地“十三五”战略规划及2017年商业计划书
- 《初中物理双向细目表》
- 成人有创机械通气气道内吸引技术操作
- 国际生物组织联合会
- 不要分送弹性力学(徐芝纶)课后习题及答案
- 建筑法课件资料
- “双减”下初中道德与法治分层作业设计研究 论文
- 部编版六年级下册道德与法治第一单元测试卷含答案
评论
0/150
提交评论