基于89C51的计算器设计.docx
- 文档编号:619254
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:28
- 大小:768.60KB
基于89C51的计算器设计.docx
《基于89C51的计算器设计.docx》由会员分享,可在线阅读,更多相关《基于89C51的计算器设计.docx(28页珍藏版)》请在冰豆网上搜索。
基于89C51的计算器设计
单片机系统课程设计任务书
学生姓名
专业班级
自动F1205
学号
题目
基于89C51的计算器设计
课题性质
工程设计
课题来源
自拟
指导教师
主要内容
(参数)
利用89C51单片机设计一个计算器,实现功能如下:
1.4*4按键用于0~9的数字输入、加减乘除、等于、清零功能;
2.能实现简单的加减乘除运算;
3.输入数字及计算结果通过LED显示器显示。
任务要求
(进度)
第1-2天:
熟悉课程设计任务及要求,查阅技术资料,确定设计方案。
第3-4天:
按照确定的方案设计单元电路。
要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。
第5-6天:
软件设计,编写程序。
第7-8天:
实验室调试。
第9-10天:
撰写课程设计报告。
要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅合理。
主要参考
资料
[1]张迎新.单片微型计算机原理、应用及接口技术(第2版)[M].北京:
国防工业出版社,2004
[2]伟福LAB6000系列单片机仿真实验系统使用说明书
[3]阎石.数字电路技术基础(第五版).北京:
高等教育出版社,2006
审查意见
系(教研室)主任签字:
年月日
目录
绪论1
1.硬件组成与方案设计1
1.1系统框图1
1.2硬件设计2
1.3功能设计2
2.硬件电路设计2
2.1时钟电路2
2.2复位电路3
2.3显示电路4
2.4键盘电路5
3.系统软件设计6
3.1主程序6
3.2键盘检测程序7
3.3读键输入程序8
3.4数码管显示程序10
4.仿真与调试11
4.1软件调试11
4.2硬件调试11
4.3调试结果11
总结13
参考文献13
附录A:
整体电路图14
附录B:
程序代码15
绪论
近十几年来,单片机技术凭借其速度快,体积小,价格低,控制功能强,易于掌握,功能丰富等自身优点迅速发展,在各个领域发挥了重大作用,如今已成为一门成熟的学科。
利用单片机可以实现非常丰富的功能,如流水灯,闹钟,秒表,音乐盒等,能够独立完成,实现设计,可以很好的检验自己对硬件以及对软件的理解和掌握水平。
本设计采用80C51芯片,实现了利用单片机进行了一个简单计算器设计。
允许对输入数据进行加,减,乘,除运算及LED数码管的显示。
当然也可以用如LED显示屏显示来显示出更多的字符,实现更多的功能。
但设计的关键所在,必须非常熟悉单片机的原理与结构,同时还要对整个设计流程有很好的把握,实现单片机和其他模块的完整的衔接。
1.硬件组成与方案设计
1.1系统框图
硬件组成如图1.1所示,通过时钟电路来提供时钟脉冲,使单片机有节拍的协同各个部件的同步有序工作,键盘电路来检测各个功能键,通过数码管来显示输出结果,复位电路可以在单片机异常工作或者需要重新计算时进行复位:
图1.1芯片和键盘实现功能
1.2硬件设计
根据功能和指标要求,本系统选用89C52单片机为主控机。
通过扩展必要的
外围接口电路,实现对计算器的设计。
按键分布如下表1.2所示:
0
1
2
3
4
5
6
7
8
9
C
=
+
-
*
/
表1.2按键分布表
硬件设计如下:
①由于要设计的是简单的计算器,可以进行四则运算,对数字的大小范围要求不高故我们采用可以进六位数字的运算,选用6个LED数码管显示数据和结果。
②另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可。
1.3功能设计
功能实现如下:
1初始化:
上电后,屏幕初始化。
2计算。
按下数字键,屏幕显示要运算的第一个数字,再按下符号键,屏幕不显示,然后再按下数字键,屏幕显示要运算的第二个数字,最后按下“﹦”号键,屏幕上显示出计算结果。
3如果要再次计算,可以按下“C”键清零,或者按下单片机的复位键,重新初始化。
2.硬件电路设计
2.1时钟电路
时钟电路是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地工作。
因此时钟频率直接影响单片机的速度,时钟电路的质量也影响单片机系统的稳定性。
本文时钟电路采用内部时钟电路,在引脚XTAL1和XTAL2两端跨接石英晶体,通过外接晶振C1,C2形成内部时钟电路,C1,C2一般取30pF:
图2.1时钟电路
2.2复位电路
上电复位电路是一种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。
上电复位是指在系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随VCC对电容的充电过程而回落,故RST引脚复位的高电平维持时间取决于电容的充电时间。
为保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长时间,电路图如下图图2.2所示:
图2.2复位电路
2.3显示电路
如下图2.3所示为一位共阴极数码管的元件图:
图2.3数码管
它是一种半导体发光器件,其基本单元是发光二极管。
表2.1为常用的字形表,为了显示数字或符号,要为LED显示器提供代码,即字形代码为方便查询数码管共阴极字形段码,通过查询下表可以很方便的找到所需要段码:
显示字型
g
f
e
d
c
B
a
段码
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
1
1
0
1
1
5bh
3
1
0
0
1
1
1
1
4fh
4
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1
6fh
表2.1常用字形码(低电平有效)
数码管是由8段发光二极管显示字段的显示器件,发光二极管简称字段,要显示某字形就应使该字形的相应字段点亮,也就是向数码管送入不同的电平组合,通过不同的组合可以显示0~9,A~F以及小数点“.”等字符,而本设计为正整数的运算,并不涉及到小数点的点亮。
数码管的显示方法为:
通过右边的公共端控制数码管的亮灭,通过左边的段选码的电平状态确定每位发光二极管亮灭。
本次设计采用的是6位七段共阴极数码管,但是不需要单独使每个数码管送出段选码,而是每3个数码管的段选端通过内部总线相连,再通过动态显示数码管的方式使每个数码管分时轮流选通,因此大大简化了电路,更好的利用了I/O资源。
下图2.4即为所使用的6位数码管的元件图:
图2.4数码管显示电路
2.4键盘电路
考虑到独立式键盘每个按键都要占用一个I/O口,按键较多时需要占用较多的的I/O口线,资源利用率低,并且由于本次采用的单片机开发板本身就是行列式键盘,故最终采用的是4行列式键盘。
行列式键盘的四个行线处于输入状态,四个列线处于输出状态,按键设置在行列线的交叉点上,行列线分别连在按键开关的两端。
具体键盘电路如图2.3所示:
图2.5键盘电路
3.系统软件设计
3.1主程序
主程序流程图如图3.1所示,主程序构成循环,首先初始化参数,送LED为高电平,初始状态下没有字形码显示。
然后扫描键盘看是否有键输入,若有,读取键码。
判断键码是数字键0~9、清零键,“=”还是四则运算符(“+”,“-”,“*”,“/”),如果是数字值,则计数第几个数,第几位数,进行内部运算处理,送入数码管进行显示输出,是清零键则做对数码管进行清零,如果是四则运算,则内部进行运算处理,同时数码管不显示,若为“=”号则输出运算结果,显示在数码管上。
图3.1主程序流程图
3.2键盘检测程序
此子程序为本设计的核心之一,因为按键是利用机械触点来进行合,断作用的,机械触点在闭合或断开的瞬间由于弹性作用的影响,有抖动现象,从而使电压信号出现抖动,会造成按键读入的不稳定性,产生误读现象,因此为了保证键盘读入的可靠性,必须消除去除抖动影响,抖动时间与按键的机械特性相关,一般为5~10ms,去除抖动的方法有硬件和软件去抖两种,本实验采用的是软件去抖:
:
检测到有键按下时,执行一个20ms的延时程序,再确认该键电平是否保持闭合电平状态,若仍为闭合电平状态,则确认该键处于闭合状态,从而去除抖动影响,子程序流程图如图3.2所示:
图3.2键盘程序流程图
3.3读键输入程序
为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。
为了得到被按键的键码,现使用行扫描法识别按键。
列扫描信号进行读入行的信号,判断该列是否有列的输出——是则进行按照行列计算键盘的值,查表取得键码并返回——若否则进行再次扫描。
本设计采用矩阵式键盘,行线为P3.0-P3.3,列线为P3.4-P3.7,通过读取行线P3.0-P3.3的状态可以确定有无键按下,当键盘上没有键被按下时,行列线是断开的,P3.0-P3.3输入全部为高电平,当某个键被按下时,行列线短路,P3.0-P3.3短路,所有行线输入都是低电平,而列线某一位为低电平,其他位均为高电平。
通过结合行线和列线的输入状态可以确定哪个键被按下,从而确定正确的键码值。
图3.3读键输入程序流程图
3.4数码管显示程序
数码管显示分为静态显示和动态显示,考虑到静态显示需要显示较多I/O口,占用资源多,并且考虑到本单片机实验板硬件的限制,本数码管的显示采用的动态显示方案,通过分时轮流选通数码管的公共端,使各个数码管轮流选通,再送出段码,显示特定字符。
在各个数码管依次显示一遍后,通过循环使显示器分时点亮,由于视觉暂留效用与余晖效应,人眼无法识别数码管的点亮顺序,就好像所有数码管同时点亮,具体流程如下图3.4:
图3.4数码管显示流程图
4.仿真与调试
4.1软件调试
1、打开KeiluVision2软件后,在Project菜单中选择NewProject命令,打开一个新项目。
保存此项目,输入工程文件名calculator后,并保存工程文件的目录。
2、为项目文件选择一个目标器件,即选择80C51的类型。
在Database列表框中选择“Atmel89C52”,确定。
3、选择“File”目录下的Target1,在右键列表中选择“组SourceGroup1属性”,在输出项勾选“E成HEX文件”,HEX格式为“HEX-80”。
4、上述设置好后,创建源程序文件并输入程序代码。
输入好代码后点击“文件/保存”,保存为calculator.asm。
5、把源文件添加到项目中,用鼠标指在目标工作区的目标:
1.点击右键在弹出的菜单中选择“添加文件到组SourceGroup1”,在弹出的添加文件框中,选择需要添加到项目中的文件。
6、开始编译,对项目文件进行编译,对代码进行修改完善,最后编译0错误,0警告。
7、打开stc-isp软件,选择单片机型号为STC89C52RC,选择正确的串口号,加载程序文件,给单片机上电后,HEX文件下载编程成功。
4.2硬件调试
1.依次按下矩阵键盘上定义的数字键“0~9”,经检测数码管都可以正确显示。
2.依次进行不同算法“+”,“—”,“*”,“/”,经检测可以正常进行运算。
3.输入某个数,按下清零键,屏幕无显示,可以实现清零功能。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 89 C51 计算器 设计