计算器.docx

上传人:b****1 文档编号:2064399 上传时间:2023-05-02 格式:DOCX 页数:25 大小:102.57KB
下载 相关 举报
计算器.docx_第1页
第1页 / 共25页
计算器.docx_第2页
第2页 / 共25页
计算器.docx_第3页
第3页 / 共25页
计算器.docx_第4页
第4页 / 共25页
计算器.docx_第5页
第5页 / 共25页
计算器.docx_第6页
第6页 / 共25页
计算器.docx_第7页
第7页 / 共25页
计算器.docx_第8页
第8页 / 共25页
计算器.docx_第9页
第9页 / 共25页
计算器.docx_第10页
第10页 / 共25页
计算器.docx_第11页
第11页 / 共25页
计算器.docx_第12页
第12页 / 共25页
计算器.docx_第13页
第13页 / 共25页
计算器.docx_第14页
第14页 / 共25页
计算器.docx_第15页
第15页 / 共25页
计算器.docx_第16页
第16页 / 共25页
计算器.docx_第17页
第17页 / 共25页
计算器.docx_第18页
第18页 / 共25页
计算器.docx_第19页
第19页 / 共25页
计算器.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算器.docx

《计算器.docx》由会员分享,可在线阅读,更多相关《计算器.docx(25页珍藏版)》请在冰点文库上搜索。

计算器.docx

计算器

 

题目:

简易计算器

 

目录

 

第1节引言………………………………………………………………………1

1.1计算器概述……………………………………………………………1

1.2本设计任务……………………………………………………………1

1.3系统主要功能……………………………………………………………2

第2节计算器硬件设计……………………………………………………………3

2.1键盘识别技术…………………………………………………………3

2.2 LED“0-9”数字显示技术………………………………………………5

 

第3节系统软件设计………………………………………………………………11

3.1系统主程序设计…………………………………………………11

3.24×4矩阵式键盘设计…………………………………………………11

3.3“0-9”数字显示设计…………………………………………………17

第4节结束语………………………………………………………………………20

参考文献………………………………………………………………………21

 

单片机实现的简易计算器

 

第1节引言

目前,51系列单片机在我国的各行各业得到了广泛应用,各大专院校、职业培训学校,均开设了单片机原理与应用方面的课程,这是一门技术性和实践性很强的学科,必须通过一系列的软硬件实验、理论联系实际,才能学好、学懂,取得较好的学习效果。

1.1计算器概述

1、加数和被加数的输入位数固定为4位;

2、相加结果显示要考虑进位的输出显示(即5位输出);

3、注意对“0”——“9”、“+”、“=”以外按键输入的处理;

4、注意对相加结果进行十进制处理;

5、输入加数和被加数时,显示器上显示的数字要像平时用的计算器输入一样,即:

每输入一个数字,原来显示的数字要往左移。

6、可以完成累加功能,即可以完成如下内容:

3265+3885+1254+2358+7779+。

1.2本设计任务

如图4.14.2所示,用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的“0-F”序号。

对应的按键的序号排列如图4.14.1所示

图4.14.1

(1.  开机时,显示“0”

(2.   第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。

(3.数字0-9点阵显示代码的形成

1.3系统主要功能

用4*4键盘做一个模拟计算器,实现最高四位的加,减,乘,除功能,按键识别和显示部分我都会,就是按键后怎样将运算符前后的数据区分开

1.输入一位就显示一位,在输入一个运算符之前最多只能输入四位。

2.将运算符前,后的数据区分开来,同时将运算符前后输入的数据转换为一个10进制数。

3.对输入的数据进行处理,即进行算术运算,最重要的是对于除法时,如果有小数位时,显示部分应该做处理。

第2节

计算器硬件设计

硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。

单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。

2.14×4矩阵式键盘识别技术系统的硬件构成及功能

1.硬件电路原理图

2.系统板上硬件连线

(1.      把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;

(2.      把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:

P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

3. 程序设计内容

(1.      4×4矩阵键盘识别处理

(2.      每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:

确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

4.程序框图

P3=FFH,P3.0=0

有键按下吗?

延时10ms

真得有键按下吗?

根据当前状态识别按键

P3=FFH,P3.1=0

有键按下吗?

延时10ms

真得有键按下吗?

根据当前状态识别按键

P3=FFH,P3.2=0

有键按下吗?

延时10ms

真得有键按下吗?

根据当前状态识别按键

P3=FFH,P3.3=0

有键按下吗?

延时10ms

真得有键按下吗?

根据当前状态识别按键

图4.14.3

2.2点阵式LED“0-9”数字显示技术

1.电路原理图

图4.25.1

2.硬件系统连线

(1). 把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;

(2). 把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;

4.程序设计内容

(1). 数字0-9点阵显示代码的形成

 

如下图所示,假设显示数字“0”

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00003E4141413E00

因此,形成的列代码为 00H,00H,3EH,41H,41H,3EH,00H,00H;只要把这些代码分别送到相应的列线上面,即可实现“0”的数字显示。

送显示代码过程如下所示

送第一列线代码到P3端口,同时置第一行线为“0”,其它行线为“1”,延时2ms左右,送第二列线代码到P3端口,同时置第二行线为“0”,其它行线为“1”,延时2ms左右,如此下去,直到送完最后一列代码,又从头开始送。

数字“1”代码建立如下图所示1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

其显示代码为 00H,00H,00H,00H,21H,7FH,01H,00H

数字“2”代码建立如下图所示

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,27H,45H,45H,45H,39H,00H

数字“3”代码建立如下图所示

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,22H,49H,49H,49H,36H,00H

数字“4”代码建立如下图所示

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,0CH,14H,24H,7FH,04H,00H

数字“5”代码建立如下图所示

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,72H,51H,51H,51H,4EH,00H

数字“6”代码建立如下图所示

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,3EH,49H,49H,49H,26H,00H

数字“7”代码建立如下图所示

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,40H,40H,40H,4FH,70H,00H

数字“8”代码建立如下图所示

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,36H,49H,49H,49H,36H,00H

数字“9”代码建立如下图所示

1 2 34 5 678

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00H,00H,32H,49H,49H,49H,3EH,00H

第3节系统的软件设计

本系统的软件系统主要可分为主程序、4×4矩阵式键盘识别程序、点阵式LED“0-9”数字显示程序三大模块。

在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。

3.1系统主程序设计

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

; 全局初始化

 MOVSP,#60H ;堆栈

 MOVIE,#00H ;禁止所有中断

;寄存器组00

 CLRRS1

 CLRRS0

 ;工作区IRAM(20H-5FH)默认全为0

INIT20TO5F:

 MOVR0,#20H ;STARTAT20H

 MOVR7,#40H ;64BYTESTOZERO

LOOP20TO5F:

 MOV@R0,#00H

 INCR0

 DJNZR7,LOOP20TO5F

;---------------------------------

 SETBSTAT.0 ;初始状态为等号状态

 MOVR7,#00H

 MOVSCON,#00H;串行工作方式0

;-------------------------------------

;;DISPLAYINIT

;-------------------------------------

    LCALL LCDINIT

    MOV   COM,#06H

    LCALL PR1

    MOV   COM,#0C0H

    LCALL PR1

MAIN_LOOP:

3.24×4矩阵式键盘汇编源程序

KEYBUFEQU30H

ORG00H

START:

MOVKEYBUF,#2

WAIT:

MOVP3,#0FFH

CLRP3.4

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY1

LCALLDELY10MS

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY1

MOVA,P3

ANLA,#0FH

CJNEA,#0EH,NK1

MOVKEYBUF,#0

LJMPDK1

NK1:

CJNEA,#0DH,NK2

MOVKEYBUF,#1

LJMPDK1

NK2:

CJNEA,#0BH,NK3

MOVKEYBUF,#2

LJMPDK1

NK3:

CJNEA,#07H,NK4

MOVKEYBUF,#3

LJMPDK1

NK4:

NOP

DK1:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

 

DK1A:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZDK1A

NOKEY1:

MOVP3,#0FFH

CLRP3.5

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

LCALLDELY10MS

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

MOVA,P3

ANLA,#0FH

CJNEA,#0EH,NK5

MOVKEYBUF,#4

LJMPDK2

NK5:

CJNEA,#0DH,NK6

MOVKEYBUF,#5

LJMPDK2

NK6:

CJNEA,#0BH,NK7

MOVKEYBUF,#6

LJMPDK2

NK7:

CJNEA,#07H,NK8

MOVKEYBUF,#7

LJMPDK2

NK8:

NOP

DK2:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

 

DK2A:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZDK2A

NOKEY2:

MOVP3,#0FFH

CLRP3.6

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

LCALLDELY10MS

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

MOVA,P3

ANLA,#0FH

CJNEA,#0EH,NK9

MOVKEYBUF,#8

LJMPDK3

NK9:

CJNEA,#0DH,NK10

MOVKEYBUF,#9

LJMPDK3

NK10:

CJNEA,#0BH,NK11

MOVKEYBUF,#10

LJMPDK3

NK11:

CJNEA,#07H,NK12

MOVKEYBUF,#11

LJMPDK3

NK12:

NOP

DK3:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

 

DK3A:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZDK3A

NOKEY3:

MOVP3,#0FFH

CLRP3.7

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

LCALLDELY10MS

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

MOVA,P3

ANLA,#0FH

CJNEA,#0EH,NK13

MOVKEYBUF,#12

LJMPDK4

NK13:

CJNEA,#0DH,NK14

MOVKEYBUF,#13

LJMPDK4

NK14:

CJNEA,#0BH,NK15

MOVKEYBUF,#14

LJMPDK4

NK15:

CJNEA,#07H,NK16

MOVKEYBUF,#15

LJMPDK4

NK16:

NOP

DK4:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

 

DK4A:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZDK4A

NOKEY4:

LJMPWAIT

DELY10MS:

MOVR6,#10

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

TABLE:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH,39H,5EH,79H,71H

END

 

3.3点阵式LED“0-9”数字显示汇编源程序

TIMEQU30H

CNTAEQU31H

CNTBEQU32H

 ORG00H

LJMPSTART

ORG0BH

LJMPT0X

ORG30H

START:

MOVTIM,#00H

MOVCNTA,#00H

MOVCNTB,#00H

MOVTMOD,#01H

MOVTH0,#(65536-4000)/256

MOVTL0,#(65536-4000)MOD256

SETBTR0

SETBET0

SETBEA

SJMP$

 

T0X:

MOVTH0,#(65536-4000)/256

MOVTL0,#(65536-4000)MOD256

MOVDPTR,#TAB

MOVA,CNTA

MOVCA,@A+DPTR

MOVP3,A

MOVDPTR,#DIGIT

MOVA,CNTB

MOVB,#8

MULAB

ADDA,CNTA

MOVCA,@A+DPTR

MOVP1,A

INCCNTA

MOVA,CNTA

CJNEA,#8,NEXT

MOVCNTA,#00H

NEXT:

INCTIM

MOVA,TIM

CJNEA,#250,NEX

MOVTIM,#00H

INCCNTB

MOVA,CNTB

CJNEA,#10,NEX

MOVCNTB,#00H

NEX:

RETI

TAB:

DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH

DIGIT:

DB00H,00H,3EH,41H,41H,41H,3EH,00H

DB00H,00H,00H,00H,2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2