单片机 十进制计算器.docx
- 文档编号:29809498
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:15
- 大小:124.57KB
单片机 十进制计算器.docx
《单片机 十进制计算器.docx》由会员分享,可在线阅读,更多相关《单片机 十进制计算器.docx(15页珍藏版)》请在冰豆网上搜索。
单片机十进制计算器
单片机实验报告四
姓名学号
时间2015.05.14地点B526
实验题目简易十进制计算器
一、实验目的
1.掌握单片机编程和调试方法。
2.掌握键盘、LED显示接口工作原理及编程方法。
二、实验内容
利用MCS-51单片机,设计一个简易十进制计算器,完成一位十进制有符号数的加、减、乘、除运算。
16个按键的安排:
10个数字键(0-9),用于输入运算的数字;5个功能键:
+、-、×、÷、=、清零(符号选择)。
本实验要求显示:
输入的十进制数字及符号,正数不显示符号,负数在数的前面显示“-”;运算符显示(显示字形自定);运算结果显示,包括数字和符号。
三、实验电路连线
四、实验说明
本实验采用动态显示电路,即6个数码管分时循环工作,刷新频率≥25Hz。
键盘采用矩阵式电路,L1-L4作为输出,H1-H4作为输入。
(详细工作原理请参考教材第10章)。
要求所有的程序预先在WAVE仿真调试通过,达到设计要求后下载程序到单片机芯片在实验板上实际运行。
程序的下载由实验室提供编程器统一烧写,单片机芯片由实验室提供,调试完成后交回。
五、实验仪器和设备
PC机、WAVE软件、仿真器、实验板、编程器、电源等。
六、程序流程图及程序
YJEQU50H;结果存放
YJ1EQU51H;中间结果存放
GONGEQU52H;功能键存放
ORG00H
START:
MOVR3,#0;初始化显示为空
MOVGONG,#0
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MLOOP:
CALLDISP;调显示子程序
WAIT:
CALLTESTKEY;判断有无按键
JZWAIT
CALLGETKEY;读键
INCR3;按键个数
CJNEA,#0,NEXT1;判断是否数字键
LJMPE1;转数字键处理
NEXT1:
CJNEA,#1,NEXT2
LJMPE1
NEXT2:
CJNEA,#2,NEXT3
LJMPE1
NEXT3:
CJNEA,#3,NEXT4
LJMPE1
NEXT4:
CJNEA,#4,NEXT5
LJMPE1
NEXT5:
CJNEA,#5,NEXT6
LJMPE1
NEXT6:
CJNEA,#6,NEXT7
LJMPE1
NEXT7:
CJNEA,#7,NEXT8
LJMPE1
NEXT8:
CJNEA,#8,NEXT9
LJMPE1
NEXT9:
CJNEA,#9,NEXT10
LJMPE1
NEXT10:
CJNEA,#10,NEXT11;判断是否功能键
LJMPE2;转功能键处理
NEXT11:
CJNEA,#11,NEXT12
LJMPE2
NEXT12:
CJNEA,#12,NEXT13
LJMPE2
NEXT13:
CJNEA,#13,NEXT14
LJMPE2
NEXT14:
CJNEA,#14,NEXT15
LJMPE2
NEXT15:
LJMPE3;判断是否清除键
E1:
CJNER3,#1,N1;判断第几次按键
LJMPE11;为第一个数字
N1:
CJNER3,#2,N2
LJMPE12;为第二个数字
N2:
CJNER3,#3,N3
LJMPE13;为第三个数字
N3:
LJMPE3;第四个数字转溢出
E11:
MOVR4,A;输入值暂存R4
MOV34H,A;输入值送显示缓存
MOV33H,#00H
MOV32H,#00H
LJMPMLOOP;等待再次输入
E12:
MOVR7,A;个位数暂存R7
MOVB,#10
MOVA,R4
MULAB;十位数
ADDA,R7
MOVR4,A;输入值存R4
MOV32H,#00H;输入值送显示缓存
MOV33H,34H
MOV34H,R7
LJMPMLOOP
E13:
MOVR7,A
MOVB,#10
MOVA,R4
MULAB
JBOV,E3;输入溢出
ADDA,R7
JBCY,E3;输入溢出
MOVR4,A
MOV32H,33H;输入值送显示缓存
MOV33H,34H
MOV34H,R7
LJMPMLOOP
E3:
MOVR3,#0;按键次数清零
MOVR4,#0;输入值清零
MOVYJ,#0;计算结果清零
MOVGONG,#0;功能键设为零
MOV32H,#00H;显示清空
MOV33H,#00H
MOV34H,#00H
LJMPMLOOP
E2:
MOV34H,#00H
MOV33H,#00H
MOV32H,#00H
MOVR0,GONG;与上次功能键交换
MOVGONG,A
MOVA,R0
CJNEA,#10,N21;判断功能键
LJMPJIA;"+"
N21:
CJNEA,#11,N22
LJMPJIAN;"-"
N22:
CJNEA,#12,N23
LJMPCHENG;"*"
N23:
CJNEA,#13,N24
LJMPCHU;"/"
N24:
CJNEA,#0,N25
LJMPFIRST;首次按功能键
N25:
LJMPDEN;"="
N4:
LJMPE3
FIRST:
MOVYJ,R4;输入值送结果
MOVR3,#0;按键次数清零
LJMPDISP1;结果处理
JIA:
MOVA,YJ;上次结果送累加器
ADDA,R4;上次结果加输入值
JBCY,N4;溢出
MOVYJ,A;存本次结果
MOVR3,#0;按键次数清零
LJMPDISP1
JIAN:
MOVA,YJ
SUBBA,R4;上次结果减输入值
JBCY,N4;负数溢出
MOVYJ,A
MOVR3,#0
LJMPDISP1
CHENG:
MOVA,YJ
MOVB,A
MOVA,R4
MULAB;上次结果乘输入值
JBOV,N4;溢出
MOVYJ,A
LJMPDISP1
CHU:
MOVA,R4
MOVB,A
MOVA,YJ
DIVAB;上次结果除输入值
MOVYJ,A
MOVR3,#0
LJMPDISP1
DEN:
MOVR3,#0
LJMPDISP1
DISP1:
MOVB,#10
MOVA,YJ;结果送累加器
DIVAB;结果除10
MOVYJ1,A;暂存"商"
MOVA,B;取个位数
MOV34H,A;个位数送显示缓存
MOVA,YJ1
JZDISP11
MOVB,#10
MOVA,YJ1
DIVAB
MOVYJ1,A
MOVA,B
MOV33H,A;十位送显示缓存
MOVA,YJ1
JZDISP11;结果是否为二位数
MOV32H,A;百位数送显示缓存
DISP11:
LJMPMLOOP
DISP:
MOVR0,#34H
DIR1:
MOVDPTR,#SEGTAB
MOVA,@R0
MOVCA,@A+DPTR
MOVP0,A
CJNER0,#34H,DIR2
SETBP2.0
CALLD1MS
CLRP2.0
DECR0
SJMPDIR1
DIR2:
CJNER0,#33H,DIR3
SETBP2.1
CALLD1MS
CLRP2.1
DECR0
SJMPDIR1
DIR3:
SETBP2.2
CALLD1MS
CLRP2.2
RET
D1MS:
MOVR7,#02H
DMS:
MOVR6,#0F0H
DJNZR6,$
DJNZR7,DMS
RET
SEGTAB:
DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H
DB80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH
TESTKEY:
ACALLDISP
MOVP1,#0FH;读入键状态
MOVA,P1
CPLA
ANLA,#0FH;高四位不用
RET
KEYTABLE:
DB0EEH,0EDH,0DDH,0BDH;键码定义
DB0EBH,0DBH,0BBH,0E7H
DB0D7H,0B7H,0DEH,0BEH
DB07EH,07DH,07BH,077H
GETKEY:
MOVR6,#10;读键子程序
ACALLDELAY
MOVP1,#0FH
MOVA,P1
CJNEA,0FH,K12
LJMPMLOOP
K12:
MOVB,A
MOVP1,#0EFH
MOVA,P1
CJNEA,#0EFH,K13
MOVP1,#0DFH
MOVA,P1
CJNEA,#0DFH,K13
MOVP1,#0BFH
MOVA,P1
CJNEA,#0BFH,K13
MOVP1,#07FH
MOVA,P1
CJNEA,#07FH,K13
LJMPMLOOP
K13:
ANLA,#0F0H
ORLA,B
MOVB,A
MOVR1,#16
MOVR2,#0
MOVDPTR,#KEYTABLE
K14:
MOVA,R2
MOVCA,@A+DPTR
CJNEA,B,K16
MOVP1,#0FH
K15:
MOVA,P1
CJNEA,#0FH,K15
MOVR6,#10
ACALLDELAY
MOVA,R2
RET
K16:
INCR2
DJNZR1,K14
AJMPMLOOP
DELAY:
MOVR7,#10
TS1:
MOVR6,#0FFH
TS2:
NOP
NOP
DJNZR6,TS2
DJNZR7,TS1
RET
END
七、实验报告
1、硬件电路设计(画出电路图),分析电路工作原理;
矩阵键盘的工作原理:
计算器的键盘布局如图所示:
一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。
2、总结
刚开始接到这个计算器的课程设计任务时,因为以前做过类似的题目,于是在脑海中初步构建了编写程序的一些控制程序。
但在编写程序的过程中,遇到了很多问题,因为以前用的是熟悉的C语言,而这次用的是汇编语言,使我发现自己以前学习上存在的不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不够好。
还有就是显示符号这个功能没有做出来,还得多多学习单片机知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 十进制计算器 十进制 计算器