您的当前位置:首页单片机设计16键计算器 实验报告

单片机设计16键计算器 实验报告

2022-09-08 来源:爱问旅游网


成绩

单片机原理及应用

实验报告

实验名称 单片机设计实验 实验班级 电子08-1 姓 名 学号(后两位) 指导教师 实验日期 2010.12.3

实验五 单片机设计实验

一、实验目的

1、掌握单片机定时器、中断、键盘扫描、动态显示及数值计算的综合运用能力; 2、掌握编程的运用能力; 3、设计一只简易的16键计算器。

二、、实验内容

编程实现图5-1的简易16键4位十进制整数计算器的功能。要求:

1.设计4*4的键盘,其中10个数字键0~9,其余6个为“+” “-” “*”“/” “=”和“C”

2.设计4位LED接口电路或LCD显示电路 3.实现2位数的简单运算

图5-2 简易16键计算器主程序框图(参考图)

仿真图:

程序如下: DISPBUF EQU 30H

ORG 0000H

STAR:MOV DISPBUF,#0C0H MOV DISPBUF+1,#0C0H MOV DISPBUF+2,#0C0H MOV DISPBUF+3,#0C0H MOV 37H,#00H MOV 27H,#00H MOV 26H,#00H MOV 25H,#00H MOV 24H,#00H MOV 23H,#00H MOV R3,#00H MOV R4,#00H MOV R5,#00H ;扫描键盘

LOOP:LCALL KEY

MOV R6,27H

CJNE R6,#00H,STAR ;清除键判断 MOV R6,26H

;显示数据转换子程序

CJNE R6,#00H,FA

;调用数码管显示数据转换子程序 LCALL CONV

;调用动态显示

FA:LCALL DISPSCAN SJMP LOOP

KEY:MOV P2,#0FH ;键盘扫描子程序 MOV A,P2 ANL A,#0FH

CJNE A,#0FH,K10 RET

K10:JB P2.0,K20 K11:MOV P2,#0EFH JB P2.0,K12

CJNE R5,#00H,L1 MOV R4,#00H INC R5 MOV R3,#1H L1:LJMP CEND K12:MOV P2,#0DFH JB P2.0,K13

CJNE R5,#00H,L2 MOV R4,#00H INC R5

MOV R3,#2H L2:LJMP CEND

K13:MOV P2,#0BFH

JB P2.0,K14 CJNE R5,#00H,L3 MOV R4,#00H INC R5

MOV R3,#3H L3:LJMP CEND K14:MOV P2,#7FH JB P2.0,KIL

CJNE R5,#00H,L4 MOV R4,#00H INC R5

MOV R3,#4H KIL:LJMP KEND L4:LJMP CEND K20:JB P2.1,K30 K21:MOV P2,#0EFH JB P2.1,K22 LJMP DYU

K22:MOV P2,#0DFH JB P2.1,K23 MOV 25H,#3H LJMP OPR

K23:MOV P2,#0BFH JB P2.1,K24 MOV 25H,#6H LJMP OPR

K24:MOV P2,#7FH JB P2.1,CCTV MOV 25H,#9H LJMP OPR CCTV:LJMP KEND K30:JB P2.2,K40 K31:MOV P2,#0EFH JB P2.2,K32 MOV 25H,#0H LJMP OPR

K32:MOV P2,#0DFH JB P2.2,K33 MOV 25H,#2H LJMP OPR

K33:MOV P2,#0BFH JB P2.2,K34 MOV 25H,#5H LJMP OPR

K34:MOV P2,#7FH JB P2.2,KEND MOV 25H,#8H LJMP OPR

K40:JB P2.3,KEND K41:MOV P2,#0EFH JB P2.3,K42 INC 27H LJMP KEND K42:MOV P2,#0DFH JB P2.3,K43 MOV 25H,#1H LJMP OPR

K43:MOV P2,#0BFH JB P2.3,K44 MOV 25H,#4H LJMP OPR

K44:MOV P2,#7FH JB P2.3,KEND MOV 25H,#7H

LJMP OPR

OPR:INC R4 ;键值存储 CJNE R5,#00H,CHANG CJNE R4,#2H,KBK ZHI:MOV A,20H MOV B,#0AH MUL AB

MOV 20H,25H ADD A,20H

CJNE R5,#00H,CZH MOV 23H,A LJMP KEND CZH:

MOV 24H,A LJMP KEND

KEND:MOV P2,#0FH MOV A,P2

ANL A,#0FH

CJNE A,#0FH,KEND RET CHANG:

CJNE R4,#2H,HONG AJMP ZHI

HONG:JNC CEND

INC R5

MOV 20H,25H MOV 24H,25H LJMP CEND KBK:JNC CEND MOV 20H,25H LJMP CEND

DYU: ;计算结果 MOV R5,#00H MOV R4,#00H MOV 25H,#00H CJNE R3,#1H,S MOV A,23H ADD A,24H MOV 23H,A SJMP CEND S:CJNE R3,#2H,S1 CLR C

MOV A,23H

CJNE A,#00H,JIANFA MOV 23H,#0EH SJMP CEND

JIANFA:SUBB A,24H MOV 23H,A SJMP CEND S1:CJNE R3,#3H,S2 MOV A,23H MOV B,24H

MOV A,23H ;? MUL AB

MOV R6,B

CJNE R6,#00H,CHENG MOV 23H,A SJMP CEND

S2:CJNE R3,#4,CEND MOV A,24H CJNE A,#00H,ZY MOV A,#00H SJMP CEND ZY:MOV A,23H MOV B,24H DIV AB MOV 23H,A

CEND:MOV P2,#0FH

MOV A,P2

ANL A,#0FH

CJNE A,#0FH,CEND RET

CHENG:MOV R3,B MOV B,#64H DIV AB MOV 36H,A MOV A,B MOV B,#0AH DIV AB MOV 35H,A MOV 34H,B

MOV DPTR,#TABLE XIAN:

MOV A,34H ADD A,#6H MOV B,#0AH DIV AB MOV 25H,A MOV 34H,B MOV A,B

MOVC A,@A+DPTR MOV DISPBUF,A MOV A,35H ADD A,#5H ADD A,25H MOV B,#0AH DIV AB MOV 25H,A MOV 35H,B MOV A,B

MOVC A,@A+DPTR MOV DISPBUF+1,A MOV A,36H ADD A,#2H ADD A,25H MOV B,#0AH DIV AB ADD A,37H MOV 37H,A MOVC A,@A+DPTR MOV DISPBUF+3,A MOV 36H,B

MOV A,B

MOVC A,@A+DPTR MOV DISPBUF+2,A DJNZ R6,XIAN MOV 26H,#1H

AJMP CEND

CONV: ;数码管显示数据转换程序 CJNE R5,#02H,BEI MOV A,24H AJMP JING BEI:MOV A,23H JING:MOV B,#64H DIV AB

MOV DPTR,#TABLE MOVC A,@A+DPTR MOV DISPBUF+2,A MOV A,B MOV B,#0AH DIV AB

MOVC A,@A+DPTR MOV DISPBUF+1,A MOV A,B

MOVC A,@A+DPTR MOV DISPBUF,A RET

;数码管动态显示子程序 DISPSCAN:MOV R0,#DISPBUF

SC: PUSH ACC MOV A,@R0 MOV P1,A POP ACC MOV P0,A LCALL DELAY1 mov p0,#00h RL A INC R0 DJNZ R2,SC MOV P0,#1H RET

DEL12:

MOV R6,#1EH DEL2:MOV R7,#64H DEL1:DJNZ R7,DEL1 DJNZ R6,DEL2 RET

DELAY1: MOV R6,#70 D2:MOV R7,#100 DJNZ R7,$ DJNZ R6,D2 RET TABLE:

DB

0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB

MOV R2,#4H 80H,90H,88H,83H,0C6H,0A1H,86H,8EH MOV A,#1H END

三、实验总结:

虽然此实验不是自己所编写,但在拿到这个程序后,我做详细的分析,把没一步所实现的功能都弄懂,希望通过更深入的学习,自己以后能够自己编写出来。最后谢谢老师这学期在实验上对我的辅导。

因篇幅问题不能全部显示,请点此查看更多更全内容