毕业设计简易计算器.docx
- 文档编号:27464103
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:29
- 大小:516KB
毕业设计简易计算器.docx
《毕业设计简易计算器.docx》由会员分享,可在线阅读,更多相关《毕业设计简易计算器.docx(29页珍藏版)》请在冰豆网上搜索。
毕业设计简易计算器
毕业设计
题目
简易计算器
系别
专业
班级
姓名
学号
指导教师
日期
简易计算器的设计
设计要求:
1设计一个具有加、减、乘、除的功能的计算器,只能进行小于255的数的加减乘除运算,并且可以连续运算。
当键入值大于255时,将自动清零,可以重新输入;
2设计完成该功能的硬件电路;
3设计完成上述功能的相应软件;
4在实验箱上调试出应有的效果。
设计进度要求:
第一周:
选定设计题目,查找、搜集相关资料。
第二周:
了解各元器件、模块的功能及使用方法。
第三周:
硬件电路的设计。
第四周:
相应软件设计(程序设计)。
第五周:
利用实验箱调试并记录相关的数据和错误。
第六周:
利用实验箱调试并记录相关的数据和错误。
第七周:
写毕业论文。
第八周:
毕业答辩。
指导教师(签名):
摘 要
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研等各个领域,已经成为一种比较成熟的技术,本文将介绍一种用单片机设计的计算器。
这个计算器除了会加减乘除的运算功能以外,还具有连续运算的功能。
当键入值或运算结果大于255时,它会自动清零,可以重新输入新值。
正文中首先简单描述了硬件系统的工作原理,且附以硬件系统的设计框图,论述了本次毕业设计所应用的各种硬件接口技术和各个接口模块的功能及工作过程,并具体描述了外接电路接口的软、硬件调试。
其次阐述了程序的流程和实现过程。
本设计就是以单片机的基本语言汇编语言来进行软件设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。
使硬件在软件的控制下协调运作。
本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。
关键词:
计算器,单片机,AT89C51,汇编语言,模块化
目 录
目 录I
前 言1
1单片机的发展及应用2
1.1单片机的发展2
1.2单片机的应用2
2硬件系统设计4
2.1总体框图设计4
2.2单片机选型4
2.2.1AT89C51的特点4
2.2.2单片机附属电路6
2.3四乘四键盘控制电路7
2.3.1对矩阵式键盘的认识7
2.3.2矩阵式键盘的按键识别方法8
2.4LED静态显示电路10
2.4.1数码管简介10
2.4.2显示的种类11
3软件设计(程序设计)15
3.1设计思路15
3.2总体流程图15
3.3显示子程序的框图和按键子程序框图16
4调试过程19
4.1在伟福中的调试19
4.2在Keil中的调试并连接实验箱20
5结 论24
致 谢25
参考文献26
附录A:
硬件原理总图27
前 言
随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。
在单片机家族中,80C51系列是其中的佼佼者,加之Intel公司将其MCS–51系列中的80C51内核使用权以专利互换或出售形式转让给全世界许多著名IC制造厂商,如Philips、NEC、Atmel、AMD、华邦等,这些公司都在保持与80C51单片机兼容的基础上改善了80C51的许多特性。
这样,80C51就变成有众多制造厂商支持的、发展出上百品种的大家族,现统称为80C51系列。
80C51单片机已成为单片机发展的主流。
专家认为,虽然世界上的MCU品种繁多,功能各异,开发装置也互不兼容,但是客观发展表明,80C51可能最终形成事实上的标准MCU芯片。
本设计采用的是ATMEL公司的AT89C51芯片,此芯片根据了充分的静止CMOS控制器与三级节目记忆锁,共有:
32条I/O线,2定时计数器,6个中断来源,4K闪存,128个字节在芯片RAM。
由于本设计所做的是一个会加减乘除的计算器,所以要用到单片机的最小应用系统模块1,还需要用到矩阵式键盘和静态显示模块。
而我的硬件设计详见第二章,主要介绍了需要哪几部分硬件电路和硬件系统的概叙。
在2.1节介绍了主要的框架;2.2节简单的介绍了单片机最小应用系统的性能和附属电路;2.3节详细介绍了键盘控制电路;2.4节介绍了静态显示电路。
在第三章中我们详细的解说了软件系统的设计。
3.1节介绍了我们做这个设计的程序设计思路;3.2节画出了总的程序设计框图;3.3节分别罗列出各个子程序的框图。
第四章是我对此设计的调试过程和结果显示。
第五章就是我对此设计的总体概括,体会和心得。
我所设计的这个计算器可适用于比较简单的加减乘除运算,比如小学生可以借助它进行较大数目的四则运算,并运用它来探索有关规律,有利于帮助学生形成初步的探索和解决问题的能力。
1单片机的发展及应用
1.1单片机的发展
单片微型计算机是微型计算机的一个重要分支,也是一种非常活跃和颇具有生命力的机种。
单片微型计算机简称单片机,特别适用于工业控制领域,因此又称为微控器。
1971年微处理器研制成功不久,就出现了单片微型计算机即单片机,但最早的单片机是1位的,处理能力有限。
单片机的发展分为4个阶段:
第一阶段(1974—76年):
单片机初级阶段。
因为受工艺限制,单片机采用单片的形式而且功能比较简单。
例如美国仙童公司生产的F8单片机,实际上只包括了8位CPU,64个字节的RAM和2个并行接口。
第二阶段(1976—78年):
低性能单片机阶段。
以InTEL公司生产的MCS——48系列单片机为代表,该系列单片机片内集成有8位CPU,8位定时器/计数器,并行I/O接口,RAM和ROM等,但是最大的缺点就是无串行接口,中断处理比较简单而且片内RAM和ROM容量较小,且寻址范围不大与4KB。
第三阶段(1978—83)高性能单片阶段这个阶段推出的单片机普遍带有串行接口。
多级中断系统,16位定时器/计数器,片内ROM,RAM容量加大,且寻址范围可达64KB,有的片内还带有A/D转换器。
第四阶段(1983年至今)8位单片机巩固发展以及16位单片机,32位单片机推出阶段。
此阶段的主要特征是:
一方面发展16位单片机,32位单片机及专用型单片机;另一方面不断完善高档8位单片机,改善其结构,增加片内器件,以满足不同的客户要求。
1.2单片机的应用
单片机的应用很广,分别在以下领域中得到了广泛的应用。
工业自动化:
在自动化技术中,无论是过程控制技术、数据采集技术还是测控技术,都离不开单片机。
在工业自动化的领域中,机电一体化技术将发挥愈来愈重要的作用,在这种机械、微电子和计算机技术为一体的综合技术(例如机器人技术、数控技术)中,单片机将发挥非常重要的作用特别是近些年来,随着计算机技术的发展,工业自动化也发展到了一个新的高度,出现了无人工厂、机器人作业、网络化工厂等,不仅将人从繁重、重复和危险的工业现场解放出来,还大大提高了生产效率,降低了生产成本。
仪器仪表:
目前对仪器仪表的自动化和智能化要求越来越高。
在自动化测量仪器中,单片机应用十分普及。
单片机的使用有助于提高仪器仪表的精度和准确度,简化结构,减小体积,易于携带和使用,加速仪器仪表向数字化、智能化和多功能化方向发展。
消费类电子产品:
该应用主要反映在家电领域。
目前家电产品的一个重要发展趋势是不断提高其智能化程度。
例如,电子游戏、照相机、洗衣机、电冰箱、空调、电视机、微波炉、手机、IC卡、汽车电子设备等。
在这些设备中使用了单片机后,其功能和性能大大提高,并实现了智能化、最优化控制。
信方面:
较高档的单片机都具有通信接口,因而为单片机在通信设备中的应用创造了很好的条件。
例如,在微波通信、短波通信、载波通信、光纤通信、程控交换等通信设备和仪器中都能找到单片机的应用。
武器装备:
在现代化的武器装备中,如飞机、军舰、坦克、导单、鱼雷制导、智能武器设备、航天飞机导航系统,都有单片机在其中发挥重要作用。
终端及外部设备控制:
计算机网络终端设备,如银行终端,以及计算机外部设备如打印机、硬盘驱动器、绘图机、传真机、复印机等,在这些设备中都使用了单片机。
近年来随着科技的飞速发展,同时带动自动控制系统日新月异更新,单片机的应用正在不断地走向深入。
2硬件系统设计
2.1总体框图设计
我所设计的题目是一个会运算加减乘除的计算器,而我所用到的电路如图2.1所示:
图2.1 总体设计框图
1.我的设计里用到的单片机芯片是AT89C51芯片,除此之外还包括:
晶振电路和复位电路构成单片机最小应用系统;
2.四乘四的键盘;
3.5个LED显示电路,我们设计的电路是采用静态显示。
2.2单片机选型
2.2.1AT89C51的特点
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能、CMOS、8位单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
AT89C51的管脚图如图2.2所示。
图2.2AT89C51管脚图
主要特性:
1、与MCS-51兼容
2、4K字节可编程闪烁存储器
3、寿命:
1000写/擦循环
4、数据保留时间:
10年
5、全静态工作:
0Hz-24Hz
6、三级程序存储器锁定
7、128*8位内部RAM
8、32可编程I/O线
9、两个16位定时器/计数器
10、5个中断源
11、可编程串行通道
12、低功耗的闲置和掉电模式
13、片内振荡器和时钟电路
2.2.2单片机附属电路
单片机附属电路主要有晶体振荡电路和复位电路。
一、晶体振荡电路
1.晶体振荡器的作用石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。
2.本设计所用的晶体振荡电路如图2.3所示:
图2.3晶体振荡电路
此晶振电路所选用的石英晶振频率为12MHZ。
时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。
对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为0.25us。
由于时钟脉冲是单片机的基本工作脉冲,它控制着单片机的工作节奏(使单片机的每一步都统一到它的步调上来)。
显然,对同一种机型的单片机,时钟频率越高,单片机的工作速度就越快。
但是,由于不同的单片机的硬件电路和器件不完全相同,所以其需要的时钟频率范围也不相同。
我们学习的51系列单片机的时钟范围是1.2MHz-12MHz。
二、复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。
无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须弄清楚MCS-51型单片机复位的条件、复位电路和复位后状态。
单片机复位的条件是:
必须使RST/Vpd或RST引脚加上持续两个机器周期(即24个振荡周期)的高电平。
例如,若时钟频率为12MHz,每机器周期为1us,则只需2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。
单片机常用的复位电路如图2.4(a)和图2.4(b)所示:
图2.4(a)复位电路图2.4(b)与单片机相连的复位电路
图2.4(a)就是我们的设计中使用的复位电路,其电阻阻值的选择和电容容量的选择都是经过计算的,而最后计算的结果时间常数可以满足我们的需求。
其计算过程如下:
て=0.7RC=0.7×1000×10×10-6=0.7ms
此值远远大于2us,所以此复位电路可用。
图2.4(b)为按键复位电路。
该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生复位高电平。
2.3四乘四键盘控制电路
2.3.1对矩阵式键盘的认识
矩阵式键盘的结构与工作原理:
在键盘中的按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图2.5所示。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,只需要单片机的一个端口(如P1口)就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。
由此可见,在需要的键数比较多时,采用矩阵法来做键盘比较是合理的。
由于本系统按键较多,在这里采用矩阵式4*4键盘,这样可以合理应用硬件资源,用一个8位I/O口控制,如图2.5所示:
图2.5按键电路
矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,图2.5中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。
一旦有键按下,则输入线就会被拉低,行线输出是低电平。
这样,通过读入输入线的状态就可得知是否有键按下了。
具体的识别及编程方法如2.3.2所述。
2.3.2矩阵式键盘的按键识别方法
一、确定矩阵式键盘上何键被按下,我们采用一种“行扫描法”。
行扫描法:
行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。
以图2.5所示键盘电路为例,介绍过程如下:
1.判断键盘中有无键按下将全部行线X0-X3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
2.判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它行线为高电平。
在确定某根行线为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
二、下面给出一个具体的例子:
图仍如2.5所示。
AT89C51单片机的P1口用作键盘I/O口,键盘的列线接到P1口的高4位,键盘的行线接到P1口的低4位。
列线P14-P17分别接有4个上拉电阻到正电源+5V,并把行线P10-P13设置为输出线,列线P14-P17设置为输入线。
4根行线和4根列线形成16个相交点。
1.检测当前是否有键被按下。
检测的方法是P10-P13输出全“0”,读取P14-P17的状态,若P14-P17为全“1”,则无键闭合,否则有键闭合。
2.去除键抖动。
当检测到有键按下后,延时一段时间再做下一步的检测判断。
3.若有键被按下,应识别出是哪一个键闭合。
方法是对键盘的行线进行扫描。
P10-P13按下述4种组合依次输出:
P131110
P121101
P111011
P100111
在每组行输出时读取P14-P17,若全为“1”,则表示为“0”这一行没有键闭合,否则有键闭合。
由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。
4.为了保证键每闭合一次CPU仅作一次处理,必须消除键释放时的抖动。
我设计的键盘所对应的键码如图2.6所示:
图2.6键盘框图
2.4LED静态显示电路
2.4.1数码管简介
1.数码管结构
数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字09、字符AF及小数点“·”。
数码管的外形结构如图2.7(a)所示。
数码管又分为共阴极和共阳极两种结构,分别如图2.7(b)和图2.7(c)所示。
(a)外型结构;(b)共阴极;(c)共阳极
图2.7数码管结构图
2.数码管工作原理
由于我们采用的是共阴极数码管,所以介绍共阴极数码管的工作原理如下:
共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。
通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮。
根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
共阳极数码管的工作原理与共阴极的正好相反。
3.数码管字形编码
要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。
LED显示字型码表见表2.1:
表2.1LED显示字型码表
显示字符
共阴极
共阳极
显示字符
共阴极
共阳极
0
3FH
C0H
9
6FH
90H
1
06H
F9H
A
77H
88H
2
5BH
A4H
B
7CH
83H
3
4FH
B0H
C
39H
C6H
4
66H
99H
D
5EH
A1H
5
6DH
92H
E
79H
86H
6
7DH
82H
F
71H
8EH
7
07H
F8H
8
7FH
80H
2.4.2显示的种类
1.静态显示概念
静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。
这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。
每个数码管的8个字段分别与一个8位I/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。
采用静态显示方式的优点:
较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的接口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。
2.动态显示概念
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。
通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的位选线(公共阴极或阳极)由另外的I/O口线控制。
动态方式显示时,各数码管分时轮流选通,要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。
依此规律循环,即可使各位数码管显示将要显示的字符。
虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。
采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。
我们这个设计所使用的显示属于静态显示,其显示电路图形如图2.8所示:
图2.8静态显示电路
显示器由5个共阴极数码管组成。
输入只有两个信号,它们是串行数据线DIN和移位信号CLK。
5个串/并移位寄存器芯片74LS164首尾相连。
每片的并行输出作为LED数码管的段码。
移位寄存器的位移原理也就是随着CLK脉冲的输入从DIN端输入数据一步一步的向Q7移动,当第二个字节移入后,原第一个已经从Q7端移出。
两位数据是不会交错的。
比如要向164写入11011100(第一字节)10011000(第二字节),当第一个8位输入后164的内容为11011100,第二字节的第一位输入后164为10111000,第二位输入后164为01110000,依次类推,当输入完8个位后,164输出端为10011000正是第二个字节的内容。
74LS164的引脚图如图2.9所示:
74LS164为8串入并出移位寄存器,1、2为串行输入端,Q0-Q7为并行输出端,CLK为移位时钟脉冲,上升沿移入一位;MR为清零端,低电平时并行输出为零。
其真值表如下
图图2.974LS164的引脚
表2.1074LS164的真值表
输入
输出
CPDADB
Q0Q1Q2Q3Q4Q5Q6Q7
0XXX
00000000
10XX
Q0Q1Q2Q3Q4Q5Q6Q7
1↑11
1Q0Q1Q2Q3Q4Q5Q6
1↑0X
0Q0Q1Q2Q3Q4Q5Q6
1↑X0
0Q0Q1Q2Q3Q4Q5Q6
做完以上这些分立的电路部分,我们所设计的东西也就出来了,有键盘、显示电路、和单片机周围一些附属电路,其硬件原理总图见附录A。
3软件设计(程序设计)
3.1设计思路
由于我们所做的是一个比较简单的计算器,它只需要有加、减、乘、除的功能就可以了,另外还要求只能进行小于255的数的加减乘除运算,并且可以连续运算。
当键入值大于255时,将自动清零,可以重新输入。
所以我们考虑到用单片机语言来做我们的设计比较简单。
对于程序我们的设计思路是:
1.要有显示子程序,当键入一个数值或符号时显示程序要把这个键入的值给显示出来。
经过运算在按下等号之后显示出此次运算的结果。
2.就是按键程序,当一个键盘按下的时候,按键程序要判断是哪个按键按下,如果是数字键按下就要转向显示子程序来显示出这个数字,然后等待下一个键值的输入,再次判断按下的是什么键,如果是功能键就要根据上次功能键和输入的数据来计算结果,然后保存结果和功能键,结果送显示缓冲区显示。
等待下个数值的输入,如此重复。
3.2总体流程图
程序的总体流程图如图3.1所示:
图3.1计算器程序总体框图
程序开始首先对所有的参数进行初始化,给结果的存放赋值并对显示缓冲区清空,然后开始判断是否有键按下,如果有键按下判断是什么键被按下,如果是数字键被按下,则判别是哪个数字键被按下然后把数值送显示程序显示;如果是清零键被按下,则把当前状态清零;如果是功能键被按下则根据上次功能键和输入的数据计算结果,然后保存结果和功能键,结果送显示缓冲,等待下次数值的输入。
3.3显示子程序的框图和按键子程序框图
显示子程序的框图如图3.2(a)所示:
图3.2(a)显示子程序框图
通过显示子程序将键入的数值或符号经过CPU的运行反映到数码管上显示出来,方便检测某些问题。
按键子程序框图如图3.2(b)所示:
图3.2(b)按键程序框图
首先判断是否有键按下,若有键按下则判断是哪个键被按下,如果是数字键,就显示该数值;如果是清零键就对它进行清零;如果是功能键则转到功能键的程序中去处理。
4调试过程
4.1在伟福中的调试
经过深思苦想终把程序给编了出来,但是不知编的程序是否能通过调试,于是我们通过伟福仿真软件和Keil软件来验证我们的程序。
首先打开伟福仿真软件的界面,对仿真器的参数值进行设置。
其设置如图4.1所示:
图4.1仿真器的选择
我们所选的是8751的仿真器,在目标生成文件中选择生成BIN和HEX文件(即二进制和十六进制文件)其设置如图4.2所示,设置完成后点“好”就可以了。
图4.2生成文件的设置
然后在伟福里面输入我们的程序进行调试,刚开始有好几处错误我们的程序没有通过编译,例如,“0”写成了“O”,操作码错误,“NEXT”错写为“NEST”等。
然后我就查找错误的所在,一一更改之后终于通过编译,其运行结果如图4.3所示:
图4.3编译通过后的界面
4.2在Keil中的调试并连接实验箱
在伟福内调试通过以后,再在Keil中下载到实验箱上进行验证,显现出所要求的效果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 简易 计算器