微机原理实验简易计算器

微机原理实验简易计算器
微机原理实验简易计算器

【实验题目】

简易计算器设计

【实验目的】

综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等;

结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。

【基本要求】

1)利用实验箱上的4x4键盘及6位数码管,实现两个16位宽的非负整数(0~65535)进行+、-、×运算,计算结果限制在范围-65535~65535,超过范围在数码管最低位显示E;

2) 16个按键的分配可以自行指定;

【扩展要求】

1)按基本要求保持输入的范围不变(16位宽),扩展计算结果的范围到用足6位数码管,当计算结果超过-65535~999999时,显示E;

2)增加÷的功能,有小数显示;

【实验程序】

;该程序实现了基本要求及扩展要求的2)

DSEG SEGMENT

BUFF DB 6 DUP()

LED_7 DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39 H,5EH,79H,71H,00H,40H

POSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH

UNIT10 DW 10000,1000,100,10,1

NEWNUM DB 0

COUNT DB 0

FLAG DB 0 ;是否有键按下的标志

NEGTI DB 0 ;是否为负数的标志

NUM DW 0

NUM1 DW 0

NUM2 DW 0

TAG DB 0 ;运算种类标志

POINT DB 0 ;除法结果添加小数点标志

RESULT DW 0

DSEG ENDS

CSEG SEGMENT

ASSUME DS:DSEG,CS:CSEG

START:

MOV AX,DSEG

MOV DS,AX

MOV DX,300CH ;8255初始化

MOV AL,81H

OUT DX,AL

LEA SI,BUFF

MOV CX,6 NEXT:

MOV BYTE PTR[SI],16

INC SI

LOOP NEXT

CALL SHOW ;将显示缓冲区中内容在LED上一次显示出来

MOV COUNT,0 ;记按下了几位数

NEXT2:

CALL SHOW

CALL SCAN ;判断是否有按键按下

CMP FLAG,1

JZ OK

JMP NEXT2

OK:

MOV FLAG,0

MOV POINT,0

MOV DX,3000H ;判断是哪一个键被按下

MOV AL,0FFH

OUT DX,AL

MOV CH,-1 ;CH用于保存当前被扫描的列号MOV CL,07FH

XL:

ROL CL,1

INC CH

MOV DX,3000H

MOV AL,CL

OUT DX,AL

MOV DX,3008H

IN AL,DX

AND AL,0FH

CMP AL,0FH

JZ XL ;选中下一列被扫描

CMP AL,0EH

JNZ FOUR

MOV CL,0 ;CL保存行号

JMP FREE

FOUR:

CMP AL,0DH

JNZ BA

MOV CL,4

JMP FREE

BA:

CMP AL,0BH

JNZ SHIER

MOV CL,8

JMP FREE

SHIER:

CMP AL,07H

JNZ XL

MOV CL,12

FREE:

ADD CH,CL ;行列值相加为按键代表的值

CMP CH,9

JBE SHUZI

CMP CH,12 ;加法

JZ JIAFA

CMP CH,13 ;减法

JZ JIANFA

CMP CH,14 ;乘法

JZ CHENGFA

CMP CH,15 ;除法

JZ CHUFA

CMP CH,11 ;等号时进行运算

JZ YUNSUAN

CMP CH,10 ;此键清屏重新输入

JZ CLEAR

SHUZI:

INC COUNT

MOV NEWNUM,CH

CALL COPY ;将新输入的按键值送入显示缓冲区的最末位

MOV DX,3000H ;将LED关显示

MOV AL,0FFH

OUT DX,AL

CALL DELAY2

JMP NEXT2 JIAFA:

MOV TAG,1 ;置加法标志

CALL TO_DEC ;将输入的数转化为十进制数保存MOV AX,NUM

MOV NUM1,AX

JMP START ;继续输入第二个按键数JIANFA:

MOV TAG,2

CALL TO_DEC

MOV AX,NUM

MOV NUM1,AX

JMP START

CHENGFA:

MOV TAG,3

CALL TO_DEC

MOV AX,NUM

MOV NUM1,AX

JMP START

CHUFA:

MOV TAG,4

CALL TO_DEC

MOV AX,NUM

MOV NUM1,AX

JMP START

CLEAR:

JMP START

YUNSUAN:

CALL TO_DEC ;将第二次输入的数转化为十进制数保存

MOV AX,NUM

MOV NUM2,AX

CMP TAG,1

JZ SJIAF

CMP TAG,2

JZ SJIANF

CMP TAG,3

JZ SCHENGF

CMP TAG,4

JZ SCHUF

YEAH:

CALL CHULI ;将结果中零的位置16关显示MOV TAG,0

MOV NEGTI,0

CALL SHOW

JMP NEXT2

SJIAF:

CALL JIA

JMP YEAH

SJIANF:

CALL JIAN

JMP YEAH

SCHENGF:

CALL CHENG

JMP YEAH

SCHUF:

CALL CHU

JMP YEAH

MOV AH,4CH

INT 21H

JIA PROC NEAR

PUSH AX

PUSH CX

PUSH SI

MOV AX,NUM1

ADD AX,NUM2

JC YC1 ;溢出

MOV RESULT,AX

CALL TO_SHOWSHU

JMP OVER1

YC1:

LEA SI,BUFF

MOV BYTE PTR[SI],14

INC SI

MOV CX,5

SS0:

MOV BYTE PTR[SI],16

INC SI

LOOP SS0

OVER1:

POP SI

POP CX

POP AX

RET

JIA ENDP

JIAN PROC NEAR

PUSH AX

PUSH CX

PUSH SI

MOV AX,NUM1

CMP AX,NUM2

JA POSITIVE

MOV NEGTI,1 ;结果为负数MOV AX,NUM2

SUB AX,NUM1

JC YC2

JMP OV POSITIVE:

MOV AX,NUM1 SUB AX,NUM2

JC YC2

OV:

MOV RESULT,AX CALL TO_SHOWSHU JMP OVER2

YC2:

LEA SI,BUFF

MOV BYTE PTR[SI],14 INC SI

MOV CX,5

SS2:

MOV BYTE PTR[SI],16 INC SI

LOOP SS2

OVER2:

POP SI

POP CX

POP AX

RET

JIAN ENDP CHENG PROC NEAR PUSH AX

PUSH CX

PUSH SI

MOV AX,NUM1 MUL NUM2

JC YC3

MOV RESULT,AX CALL TO_SHOWSHU JMP OVER3

YC3:

LEA SI,BUFF

MOV BYTE PTR[SI],14 INC SI

MOV CX,5

SS3:

MOV BYTE PTR[SI],16 INC SI

LOOP SS3

OVER3:

POP SI

POP CX

POP AX

RET

CHENG ENDP

CHU PROC NEAR PUSH AX

PUSH CX

PUSH DX

PUSH SI

XOR DX,DX

MOV AX,NUM1

DIV NUM2

PUSH DX

MOV RESULT,AX CALL TO_SHOWSHU MOV POINT,1

LEA SI,BUFF

ADD SI,5

MOV CX,5

PEA:

MOV AL,[SI-1]

MOV [SI],AL

DEC SI

LOOP PEA

POP DX

MOV AX,10

MUL DX

XOR DX,DX

DIV NUM2

MOV [SI],AL

POP SI

POP DX

POP CX

POP AX

RET

CHU ENDP

CHULI PROC NEAR PUSH SI

PUSH CX

LEA SI,BUFF

ADD SI,5

XX:

CMP BYTE PTR[SI],0 JNZ NOZERO

MOV BYTE PTR[SI],16 DEC SI

JMP XX NOZERO:

CMP NEGTI,1

JNZ ZHENG

INC SI

MOV BYTE PTR[SI],17 ZHENG:

POP CX

POP SI

CHULI ENDP

TO_DEC PROC NEAR PUSH SI

PUSH AX

PUSH BX

PUSH CX

LEA SI,BUFF

MOV AL,COUNT

XOR AH,AH

ADD SI,AX

DEC SI

XOR AX,AX

XOR CH,CH

MOV CL,COUNT AGAIN:

ADD AX,AX

MOV BX,AX

ADD AX,AX

ADD AX,AX

ADD AX,BX

MOV BH,0

MOV BL,[SI]

ADD AX,BX

DEC SI

LOOP AGAIN

MOV NUM,AX

POP CX

POP BX

POP AX

POP SI

RET

TO_DEC ENDP

TO_SHOWSHU PROC NEAR PUSH SI

PUSH DI

PUSH AX

PUSH BX

PUSH CX

LEA DI,BUFF

ADD DI,5

LEA SI,UNIT10

MOV AX,RESULT

MOV BYTE PTR[DI],0 DEC DI

LOP0:

XOR CL,CL

MOV BX,[SI]

LOP1:

SUB AX,BX

JB LOP3

INC CL

JMP LOP1

LOP3:

ADD AX,BX

MOV [DI],CL

INC SI

INC SI

DEC DI

CMP BX,1

JNZ LOP0

POP CX

POP BX

POP AX

POP DI

POP SI

RET

TO_SHOWSHU ENDP

SHOW PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSH SI

PUSH DI

CMP POINT,1 ;是否需添加小数点JNZ NOPOINT

MOV CH,0FFH

AA3:

LEA SI,BUFF

LEA DI,POSITION

MOV AL,[SI]

LEA BX,LED_7

XLAT

MOV DX,3004H

OUT DX,AL

MOV DX,3000H

MOV AL,[DI]

OUT DX,AL

CALL DELAY ;延时,使一位稳定显示INC SI

INC DI

MOV AL,[SI]

LEA BX,LED_7 XLAT

OR AL,80H ;填小数点

MOV DX,3004H

OUT DX,AL

MOV DX,3000H

MOV AL,[DI]

OUT DX,AL

CALL DELAY ;延时,使一位稳定显示INC SI

INC DI

MOV CL,4

AA2:

MOV AL,[SI]

LEA BX,LED_7

XLAT

MOV DX,3004H

OUT DX,AL

MOV DX,3000H

MOV AL,[DI]

OUT DX,AL

CALL DELAY ;延时,使一位稳定显示INC SI

INC DI

DEC CH

JZ REALSTOP

DEC CL

JNZ AA2

JMP AA3

NOPOINT:

MOV CH,0FFH

AA1:

LEA SI,BUFF

LEA DI,POSITION

MOV CL,6

AA:

MOV AL,[SI]

LEA BX,LED_7

XLAT

MOV DX,3004H

OUT DX,AL

MOV DX,3000H

MOV AL,[DI]

OUT DX,AL

CALL DELAY ;延时,使一位稳定显示INC SI

INC DI

DEC CH

JZ REALSTOP

DEC CL

JNZ AA

JMP AA1 REALSTOP:

POP DI

POP SI

POP DX

POP CX

POP BX

POP AX

RET

SHOW ENDP DELAY PROC NEAR PUSH BX

PUSH CX

MOV BX,3FFH DEL1:

MOV CX,0FFFH DEL2:

LOOP DEL2

DEC BX

JNZ DEL1

POP CX

POP BX

RET

DELAY ENDP DELAY2 PROC NEAR PUSH BX

PUSH CX

MOV BX,3FH

DEL3:

MOV CX,0FFH DEL4:

LOOP DEL4

DEC BX

JNZ DEL3

POP CX

POP BX

RET

DELAY2 ENDP SCAN PROC NEAR

PUSH AX

PUSH DX

KS:

MOV DX,3000H

MOV AL,0

OUT DX,AL

MOV DX,3008H

IN AL,DX

AND AL,0FH ;屏蔽高四位CMP AL,0FH

JZ JIESHU

MOV FLAG,1

JIESHU:

POP DX

POP AX

RET

SCAN ENDP

COPY PROC NEAR

PUSH SI

PUSH CX

PUSH AX

MOV CX,5

LEA SI,BUFF

ADD SI,5

NEXT1:

MOV AL,[SI-1]

MOV [SI],AL

DEC SI

LOOP NEXT1

MOV AL,NEWNUM

MOV [SI],AL

POP AX

POP CX

POP SI

RET

COPY ENDP

CSEG ENDS

END START

AT89C51单片机简易计算器的设计

AT89C51单片机简易计算器的设计 单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除六位数范围内的基本四则运算,并在LCD上显示相应的结果。设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入。显示采用字符LCD静态显示。软件方面使用C语言编程,并用PROTUES仿真。 一、总体设计 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。 (2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数

值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。 系统模块图: 二、硬件设计 (一)、总体硬件设计 本设计选用AT89C51单片机为主控单元。显示部分:采用LCD 静态显示。按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。 总体设计效果如下图:

c计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件 的响应函数代码。

(3)程序清单: 添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法 2.减法 3.乘法 4.除法 int append; //判断后面是否添加数字 成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0;

微机原理课件设计简易计算器

二○一一~二○一二学年第一学期 信息科学与工程学院 自动化系 课程设计计划书 课程名称:微机原理及应用课程设计班级:自动化0901 姓名:王立 学号:200904134032 指导教师:孟志华 二○一一年十二月六日

一、课题名称 简易计算器设计 二、课题目的 利用8088和8255设计一个简易计算器,并将其结果显示在LED数码管上。熟悉系统设计的基本步骤,掌握8088与8255的接口设计,掌握通过8255设计键盘扫描技术,掌握通过8255显示七段共阴极数码管设计。加强对8088数据总线,地址总线及接口寻址的理解,加深对8255的端口控制的理解。 三、需求分析 (1)能够实现99以内的加减乘法运算,并显示在2位LED上。 (2)对于减法运算产生的负数,可在LED上显示“-”号,若负量超过9,则显示“E0”。 四、方案选择 方案一: 该方案将LED显示电路直接接在8088的DB上,而键盘则采用8255进行扫描。

方案二: 该方案则是将LED显示电路和键盘扫描电路分别接在两个不同的8255上,扫描和显示时,选中不同的8255。 方案三: 该方案则只用一片8255驱动LED显示和键盘扫描电路。 方案评估: 方案一:LED显示驱动电路实现起来较简单,但是很浪费系统总线资源,舍弃! 方案二:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,与建设资源节约型社会初衷冲突!舍弃! 方案三:此种方案较为经济,方便,具有模块化的特点(因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255即可实现要求!) 综上所述:采用方案三!

五、程序流程图 程序总流程图:

数电实验二:简易计算器(实验报告)

数电实验2实验报告 1、设计修改方案 (1)加入编码器连接4选一数据选择器,控制进行运算的种类 (2)修改了输出端数据选择器的程序,使得当计算器没有任何输入时,结果显示保持为0,并且利用芯片自身的灭零管脚,让显示结果中,当十位为零时,十 位的零不显示。

2、实验数据及分析 (1)修改后电路图(附后) (2)仿真波形 设置输入2个4位二进制数为0110(十进制6)和0010(十进制2),计算方式控制SW[3:0]设为0111,即模拟除法操作,加入时钟信号。 ①模拟除法波形: 可以看到十位(商)的数码管显示中,1、2、3、4、7段亮,显示为数字3,而个位(余数)显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6除2商3余0。满足计算要求。 ②模拟乘法波形:(SW[3:0]设为1011,其他输入同上)

可以看到个位的数码管显示中,1、4、5、6段亮,显示为C(化为十进制为12),而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6乘2等于0C,即等于12。当改变输入4和2是,显示结果为8,。满足计算要求。 ③模拟加法波形:(SW[3:0]设为1101,其他输入同上) 可以看到个位的数码管显示中,1、2、3、4、5、6、7段全亮,显示为数字8,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6加2等于08,即等于8。满足计算要求。 ④模拟减法波形:(SW[3:0]设为1110,其他输入同上) 可以看到个位的数码管显示中,2、3、6、7段亮,显示为数字3,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6减2等于03,即等于3。满足计算要求。 从上面加减乘除四种功能运算的波形仿真可以看出,本实验设计能够正确完成对输入数字的上述四种运算。满足题目要求。

2014年微机原理课程设计题目-汇总 (1)

1.根据键盘输入的一个数字显示相应的数据螺旋方阵。如输入4,则显示。 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 共需要显示4^2=16个数字。 要求:①根据键盘输入的数字(3-20),显示相应的数据方阵。 ② 画出设计思路流程图,编写相应程序。 2.显示日期或时间。要求:有提示信息,输入字母“r”,可显示系统当前日期;输入字母“s”,可 显示系统当前时间;输入字母“q”,退出程序。 3.字符游戏 随机显示字符ch,等待用户输入 如果输入字符与ch一致,则随机显示下一个字符ch2;否则显示“输入错误”; 如此循环; 输入Enter结束 点击Enter程序退出; 4.从键盘上输入7名裁判的评分(0-10,整数),扣除一个最高分,扣除一个最低分,计算出其它五 个分数的平均值(保留一位小数),并在显示其上输出 “The final score is:”和最终结果。 5.为短跑比赛设计一个确定成绩次序的程序,要求能够输入8个队员编号,成绩;输出最终的排名 次序编号及成绩。(成绩时间格式--秒数:百分秒数,如12:15) 6.为评委设计一个显示选手通过的指示器,以电脑显示屏作为指示屏。当从键盘输入0时,显示屏 上呈现“×”图形,表示选手被淘汰;当从键盘输入1时,显示屏上呈现“√”图形,表示选手通过。 7.试设计一个道路收费系统,将车型分为大型车、中型车、小型车,每种车型分别有各自的单公里 收费标准,如下表所示,在收费时,将车型和公里数输入系统,就可自动生成收费额,(公里数取整。收费额以元为单位,保留一位小数)。 序号 车型 单公里收费(单位:0.1元) 1 大型车 5 2 中型车 3 3 小型车 1 8.通过实验箱TDN实现8个LED灯循环闪烁。 要求:首先是1、3、5、7号LED灯以此亮1秒钟,当第7号LED灯亮后,这四个灯同时闪烁5下; 然后,2、4、6、8号灯依次亮1秒钟,当第8号灯亮后,这四个灯同时闪烁5下。 9.为男子25米手枪速射决赛设计一个排名程序。决赛有6名运动员参加,每人每轮次打5枪,每枪 打中靶子的中心区就计一分,打不中就记0分。四轮比赛之后,先将成绩最低的选手淘汰(即为

基于51单片机的简易计算器制作

基于51单片机的简易计算器制作专业:电气信息班级:11级电类一班 姓名:王康胡松勇 时间:2012年7月12日 一:设计任务 本系统选用AT89C52单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计,具体设计如下: (1)由于设计的计算器要进行四则运算,为了得到较好的显示效果,经综合分析后,最后采用LED 显示数据和结果。 (2)采用键盘输入方式,键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键(on\c)和等号键(=),故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)在执行过程中,开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LED上提示八个0;当除数为0时,计算器会在LED上会提示八个负号。 设计要求:分别对键盘输入检测模块;LED显示模块;算术运算模块;错误处理及提示模块进行设计,并用Visio画系统方框图,keil与protues仿真 分析其设计结果。 二.硬件设计 单片机最小系统 CPU:A T89C52 显示模块:两个4位7段共阴极数码管 输入模块:4*4矩阵键盘 1.电路图

电路图说明 本电路图采用AT89C52作为中处理器,以4*4矩阵键盘扫描输入,用两个74HC573(锁存器)控制分别控制数码管的位于段,并以动态显示的方式显示键盘输入结果及运算结果。为编程方便,以一个一位共阴极数码管显示负号。 三,程序设计 #include #define Lint long int #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; //锁存器段选sbit wela=P2^7; sbit display_g=P2^0; //负号段选 sbit display_w=P2^1; //负号位选uchar code table[]={0x3f,0x06,0x5b,0x4f, //0,1,2,3

微机原理实验简易计算器

【实验题目】 简易计算器设计 【实验目的】 综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等; 结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。 【基本要求】 1)利用实验箱上的4x4键盘及6位数码管,实现两个16位宽的非负整数(0~65535)进行+、-、×运算,计算结果限制在范围-65535~65535,超过范围在数码管最低位显示E; 2) 16个按键的分配可以自行指定; 【扩展要求】 1)按基本要求保持输入的范围不变(16位宽),扩展计算结果的范围到用足6位数码管,当计算结果超过-65535~999999时,显示E; 2)增加÷的功能,有小数显示; 【实验程序】 ;该程序实现了基本要求及扩展要求的2) DSEG SEGMENT BUFF DB 6 DUP() LED_7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39 H,5EH,79H,71H,00H,40H POSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH UNIT10 DW 10000,1000,100,10,1 NEWNUM DB 0 COUNT DB 0 FLAG DB 0 ;是否有键按下的标志 NEGTI DB 0 ;是否为负数的标志 NUM DW 0 NUM1 DW 0 NUM2 DW 0 TAG DB 0 ;运算种类标志 POINT DB 0 ;除法结果添加小数点标志 RESULT DW 0 DSEG ENDS CSEG SEGMENT ASSUME DS:DSEG,CS:CSEG START: MOV AX,DSEG MOV DS,AX MOV DX,300CH ;8255初始化 MOV AL,81H OUT DX,AL LEA SI,BUFF MOV CX,6 NEXT: MOV BYTE PTR[SI],16 INC SI LOOP NEXT CALL SHOW ;将显示缓冲区中内容在LED上一次显示出来 MOV COUNT,0 ;记按下了几位数 NEXT2: CALL SHOW CALL SCAN ;判断是否有按键按下 CMP FLAG,1 JZ OK JMP NEXT2 OK: MOV FLAG,0 MOV POINT,0 MOV DX,3000H ;判断是哪一个键被按下 MOV AL,0FFH OUT DX,AL MOV CH,-1 ;CH用于保存当前被扫描的列号MOV CL,07FH XL: ROL CL,1 INC CH MOV DX,3000H MOV AL,CL OUT DX,AL MOV DX,3008H

微机原理课程设计_简易计算器的设计

目录 一前言 (1) 二总体设计 (2) 三硬件设计 (2) 3.1微处理器8086芯片 (2) 3.2可编程并行接口芯片8255A (3) 3.3LED数码管 (4) 3.44 X 4矩阵按键 (4) 3.5硬件原理图 (6) 四软件设计 (7) 4.1程序流程图 (7) 4.2源代码 (9) ■ ■?I 五仿真 (18) 六课程设计体会 (18) - I 七参考文献 (19) \ 吏\ 一刖言 1.1课程设计的目的和任务 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教 :第丸卜\\\\ 学环节。 、、、 | r-—__ i 通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得 到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能

力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。 1.2课程设计指导及要求 在课程设计时,2~3名同学组成1个设计小组,分别完成项目的功能设计、电路编辑及调试、编码及调试和课程设计报告编写工作。同批次同学中选择同一题的不超过3组。在教师指导下,可以相互讨论。每设计小组提交1份设计报告,设计报告由设计小组同学独立完成,不得互相抄袭。教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而 不应处处被动地依赖指导老师。同学应积极主动的提出问题、解决问题、讨论问题,互相帮助和启发。 学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。指导教师要引导学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。学生要在老师的指导下制定 F.. I I . j 1 I I 好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中 j. i z「3 ■■ 可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。 二总体设计 设计思路:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就调用子程序 进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程序进行操作,操作 后则继续利用程序不断扫描键盘是不是有输入,从而实现4位十进制数以内的加减乘除法运算。运算完成后将运算的结果储存并显示到LED显示器上。 三硬件设计 3.1微处理器8086芯片 当引脚接高电平时,CPU工作于最小模式。此时,引脚信号24?31的含义及其功能如下: (1)10/M/ (memoryl/Oselect ):存储器、I/O端口选择控制信号。信号指明当前CPU是选择访问存储器还是访问I/O端口。为高电平时访问存储器,表示当前要进行CPU与存储器之间的数据传送。为低电平时,访问I/O端口,表示当前要进行CPU与I/O端口之间的数据传送。 (2)WR/(write ):写信号,输

基于51单片机的计算器设计

目录 第一章引言 (3) 1.1 简述简易计算器 (3) 1.2 本设计主要任务 (3) 1.3 系统主要功能 (4) 第二章系统主要硬件电路设计 (4) 2.1 系统的硬件构成及功能 (4) 2.2 键盘电路设计 (5) 2.3 显示电路设计 (6) 第三章系统软件设计 (7) 3.1 计算器的软件规划 (7) 3.2 键盘扫描的程序设计 (7) 3.3 显示模块的程序设计 (8) 3.4 主程序的设计 (9) 3.5 软件的可靠性设计 (9) 第四章调试 (9) 第五章结束语 (10) 参考文献 (11) 附录源程序 (11)

第一章引言 1.1 简述简易计算器 近几年单片机技术的发展很快,其中电子产品的更新速度迅猛。计算器是日常生活中比较的常见的电子产品之一。如何才能使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器呢? 本设计是以AT89S52单片机为核心的计算器模拟系统设计,输入采用4×6矩阵键盘,可以进行加、减、乘、除9位带符号数字运算,并在LCD1602上显示操作过程。 科技的进步告别了以前复杂的模拟电路,一块几厘米平方的单片机可以省去很多繁琐的电路。现在应用较广泛的是科学计算器,与我们日常所用的简单计算器有较大差别,除了能进行加减乘除,科学计算器还可以进行正数的四则运算和乘方、开方运算,具有指数、对数、三角函数、反三角函数及存储等计算功能。计算器的未来是小型化和轻便化,现在市面上出现的使用太阳能电池的计算器, 使用ASIC设计的计算器,如使用纯软件实现的计算器等,未来的智能化计算器将是我们的发展方向,更希望成为应用广泛的计算工具。 1.2 本设计主要任务 以下是初步设定的矩阵键盘简易计算器的功能: 1.扩展4*6键盘,其中10个数字,5个功能键,1个清零 2.强化对于电路的焊接 3.使用五位数码管接口电路 4. 完成十进制的四则运算(加、减、乘、除); 5. 实现结果低于五位的连续运算; 6. 使用keil 软件编写程序,使用汇编语言; 7. 最后用ptoteus模拟仿真; 8.学会对电路的调试

单片机实验报告 计算器

单片机原理及其应用实验报告基于51单片机的简易计算器的设计 班级:12电子1班 姓名:金腾达 学号:1200401123 2015年1月6日

摘要 一个学期的51单片机的课程已经随着期末的到来落下了帷幕。“学以致用”不仅仅是一句口号更应该是践行。本设计秉承精简实用的原则,采用AT89C51单片机为控制核心,4X4矩阵键盘作为输入,LCD1602液晶作为输出组成实现了基于51单片机的简易计算器。计算器操作方式尽量模拟现实计算器的操作方式,带有基本的运算功能和连续运算能力。并提供了良好的显示方式,与传统的计算器相比,它能够实时显示当前运算过程和上一次的结果,更加方便用户记忆使用。本系统制作简单,经测试能达到题目要求。 关键词:简易计算器、单片机、AT89C51、LCD1602、矩阵键盘

目录 一、系统模块设计......................................................................................... 错误!未定义书签。 1.1 单片机最小系统 (1) 1.2 LCD1602液晶显示模块 (1) 1.3 矩阵按键模块 (2) 1.4 串口连接模块 (1) 二、C51程序设计 (2) 2.1 程序功能描述及设计思路 (2) 2.1.1按键服务函数 (2) 2.1.2 LCD驱动函数 (2) 2.1.3 结果显示函数 (2) 2.1.4状态机控制函数 (2) 2.1.5串口服务函数 (2) 2.2 程序流程图 (3) 2.2.1系统总框图 (3) 2.2.2计算器状态机流程转换图 (3) 三、测试方案与测试结果 (4) 3.1测试方案 (4) 3.3 测试结果及分析 (7) 4.3.1测试结果(仿真截图) (7) 4.3.2测试分析与结论 (7) 四、总结心得 (7) 五、思考题 (8) 附录1:整体电路原理图 (9) 附录2:部分程序源代码 (10)

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

51单片机简易计算器程序

#include <reg51.h>#include <intrins.h> #include <ctype.h> #include <stdlib.h> #define uchar unsigned char #define uint unsigned int uchar operand1[9], operand2[9]; uchar operator; void delay(uint); uchar keyscan(); void disp(void); void buf(uint value); uint compute(uint va1,uint va2,uchar optor); uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0xff}; uchar dbuf[8] = {10,10,10,10,10,10,10,10}; void delay(uint z) { uint x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--); } uchar keyscan() { uchar skey; P1 = 0xfe; while((P1 & 0xf0) != 0xf0) { delay(3); while((P1 & 0xf0) != 0xf0) { switch(P1) { case 0xee: skey = '7'; break; case 0xde: skey = '8'; break; case 0xbe: skey = '9'; break; case 0x7e: skey = '/'; break; default: skey = '#'; }

数字逻辑电路课程课程设计--简易加减计算器

数字逻辑电路课程课程设计--简易加减计算器

摘要 本次课程设计的任务是设计一个具有加减运算功能的简易计算器,并通过合适的方式来显示最后的计算结果。此次设计电路的完成主要是利用简单的数字电路和电路逻辑运算来进行的。简易加减计算器电路主要是对数据的输入与显示,数据的加减运算,数据的输出与显示三个主要的方面来设计研究完成的。 在输入电路的部分,我们通过开关的闭合与断开来实现数据的输入,开关闭合接入高电平“1”,断开接入低电平“0”。而输入的数据将通过显示译码管以十进制的形式显示出来。由于输入二进制的位数较多,我们采用个位十位分别输入的方式来简化电路。

加减运算电路则主要通过加法器来实现的。设计电路时,我们将个位和个位、十位和十位分别接入一片加法器。在进行加法运算时我们所选择的加法器是完全符合要求的,但是在进行减法运算时加法器就不能满足我们的设计要求了。因此我们将减法转换为加法进行运算,运算时采用补码的形式。在进行减法时通过异或门将减数的原码全部转换为补码,输入加法器中进行相加。最后将进位信号加到十位的运算电路上就实现了加减法的运算电路。 在显示电路中,由加法器输出的数据是二进制码。这些码可能表示超过十的数字,所以显示译码管就不能正确的显示出数字了。此时要将二进制转化成BCD码,再将BCD码送到显示译码管中就可以将计算所得的数字显示出来了。

概述 1.1设计题目: 简易加减计算器 1.2设计任务和要求: 1)用于两位以下十进制数的加减运算。 2)以合适的方式显示输入数据及计算结果。 1.3设计方案比较: 方案一:输入十进制的数字,再通过编码器对十进制的数字进行编码,输出二进制的数据。运用显示译码器对输入的数字以十进制的形式进行显示。在进行加减计算的时候将二进制数字运用数模转换,然后再进行相加减。然后将这些模拟信号再次转换成数字信号转换成数字信号,再将数字信号输入到显示译码管中来显示数剧。

c计算器实验报告

c计算器实验报告集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、 乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 中建立一个MFC工程文件,名为calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和 单选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在中添加头文件,然后添加public成员。 7)打开文件,在构造函数中,进行成员初始化和完善各控件的 响应函数代码。 (3)程序清单: 添加的public成员: double tempvalue; 法 2.减法 3.乘法 4.除法

int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = ; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; } ●各控件响应函数代码: void CCalculatorDlg::OnButton1() //按钮“1” { // TODO: Add your control notification handler code here if(append==1)result=0;

微机原理课件设计简易计算器

$ 二○一一~二○一二学年第一学期 信息科学与工程学院 自动化系 : 课程设计计划书 课程名称:微机原理及应用课程设计 班级:自动化 0901 姓名:王立 学号: 4032 ] 指导教师:孟志华

二○一一年十二月六日 一、课题名称 简易计算器设计 二、课题目的 利用8088和8255设计一个简易计算器,并将其结果显示在LED数码管上。熟悉系统设计的基本步骤,掌握8088与8255的接口设计,掌握通过8255设计键盘扫描技术,掌握通过8255显示七段共阴极数码管设计。加强对8088数据总线,地址总线及接口寻址的理解,加深对8255的端口控制的理解。 ! 三、需求分析 (1)能够实现99以内的加减乘法运算,并显示在2位LED上。 (2)对于减法运算产生的负数,可在LED上显示“-”号,若负量超过9,则显示“E0”。 四、方案选择 方案一: 、 该方案将LED显示电路直接接在8088的DB上,而键盘则采用8255进行扫描。

( 方案二: 该方案则是将LED 显示电路和键盘扫描电路分别接在两 个不同的8255上,扫描和显示时,选中不同的8255 。 方案三: ) 该方案则只用一片8255驱动LED 显示和键盘扫描电路。 方案评估: 方案一:LED 显示驱动电路实现起来较简单,但是很浪费系统总线资源,舍弃! 方案二:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,与建设资源节约型社会初衷冲突!舍弃! 方案三:此种方案较为经济,方便,具有模块化的特点(因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255

即可实现要求!) & 综上所述:采用方案三! 五、程序流程图 程序总流程图:

AT89C51单片机C实现简易计算器

AT89C51单片机简易计算器的设计 一、总体设计 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。 (2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。 系统模块图:

二、硬件设计 (一)、总体硬件设计 本设计选用AT89C51单片机为主控单元。显示部分:采用LCD 静态显示。按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。 总体设计效果如下图:

(二)、键盘接口电路 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。 矩阵键盘的工作原理: 计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。 图 2 矩阵键盘布局图 矩阵键盘内部电路图如图3所示:

简易计算器设计实验报告

简易计算器设计实验报告 一.设计任务及要求 1.1实验任务: 根据计算器的原理设计一个具有加减乘除功能的简易计算器。如:5+3*4/8=4。 1.2 实验基本要求: (1)实现最大输入两位十进制数字的四则运算(加减乘除)。 (2)能够实现多次连算(无优先级,从左到右计算结果)。 如:12+34*56-78/90+9=36 (3)最大长度以数码管最大个数为限,溢出报警。 二.实验设计方案 (1)用QuartusII的原理图输入来完成系统的顶层设计。 (2)用VHDL编写以及直接拖模块来各功能模块。 (3)通过2个脉冲分别实现个位数和十位数的输入。 (4)通过选择每次的输出数值,将输出值反馈到运算输入端 (4)通过除法运算实现十六进制到十进制的转换输出。 其具体实现流程图如下:

三系统硬件设计 FPGA: EP2C5T144C8目标板及相应外围硬件电路。(从略) 四系统软件设计 1.数据输入模块 原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。 2.运算模块 原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。具体实现代码见附录二。 3.输出模块 原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。当输出结果溢出是LED0亮,同时数码管显示都为零。部分实现见附录二。 五实验调试 输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。当输出为负数时,LED0灯变亮,同时数码管显示都为零。六实验结论 本实验基本实现了计算器的加减乘法运算功能,但是存在一个突出的缺陷,就是当输出结果时,必须先按等号键导通数据反馈,再按运算键选择输出结果。这与实际应用的计算器存在很大的差距。但是,本设计可以通过等号键实现运算对象和运算结果之间的切换。

基于单片机的简易计算器设计

2013 - 2014 学年_一_学期 山东科技大学电工电子实验教学中心 创新性实验研究报告 实验项目名称__基于51单片机的简易计算器设计_ 2013 年12 月27 日

四、实验内容

2、实验内容 (一)、总体硬件设计 本设计选用AT89C52单片机为主控单元。显示部分:采用六位LED动态数码管显示。按键部分:采用2*8键盘;利用2*8的键盘扫描子程序,读取输入的键值。 (二)、键盘接口电路 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用两条I/O 线作为行线,八条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为2×8个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。 矩阵键盘的工作原理: 计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口和另一个P口的两个管脚实现16个按键功能,这种形式在单片机系统中也最常用。 矩阵键盘布局图: 矩阵键盘内部电路图如下图所示:

(三)、LED显示模块 本设计采用LED数码显示来显示输出数据。通过D0-D7引脚向LED写指令字或写数据以使LED实现不同的功能或显示相应数据。 (四)运算模块(单片机控制) MCS-51 单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。 单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!因此我们采用单片机作为计算器的主要功能部件,可以很快地实现运算功能。

单片机课程设计——基于C51简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

基于C51简易计算器综述

单片机课程设计 简 易 计 算 器 专 业 班 级 学生姓名 学 号 任课教师 提交日期 JINGCHU UNIVERSITY OF TECHNOLOGY

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单.................................. 一、设计任务和要求

1.1 设计要求 本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计,设计任务为: 设计一键盘显示装置,键盘上除需定义10个十进制数字键外还要相应的功能键,其它键不定义无响应。利用此系统可分别可输入十进制被加数与加数,实现两数相加并将结果以十进制形式显示出来。(扩展:多位10进制数相加) 1.2 性能指标 本课程设计的十进制加法计算器的计算范围为0~255,计算结果全为整数,计算结果溢出结果不显示。 1、加法:三位加法,计算结果超过255溢出不显示 2、减法:三位减法,计算结果若小于零溢出不显示 3、乘法:三位数乘法 4、除法:整数除法 5、有清零功能 1.3 设计方案的确定 按照1.1的设计要求,本课题需要使用数码管显示和扩展4*4键盘,由于 AT89C51芯片的I口不够多,而且为了硬件电路设计的简单化,故选择串行动态显示和用P1口扩展4*4键盘,扩展的4*4键盘定义十个数字键,六个功能键,使用串行动态显示显示运算结果。 主程序进行初始化,采用行列扫描进行查表得出键值,每次按键后调用显示子程序。 二、单片机简要原理 在该课程设计中,主要用到一个AT89C51芯片和串接的共阴数码管。作为 该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 2.1 AT89C51的介绍:

相关文档
最新文档