课程设计十进制加法计算器设计Word文档格式.docx

上传人:b****8 文档编号:22192822 上传时间:2023-02-03 格式:DOCX 页数:31 大小:177.71KB
下载 相关 举报
课程设计十进制加法计算器设计Word文档格式.docx_第1页
第1页 / 共31页
课程设计十进制加法计算器设计Word文档格式.docx_第2页
第2页 / 共31页
课程设计十进制加法计算器设计Word文档格式.docx_第3页
第3页 / 共31页
课程设计十进制加法计算器设计Word文档格式.docx_第4页
第4页 / 共31页
课程设计十进制加法计算器设计Word文档格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

课程设计十进制加法计算器设计Word文档格式.docx

《课程设计十进制加法计算器设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计十进制加法计算器设计Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。

课程设计十进制加法计算器设计Word文档格式.docx

收获与体会;

附录(设计代码放在附录部分,必须加上合理的注释)

(4)

学生签名:

2015年1月16日

课程设计(论文)评审意见

(1)总体方案的选择是否正确;

正确()、较正确()、基本正确()

(2)程序仿真能满足基本要求;

满足()、较满足()、基本满足()

(3)设计功能是否完善;

完善()、较完善()、基本完善()

(4)元器件选择是否合理;

合理()、较合理()、基本合理()

(5)动手实践能力;

强()、较强()、一般()

(6)学习态度;

好()、良好()、一般()

(7)基础知识掌握程度;

(8)回答问题是否正确;

正确()、较正确()、基本正确()、不正确()

(9)程序代码是否具有创新性;

全部()、部分()、无()

(10)书写整洁、条理清楚、格式规;

规( )、较规( )、一般()

总评成绩  优( )、良( )、中( )、及格( )、不及格( )

评阅人:

   

年月日

摘要

随着社会科技的发展和进步,计算器因其功能强大而早已成为人们日常生活中必不可少的工具,最简单的计算器就能实现简单的加减乘除运算,这让人们免去了复杂的计算过程,大大提高了工作效

率。

本文利用C51系列单片机系统设计的简易十进制加法计算器,就能够实现简单的加法运算。

本文设计的简易十进制加法计算器系统硬件电路主要包括:

键盘电路,显示电路以及复位电路和晶振电路。

复位电路采用的是上电与手动复位,系统一上电,芯片就复位,或者中途按按键也可以进行复位;

数码管显示电路采用三个并行设计;

由于需要读取键盘的行值和列值,减少I/O的使用,故键盘扫描采用反转法;

键盘电路设计,至于按键的独立行,由于计算器输入数字和其他功能按键都用到很多按键,如果按键独立的话,编程会比较简单,但是会占用大量的I/O 

口资源,而单片机只有四个八位的I/O口,这样可能会导致I/O口不够用,因此采用非独立式的矩阵键盘方案。

软件设计方面选用最基本的思路。

首先进行参数初始化,并LED显示;

然后扫描键盘看是否有按键输入,若有,则读取键码;

并判断键码是数字键、清零键还是功能键(“+”、“=”),是数值键则送数码管显示并保存数值,是清零键则做清零处理,是功能键则又判断是“+”还是“=”,若是“=”则将计算最后结果送数码管显示,若是加法功能键则不显示。

最后通过Proteus软件仿真结果完全正确,最终完成了设计。

关键词:

单片机十进制加法计算器矩阵键盘扫描法LED

一、系统方案设计与分析………………………………………………………5

1.1方案分析………………………………………………………………5

1.2方案对比………………………………………………………………5

1.3系统总设计……………………………………………………………6

二、硬件电路设计………………………………………………………………6

2.1单片机介绍……………………………………………………………7

2.2单片机最小系统…………………………………………………8

2.2.1复位电路………………………………………………………8

2.2.2晶振电路………………………………………………………9

2.3显示数码管电路设计…………………………………………………10

2.4键盘电路设计…………………………………………………………10

2.4.1键盘扫描………………………………………………………11

2.4.2键盘电路设计…………………………………………………11

2.5系统完整电路设计……………………………………………………12

三、软件设计……………………………………………………………………12

3.1LED显示程序设计……………………………………………………13

3.2数值送显示缓存程序设计……………………………………………14

3.3读键子程序设计 

………………………………………………………15

3.4运算程序的设计………………………………………………………16

四、系统仿真与调试……………………………………………………………18

4.1Keil 

C51单片机软件开发系统………………………………………19

4.2proteus的操作 

………………………………………………………20

4.2.1硬件电路图的接法操作…………………………………………20

4.2.2Proteus中课程设计的仿真结果………………………………20

五、心得体会……………………………………………………………………22

六、参考文献……………………………………………………………………23

一、系统方案设计与分析

1.1方案分析

本设计是基于C51系列单片机来进行的数字计算器系统的设计,可以完成计算器的键盘输入,然而传统的简易计算器的键盘输入键盘都采用的是矩阵形式的电路,键盘上一般存在有数字键、功能键、清零键,可以进行简单的加、减、乘、除四则基本运算。

而我们本次课题是要设计一个简单的十进制加法计算器,并在4位共阳极数码管上显示相应的结果,那意味着要先扫描键盘上的按钮,读取键码,将键值读入单片机,然后将这些键值放入数值缓冲程序里等待处理,键值进过运算程序后的结果送入输出口并显示出来,结果的显示也要经过显示程序才能实现,我们采用四位的数码管显示数值。

本课设设计电路采用的是AT89C51单片机为主要控制芯片,再利用一些外围电路实现十进制的加法功能;

软件方面采用Protues进行电路仿真。

1.2方案对比

本次课程设计是基于C51系列单片机借外围电路来可进行键盘输入的十进制加法计算器系统的设计。

在显示数码管电路设计方面,根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类,但是我们设计的十进制加法计算器是需要不断的显示数字,而且I/O有限,故采用动态类方式显示。

在键盘设计电路中,键盘扫描有中断式、外扫描式和反转式三种,因为我们设计的是矩阵式键盘,既要扫描行值,又要扫描列值,因此采用反转法实现用户键盘接口。

至于按键的独立性。

如果按键独立的话,编程会比较简单,但是会占用大量的I/O 

口资源,可能会导致I/O口不够用,故采用非独立式的矩阵键盘。

1.3系统总设计

利用AT89S51单片机设计一个简易的十进制加法计算器。

外部主要由近似矩阵键盘、晶振电路、手动复位电路和LED数码显示管构成,部由一块AT89S51单片机构成,通过软件编程可实现简单加法运算,数值的最高位为百位,溢出则不显示。

在键盘上输入数值或运算符号,进行加法运算,并在显示数码管上显示相应的结果。

简易计算器的程序功能模块主要包括以下几个:

(1)主模块,为系统的初始化。

(2)显示子程序、读键子程序与键值分析模块,(3)运算子程序模块,(4)数值送显示缓存程序模块,(5)程序结果显示模块等等。

系统拓扑图如下图所示:

图1系统拓扑图

二、硬件电路设计

简易的十进制加法计算器系统硬件电路设计主要包括:

下面分别进行设计。

2.1单片机介绍

单片机,全称单片微型计算机,又称微控制器,是把中央处理器、存储器、定时/计数器、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。

与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。

它的最大优点是体积小,可放在仪表部,但存储量小,输入输出接口简单,功能较低。

由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为围更广的微控制器;

从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。

[1]

本次课设用的是八位的单片机,这块芯片不需要我们设计,它的每个管脚功能见教材详解,它的管脚图如下图所示:

图1AT89C51外形结构和引脚分布图

2.2单片机最小系统

单片机的最小系统就是要让单片机里面的程序运行,需要的最小配置。

如果需要用IO口去驱动LED,写好程序就直接可以运行了。

最小系统只要由震荡电路、复位电路、输入输出设备、电源和单片机芯片组成。

2.2.1复位电路

单片机复位电路就是让单片机重新启动,初始化程序重新正常运行。

复位操作通常有两种基本形式:

上电自动复位、手动按键复位。

上电自动复位操作要求接通电源后自动实现复位操作;

手动按键复位要求在电源接通的条件下,在单片机运行期间,用按键开关操作使单片机复位。

复位电路基本原理:

电阻给电容充电,电容的电压缓慢上升直到VCC,没到VCC时芯片复位脚近似低电平,于是芯片复位,接近VCC时芯片复位脚近高电平,于是芯片停止复位,复位完成。

复位电路的基本功能是:

系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。

为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。

图2单片机复位电路

本设计采用上电与手动复位电路,电阻选取2K,电容选取10uF,系统一上电,芯片就复位,或者中途按按键也可以进行复位。

2.2.2晶振电路

单片机晶振的作用是为系统提供基本的时钟信号。

通常一个系统共用一个晶振,便于各部分保持同步。

有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

晶振电路起振原理:

晶振即石英晶体振荡器,它是将二氧化硅切成薄片,利用了它的压变效应(就是电压会让它变形,而它的变形同样会影响电压),但是为了方便它的起振,一般在单片机的晶振处都会加上二个小点的电容来帮它起振。

晶振电路原理图如下图所示:

图3单片机晶振电路

本次设计的晶振电路的两个小电容值为1nF,振荡器采用的是石英晶体振荡器。

2.3显示数码管电路设计

LED数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在部连接完成,只需引出它们的各个笔划,公共电极。

LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。

为了减少端口的使用,故选择动态显示。

而本次课设选用的是四个并行数码管(只用3位),采用共阳极形式。

至于上拉电阻,由于数码管的每个引脚都会接,故选用排阻的形式。

图4三位数码管的显示电路

2.4键盘电路设计

2.4.1键盘扫描

一般设计矩阵式键盘接口通采用3种方法读取键值。

分别为:

中断式、外扫描式和反转式:

(1)中断式:

在键盘按下时产生一个外部中断通知CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个案件被按下。

(2)扫描法:

对键盘上的某一行送低电平,其他行为高电平,然后读取列值。

若列值中有一位是低电平,表明该行与低电平对应列的键被按下;

否则,扫描下一行。

(3)反转法:

先将所有行扫描线输出低电平,读列值。

若列值有一位是低,则表明有键按下,读列值;

然后所有列扫描线输出低电平,再读行值。

根据读到的值组合就可以得到键码。

本实验采用反转法实现用户键盘接口

2.4.2键盘电路设计

本次课设由于用到的按键数目不太多,为了降低成本和简化电路通常采用非编码键盘。

非编码键盘的接口电路由计者根据需要自行决定,按键信息通过接口软件来获取。

本课题需要的是13个按键,按键数目不多,简单清晰,故选择用非编码键盘。

由于计算器输入数字和其他功能按键都用到很多按键,如果按键独立的话,编程会比较简单,但是会占用大量的I/O 

口资源,而单片机只有四个八位的I/O口,这样可能会导致I/O口不够用。

因此在这种情况下都不采用这种方式,而是采用矩阵键盘的方案。

矩阵键盘采用四条I/O 

线作为行线,四条I/O 

线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为4×

4个。

这种行列式键盘结构能有效地提高单片机系统中I/O 

口的利用率。

由于本次课设只完成加法的功能,故只设定了两个功能键,一个清除键,十个数字键,键盘上总共有13个按键。

盘电路如下图所示:

图5键盘电路设计

2.5系统完整电路设计

以上完成了各个子模块的电路设计,将这些子模块电路按一定的方式串接在一起组成了系统的总电路设计,系统的完整电路如下图所示:

图6硬件电路系统总图设计

三、软件设计

对于十进制加法计算器设计,首先进行参数初始化,并LED显示;

下面将进行各个子程序的设计:

3.1LED显示程序设计 

LED显示器是由四个七段数码管组成,排列成8字形状的器件,因此也成为七段显示器。

为了显示数字或符号,要为LED显示器提供代码,即字形代码。

七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。

简易计算器用到的数字0~9的共阴极字形代码如下表:

表10~9共阳极字型代码表

显示字型

g

f

e

d

c

b

a

段码

0

1

0C0H

1

0F9H

2

0A4H

3

0B0H

4

99H

5

92H

6

82H

7

0F8H

8

80H

9

90H

LED显示程序的流程框图如下:

Y

N

图7LED显示程序设计图

3.2数值送显示缓存程序设计

简易十进制加法计算器所显示的数值最大位为3位。

要显示数值,那必先将结果进行处理,先将数值除以10,显示余数,再判断商是否为0,若不为0,则将商继续除以10,将余数送显高位。

流程图如下:

图8数值送显示缓存程序图

为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理的子程序,为此每个键都对应一个码——键码。

为了得到被按键的键码,前面已讲过用行扫描法识别按键。

其流程框图所示:

读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。

第一次所有列线均输出低电平,从所有读入键盘信息(行信息);

第二次所有行线均输出低电平,从所有行线读入键盘信息(列信息)。

将两次读键信息进行组合就可以得到按键的特征编码,然后通过查表得到按键的顺序编码。

将各特征编码按希望的顺序排成一表,然后用当前读得的特征码来查表。

当表中有该特征码时,它的位置就是对应的顺序编码;

当表中没有该特征码时,说明这是一个没有定义的键码,与没有按键(0FFH)同等看待。

流程图如下图所示:

图9读键子程序图

3.4运算程序的设计 

首先初始化参数,送LED三位显示“0”,剩下的一位不显示。

然后扫描键盘看是否有键输入,若有,则读取键码,并判断键码是数字键、清零键还是功能键,是数值键则送LED显示缓存并保存数值;

是清零键则做清零处理,返回初始化;

是功能键则又判断是“=”还是运算键,若是“=”则将计算的最后结果送LED显示,并返回初始化。

若是运算键则保存相应运算程序的首地址,并且不显示。

流程图如下图所示:

图10运算子程序框图

四、系统仿真与调试

下面用KEIL 

uVision4与 

proteus仿真软件介绍十进制加法计算器的仿真与调试。

C51单片机软件开发系统

KeilC51可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及A51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ASM)。

ASM文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器

使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

采用KEILC51开发的89C51单片机编写程序步骤:

1.在uVision4集成开发环境中创建新项目(Project),扩展文件名为.UV2,并为该项目选定合适的单片机CPU器件(本设计采用ATMEL 

公司下的AT89C51) 

2.用uVision 

的文本编辑器编写源文件,可以是汇编文件(.ASM),也可以使C语言文件(扩展名.C),并将该文件添加到项目中去。

一个项目文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件。

3.通过uVision4的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。

4.对项目中的源文件进行编译连接,生成绝对目标代码和可选的.HEX文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个项目。

5.对没有语法错误的程序进行仿真调试,调试成功后将.HEX文件写入到单片机应用系统的ROM中。

4.2.1硬件电路图的接法操作 

1.点击界面上的”P”字母,并在弹出的对话框里输入相应元器件的英文名,并选择元器件,或直接在左方框里选择元器件。

2.移动元器件。

3.缩放元器件。

4.连接导线。

5.仿真,调试。

4.2.2Proteus中课程设计的仿真结果 

在Proteus中将硬件电路全部接好以后,将Keil中生成的.hex文件导入到单片机中,点击开始仿真按钮,电路开始仿真。

可以观察到:

数码管显示“000”;

分别依次按下按键“29”、“+”、“45”和“=”,可以看到数码管显示“74”;

也可以分别调试其它功能键,结果发现调试结果与预期的理论值相吻合,即本次课设已成功。

调试结果如下图所示:

图11仿真调试输入数字’29’

图12仿真调试输入数字’45’

图13仿真调试输出数字’74’

通过仿真调试‘29’’+’’45’’=’’74’,结果与实际完全吻合,说明程序和仿真电路都是完全正确的,十进制加法计算器的功能基本实现。

五、心得体会

经过了这几天的艰苦奋战,我的单片机课程设计——十进制加法计算器基本结束了。

结果做出来了,虽然有点儿艰辛,但是在我不懈努力下,不畏艰难,勇往直前,最后取得了成功。

课程设计总共六个题目,这个题目是我随意选择的,虽然我的单片机学的还不算太差,但拿到这个题目的时候一头雾水,完全摸不着头脑,不知道该从哪里下手,程序就更不用说了,基本无框架,就连Keiluversion4和Proteus这两个软件都不会操作,而且以前并没有过编写这种大型程序的经验,不能行云流水般的将所有的代码一并写出,于是去网上图书馆查找相关资料,了解计算器的输入控制原理、运算处理以及显示的原理,在脑海中初步构建了编写程序的基本框架和一些控制子程序,自己也尝试着去编写,并在同学的协助下掌握了Keiluversion4和Proteus这两个软件的一些基本操作,还望在以后的学习过程中对这两个软件有更深入的学习。

在编写程序的过程中也遇到了很多麻烦,比如读键子程序、显示子程序和键测试子程序困扰了我好久,在KEIL环境下程序始终调试不出来,后来请教了我参加过去全国大学生“飞思卡尔”智能汽车竞赛的同学之后,在反复的调试下,才基本把程序编出来了。

在仿真编译通过后,于是开始在Proteus中连硬件电路,全部接完电路之后将Keil生成的.Hex文件导入Proteus进行仿真,仿真还算比较顺利,一下就出结果了,结果也如期望的那样。

经历之后才知道这个过程是艰难曲折的。

通过这一次的课程设计让我对单片机有了更深入的理解,虽然这不是第一次把软件和硬件同时结合起来做的课程设计,但是它也更加凸显出了软硬结合的重要性,而且在这个过程中培养了我们敢于挑战自我,超越自己的创新精神。

虽然这几天有点儿艰辛,弄得自己有点儿憔悴,但有这样一次经历还是蛮不错的。

六、参考文献

[1] 

力旻《单片机原理及应用技术》电子工业(2001) 

[2] 

小忠、黄宁、小侠《单片机接口技术实用子程序》人民邮电(2005

[3] 

康华光.电子技术基础(第5版).高等教育出版,2006 

[4] 

力培.单片微机系统实用教程(第1版).机械工业[5] 

志海、连鑫.单片微型计算机原理及应用.电子工业,2011 

附录

源代码001

YJEQU50H;

结果存放

YJ1EQU51H;

中间结果存放

GONGEQU52H;

功能键存放

ORG00H

START:

MOVR3,#0;

初始化显示为空

MOVGONG,#0

MOV32H,#00H

MOV33H,#00H

MOV34H,#00H

MLOOP:

CALLDISP;

调显示子程序

WAIT:

CALLTESTKEY;

判断有无按键

JZWAIT

CALLGETKEY;

读键

INCR3;

按键个数

CJNEA,

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

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1