单片机十进制加法计算器设计资料文档格式.docx
《单片机十进制加法计算器设计资料文档格式.docx》由会员分享,可在线阅读,更多相关《单片机十进制加法计算器设计资料文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
![单片机十进制加法计算器设计资料文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/9/bdba3d17-4f87-4293-aab2-437a20320bc9/bdba3d17-4f87-4293-aab2-437a20320bc91.gif)
5、2proteus的操作.............................(10)
6、总结.........................................(11)
7、参考文献......................................(11)
附录1程序.......................................(12)
附录2系统硬件电路图..............................(18)
1、设计任务和要求
1.1设计要求
本次课程设计,我选择的课题是单片机十进制加法计算器软硬件设计,设计任务为:
设计一键盘显示装置,键盘上除需定义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.1AT89C51的介绍:
图1AT89C51外形结构和引脚分布图
芯片AT89C51的外形结构和引脚图如图一所示。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2.2单片机最小系统
单片机最小系统就是支持主芯片正常工作的最小部分,包括主控芯片、复位电路和晶振电路。
(一)复位电路
图2复位电路
本设计采用上电与手动复位电路,电阻分别选取100和10K,电容选取10uF,系统一上电,芯片就复位,或者中途按按键也可以进行复位。
(2)晶振电路
图3晶振电路
晶振电路是单片机的心脏,它用于产生单片机工作所需要的时钟信号。
单片机的晶振选取11.0592MHz,晶振旁电容选取30pF。
三、硬件设计
简易数字计算器系统硬件设计主要包括:
键盘电路,显示电路以及其他辅助电路。
下面分别进行设计。
3.1键盘电路的设计
键盘可分为两类:
编码键盘和非编码键盘。
编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。
通用计算机使用的标准键盘就是编码键盘。
当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。
但大多数智能仪器和电子产品的按键数目都不太多(20个以内),为了降低成本和简化电路通常采用非编码键盘。
非编码键盘的接口电路有设计者根据需要自行决定,按键信息通过接口软件来获取。
本课题需要的是16个按键,故选择用非编码键盘。
计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×
4个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
矩阵键盘的工作原理:
计算器的键盘布局如图五所示:
一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。
具体电路连接如图五所示:
图54*4键盘接口电路
3.2显示电路的设计
当系统需要显示少量数据时,采用LED数码管进行显示是一种经济实用的方法。
数码管显示有静态显示和动态显示两种方法。
为了减少端口的使用,故选择动态显示。
电路如下图六所示:
图6三位数码管的显示电路
四、软件设计
在十进制加法计算器的软件规划要求下,简易计算器的程序主要包括以下功能模块:
(1)
主模块,为系统的初始化。
(2)
显示与读键模块,分为判键程序段、运算操作子程序、显示子程序等部分;
4.1系统设计
(一)系统模块图
图六系统模块图
此系统包括输入、运算和显示模块,由单片机控制。
其中通过输入键盘模块将数字0~9和运算符号“+”、“-”、“*”、“/”输入单片机进行运算;
运算模块分别根据输入的运算符进行加减乘除运算;
显示模块将运算后的数值通过动态扫描使之在数码管上输出。
(2)系统总流程图
主程序主要是用来进行初始化的,调用其他子程序,清空各个标志位,清空缓存区,读取键码,判断功能,在LED上作出回应,主程序流程图如图六所示。
(1)数字送显示缓冲程序设计
简易计算器所显示的数值最大位三位。
要显示数值,先判断数值大小和位数,如果是超过三位或大于255,将不显示数字。
可重新输入数字,再次计算。
(2)运算程序的设计
首先初始化参数,送LED三位显示“0”,其它位不显示。
然后扫描键盘看是否有键输入,若有,读取键码。
判断键码是数字键、清零键还是功能键,是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“=”还是运算键,若是“=”则计算最后结果并送LED显示,若是运算键则保存相对运算程序的首地址。
否
是功能键
是
是数字键
是清零键
图7主程序流程图
4.2显示与按键设计
(1)LED显示程序设计
LED显示器由七段发光二极管组成,排列成8字形状,因此也称为七段LED显示器。
为了显示数字或符号,要为LED显示器提供代码,即字形代码。
七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。
简易计算器用到的数字0~9的共阳极字形代码如下表:
显示字型
g
f
e
d
c
b
a
段码
1
0c0h
0f9h
2
0a4h
3
0b0h
4
99h
5
92h
6
82h
7
0f8h
8
80h
9
90h
表1共阳极数码管段码对照表
(2)读键子程序设计
为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码——键码。
为了得到被按键的键码,现使用行扫描法识别按键。
其程序框图如图八:
读键程序使用的是反转法读键,不管键盘矩阵的规模大小,均进行两次读键。
第一次所有列线均输出低电平,从所有读入键盘信息(行信息);
第二次所有行线均输出低电平,从所有行线读入键盘信息(列信息)。
将两次读键信息进行组合就可以得到按键的特征编码,然后通过查表得到按键的顺序编码。
将各特征编码按希望的顺序排成一张表,然后用当前读得的特征码来查表。
当表中有该特征码时,它的位置就是对应的顺序编码;
当表中没有该特征码时,说明这是一个没有定义的键码,与没有按键(0FFH)同等看待。
否
图8计算键值子程序流程图
五、调试与仿真
下面用KEILuVision3与proteus仿真软件介绍十进制加法计算器的仿真与调试。
5.1KeilC51单片机软件开发系统
(一)系统的整体结构
C51工具包的整体结构中,其中uVision是C51forWindows的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
(二)采用KEIL开发的89c51单片机应用程序步骤:
1.在uVision集成开发环境中创建新项目(Project),扩展文件名为.UV2,并为该项目选定合适的单片