单片机课程设计简易计算器Word文档格式.docx
- 文档编号:14013957
- 上传时间:2022-10-16
- 格式:DOCX
- 页数:16
- 大小:108.59KB
单片机课程设计简易计算器Word文档格式.docx
《单片机课程设计简易计算器Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计简易计算器Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
本计算器是将键盘输入信息经处理通过缓存,送入数码管显示,键盘采用行列式,数码管采用动态扫描方式,计算功能通过软件实现,用汇编语言对单片机可编程芯片进行编程,实现对计算器的设计。
关键词:
单片机;
计算器;
汇编语言;
键盘;
数码管
一.课程设计的目的和要求
1.1课程设计的目的
单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
本次设计是设计一个简易计算器,能够进行多位简单的加减运算,同时它能支持2位整数运算。
本计算器是将键盘输入信息经处理通过缓存,送入数码管显示,键盘采用行列式,数码管采用动态扫描方式,计算功能通过软件实现,用汇编语言对单片机可编
芯片进行编程,实现对计算器的设计。
1.2课程设计要求
1 4*4键盘输入,数码管显示。
2 完成两位整数的加减
3 由于键盘只有16个按键,安排如下:
+---------------+
|0|1|2|3|
|4|5|6|7
|
|8|9|+|-|
|=|c|||
二、方案的论证和比较:
2.1
按键电路设计
方案一:
计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。
方案二:
矩阵键盘采用四条I/O线作为行线,四条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为4×
4个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
2.2
4*4键盘扫描电路(扫描式,反转式)
方案一扫描法:
对键盘上的某一行送低电平,其他行为高电平,然后读取列值。
若列值中有一位是低,则表明该行与低电平对应列的键被按下;
否则,扫描下一行。
方案二:
反转法:
先将所有行扫描线输出低电平,读列值。
若列值有一位是低,则表明有键按下,读列值;
然后所有列扫描线输出低电平,再读行值。
根据读到的值组合就可以查表得到的键码。
此设计中我们用反转法。
三.课程设计简述及整体方框图
3.1方案
按照设计要求,提出方案。
此方案首先通过键盘得到数据,并通过程序对数据进行处理,最后通过数码管显示出来。
结构框图如图1
STC89C52
数码管显示
键盘
图
(1)
3.2、硬件电路设计
简易数字计算器系统硬件设计主要包括:
键盘电路,显示电路以及其他辅助电路。
下面分别进行设计。
3.2.1主控电路设计
STC89C52具有如下特点:
40个引脚(引脚图如图2所示),4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外STC89C52RC设计和配置了振荡频率可为0Hz可通过软件设置省电模式。
空闲模式下,CPU暂停工作,外中断系统可继续工作,掉电模式决结振荡器而保存RAM的数据,停止芯片其它功能盤至外中断激活戶硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
STC89C52芯片引脚图如图
(2)所示。
图
(2)STC89C52芯片引脚图
3.2.2键盘电路设计
计算器所需按键有:
数字键:
’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’0’
功能键:
‘+’,‘-’,‘=’‘c’(清零)
共计16个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P3.0~P3.7,这样扫描P3口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P3口的扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘扫描的功能。
3.2.3数码管显示电路
图3LED数码管
为了显示数字或符号,要为LED显示器提供代码,即字形代码。
七段发光二极管,再加上一个小数点位,共计8段。
图4LED数码管显示原理图
3.3软件设计简述
3.3.1键盘扫描子程序设计
要进行数据的计算就必须先进行数据的输入,也就必须确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下。
对于键盘的扫描,这里采用行列扫描的方法来完成对键盘的扫描。
原理就是先确定按键在哪一行,接着再确定是哪一列,这样就可以知道是哪个按键被按下了。
我是将P3口作为按键扫描口的,比如,先使行线输出全“0”,读列线,再使列线输出全为“0”,读行线。
两次结果再相与,则得到一个值为键值。
同理,每个按键都会有一个对应的十六进制值,我把它们列出来进行一一对应就行了,下面是扫描按键图。
图5扫描按键图
键扫程序的过程为:
开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。
其流程图如图(6)所示。
Y
N
开始
有键闭合否?
去抖动
确有键按下
判断键号
释放
返回
图(6)键扫程序流程图
3.3.2数码管显示电路
采用2位数码管对计算数据和结果的显示,这里选取共阳数码管,利用NPN三极管对数码管进行驱动,为了节省I/O资源,采取动态显示的方法来显示计算数据及结果,动态扫描。
为了实现数码管的动态显示,P0口输出显示值,通过P0口的二进制代码送到数码管进行显示。
P2口用来作为位选端,控制哪几位数码管进行显示。
比如当P2.3为高电平时,其他位全给0,具体的在软件中会有说明。
此时就将扫描的数据送给指定数码管显示。
其流程图如图(7)所示。
初始化显示参数
读取显示数据
输出段码数据
输出位选通信号
延时
位选通信号移位
指向下一个显示数据
完成
否
是
图(7)数码管显示流程图
3.3.3运算子程序设计
算术运算程序的过程为:
先判断输入的运算符是+、-、=中的哪一个,若是+或-,则要判断运算结果是否溢出,溢出则显示错误信息,没溢出就显示运算结果,若是=,则直接显示运算结果。
其流程图如图8所示。
开始
运算符是?
等
加
减
运算结溢出?
错误信息送显示缓冲
Y
将缓冲数值显示
数值送显示缓冲
图8算术运算程序设计流程图
3.4程序主框图
图9系统工作总流程
四.仿真软件图
五.系统功能测试与整体指标
5.1软件调试步骤
1)打开软件后,在Project菜单中选择NewProject命令,打开一个新项目。
保存此项目,输入工程文件名后,并保存工程文件的目录。
2)为项目文件选择一个目标器件,即选择8051的类型。
在Database列表框中选择“ATML89C52”,确定。
3)上述设置好后,创建源程序文件并输入程序代码。
输入好代码后点击“文件/保存”。
4)把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。
5)开始编译,对项目文件进行编译。
若没有错误后进行硬件调试。
5.2程序调试步骤
程序调试应一个模块一个模块地进行,首先单独调试各功能子程序,检查程序是否能够实现预期的功能,接口电路的控制是否正常等;
最后逐步将各子程序连接起来进行总调试。
故调试步骤如下:
1)矩阵4*4键盘的调试
键盘程序是整个程序的基础,我们必须保证其正确。
调试方法:
先把程序下载到单片机,让数码管显示,在有键按下时显示的是否为设定的值。
2)数码管程序调试
正确的显示数值是整个程序的关键。
先把程序下载到单片机,让数码管显示,是否正确的显示数值。
5.3测试结果
实例测试:
将写入程序的单片机插入实验板插座内,程序正确的有0~9数值的显示和正常的四则运算以及判断错误、溢出。
六、总结与思考及致谢
电子设计正在当今社会发挥越来越重要的作用,其采用的软硬件结合技术也逐渐成熟,该模拟系统正是采用软硬相结合的方法实现的。
我的题目是简易计算器的设计,对于我们这些实践中的新手来说,这是一次考验。
怎样才能找到课堂所学与实际应用的最佳结合点?
怎样让自己的业余更接近专业?
怎样让自己的计划更具有序性,而不会忙无一用?
这都是我们所要考虑和努力的。
通过这次课程设计,最大的一点体会是单片机学的不够扎实,不会的很多啊,当然这次的课程设计做计算器程序用的是汇编,我们互相学习,到处找资料看,问同学,所以我们的软件主程序才能编译成功,系统才能调试出结果。
很感谢那些热心教导我的同学和指导我的老师。
在其中,很明显我们的计算器处理数据及显示存在太大的局限性,我觉得主要还是我对程序中的运算模块理解不深,这点仍需大大加强。
在此次课程设计中,首先我要感谢王陈宁老师和郭乐老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。
在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。
同时也感谢学院为我提供良好的做课程设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学!
附录主程序:
YJEQU50H;
结果放
YJ1EQU51H;
中间结果存放
GONGEQU52H;
功能键存放
ORG0000H
LJMPSTART
ORG0100H
START:
MOVR3,#0;
初始化显示为空
MOVGONG,#0;
功能键清空
MOV34H,#00H
MOV33H,#00H
LOOP1:
LCALLDISP;
调显示子序
LOOP2:
LCALLTKEY;
判断有无按键
JZLOOP2
LCALLKEY;
读键
INCR3;
KEY返回,按键次数自加1
CJNEA,#0,NEXT1;
判断是否为数字键
LJMPE1;
转数字键处理
NEXT1:
CJNEA,#1,NEXT2
LJMPE1
NEXT2:
CJNEA,#2,NEXT3
LJMPE1
NEXT3:
CJNEA,#3,NEXT4
NEXT4:
CJNEA,#4,NEXT5
LJMP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 简易 计算器